message: fix pfx bucket allocation
diff: @@ -400,25 +400,33 @@ void PfxBucket::implTickCommon(uint64_t dt, const Vec3& viewPos) {
  if(emitter.st==S_Free)
  continue;
  + if(emitter.block!=size_t(-1)) {
  auto& p = getBlock(emitter);
  if(p.count>0) {
  for(size_t i=0;i<blockSize;++i)
  tick(p,emitter,i,dt);
  - if(p.count==0 && emitter.st==S_Fade) {
  + if(p.count==0 && (emitter.st==S_Fade || !nearby)) {
  // free mem
  freeBlock(emitter.block);
  + if(emitter.st==S_Fade)
  emitter.st = S_Free;
  doShrink = true;
  continue;
  }
  }
  + }
  if(emitter.st==S_Active && nearby) {
  + auto& p = getBlock(emitter);
  auto dE = ppsDiff(decl,emitter.isLoop,p.timeTotal,p.timeTotal+dt);
  tickEmit(p,emitter,dE);
  }
  +
  + if(emitter.block!=size_t(-1)) {
  + auto& p = getBlock(emitter);
  p.timeTotal+=dt;
  }
  + }
  if(doShrink)
  shrink();
  