From b1b05bd638c3940ba8b06196043417f8e3176dea Mon Sep 17 00:00:00 2001 From: Peter Skelton Date: Thu, 29 Feb 2024 22:49:54 +0000 Subject: [PATCH 1/2] Party speed -> velocity --- src/Application/Game.cpp | 4 +- src/Engine/Graphics/Collisions.cpp | 10 ++--- src/Engine/Graphics/Indoor.cpp | 54 ++++++++++++------------ src/Engine/Graphics/Outdoor.cpp | 12 +++--- src/Engine/Party.cpp | 4 +- src/Engine/Party.h | 2 +- src/Engine/Snapshots/EntitySnapshots.cpp | 4 +- src/Engine/Spells/CastSpellInfo.cpp | 2 +- src/Engine/TeleportPoint.cpp | 4 +- src/GUI/UI/NPCTopics.cpp | 4 +- 10 files changed, 50 insertions(+), 50 deletions(-) diff --git a/src/Application/Game.cpp b/src/Application/Game.cpp index 0964db813dea..bd39019d5d7e 100644 --- a/src/Application/Game.cpp +++ b/src/Application/Game.cpp @@ -1013,7 +1013,7 @@ void Game::processQueuedMessages() { SaveGame(1, 0); pParty->pos = Vec3f(-17331, 12547, 465); // respawn point in Harmondale - pParty->speed = Vec3f(); + pParty->velocity = Vec3f(); pParty->_viewYaw = 0; pParty->uFallStartZ = pParty->pos.z; pParty->_viewPitch = 0; @@ -2034,7 +2034,7 @@ void Game::gameLoop() { Source = pLocationName; pParty->uFallStartZ = pParty->pos.z; pParty->_viewPitch = 0; - pParty->speed = Vec3f(); + pParty->velocity = Vec3f(); // change map if (pCurrentMapName != Source) { pCurrentMapName = Source; diff --git a/src/Engine/Graphics/Collisions.cpp b/src/Engine/Graphics/Collisions.cpp index 33460b25a617..027ff856fda6 100644 --- a/src/Engine/Graphics/Collisions.cpp +++ b/src/Engine/Graphics/Collisions.cpp @@ -846,7 +846,7 @@ void ProcessPartyCollisionsBLV(int sectorId, int min_party_move_delta_sqr, int * for (unsigned i = 0; i < 5; i++) { collision_state.position_hi = pParty->pos + Vec3f(0, 0, pParty->height - collision_state.radius_lo); collision_state.position_lo = pParty->pos + Vec3f(0, 0, collision_state.radius_lo); - collision_state.velocity = pParty->speed; + collision_state.velocity = pParty->velocity; collision_state.uSectorID = sectorId; Duration dt; // zero means use actual dt @@ -915,7 +915,7 @@ void ProcessPartyCollisionsBLV(int sectorId, int min_party_move_delta_sqr, int * } // Set party to move along this new sliding vector - pParty->speed = newDirection * dot(newDirection, pParty->speed); + pParty->velocity = newDirection * dot(newDirection, pParty->velocity); // Skip reducing party speed continue; } @@ -947,10 +947,10 @@ void ProcessPartyCollisionsBLV(int sectorId, int min_party_move_delta_sqr, int * // Push away from the surface and add a touch down for better slide if (bFaceSlopeTooSteep) - pParty->speed += Vec3f(pFace->facePlane.normal.x, pFace->facePlane.normal.y, -2) * 10; + pParty->velocity += Vec3f(pFace->facePlane.normal.x, pFace->facePlane.normal.y, -2) * 10; // set movement speed along sliding plane - pParty->speed = newDirection * dot(newDirection, pParty->speed); + pParty->velocity = newDirection * dot(newDirection, pParty->velocity); if (pParty->floor_face_id != collision_state.pid.id() && pFace->Pressure_Plate()) *faceEvent = pIndoor->pFaceExtras[pFace->uFaceExtraID].uEventID; @@ -964,7 +964,7 @@ void ProcessPartyCollisionsBLV(int sectorId, int min_party_move_delta_sqr, int * } // ~0.9x reduce party speed and try again - pParty->speed *= 0.89263916f; // was 58500 fp + pParty->velocity *= 0.89263916f; // was 58500 fp } } diff --git a/src/Engine/Graphics/Indoor.cpp b/src/Engine/Graphics/Indoor.cpp index b2caf88eb0da..36f8a2bf0809 100644 --- a/src/Engine/Graphics/Indoor.cpp +++ b/src/Engine/Graphics/Indoor.cpp @@ -1048,7 +1048,7 @@ void PrepareToLoadBLV(bool bLoading) { pParty->_viewPitch = 0; pParty->_viewYaw = 0; pParty->pos = Vec3f(); - pParty->speed = Vec3f(); + pParty->velocity = Vec3f(); pParty->uFallStartZ = 0; TeleportToStartingPoint(uLevel_StartingPointType); pBLVRenderParams->Reset(); @@ -1623,7 +1623,7 @@ void BLV_ProcessPartyActions() { // could this be combined with odm process act int rotation = pEventTimer->dt().ticks() * pParty->_yawRotationSpeed * TrigLUT.uIntegerPi / 180 / Duration::TICKS_PER_REALTIME_SECOND; - pParty->speed = Vec3f(0, 0, pParty->speed.z); + pParty->velocity = Vec3f(0, 0, pParty->velocity.z); while (pPartyActionQueue->uNumActions) { switch (pPartyActionQueue->Next()) { @@ -1655,38 +1655,38 @@ void BLV_ProcessPartyActions() { // could this be combined with odm process act break; case PARTY_StrafeLeft: - pParty->speed.x -= TrigLUT.sin(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; - pParty->speed.y += TrigLUT.cos(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; + pParty->velocity.x -= TrigLUT.sin(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; + pParty->velocity.y += TrigLUT.cos(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; party_walking_flag = true; break; case PARTY_StrafeRight: - pParty->speed.y -= TrigLUT.cos(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; - pParty->speed.x += TrigLUT.sin(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; + pParty->velocity.y -= TrigLUT.cos(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; + pParty->velocity.x += TrigLUT.sin(angle) * pParty->walkSpeed * fWalkSpeedMultiplier / 2; party_walking_flag = true; break; case PARTY_WalkForward: - pParty->speed.x += TrigLUT.cos(angle) * pParty->walkSpeed * fWalkSpeedMultiplier; - pParty->speed.y += TrigLUT.sin(angle) * pParty->walkSpeed * fWalkSpeedMultiplier; + pParty->velocity.x += TrigLUT.cos(angle) * pParty->walkSpeed * fWalkSpeedMultiplier; + pParty->velocity.y += TrigLUT.sin(angle) * pParty->walkSpeed * fWalkSpeedMultiplier; party_walking_flag = true; break; case PARTY_WalkBackward: - pParty->speed.x -= TrigLUT.cos(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; - pParty->speed.y -= TrigLUT.sin(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; + pParty->velocity.x -= TrigLUT.cos(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; + pParty->velocity.y -= TrigLUT.sin(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; party_walking_flag = true; break; case PARTY_RunForward: - pParty->speed.x += TrigLUT.cos(angle) * 2 * pParty->walkSpeed * fWalkSpeedMultiplier; - pParty->speed.y += TrigLUT.sin(angle) * 2 * pParty->walkSpeed * fWalkSpeedMultiplier; + pParty->velocity.x += TrigLUT.cos(angle) * 2 * pParty->walkSpeed * fWalkSpeedMultiplier; + pParty->velocity.y += TrigLUT.sin(angle) * 2 * pParty->walkSpeed * fWalkSpeedMultiplier; party_running_flag = true; break; case PARTY_RunBackward: - pParty->speed.x -= TrigLUT.cos(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; - pParty->speed.y -= TrigLUT.sin(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; + pParty->velocity.x -= TrigLUT.cos(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; + pParty->velocity.y -= TrigLUT.sin(angle) * pParty->walkSpeed * fBackwardWalkSpeedMultiplier; party_walking_flag = true; break; @@ -1711,9 +1711,9 @@ void BLV_ProcessPartyActions() { // could this be combined with odm process act break; case PARTY_Jump: - if ((!isAboveGround || pParty->pos.z <= floorZ + 6 && pParty->speed.z <= 0) && pParty->jump_strength) { + if ((!isAboveGround || pParty->pos.z <= floorZ + 6 && pParty->velocity.z <= 0) && pParty->jump_strength) { isAboveGround = true; - pParty->speed.z += pParty->jump_strength * 96; + pParty->velocity.z += pParty->jump_strength * 96; } break; default: @@ -1722,8 +1722,8 @@ void BLV_ProcessPartyActions() { // could this be combined with odm process act } if (isAboveGround) { - pParty->speed.z += -2.0f * pEventTimer->dt().ticks() * GetGravityStrength(); - if (pParty->speed.z < -500) { + pParty->velocity.z += -2.0f * pEventTimer->dt().ticks() * GetGravityStrength(); + if (pParty->velocity.z < -500) { for (Character &character : pParty->pCharacters) { if (!character.HasEnchantedItemEquipped(ITEM_ENCHANTMENT_OF_FEATHER_FALLING) && !character.WearsItem(ITEM_ARTIFACT_HERMES_SANDALS, ITEM_SLOT_BOOTS)) { // was 8 @@ -1733,34 +1733,34 @@ void BLV_ProcessPartyActions() { // could this be combined with odm process act } } else { if (pIndoor->pFaces[faceId].facePlane.normal.z < 0.5) { - pParty->speed.z -= 1.0f * pEventTimer->dt().ticks() * GetGravityStrength(); + pParty->velocity.z -= 1.0f * pEventTimer->dt().ticks() * GetGravityStrength(); } else { if (!(pParty->uFlags & PARTY_FLAG_LANDING)) - pParty->speed.z = 0; + pParty->velocity.z = 0; } } - if (!isAboveGround || pParty->speed.z > 0) + if (!isAboveGround || pParty->velocity.z > 0) pParty->uFallStartZ = pParty->pos.z; // If party movement delta is lower then this number then the party remains stationary. int64_t elapsed_time_bounded = std::min(pEventTimer->dt().ticks(), static_cast(10000)); int min_party_move_delta_sqr = 400 * elapsed_time_bounded * elapsed_time_bounded / 8; - if (pParty->speed.xy().lengthSqr() < min_party_move_delta_sqr) { - pParty->speed.x = 0; - pParty->speed.y = 0; + if (pParty->velocity.xy().lengthSqr() < min_party_move_delta_sqr) { + pParty->velocity.x = 0; + pParty->velocity.y = 0; } Vec3f oldPos = pParty->pos; - Vec3f savedspeed = pParty->speed; + Vec3f savedspeed = pParty->velocity; // horizontal - pParty->speed.z = 0; + pParty->velocity.z = 0; ProcessPartyCollisionsBLV(sectorId, min_party_move_delta_sqr, &faceId, &faceEvent); // vertical - only when horizonal motion hasnt caused height gain if (pParty->pos.z <= oldPos.z) { - pParty->speed = Vec3f(0, 0, savedspeed.z); + pParty->velocity = Vec3f(0, 0, savedspeed.z); ProcessPartyCollisionsBLV(sectorId, min_party_move_delta_sqr, &faceId, &faceEvent); } diff --git a/src/Engine/Graphics/Outdoor.cpp b/src/Engine/Graphics/Outdoor.cpp index e23f6ca6874a..d0f118593171 100644 --- a/src/Engine/Graphics/Outdoor.cpp +++ b/src/Engine/Graphics/Outdoor.cpp @@ -1690,7 +1690,7 @@ void ODM_ProcessPartyActions() { } // set params before input - Vec3f partyInputSpeed = Vec3f(0, 0, pParty->speed.z); + Vec3f partyInputSpeed = Vec3f(0, 0, pParty->velocity.z); if (pParty->bFlying) { partyInputSpeed.z = 0; } @@ -1720,7 +1720,7 @@ void ODM_ProcessPartyActions() { (pParty->pCharacters[pParty->pPartyBuffs[PARTY_BUFF_FLY].caster - 1].mana > 0 || engine->config->debug.AllMagic.value())) { if (pParty->sPartySavedFlightZ < engine->config->gameplay.MaxFlightHeight.value() || partyNotTouchingFloor) { pParty->bFlying = true; - pParty->speed.z = 0; + pParty->velocity.z = 0; noFlightBob = true; pParty->uFlags &= ~(PARTY_FLAG_LANDING | PARTY_FLAG_JUMPING); if (pParty->sPartySavedFlightZ < engine->config->gameplay.MaxFlightHeight.value()) { @@ -2062,7 +2062,7 @@ void ODM_ProcessPartyActions() { pParty->pos.x = partyNewPos.x; pParty->pos.y = partyNewPos.y; - pParty->speed.z = partyInputSpeed.z; + pParty->velocity.z = partyInputSpeed.z; pParty->pos.z = partyNewPos.z; pParty->sPartySavedFlightZ = partyOldFlightZ; @@ -2108,7 +2108,7 @@ void ODM_ProcessPartyActions() { } pParty->pos.z = partyNewPos.z; - pParty->speed.z = partyInputSpeed.z; + pParty->velocity.z = partyInputSpeed.z; pParty->sPartySavedFlightZ = partyOldFlightZ; pParty->uFlags &= ~(PARTY_FLAG_BURNING | PARTY_FLAG_WATER_DAMAGE); @@ -2138,7 +2138,7 @@ void ODM_ProcessPartyActions() { (eventProcessor(triggerID, Pid(), 1), pParty->pos.x == partyNewPos.x) && pParty->pos.y == partyNewPos.y && pParty->pos.z == partyNewPos.z) { if (((pParty->pos.z <= newGroundLevel || partyHasHitModel) && partyInputSpeed.z < 0)) { - pParty->speed.z = 0; + pParty->velocity.z = 0; if (!partyHasHitModel) pParty->pos.z = newGroundLevel; if (pParty->uFallStartZ - partyNewPos.z > 512 && !partyHasFeatherFall && @@ -2810,7 +2810,7 @@ void TeleportToStartingPoint(MapStartPoint point) { for (size_t i = 0; i < pLevelDecorations.size(); ++i) { if (pLevelDecorations[i].uDecorationDescID == pDecorationList->GetDecorIdByName(pName)) { pParty->pos = pLevelDecorations[i].vPosition.toFloat(); - pParty->speed = Vec3f(); + pParty->velocity = Vec3f(); pParty->uFallStartZ = pParty->pos.z; pParty->_viewYaw = (TrigLUT.uIntegerHalfPi * pLevelDecorations[i].field_1A) / 90; if (pLevelDecorations[i]._yawAngle) diff --git a/src/Engine/Party.cpp b/src/Engine/Party.cpp index 2bc6b5df7a73..55cdbcf41f52 100644 --- a/src/Engine/Party.cpp +++ b/src/Engine/Party.cpp @@ -92,7 +92,7 @@ void Party::Zero() { PartyTimes.shopBanTimes.fill(Time()); PartyTimes._s_times.fill(Time()); pos = lastPos = Vec3f(); - speed = Vec3f(); + velocity = Vec3f(); _viewYaw = _viewPrevYaw = 0; _viewPitch = _viewPrevPitch = 0; lastEyeLevel = 0; @@ -698,7 +698,7 @@ void Party::yell() { //----- (00491BF9) -------------------------------------------------------- void Party::ResetPosMiscAndSpellBuffs() { this->pos = Vec3f(); - this->speed = Vec3f(); + this->velocity = Vec3f(); this->uFallStartZ = 0; this->_viewYaw = 0; this->_viewPitch = 0; diff --git a/src/Engine/Party.h b/src/Engine/Party.h index ca23ea767f4a..fb0dcbabbf7f 100644 --- a/src/Engine/Party.h +++ b/src/Engine/Party.h @@ -275,7 +275,7 @@ struct Party { Time last_regenerated; // Timestamp when HP/MP regeneration was done last time. PartyTimeStruct PartyTimes; Vec3f pos; - Vec3f speed; // Party speed, negative z => falling, positive z => jumping. + Vec3f velocity; // Party speed, negative z => falling, positive z => jumping. // Note that only z component is preserved between frames, x & y are fully determined by the keys pressed. int _viewYaw; // View yaw in polar coordinates, 0 is positive X, 512 (pi/2) is positive Y. int _viewPitch; // View pitch in polar coordinates, 0 is horizontal, positive is looking up, negative is looking down. diff --git a/src/Engine/Snapshots/EntitySnapshots.cpp b/src/Engine/Snapshots/EntitySnapshots.cpp index 93e84e6dea1d..9211d5c9b02b 100644 --- a/src/Engine/Snapshots/EntitySnapshots.cpp +++ b/src/Engine/Snapshots/EntitySnapshots.cpp @@ -483,7 +483,7 @@ void snapshot(const Party &src, Party_MM7 *dst) { dst->viewPrevYaw = src._viewPrevYaw; dst->viewPrevPitch = src._viewPrevPitch; dst->prevEyeLevel = src.lastEyeLevel; - dst->fallSpeed = src.speed.z; + dst->fallSpeed = src.velocity.z; dst->savedFlightZ = src.sPartySavedFlightZ; dst->waterLavaTimer = src._6FC_water_lava_timer.ticks(); // Can overflow and that's OK. dst->fallStartZ = src.uFallStartZ; @@ -592,7 +592,7 @@ void reconstruct(const Party_MM7 &src, Party *dst) { dst->_viewPrevYaw = src.viewPrevYaw; dst->_viewPrevPitch = src.viewPrevPitch; dst->lastEyeLevel = src.prevEyeLevel; - dst->speed = Vec3f(0, 0, src.fallSpeed); + dst->velocity = Vec3f(0, 0, src.fallSpeed); dst->sPartySavedFlightZ = src.savedFlightZ; dst->_6FC_water_lava_timer = Time::fromTicks(src.waterLavaTimer); dst->uFallStartZ = src.fallStartZ; diff --git a/src/Engine/Spells/CastSpellInfo.cpp b/src/Engine/Spells/CastSpellInfo.cpp index 7b6e9eec1a9d..4209c7e7106e 100644 --- a/src/Engine/Spells/CastSpellInfo.cpp +++ b/src/Engine/Spells/CastSpellInfo.cpp @@ -1120,7 +1120,7 @@ void CastSpellInfoHelpers::castSpell() { continue; } pParty->uFlags |= PARTY_FLAG_JUMPING; - pParty->speed.z = 1000; + pParty->velocity.z = 1000; pParty->pos.z += 5; break; } diff --git a/src/Engine/TeleportPoint.cpp b/src/Engine/TeleportPoint.cpp index e0564ceb39d8..436a7d2bc480 100644 --- a/src/Engine/TeleportPoint.cpp +++ b/src/Engine/TeleportPoint.cpp @@ -19,7 +19,7 @@ void TeleportPoint::doTeleport(bool keepOnZero) { assert(_teleportValid); Vec3f newPos = pParty->pos; - Vec3f newSpeed = pParty->speed; + Vec3f newSpeed = pParty->velocity; int newFallStart = pParty->uFallStartZ; int newPitch = pParty->_viewPitch; @@ -48,7 +48,7 @@ void TeleportPoint::doTeleport(bool keepOnZero) { } pParty->pos = newPos; - pParty->speed = newSpeed; + pParty->velocity = newSpeed; pParty->uFallStartZ = newFallStart; if (_yaw != -1) { pParty->_viewYaw = _yaw; diff --git a/src/GUI/UI/NPCTopics.cpp b/src/GUI/UI/NPCTopics.cpp index a388ba53a1f0..fabd51f80934 100644 --- a/src/GUI/UI/NPCTopics.cpp +++ b/src/GUI/UI/NPCTopics.cpp @@ -242,7 +242,7 @@ DialogueId arenaMainDialogue() { return DIALOGUE_ARENA_REWARD; } else { pParty->pos = Vec3f(3849, 5770, 1); - pParty->speed = Vec3f(); + pParty->velocity = Vec3f(); pParty->uFallStartZ = 1; pParty->_viewYaw = 512; pParty->_viewPitch = 0; @@ -282,7 +282,7 @@ void prepareArenaFight(DialogueId dialogue) { render->Present(); pParty->pos = Vec3f(3849, 5770, 1); // TODO(pskelton) :: extract this common teleport to func - pParty->speed = Vec3f(); + pParty->velocity = Vec3f(); pParty->uFallStartZ = 1; pParty->_viewYaw = 512; pParty->_viewPitch = 0; From da220b2fb8fd5d6beb07400d75b2e13952245c7d Mon Sep 17 00:00:00 2001 From: Peter Skelton Date: Thu, 29 Feb 2024 22:52:39 +0000 Subject: [PATCH 2/2] Actor speed -> velocity --- src/Engine/Graphics/Collisions.cpp | 64 ++++++++++----------- src/Engine/Graphics/Indoor.cpp | 24 ++++---- src/Engine/Graphics/Outdoor.cpp | 56 +++++++++--------- src/Engine/Objects/Actor.cpp | 72 ++++++++++++------------ src/Engine/Objects/Actor.h | 2 +- src/Engine/Snapshots/EntitySnapshots.cpp | 4 +- src/Engine/Spells/CastSpellInfo.cpp | 4 +- 7 files changed, 113 insertions(+), 113 deletions(-) diff --git a/src/Engine/Graphics/Collisions.cpp b/src/Engine/Graphics/Collisions.cpp index 027ff856fda6..6990c4095c72 100644 --- a/src/Engine/Graphics/Collisions.cpp +++ b/src/Engine/Graphics/Collisions.cpp @@ -587,7 +587,7 @@ void ProcessActorCollisionsBLV(Actor &actor, bool isAboveGround, bool isFlying) collision_state.position_lo = actor.pos.toFloat() + Vec3f(0, 0, actor.radius + 1); collision_state.position_hi = actor.pos.toFloat() + Vec3f(0, 0, actor.height - actor.radius - 1); collision_state.position_hi.z = std::max(collision_state.position_hi.z, collision_state.position_lo.z); - collision_state.velocity = actor.speed.toFloat(); + collision_state.velocity = actor.velocity.toFloat(); collision_state.uSectorID = actor.sectorId; if (collision_state.PrepareAndCheckIfStationary()) break; @@ -661,8 +661,8 @@ void ProcessActorCollisionsBLV(Actor &actor, bool isAboveGround, bool isFlying) if (type == OBJECT_Character) { if (actor.GetActorsRelation(0) != HOSTILITY_FRIENDLY) { - actor.speed.y = 0; - actor.speed.x = 0; + actor.velocity.y = 0; + actor.velocity.x = 0; if (pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].Active()) { pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].Reset(); @@ -673,10 +673,10 @@ void ProcessActorCollisionsBLV(Actor &actor, bool isAboveGround, bool isFlying) } if (type == OBJECT_Decoration) { - int speed = integer_sqrt(actor.speed.x * actor.speed.x + actor.speed.y * actor.speed.y); + int speed = integer_sqrt(actor.velocity.x * actor.velocity.x + actor.velocity.y * actor.velocity.y); int angle = TrigLUT.atan2(actor.pos.x - pLevelDecorations[id].vPosition.x, actor.pos.y - pLevelDecorations[id].vPosition.y); // Face away from the decoration. - actor.speed.x = TrigLUT.cos(angle) * speed; - actor.speed.y = TrigLUT.sin(angle) * speed; + actor.velocity.x = TrigLUT.cos(angle) * speed; + actor.velocity.y = TrigLUT.sin(angle) * speed; } if (type == OBJECT_Face) { @@ -684,31 +684,31 @@ void ProcessActorCollisionsBLV(Actor &actor, bool isAboveGround, bool isFlying) collision_state.ignored_face_id = collision_state.pid.id(); if (pIndoor->pFaces[id].uPolygonType == POLYGON_Floor) { - actor.speed.z = 0; + actor.velocity.z = 0; actor.pos.z = pIndoor->pVertices[face->pVertexIDs[0]].z + 1; - if (actor.speed.lengthSqr() < 400) { - actor.speed.x = 0; - actor.speed.y = 0; + if (actor.velocity.lengthSqr() < 400) { + actor.velocity.x = 0; + actor.velocity.y = 0; continue; // TODO(captainurist): drop this continue } } else { - float velocityDotNormal = dot(face->facePlane.normal, actor.speed.toFloat()); + float velocityDotNormal = dot(face->facePlane.normal, actor.velocity.toFloat()); velocityDotNormal = std::max(std::abs(velocityDotNormal), collision_state.speed / 8); - actor.speed += (velocityDotNormal * face->facePlane.normal).toInt(); + actor.velocity += (velocityDotNormal * face->facePlane.normal).toInt(); if (face->uPolygonType != POLYGON_InBetweenFloorAndWall && face->uPolygonType != POLYGON_Floor) { float overshoot = collision_state.radius_lo - face->facePlane.signedDistanceTo(actor.pos.toFloat()); if (overshoot > 0) actor.pos += (overshoot * pIndoor->pFaces[id].facePlane.normal).toInt(); - actor.yawAngle = TrigLUT.atan2(actor.speed.x, actor.speed.y); + actor.yawAngle = TrigLUT.atan2(actor.velocity.x, actor.velocity.y); } } if (pIndoor->pFaces[id].uAttributes & FACE_TriggerByMonster) eventProcessor(pIndoor->pFaceExtras[pIndoor->pFaces[id].uFaceExtraID].uEventID, Pid(), 1); } - actor.speed.x = fixpoint_mul(58500, actor.speed.x); - actor.speed.y = fixpoint_mul(58500, actor.speed.y); - actor.speed.z = fixpoint_mul(58500, actor.speed.z); + actor.velocity.x = fixpoint_mul(58500, actor.velocity.x); + actor.velocity.y = fixpoint_mul(58500, actor.velocity.y); + actor.velocity.z = fixpoint_mul(58500, actor.velocity.z); } } @@ -725,7 +725,7 @@ void ProcessActorCollisionsODM(Actor &actor, bool isFlying) { collision_state.position_lo = actor.pos.toFloat() + Vec3f(0, 0, actorRadius + 1); collision_state.position_hi = actor.pos.toFloat() + Vec3f(0, 0, actor.height - actorRadius - 1); collision_state.position_hi.z = std::max(collision_state.position_hi.z, collision_state.position_lo.z); - collision_state.velocity = actor.speed.toFloat(); + collision_state.velocity = actor.velocity.toFloat(); collision_state.uSectorID = 0; if (collision_state.PrepareAndCheckIfStationary()) break; @@ -783,8 +783,8 @@ void ProcessActorCollisionsODM(Actor &actor, bool isFlying) { if (type == OBJECT_Character) { if (actor.GetActorsRelation(0) != HOSTILITY_FRIENDLY) { - actor.speed.y = 0; - actor.speed.x = 0; + actor.velocity.y = 0; + actor.velocity.x = 0; if (pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].Active()) { pParty->pPartyBuffs[PARTY_BUFF_INVISIBILITY].Reset(); @@ -795,10 +795,10 @@ void ProcessActorCollisionsODM(Actor &actor, bool isFlying) { } if (type == OBJECT_Decoration) { - int speed = integer_sqrt(actor.speed.x * actor.speed.x + actor.speed.y * actor.speed.y); + int speed = integer_sqrt(actor.velocity.x * actor.velocity.x + actor.velocity.y * actor.velocity.y); int angle = TrigLUT.atan2(actor.pos.x - pLevelDecorations[id].vPosition.x, actor.pos.y - pLevelDecorations[id].vPosition.y); - actor.speed.x = TrigLUT.cos(angle) * speed; - actor.speed.y = TrigLUT.sin(angle) * speed; + actor.velocity.x = TrigLUT.cos(angle) * speed; + actor.velocity.y = TrigLUT.sin(angle) * speed; } if (type == OBJECT_Face) { @@ -806,32 +806,32 @@ void ProcessActorCollisionsODM(Actor &actor, bool isFlying) { if (!face->Ethereal()) { if (face->uPolygonType == POLYGON_Floor) { - actor.speed.z = 0; + actor.velocity.z = 0; actor.pos.z = pOutdoor->model(collision_state.pid).pVertices[face->pVertexIDs[0]].z + 1; - if (actor.speed.lengthSqr() < 400) { - actor.speed.y = 0; - actor.speed.x = 0; + if (actor.velocity.lengthSqr() < 400) { + actor.velocity.y = 0; + actor.velocity.x = 0; } } else { - float velocityDotNormal = dot(face->facePlane.normal, actor.speed.toFloat()); + float velocityDotNormal = dot(face->facePlane.normal, actor.velocity.toFloat()); // TODO(captainurist): in BLV code we have std::abs(velocityDotNormal) here, and adding std::abs affects traces. // Note that not all copies of this code have std::abs. Why? velocityDotNormal = std::max(velocityDotNormal, collision_state.speed / 8); - actor.speed += (velocityDotNormal * face->facePlane.normal).toInt(); + actor.velocity += (velocityDotNormal * face->facePlane.normal).toInt(); if (face->uPolygonType != POLYGON_InBetweenFloorAndWall) { float overshoot = collision_state.radius_lo - face->facePlane.signedDistanceTo(actor.pos.toFloat()); if (overshoot > 0) actor.pos += (overshoot * face->facePlane.normal).toInt(); - actor.yawAngle = TrigLUT.atan2(actor.speed.x, actor.speed.y); + actor.yawAngle = TrigLUT.atan2(actor.velocity.x, actor.velocity.y); } } } } - actor.speed.x = fixpoint_mul(58500, actor.speed.x); - actor.speed.y = fixpoint_mul(58500, actor.speed.y); - actor.speed.z = fixpoint_mul(58500, actor.speed.z); + actor.velocity.x = fixpoint_mul(58500, actor.velocity.x); + actor.velocity.y = fixpoint_mul(58500, actor.velocity.y); + actor.velocity.z = fixpoint_mul(58500, actor.velocity.z); } } diff --git a/src/Engine/Graphics/Indoor.cpp b/src/Engine/Graphics/Indoor.cpp index 36f8a2bf0809..37fd977ea96d 100644 --- a/src/Engine/Graphics/Indoor.cpp +++ b/src/Engine/Graphics/Indoor.cpp @@ -834,38 +834,38 @@ void UpdateActors_BLV() { if (moveSpeed > 1000) moveSpeed = 1000; - actor.speed.x = TrigLUT.cos(actor.yawAngle) * moveSpeed; - actor.speed.y = TrigLUT.sin(actor.yawAngle) * moveSpeed; + actor.velocity.x = TrigLUT.cos(actor.yawAngle) * moveSpeed; + actor.velocity.y = TrigLUT.sin(actor.yawAngle) * moveSpeed; if (isFlying) - actor.speed.z = TrigLUT.sin(actor.pitchAngle) * moveSpeed; + actor.velocity.z = TrigLUT.sin(actor.pitchAngle) * moveSpeed; } else { // actor is not moving // fixpoint(55000) = 0.83923339843, appears to be velocity decay. - actor.speed.x = fixpoint_mul(55000, actor.speed.x); - actor.speed.y = fixpoint_mul(55000, actor.speed.y); + actor.velocity.x = fixpoint_mul(55000, actor.velocity.x); + actor.velocity.y = fixpoint_mul(55000, actor.velocity.y); if (isFlying) - actor.speed.z = fixpoint_mul(55000, actor.speed.z); + actor.velocity.z = fixpoint_mul(55000, actor.velocity.z); } if (actor.pos.z <= floorZ) { actor.pos.z = floorZ + 1; if (pIndoor->pFaces[uFaceID].uPolygonType == POLYGON_Floor) { - if (actor.speed.z < 0) - actor.speed.z = 0; + if (actor.velocity.z < 0) + actor.velocity.z = 0; } else { // fixpoint(45000) = 0.68664550781, no idea what the actual semantics here is. if (pIndoor->pFaces[uFaceID].facePlane.normal.z < 0.68664550781f) // was 45000 fixpoint - actor.speed.z -= pEventTimer->dt().ticks() * GetGravityStrength(); + actor.velocity.z -= pEventTimer->dt().ticks() * GetGravityStrength(); } } else { if (isAboveGround && !isFlying) - actor.speed.z += -8 * pEventTimer->dt().ticks() * GetGravityStrength(); + actor.velocity.z += -8 * pEventTimer->dt().ticks() * GetGravityStrength(); } - if (actor.speed.lengthSqr() >= 400) { + if (actor.velocity.lengthSqr() >= 400) { ProcessActorCollisionsBLV(actor, isAboveGround, isFlying); } else { - actor.speed = Vec3i(0, 0, 0); + actor.velocity = Vec3i(0, 0, 0); if (pIndoor->pFaces[uFaceID].uAttributes & FACE_INDOOR_SKY) { if (actor.aiState == Dead) actor.aiState = Removed; diff --git a/src/Engine/Graphics/Outdoor.cpp b/src/Engine/Graphics/Outdoor.cpp index d0f118593171..5e1d5e5b4694 100644 --- a/src/Engine/Graphics/Outdoor.cpp +++ b/src/Engine/Graphics/Outdoor.cpp @@ -1213,9 +1213,9 @@ bool OutdoorLocation::InitalizeActors(MapId a1) { (pActors[i].currentHP == 0 || pActors[i].monsterInfo.hp == 0)) pActors[i].aiState = AIState::Dead; - pActors[i].speed.x = 0; - pActors[i].speed.y = 0; - pActors[i].speed.z = 0; + pActors[i].velocity.x = 0; + pActors[i].velocity.y = 0; + pActors[i].velocity.z = 0; pActors[i].UpdateAnimation(); pActors[i].monsterInfo.hostilityType = HOSTILITY_FRIENDLY; @@ -1237,9 +1237,9 @@ bool OutdoorLocation::InitalizeActors(MapId a1) { (pActors[i].currentHP == 0 || pActors[i].monsterInfo.hp == 0)) pActors[i].aiState = AIState::Dead; - pActors[i].speed.x = 0; - pActors[i].speed.y = 0; - pActors[i].speed.z = 0; + pActors[i].velocity.x = 0; + pActors[i].velocity.y = 0; + pActors[i].velocity.z = 0; pActors[i].UpdateAnimation(); pActors[i].monsterInfo.hostilityType = HOSTILITY_FRIENDLY; @@ -2359,22 +2359,22 @@ void UpdateActors_ODM() { if (Actor_Speed > 1000) Actor_Speed = 1000; - pActors[Actor_ITR].speed.x = TrigLUT.cos(pActors[Actor_ITR].yawAngle) * Actor_Speed; - pActors[Actor_ITR].speed.y = TrigLUT.sin(pActors[Actor_ITR].yawAngle) * Actor_Speed; + pActors[Actor_ITR].velocity.x = TrigLUT.cos(pActors[Actor_ITR].yawAngle) * Actor_Speed; + pActors[Actor_ITR].velocity.y = TrigLUT.sin(pActors[Actor_ITR].yawAngle) * Actor_Speed; if (uIsFlying) { - pActors[Actor_ITR].speed.z = TrigLUT.sin(pActors[Actor_ITR].pitchAngle) * Actor_Speed; + pActors[Actor_ITR].velocity.z = TrigLUT.sin(pActors[Actor_ITR].pitchAngle) * Actor_Speed; } } else { - pActors[Actor_ITR].speed.x = fixpoint_mul(55000, pActors[Actor_ITR].speed.x); - pActors[Actor_ITR].speed.y = fixpoint_mul(55000, pActors[Actor_ITR].speed.y); + pActors[Actor_ITR].velocity.x = fixpoint_mul(55000, pActors[Actor_ITR].velocity.x); + pActors[Actor_ITR].velocity.y = fixpoint_mul(55000, pActors[Actor_ITR].velocity.y); if (uIsFlying) - pActors[Actor_ITR].speed.z = fixpoint_mul(55000, pActors[Actor_ITR].speed.z); + pActors[Actor_ITR].velocity.z = fixpoint_mul(55000, pActors[Actor_ITR].velocity.z); } // BELOW FLOOR - POP UPWARDS if (pActors[Actor_ITR].pos.z < Floor_Level) { pActors[Actor_ITR].pos.z = Floor_Level; - pActors[Actor_ITR].speed.z = uIsFlying != 0 ? 0x14 : 0; + pActors[Actor_ITR].velocity.z = uIsFlying != 0 ? 0x14 : 0; } // GRAVITY if (!uIsAboveFloor || uIsFlying) { @@ -2384,25 +2384,25 @@ void UpdateActors_ODM() { ODM_GetTerrainNormalAt(pActors[Actor_ITR].pos.x, pActors[Actor_ITR].pos.y, &Terrain_Norm); uint16_t Gravity = GetGravityStrength(); - pActors[Actor_ITR].speed.z += -16 * pEventTimer->dt().ticks() * Gravity; - int v73 = std::abs(Terrain_Norm.x * pActors[Actor_ITR].speed.x + - Terrain_Norm.z * pActors[Actor_ITR].speed.z + - Terrain_Norm.y * pActors[Actor_ITR].speed.y) >> 15; + pActors[Actor_ITR].velocity.z += -16 * pEventTimer->dt().ticks() * Gravity; + int v73 = std::abs(Terrain_Norm.x * pActors[Actor_ITR].velocity.x + + Terrain_Norm.z * pActors[Actor_ITR].velocity.z + + Terrain_Norm.y * pActors[Actor_ITR].velocity.y) >> 15; - pActors[Actor_ITR].speed.x += fixpoint_mul(v73, Terrain_Norm.x); - pActors[Actor_ITR].speed.y += fixpoint_mul(v73, Terrain_Norm.y); + pActors[Actor_ITR].velocity.x += fixpoint_mul(v73, Terrain_Norm.x); + pActors[Actor_ITR].velocity.y += fixpoint_mul(v73, Terrain_Norm.y); pActors[Actor_ITR].yawAngle -= 32; // pActors[Actor_ITR].vVelocity.z += fixpoint_mul(v73, Terrain_Norm.z); } } else { - pActors[Actor_ITR].speed.z -= pEventTimer->dt().ticks() * GetGravityStrength(); + pActors[Actor_ITR].velocity.z -= pEventTimer->dt().ticks() * GetGravityStrength(); } // ARMAGEDDON PANIC if (pParty->armageddon_timer && pActors[Actor_ITR].CanAct() && pParty->armageddonForceCount > 0) { - pActors[Actor_ITR].speed.x += grng->random(100) - 50; - pActors[Actor_ITR].speed.y += grng->random(100) - 50; - pActors[Actor_ITR].speed.z += grng->random(100) - 20; + pActors[Actor_ITR].velocity.x += grng->random(100) - 50; + pActors[Actor_ITR].velocity.y += grng->random(100) - 50; + pActors[Actor_ITR].velocity.z += grng->random(100) - 20; pActors[Actor_ITR].aiState = Stunned; pActors[Actor_ITR].yawAngle += grng->random(32) - 16; pActors[Actor_ITR].UpdateAnimation(); @@ -2410,9 +2410,9 @@ void UpdateActors_ODM() { // TODO(pskelton): this cancels out the above - is this intended // MOVING TOO SLOW - if (pActors[Actor_ITR].speed.xy().lengthSqr() < 400 && Slope_High == 0) { - pActors[Actor_ITR].speed.y = 0; - pActors[Actor_ITR].speed.x = 0; + if (pActors[Actor_ITR].velocity.xy().lengthSqr() < 400 && Slope_High == 0) { + pActors[Actor_ITR].velocity.y = 0; + pActors[Actor_ITR].velocity.x = 0; } // COLLISIONS @@ -2423,8 +2423,8 @@ void UpdateActors_ODM() { // tile on (1) tile heading (2) bool tile1IsLand, tile2IsLand; tile1IsLand = !(pOutdoor->getTileAttribByPos(pActors[Actor_ITR].pos.x, pActors[Actor_ITR].pos.y) & TILE_DESC_WATER); - tile2IsLand = !(pOutdoor->getTileAttribByPos(pActors[Actor_ITR].pos.x + pActors[Actor_ITR].speed.x, - pActors[Actor_ITR].pos.y + pActors[Actor_ITR].speed.y) & TILE_DESC_WATER); + tile2IsLand = !(pOutdoor->getTileAttribByPos(pActors[Actor_ITR].pos.x + pActors[Actor_ITR].velocity.x, + pActors[Actor_ITR].pos.y + pActors[Actor_ITR].velocity.y) & TILE_DESC_WATER); if (!uIsFlying && tile1IsLand && !tile2IsLand) { // approaching water - turn away if (pActors[Actor_ITR].CanAct()) { diff --git a/src/Engine/Objects/Actor.cpp b/src/Engine/Objects/Actor.cpp index c7eb3b9baa73..9b9e09abcdff 100644 --- a/src/Engine/Objects/Actor.cpp +++ b/src/Engine/Objects/Actor.cpp @@ -1001,9 +1001,9 @@ void Actor::AI_FaceObject(unsigned int uActorID, Pid uObjID, pActors[uActorID].yawAngle = Dir_Out->uYawAngle; pActors[uActorID].currentActionTime = 0_ticks; - pActors[uActorID].speed.z = 0; - pActors[uActorID].speed.y = 0; - pActors[uActorID].speed.x = 0; + pActors[uActorID].velocity.z = 0; + pActors[uActorID].velocity.y = 0; + pActors[uActorID].velocity.x = 0; pActors[uActorID].pitchAngle = Dir_Out->uPitchAngle; pActors[uActorID].currentActionLength = Duration::fromRealtimeSeconds(2); pActors[uActorID].aiState = Interacting; @@ -1043,9 +1043,9 @@ void Actor::AI_Stand(unsigned int uActorID, Pid object_to_face_pid, pActors[uActorID].currentActionTime = 0_ticks; pActors[uActorID].yawAngle = a4->uYawAngle; pActors[uActorID].pitchAngle = a4->uPitchAngle; - pActors[uActorID].speed.z = 0; - pActors[uActorID].speed.y = 0; - pActors[uActorID].speed.x = 0; + pActors[uActorID].velocity.z = 0; + pActors[uActorID].velocity.y = 0; + pActors[uActorID].velocity.x = 0; pActors[uActorID].UpdateAnimation(); } @@ -1054,9 +1054,9 @@ void Actor::StandAwhile(unsigned int uActorID) { pActors[uActorID].currentActionLength = Duration::randomRealtimeSeconds(grng, 1, 2); pActors[uActorID].currentActionTime = 0_ticks; pActors[uActorID].aiState = Standing; - pActors[uActorID].speed.z = 0; - pActors[uActorID].speed.y = 0; - pActors[uActorID].speed.x = 0; + pActors[uActorID].velocity.z = 0; + pActors[uActorID].velocity.y = 0; + pActors[uActorID].velocity.x = 0; pActors[uActorID].UpdateAnimation(); } @@ -1124,9 +1124,9 @@ void Actor::AI_MeleeAttack(unsigned int uActorID, Pid sTargetPid, } else { pActors[uActorID].monsterInfo.recoveryTime = v25; } - pActors[uActorID].speed.z = 0; - pActors[uActorID].speed.y = 0; - pActors[uActorID].speed.x = 0; + pActors[uActorID].velocity.z = 0; + pActors[uActorID].velocity.y = 0; + pActors[uActorID].velocity.x = 0; pActors[uActorID].UpdateAnimation(); } else { Actor::AI_Pursue1(uActorID, sTargetPid, grng->random(2), 64_ticks, arg0); @@ -1355,9 +1355,9 @@ void Actor::AI_SpellAttack2(unsigned int uActorID, Pid edx0, } else { v3->monsterInfo.recoveryTime = v3->currentActionLength + debug_combat_recovery_mul * flt_debugrecmod3 * pDira; } - v3->speed.z = 0; - v3->speed.y = 0; - v3->speed.x = 0; + v3->velocity.z = 0; + v3->velocity.y = 0; + v3->velocity.x = 0; if (ShouldMonsterPlayAttackAnim(v3->monsterInfo.spell2Id)) { v3->currentActionLength = 64_ticks; v3->currentActionTime = 0_ticks; @@ -1430,9 +1430,9 @@ void Actor::AI_SpellAttack1(unsigned int uActorID, Pid sTargetPid, v3->monsterInfo.recoveryTime = v3->currentActionLength + debug_combat_recovery_mul * flt_debugrecmod3 * pDira; } v16 = v3->monsterInfo.spell1Id; - v3->speed.z = 0; - v3->speed.y = 0; - v3->speed.x = 0; + v3->velocity.z = 0; + v3->velocity.y = 0; + v3->velocity.x = 0; if (ShouldMonsterPlayAttackAnim(v3->monsterInfo.spell1Id)) { v3->currentActionLength = 64_ticks; v3->currentActionTime = 0_ticks; @@ -1504,9 +1504,9 @@ void Actor::AI_MissileAttack2(unsigned int uActorID, Pid sTargetPid, } else { v3->monsterInfo.recoveryTime = pDira; } - v3->speed.z = 0; - v3->speed.y = 0; - v3->speed.x = 0; + v3->velocity.z = 0; + v3->velocity.y = 0; + v3->velocity.x = 0; v3->UpdateAnimation(); } else { Actor::AI_Pursue1(uActorID, sTargetPid, uActorID, 64_ticks, pDir); @@ -1575,9 +1575,9 @@ void Actor::AI_MissileAttack1(unsigned int uActorID, Pid sTargetPid, } else { v3->monsterInfo.recoveryTime = v3->currentActionLength + flt_debugrecmod3 * debug_combat_recovery_mul * pDira; } - v3->speed.z = 0; - v3->speed.y = 0; - v3->speed.x = 0; + v3->velocity.z = 0; + v3->velocity.y = 0; + v3->velocity.x = 0; v3->UpdateAnimation(); } else { Actor::AI_Pursue1(uActorID, sTargetPid, uActorID, 64_ticks, pDir); @@ -1770,9 +1770,9 @@ void Actor::AI_Bored(unsigned int uActorID, Pid uObjID, actor->aiState = Fidgeting; actor->currentActionTime = 0_ticks; actor->yawAngle = a4->uYawAngle; - actor->speed.z = 0; - actor->speed.y = 0; - actor->speed.x = 0; + actor->velocity.z = 0; + actor->velocity.y = 0; + actor->velocity.x = 0; if (vrng->random(100) < 5) { Actor::playSound(uActorID, ACTOR_BORED_SOUND); } @@ -2406,11 +2406,11 @@ void Actor::ActorDamageFromMonster(Pid attacker_id, (int32_t)fixpoint_mul(pushDistance, pVelocity->y); pVelocity->z = (int32_t)fixpoint_mul(pushDistance, pVelocity->z); - pActors[actor_id].speed.x = + pActors[actor_id].velocity.x = 50 * (short)pVelocity->x; - pActors[actor_id].speed.y = + pActors[actor_id].velocity.y = 50 * (short)pVelocity->y; - pActors[actor_id].speed.z = + pActors[actor_id].velocity.z = 50 * (short)pVelocity->z; } Actor::AddOnDamageOverlay(actor_id, 1, finalDmg); @@ -3272,9 +3272,9 @@ void Actor::DamageMonsterFromParty(Pid a1, unsigned int uActorID_Monster, pVelocity->x = fixpoint_mul(knockbackValue, pVelocity->x); pVelocity->y = fixpoint_mul(knockbackValue, pVelocity->y); pVelocity->z = fixpoint_mul(knockbackValue, pVelocity->z); - pMonster->speed.x = 50 * (short)pVelocity->x; - pMonster->speed.y = 50 * (short)pVelocity->y; - pMonster->speed.z = 50 * (short)pVelocity->z; + pMonster->velocity.x = 50 * (short)pVelocity->x; + pMonster->velocity.y = 50 * (short)pVelocity->y; + pMonster->velocity.z = 50 * (short)pVelocity->z; } Actor::AddOnDamageOverlay(uActorID_Monster, 1, v61); } @@ -4699,11 +4699,11 @@ void ItemDamageFromActor(Pid uObjID, unsigned int uActorID, pVelocity->x = fixpoint_mul(a2a, pVelocity->x); pVelocity->y = fixpoint_mul(a2a, pVelocity->y); pVelocity->z = fixpoint_mul(a2a, pVelocity->z); - pActors[uActorID].speed.x = + pActors[uActorID].velocity.x = 50 * (short)pVelocity->x; - pActors[uActorID].speed.y = + pActors[uActorID].velocity.y = 50 * (short)pVelocity->y; - pActors[uActorID].speed.z = + pActors[uActorID].velocity.z = 50 * (short)pVelocity->z; } Actor::AddOnDamageOverlay(uActorID, 1, damage); diff --git a/src/Engine/Objects/Actor.h b/src/Engine/Objects/Actor.h index bb76eb472eac..0001e069cab2 100644 --- a/src/Engine/Objects/Actor.h +++ b/src/Engine/Objects/Actor.h @@ -211,7 +211,7 @@ class Actor { uint16_t height = 128; uint16_t moveSpeed = 200; Vec3i pos; - Vec3i speed; // TODO(captainurist): velocity is a better name for this, speed = ||velocity|| + Vec3i velocity; uint16_t yawAngle = 0; uint16_t pitchAngle = 0; int sectorId = 0; diff --git a/src/Engine/Snapshots/EntitySnapshots.cpp b/src/Engine/Snapshots/EntitySnapshots.cpp index 9211d5c9b02b..05520f63eddb 100644 --- a/src/Engine/Snapshots/EntitySnapshots.cpp +++ b/src/Engine/Snapshots/EntitySnapshots.cpp @@ -1225,7 +1225,7 @@ void snapshot(const Actor &src, Actor_MM7 *dst) { dst->uActorHeight = src.height; dst->uMovementSpeed = src.moveSpeed; snapshot(src.pos, &dst->vPosition); - snapshot(src.speed, &dst->vVelocity); + snapshot(src.velocity, &dst->vVelocity); dst->uYawAngle = src.yawAngle; dst->uPitchAngle = src.pitchAngle; dst->uSectorID = src.sectorId; @@ -1319,7 +1319,7 @@ void reconstruct(const Actor_MM7 &src, Actor *dst) { dst->height = src.uActorHeight; dst->moveSpeed = src.uMovementSpeed; reconstruct(src.vPosition, &dst->pos); - reconstruct(src.vVelocity, &dst->speed); + reconstruct(src.vVelocity, &dst->velocity); dst->yawAngle = src.uYawAngle; dst->pitchAngle = src.uPitchAngle; dst->sectorId = src.uSectorID; diff --git a/src/Engine/Spells/CastSpellInfo.cpp b/src/Engine/Spells/CastSpellInfo.cpp index 4209c7e7106e..193de8604550 100644 --- a/src/Engine/Spells/CastSpellInfo.cpp +++ b/src/Engine/Spells/CastSpellInfo.cpp @@ -560,8 +560,8 @@ void CastSpellInfoHelpers::castSpell() { pActors[monster_id].buffs[ACTOR_BUFF_PARALYZED] .Apply(pParty->GetPlayingTime() + Duration::fromMinutes(3 * spell_level), spell_mastery, 0, 0, 0); pActors[monster_id].attributes |= ACTOR_AGGRESSOR; - pActors[monster_id].speed.x = 0; - pActors[monster_id].speed.y = 0; + pActors[monster_id].velocity.x = 0; + pActors[monster_id].velocity.y = 0; spell_fx_renderer->sparklesOnActorAfterItCastsBuff(&pActors[monster_id], Color()); // TODO(captainurist): why transparent black? } break;