[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