[Scummvm-git-logs] scummvm master -> 5573445468b3b646fce73ac8cf9f830c0b8cce1c

mgerhardy noreply at scummvm.org
Mon Jul 11 06:17:46 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
5573445468 TWINE: removed _currentlyProcessedActorIdx


Commit: 5573445468b3b646fce73ac8cf9f830c0b8cce1c
    https://github.com/scummvm/scummvm/commit/5573445468b3b646fce73ac8cf9f830c0b8cce1c
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-07-10T23:25:38+02:00

Commit Message:
TWINE: removed _currentlyProcessedActorIdx

this is all called from doAnim - so use that actorIdx instead
of a different state that might run out of sync

Changed paths:
    engines/twine/scene/animations.cpp
    engines/twine/scene/animations.h
    engines/twine/scene/collision.cpp
    engines/twine/scene/collision.h


diff --git a/engines/twine/scene/animations.cpp b/engines/twine/scene/animations.cpp
index 652d4529d81..042303685c3 100644
--- a/engines/twine/scene/animations.cpp
+++ b/engines/twine/scene/animations.cpp
@@ -459,7 +459,6 @@ bool Animations::initAnim(AnimationTypes newAnim, AnimType animType, AnimationTy
 void Animations::doAnim(int32 actorIdx) {
 	ActorStruct *actor = _engine->_scene->getActor(actorIdx);
 
-	_currentlyProcessedActorIdx = actorIdx;
 	_engine->_actor->_processActorPtr = actor;
 
 	if (actor->_body == -1) {
@@ -663,7 +662,7 @@ void Animations::doAnim(int32 actorIdx) {
 		}
 
 		if (actor->_carryBy != -1 && actor->_dynamicFlags.bIsFalling) {
-			collision->receptionObj();
+			collision->receptionObj(actorIdx);
 		}
 
 		collision->_causeActorDamage = 0;
@@ -692,7 +691,7 @@ void Animations::doAnim(int32 actorIdx) {
 		}
 
 		// process wall hit while running
-		if (collision->_causeActorDamage && !actor->_dynamicFlags.bIsFalling && IS_HERO(_currentlyProcessedActorIdx) && _engine->_actor->_heroBehaviour == HeroBehaviourType::kAthletic && actor->_genAnim == AnimationTypes::kForward) {
+		if (collision->_causeActorDamage && !actor->_dynamicFlags.bIsFalling && IS_HERO(actorIdx) && _engine->_actor->_heroBehaviour == HeroBehaviourType::kAthletic && actor->_genAnim == AnimationTypes::kForward) {
 			IVec3 destPos = _engine->_movements->rotateActor(actor->_boundingBox.mins.x, actor->_boundingBox.mins.z, actor->_angle + ANGLE_360 + ANGLE_135);
 
 			destPos.x += processActor.x;
@@ -701,9 +700,9 @@ void Animations::doAnim(int32 actorIdx) {
 			if (destPos.x >= 0 && destPos.z >= 0 && destPos.x <= SCENE_SIZE_MAX && destPos.z <= SCENE_SIZE_MAX) {
 				if (_engine->_grid->worldColBrick(destPos.x, processActor.y + SIZE_BRICK_Y, destPos.z) != ShapeType::kNone && _engine->_cfgfile.WallCollision) { // avoid wall hit damage
 					_engine->_extra->initSpecial(actor->_pos.x, actor->_pos.y + 1000, actor->_pos.z, ExtraSpecialType::kHitStars);
-					initAnim(AnimationTypes::kBigHit, AnimType::kAnimationAllThen, AnimationTypes::kStanding, _currentlyProcessedActorIdx);
+					initAnim(AnimationTypes::kBigHit, AnimType::kAnimationAllThen, AnimationTypes::kStanding, actorIdx);
 
-					if (IS_HERO(_currentlyProcessedActorIdx)) {
+					if (IS_HERO(actorIdx)) {
 						_engine->_movements->_lastJoyFlag = true;
 					}
 
@@ -718,12 +717,12 @@ void Animations::doAnim(int32 actorIdx) {
 		if (brickShape != ShapeType::kNone) {
 			if (brickShape == ShapeType::kSolid) {
 				if (actor->_dynamicFlags.bIsFalling) {
-					collision->receptionObj();
+					collision->receptionObj(actorIdx);
 					processActor.y = (collision->_collision.y * SIZE_BRICK_Y) + SIZE_BRICK_Y;
 				} else {
 					if (IS_HERO(actorIdx) && _engine->_actor->_heroBehaviour == HeroBehaviourType::kAthletic && actor->_genAnim == AnimationTypes::kForward && _engine->_cfgfile.WallCollision) { // avoid wall hit damage
 						_engine->_extra->initSpecial(actor->_pos.x, actor->_pos.y + 1000, actor->_pos.z, ExtraSpecialType::kHitStars);
-						initAnim(AnimationTypes::kBigHit, AnimType::kAnimationAllThen, AnimationTypes::kStanding, _currentlyProcessedActorIdx);
+						initAnim(AnimationTypes::kBigHit, AnimType::kAnimationAllThen, AnimationTypes::kStanding, actorIdx);
 						_engine->_movements->_lastJoyFlag = true;
 						actor->addLife(-1);
 					}
@@ -741,7 +740,7 @@ void Animations::doAnim(int32 actorIdx) {
 				}
 			} else {
 				if (actor->_dynamicFlags.bIsFalling) {
-					collision->receptionObj();
+					collision->receptionObj(actorIdx);
 				}
 
 				collision->reajustPos(processActor, brickShape);
@@ -754,7 +753,7 @@ void Animations::doAnim(int32 actorIdx) {
 
 				if (brickShape != ShapeType::kNone) {
 					if (actor->_dynamicFlags.bIsFalling) {
-						collision->receptionObj();
+						collision->receptionObj(actorIdx);
 					}
 
 					collision->reajustPos(processActor, brickShape);
diff --git a/engines/twine/scene/animations.h b/engines/twine/scene/animations.h
index 9637b1750f1..efad7d01360 100644
--- a/engines/twine/scene/animations.h
+++ b/engines/twine/scene/animations.h
@@ -62,8 +62,6 @@ private:
 public:
 	Animations(TwinEEngine *engine);
 
-	/** Current process actor index */
-	int16 _currentlyProcessedActorIdx = 0;
 	/** Current actor anim extra pointer */
 	AnimationTypes _currentActorAnimExtraPtr = AnimationTypes::kAnimNone;
 
diff --git a/engines/twine/scene/collision.cpp b/engines/twine/scene/collision.cpp
index 1be439d8d4f..8a172e3e7c3 100644
--- a/engines/twine/scene/collision.cpp
+++ b/engines/twine/scene/collision.cpp
@@ -417,8 +417,8 @@ void Collision::doCornerReajust(ActorStruct *actor, int32 x, int32 y, int32 z, i
 	processActor = _processCollision;
 }
 
-void Collision::receptionObj() {
-	if (IS_HERO(_engine->_animations->_currentlyProcessedActorIdx)) {
+void Collision::receptionObj(int actorIdx) {
+	if (IS_HERO(actorIdx)) {
 		const IVec3 &processActor = _engine->_actor->_processActorPtr->_processActor;
 		const int32 fall = _engine->_scene->_startYFalling - processActor.y;
 
@@ -430,21 +430,21 @@ void Collision::receptionObj() {
 			} else {
 				_engine->_actor->_processActorPtr->addLife(-1);
 			}
-			_engine->_animations->initAnim(AnimationTypes::kLandingHit, AnimType::kAnimationAllThen, AnimationTypes::kStanding, _engine->_animations->_currentlyProcessedActorIdx);
+			_engine->_animations->initAnim(AnimationTypes::kLandingHit, AnimType::kAnimationAllThen, AnimationTypes::kStanding, actorIdx);
 		} else if (fall > 2 * SIZE_BRICK_Y) {
-			_engine->_animations->initAnim(AnimationTypes::kLanding, AnimType::kAnimationAllThen, AnimationTypes::kStanding, _engine->_animations->_currentlyProcessedActorIdx);
+			_engine->_animations->initAnim(AnimationTypes::kLanding, AnimType::kAnimationAllThen, AnimationTypes::kStanding, actorIdx);
 		} else {
 			if (_engine->_actor->_processActorPtr->_dynamicFlags.bWasWalkingBeforeFalling) {
 				// try to not interrupt walk animation if Twinsen falls down from small height
-				_engine->_animations->initAnim(AnimationTypes::kForward, AnimType::kAnimationTypeLoop, AnimationTypes::kStanding, _engine->_animations->_currentlyProcessedActorIdx);
+				_engine->_animations->initAnim(AnimationTypes::kForward, AnimType::kAnimationTypeLoop, AnimationTypes::kStanding, actorIdx);
 			} else {
-				_engine->_animations->initAnim(AnimationTypes::kStanding, AnimType::kAnimationTypeLoop, AnimationTypes::kStanding, _engine->_animations->_currentlyProcessedActorIdx);
+				_engine->_animations->initAnim(AnimationTypes::kStanding, AnimType::kAnimationTypeLoop, AnimationTypes::kStanding, actorIdx);
 			}
 		}
 
 		_engine->_scene->_startYFalling = 0;
 	} else {
-		_engine->_animations->initAnim(AnimationTypes::kLanding, AnimType::kAnimationAllThen, _engine->_actor->_processActorPtr->_animExtra, _engine->_animations->_currentlyProcessedActorIdx);
+		_engine->_animations->initAnim(AnimationTypes::kLanding, AnimType::kAnimationAllThen, _engine->_actor->_processActorPtr->_animExtra, actorIdx);
 	}
 
 	_engine->_actor->_processActorPtr->_dynamicFlags.bIsFalling = 0;
diff --git a/engines/twine/scene/collision.h b/engines/twine/scene/collision.h
index ec6e3b14956..9a8027ed1f4 100644
--- a/engines/twine/scene/collision.h
+++ b/engines/twine/scene/collision.h
@@ -89,7 +89,7 @@ public:
 	void doCornerReajust(ActorStruct *actor, int32 x, int32 y, int32 z, int32 damageMask);
 
 	/** Make actor to stop falling */
-	void receptionObj();
+	void receptionObj(int actorIdx);
 
 	/**
 	 * Check extra collision with actors




More information about the Scummvm-git-logs mailing list