mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 23:32:02 +00:00
This commit is contained in:
commit
135c861247
10 changed files with 23 additions and 4 deletions
|
@ -201,6 +201,7 @@ enum EObjectFlags
|
||||||
OF_EuthanizeMe = 1 << 5, // Object wants to die
|
OF_EuthanizeMe = 1 << 5, // Object wants to die
|
||||||
OF_Cleanup = 1 << 6, // Object is now being deleted by the collector
|
OF_Cleanup = 1 << 6, // Object is now being deleted by the collector
|
||||||
OF_YesReallyDelete = 1 << 7, // Object is being deleted outside the collector, and this is okay, so don't print a warning
|
OF_YesReallyDelete = 1 << 7, // Object is being deleted outside the collector, and this is okay, so don't print a warning
|
||||||
|
OF_Transient = 1 << 11, // Object should not be archived (references to it will be nulled on disk)
|
||||||
|
|
||||||
OF_WhiteBits = OF_White0 | OF_White1,
|
OF_WhiteBits = OF_White0 | OF_White1,
|
||||||
OF_MarkBits = OF_WhiteBits | OF_Black,
|
OF_MarkBits = OF_WhiteBits | OF_Black,
|
||||||
|
@ -573,6 +574,9 @@ protected:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// When you write to a pointer to an Object, you must call this for
|
||||||
|
// proper bookkeeping in case the Object holding this pointer has
|
||||||
|
// already been processed by the GC.
|
||||||
static inline void GC::WriteBarrier(DObject *pointing, DObject *pointed)
|
static inline void GC::WriteBarrier(DObject *pointing, DObject *pointed)
|
||||||
{
|
{
|
||||||
if (pointed != NULL && pointed->IsWhite() && pointing->IsBlack())
|
if (pointed != NULL && pointed->IsWhite() && pointing->IsBlack())
|
||||||
|
|
|
@ -1081,6 +1081,7 @@ void gl_AttachLight(AActor *actor, unsigned int count, const FLightDefaults *lig
|
||||||
light = Spawn<ADynamicLight>(actor->Pos(), NO_REPLACE);
|
light = Spawn<ADynamicLight>(actor->Pos(), NO_REPLACE);
|
||||||
light->target = actor;
|
light->target = actor;
|
||||||
light->owned = true;
|
light->owned = true;
|
||||||
|
light->ObjectFlags |= OF_Transient;
|
||||||
actor->dynamiclights.Push(light);
|
actor->dynamiclights.Push(light);
|
||||||
}
|
}
|
||||||
light->flags2&=~MF2_DORMANT;
|
light->flags2&=~MF2_DORMANT;
|
||||||
|
|
|
@ -1230,7 +1230,6 @@ void FGLInterface::StateChanged(AActor *actor)
|
||||||
|
|
||||||
void FGLInterface::StartSerialize(FSerializer &arc)
|
void FGLInterface::StartSerialize(FSerializer &arc)
|
||||||
{
|
{
|
||||||
gl_DeleteAllAttachedLights();
|
|
||||||
if (arc.BeginObject("glinfo"))
|
if (arc.BeginObject("glinfo"))
|
||||||
{
|
{
|
||||||
arc("fogdensity", fogdensity)
|
arc("fogdensity", fogdensity)
|
||||||
|
@ -1241,9 +1240,12 @@ void FGLInterface::StartSerialize(FSerializer &arc)
|
||||||
}
|
}
|
||||||
|
|
||||||
void FGLInterface::EndSerialize(FSerializer &arc)
|
void FGLInterface::EndSerialize(FSerializer &arc)
|
||||||
|
{
|
||||||
|
if (arc.isReading())
|
||||||
{
|
{
|
||||||
gl_RecreateAllAttachedLights();
|
gl_RecreateAllAttachedLights();
|
||||||
if (arc.isReading()) gl_InitPortals();
|
gl_InitPortals();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
|
@ -3799,6 +3799,8 @@ void AActor::Tick ()
|
||||||
else if (Z() <= floorz)
|
else if (Z() <= floorz)
|
||||||
{
|
{
|
||||||
Crash();
|
Crash();
|
||||||
|
if (ObjectFlags & OF_EuthanizeMe)
|
||||||
|
return; // actor was destroyed
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckPortalTransition(true);
|
CheckPortalTransition(true);
|
||||||
|
|
|
@ -1451,7 +1451,7 @@ FSerializer &Serialize(FSerializer &arc, const char *key, DObject *&value, DObje
|
||||||
{
|
{
|
||||||
ndx = -1;
|
ndx = -1;
|
||||||
}
|
}
|
||||||
else if (value->ObjectFlags & OF_EuthanizeMe)
|
else if (value->ObjectFlags & (OF_EuthanizeMe | OF_Transient))
|
||||||
{
|
{
|
||||||
return arc;
|
return arc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,6 +161,16 @@ FAnimDef *FTextureManager::AddComplexAnim (FTextureID picnum, const TArray<FAnim
|
||||||
// [RH] Rewritten to support BOOM ANIMATED lump but also make absolutely
|
// [RH] Rewritten to support BOOM ANIMATED lump but also make absolutely
|
||||||
// no assumptions about how the compiler packs the animdefs array.
|
// no assumptions about how the compiler packs the animdefs array.
|
||||||
//
|
//
|
||||||
|
// Since animdef_t no longer exists in ZDoom, here is some documentation
|
||||||
|
// of the format:
|
||||||
|
//
|
||||||
|
// This is an array of <n> entries, terminated by a 0xFF byte. Each entry
|
||||||
|
// is 23 bytes long and consists of the following fields:
|
||||||
|
// Byte 0: Bit 1 set for wall texture, clear for flat texture.
|
||||||
|
// Bytes 1-9: '\0'-terminated name of first texture.
|
||||||
|
// Bytes 10-18: '\0'-terminated name of last texture.
|
||||||
|
// Bytes 19-22: Tics per frame (stored in little endian order).
|
||||||
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
CVAR(Bool, debuganimated, false, 0)
|
CVAR(Bool, debuganimated, false, 0)
|
||||||
|
|
Binary file not shown.
BIN
wadsrc/static/filter/game-doomchex/animated.lmp
Normal file
BIN
wadsrc/static/filter/game-doomchex/animated.lmp
Normal file
Binary file not shown.
BIN
wadsrc/static/filter/game-heretic/animated.lmp
Normal file
BIN
wadsrc/static/filter/game-heretic/animated.lmp
Normal file
Binary file not shown.
BIN
wadsrc/static/filter/game-strife/animated.lmp
Normal file
BIN
wadsrc/static/filter/game-strife/animated.lmp
Normal file
Binary file not shown.
Loading…
Reference in a new issue