From 46aa695b54c92d2b5ffda97a716cb2239949fc55 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 17 Aug 2022 00:10:55 +0200 Subject: [PATCH] - add a float version of ActorZOfMiddle. --- source/games/sw/src/game.h | 5 +++++ source/games/sw/src/jweapon.cpp | 4 ++-- source/games/sw/src/sprite.cpp | 10 +++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 268a87a52..d9888994c 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -2026,6 +2026,11 @@ inline int int_ActorZOfMiddle(DSWActor* actor) return (ActorZOfTop(actor) + ActorZOfBottom(actor)) >> 1; } +inline double ActorZOfMiddle(DSWActor* actor) +{ + return (ActorZOfTop(actor) + ActorZOfBottom(actor)) * zinttoworld * 0.5; +} + inline int ActorSizeZ(DSWActor* actor) { return (tileHeight(actor->spr.picnum) * actor->spr.yrepeat) << 2; diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index e38fffb92..bdd7b5abc 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -1918,8 +1918,8 @@ int DoCarryFlag(DSWActor* actor) // if no Owner then die if (attached != nullptr) { - vec3_t pos = { attached->int_pos().X, attached->int_pos().Y, int_ActorZOfMiddle(attached) }; - SetActorZ(actor, &pos); + DVector3 pos(attached->spr.pos.XY(), ActorZOfMiddle(attached)); + SetActorZ(actor, pos); actor->set_int_ang(NORM_ANGLE(attached->int_ang() + 1536)); } diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index b3082877a..6301782c4 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -3518,7 +3518,7 @@ int ActorCoughItem(DSWActor* actor) actorNew = insertActor(actor->sector(), STAT_SPAWN_ITEMS); actorNew->spr.cstat = 0; actorNew->spr.extra = 0; - actorNew->set_int_pos({ actor->int_pos().X, actor->int_pos().Y, int_ActorZOfMiddle(actor) }); + actorNew->spr.pos = { actor->spr.pos.XY(), ActorZOfMiddle(actor) }; actorNew->set_int_ang(0); actorNew->spr.extra = 0; @@ -3557,7 +3557,7 @@ int ActorCoughItem(DSWActor* actor) actorNew = insertActor(actor->sector(), STAT_SPAWN_ITEMS); actorNew->spr.cstat = 0; actorNew->spr.extra = 0; - actorNew->set_int_pos({ actor->int_pos().X, actor->int_pos().Y, int_ActorZOfMiddle(actor) }); + actorNew->spr.pos = { actor->spr.pos.XY(), ActorZOfMiddle(actor) }; actorNew->set_int_ang(0); actorNew->spr.extra = 0; @@ -3583,7 +3583,7 @@ int ActorCoughItem(DSWActor* actor) actorNew = insertActor(actor->sector(), STAT_SPAWN_ITEMS); actorNew->spr.cstat = 0; actorNew->spr.extra = 0; - actorNew->set_int_pos({ actor->int_pos().X, actor->int_pos().Y, int_ActorZOfMiddle(actor) }); + actorNew->spr.pos = { actor->spr.pos.XY(), ActorZOfMiddle(actor) }; actorNew->set_int_ang(0); actorNew->spr.extra = 0; @@ -3612,7 +3612,7 @@ int ActorCoughItem(DSWActor* actor) actorNew = insertActor(actor->sector(), STAT_SPAWN_ITEMS); actorNew->spr.cstat = 0; actorNew->spr.extra = 0; - actorNew->set_int_pos({ actor->int_pos().X, actor->int_pos().Y, int_ActorZOfMiddle(actor) }); + actorNew->spr.pos = { actor->spr.pos.XY(), ActorZOfMiddle(actor) }; actorNew->set_int_ang(0); actorNew->spr.extra = 0; @@ -3672,7 +3672,7 @@ int ActorCoughItem(DSWActor* actor) actorNew = insertActor(actor->sector(), STAT_SPAWN_ITEMS); actorNew->spr.cstat = 0; actorNew->spr.extra = 0; - actorNew->set_int_pos({ actor->int_pos().X, actor->int_pos().Y, int_ActorZOfMiddle(actor) }); + actorNew->spr.pos = { actor->spr.pos.XY(), ActorZOfMiddle(actor) }; actorNew->set_int_ang(0); actorNew->spr.extra = 0;