- call ScaleSectorObject directly.

It's the only PreMoveAnimator so a bool can be used as easily as the full pointer.
This commit is contained in:
Christoph Oelckers 2023-05-28 10:47:17 +02:00
parent 20b39c6a0d
commit 5e64d6c7aa
5 changed files with 11 additions and 15 deletions

View file

@ -1211,7 +1211,7 @@ extern TRACK Track[MAX_TRACKS];
struct SECTOR_OBJECT struct SECTOR_OBJECT
{ {
soANIMATORp PreMoveAnimator; bool PreMoveScale;
soANIMATORp PostMoveAnimator; soANIMATORp PostMoveAnimator;
soANIMATORp Animator; soANIMATORp Animator;
TObjPtr<DSWActor*> controller; TObjPtr<DSWActor*> controller;

View file

@ -37,8 +37,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
BEGIN_SW_NS BEGIN_SW_NS
void ScaleSectorObject(SECTOR_OBJECT*);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// //
// //
@ -57,7 +55,7 @@ short DoSectorObjectSetScale(short match)
if (sop->match_event == match) if (sop->match_event == match)
{ {
sop->flags |= (SOBJ_DYNAMIC); sop->flags |= (SOBJ_DYNAMIC);
sop->PreMoveAnimator = ScaleSectorObject; sop->PreMoveScale = true;
switch (sop->scale_active_type) switch (sop->scale_active_type)
{ {
@ -539,10 +537,8 @@ void SpikeFloor(SECTOR_OBJECT* sop)
static saveable_code saveable_morph_code[] = static saveable_code saveable_morph_code[] =
{ {
SAVE_CODE(ScaleSectorObject),
SAVE_CODE(MorphTornado), SAVE_CODE(MorphTornado),
SAVE_CODE(MorphFloor), SAVE_CODE(MorphFloor),
SAVE_CODE(SpikeFloor),
}; };
saveable_module saveable_morph = saveable_module saveable_morph =

View file

@ -691,9 +691,10 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, SECTOR_OBJECT& w,
("morph_z_speed", w.morph_z_speed, def->morph_z_speed) ("morph_z_speed", w.morph_z_speed, def->morph_z_speed)
("morph_off", w.morph_off, def->morph_off) ("morph_off", w.morph_off, def->morph_off)
("limit_ang_center", w.limit_ang_center, def->limit_ang_center) ("limit_ang_center", w.limit_ang_center, def->limit_ang_center)
("limit_ang_delta", w.limit_ang_delta, def->limit_ang_delta); ("limit_ang_delta", w.limit_ang_delta, def->limit_ang_delta)
("premovescale", w.PreMoveScale, def->PreMoveScale);
SerializeCodePtr(arc, "preanimator", (void**)&w.PreMoveAnimator);
SerializeCodePtr(arc, "postanimator", (void**)&w.PostMoveAnimator); SerializeCodePtr(arc, "postanimator", (void**)&w.PostMoveAnimator);
SerializeCodePtr(arc, "animator", (void**)&w.Animator); SerializeCodePtr(arc, "animator", (void**)&w.Animator);

View file

@ -391,7 +391,7 @@ void SectorSetup(void)
memset(&SectorObject[ndx].sectp, 0, sizeof(SectorObject[0].sectp)); memset(&SectorObject[ndx].sectp, 0, sizeof(SectorObject[0].sectp));
memset(&SectorObject[ndx].so_actors, 0, sizeof(SectorObject[0].so_actors)); memset(&SectorObject[ndx].so_actors, 0, sizeof(SectorObject[0].so_actors));
SectorObject[ndx].match_event_actor = nullptr; SectorObject[ndx].match_event_actor = nullptr;
SectorObject[ndx].PreMoveAnimator = nullptr; SectorObject[ndx].PreMoveScale = false;
SectorObject[ndx].PostMoveAnimator = nullptr; SectorObject[ndx].PostMoveAnimator = nullptr;
SectorObject[ndx].Animator = nullptr; SectorObject[ndx].Animator = nullptr;
SectorObject[ndx].controller = nullptr; SectorObject[ndx].controller = nullptr;

View file

@ -932,7 +932,6 @@ void SetupSectorObject(sectortype* sectp, short tag)
void DoTornadoObject(SECTOR_OBJECT* sop); void DoTornadoObject(SECTOR_OBJECT* sop);
void MorphTornado(SECTOR_OBJECT* sop); void MorphTornado(SECTOR_OBJECT* sop);
void MorphFloor(SECTOR_OBJECT* sop); void MorphFloor(SECTOR_OBJECT* sop);
void ScaleSectorObject(SECTOR_OBJECT* sop);
void DoAutoTurretObject(SECTOR_OBJECT* sop); void DoAutoTurretObject(SECTOR_OBJECT* sop);
memset(sop->sectp, 0, sizeof(sop->sectp)); memset(sop->sectp, 0, sizeof(sop->sectp));
@ -987,7 +986,7 @@ void SetupSectorObject(sectortype* sectp, short tag)
sop->morph_dist = 0; sop->morph_dist = 0;
sop->morph_off = { 0,0 }; sop->morph_off = { 0,0 };
sop->PreMoveAnimator = nullptr; sop->PreMoveScale = false;
sop->PostMoveAnimator = nullptr; sop->PostMoveAnimator = nullptr;
sop->Animator = nullptr; sop->Animator = nullptr;
} }
@ -1089,7 +1088,7 @@ void SetupSectorObject(sectortype* sectp, short tag)
sop->last_ang = sop->ang; sop->last_ang = sop->ang;
// animators // animators
sop->Animator = DoTornadoObject; sop->Animator = DoTornadoObject;
sop->PreMoveAnimator = ScaleSectorObject; sop->PreMoveScale = true;
sop->PostMoveAnimator = MorphTornado; sop->PostMoveAnimator = MorphTornado;
// clip // clip
sop->clipdist = 156.25; sop->clipdist = 156.25;
@ -1117,7 +1116,7 @@ void SetupSectorObject(sectortype* sectp, short tag)
sop->flags |= (SOBJ_DYNAMIC); sop->flags |= (SOBJ_DYNAMIC);
//sop->scale_type = SO_SCALE_CYCLE; //sop->scale_type = SO_SCALE_CYCLE;
sop->scale_type = SO_SCALE_RANDOM_POINT; sop->scale_type = SO_SCALE_RANDOM_POINT;
sop->PreMoveAnimator = ScaleSectorObject; sop->PreMoveScale = true;
memset(sop->scale_point_dist,0,sizeof(sop->scale_point_dist));; memset(sop->scale_point_dist,0,sizeof(sop->scale_point_dist));;
sop->scale_point_base_speed = 0.25 + RandomRangeF(0.5); sop->scale_point_base_speed = 0.25 + RandomRangeF(0.5);
@ -1769,8 +1768,8 @@ void RefreshPoints(SECTOR_OBJECT* sop, const DVector2& move, bool dynamic)
DAngle delta_ang_from_orig; DAngle delta_ang_from_orig;
// do scaling // do scaling
if (dynamic && sop->PreMoveAnimator) if (dynamic && sop->PreMoveScale)
(*sop->PreMoveAnimator)(sop); ScaleSectorObject(sop);
sectortype** sectp; sectortype** sectp;
int j; int j;