Bug #1870
Generators not appearing in certain cases
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
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)
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