Project

General

Profile

Bug #1870

Generators not appearing in certain cases

Added by vermil about 10 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Urgent
Assignee:
Category:
Regression
Target version:
-
Start date:
2014-10-02
% Done:

100%


Description

Sometime between build 1325 and 1333, the generator attached to Doom's rocket mobj stopped appearing in game. The default ded's still include a definition for this generator.

I've also tried a custom generator in it's place, that also doesn't appear.

Associated revisions

Revision 119ceabb (diff)
Added by skyjake about 10 years ago

World|Particles|Fixed: Spawning particle generators on rockets

A mobj's private data was not yet created when the mobj entered its
first state and thus didn't trigger a particle generator. Now the
private data of mobjs will be created just-in-time also when they
change state, not just when they think.

In general, thinkers still create get their private data when
they think for the first time. Once thinkers are managed more as C++
objects, private data should be part of the atomic object construction
procedure -- currently the thinkers are POD objects constructed in
pieces.

IssueID #1870

History

#1 Updated by danij about 10 years ago

  • Category set to Regression
  • Assignee set to skyjake
  • Priority changed from Normal to High
  • Target version set to 49

#2 Updated by danij about 10 years ago

  • Priority changed from High to Urgent

#3 Updated by danij about 10 years ago

The reason this fails is because during the first call to Mobj_SetState in P_SpawnMobjXYZ there is no MobjThinkerData attached to the mobj yet. When is this attached? Clearly its too late.

Edit: Evidently this data is not attached until the first time the mobj thinks. Obviously this is much too late given that events such as this need to trigger before the first tic. Why is this being delayed?

#4 Updated by skyjake about 10 years ago

MobjThinkerData currently gets created the first time a mobj thinks (in thinkers.cpp initPrivateData()). This is incorrect — it should be created after the mobj is fully spawned.

#5 Updated by skyjake about 10 years ago

  • Tags set to Particles, MapData
  • Status changed from New to Closed
  • % Done changed from 0 to 100

#6 Updated by skyjake over 9 years ago

  • Target version deleted (49)

Also available in: Atom PDF