From 408fdc71781b79ba1704d4ec5b62c29128f43f40 Mon Sep 17 00:00:00 2001 From: Arthur Ice Date: Wed, 26 Nov 2014 15:58:29 -0800 Subject: [PATCH] tarv_x, tarv_y. tarv_z converted to xyz_location --- zone/mob.cpp | 6 ++--- zone/mob.h | 10 ++++----- zone/waypoints.cpp | 56 +++++++++++++++++++++++----------------------- 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/zone/mob.cpp b/zone/mob.cpp index 3e617511b..4db71440c 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -99,16 +99,14 @@ Mob::Mob(const char* in_name, gravity_timer(1000), viral_timer(0), m_FearWalkTarget(-999999.0f,-999999.0f,-999999.0f), - m_TargetLocation(0.0f, 0.0f, 0.0f), + m_TargetLocation(xyz_location::Origin()), + m_TargetV(xyz_location::Origin()), flee_timer(FLEE_CHECK_TIMER) { targeted = 0; tar_ndx=0; tar_vector=0; - tar_vx=0; - tar_vy=0; - tar_vz=0; curfp = false; AI_Init(); diff --git a/zone/mob.h b/zone/mob.h index d3b72fdcf..bbab7eaa5 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -402,9 +402,9 @@ public: inline const float GetTarX() const { return m_TargetLocation.m_X; } inline const float GetTarY() const { return m_TargetLocation.m_Y; } inline const float GetTarZ() const { return m_TargetLocation.m_Z; } - inline const float GetTarVX() const { return tar_vx; } - inline const float GetTarVY() const { return tar_vy; } - inline const float GetTarVZ() const { return tar_vz; } + inline const float GetTarVX() const { return m_TargetV.m_X; } + inline const float GetTarVY() const { return m_TargetV.m_Y; } + inline const float GetTarVZ() const { return m_TargetV.m_Z; } inline const float GetTarVector() const { return tar_vector; } inline const uint8 GetTarNDX() const { return tar_ndx; } bool IsBoat() const; @@ -1230,9 +1230,7 @@ protected: xyz_location m_TargetLocation; uint8 tar_ndx; float tar_vector; - float tar_vx; - float tar_vy; - float tar_vz; + xyz_location m_TargetV; float test_vector; xyz_location m_TargetRing; diff --git a/zone/waypoints.cpp b/zone/waypoints.cpp index 7a407cd9f..306714260 100644 --- a/zone/waypoints.cpp +++ b/zone/waypoints.cpp @@ -533,9 +533,9 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b int compare_steps = IsBoat() ? 1 : 20; if(tar_ndx < compare_steps && m_TargetLocation.m_X==x && m_TargetLocation.m_Y==y) { - float new_x = m_Position.m_X + tar_vx*tar_vector; - float new_y = m_Position.m_Y + tar_vy*tar_vector; - float new_z = m_Position.m_Z + tar_vz*tar_vector; + float new_x = m_Position.m_X + m_TargetV.m_X*tar_vector; + float new_y = m_Position.m_Y + m_TargetV.m_Y*tar_vector; + float new_z = m_Position.m_Z + m_TargetV.m_Z*tar_vector; if(IsNPC()) { entity_list.ProcessMove(CastToNPC(), new_x, new_y, new_z); } @@ -544,7 +544,7 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b m_Position.m_Y = new_y; m_Position.m_Z = new_z; - mlog(AI__WAYPOINTS, "Calculating new position2 to (%.3f, %.3f, %.3f), old vector (%.3f, %.3f, %.3f)", x, y, z, tar_vx, tar_vy, tar_vz); + mlog(AI__WAYPOINTS, "Calculating new position2 to (%.3f, %.3f, %.3f), old vector (%.3f, %.3f, %.3f)", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z); uint8 NPCFlyMode = 0; @@ -597,19 +597,19 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b float nz = this->m_Position.m_Z; // float nh = this->heading; - tar_vx = x - nx; - tar_vy = y - ny; - tar_vz = z - nz; + m_TargetV.m_X = x - nx; + m_TargetV.m_Y = y - ny; + m_TargetV.m_Z = z - nz; //pRunAnimSpeed = (int8)(speed*NPC_RUNANIM_RATIO); //speed *= NPC_SPEED_MULTIPLIER; - mlog(AI__WAYPOINTS, "Calculating new position2 to (%.3f, %.3f, %.3f), new vector (%.3f, %.3f, %.3f) rate %.3f, RAS %d", x, y, z, tar_vx, tar_vy, tar_vz, speed, pRunAnimSpeed); + mlog(AI__WAYPOINTS, "Calculating new position2 to (%.3f, %.3f, %.3f), new vector (%.3f, %.3f, %.3f) rate %.3f, RAS %d", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z, speed, pRunAnimSpeed); // -------------------------------------------------------------------------- // 2: get unit vector // -------------------------------------------------------------------------- - float mag = sqrtf (tar_vx*tar_vx + tar_vy*tar_vy + tar_vz*tar_vz); + float mag = sqrtf (m_TargetV.m_X*m_TargetV.m_X + m_TargetV.m_Y*m_TargetV.m_Y + m_TargetV.m_Z*m_TargetV.m_Z); tar_vector = speed / mag; // mob move fix @@ -622,14 +622,14 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b { if (numsteps>1) { - tar_vector=1.0f ; - tar_vx = tar_vx/numsteps; - tar_vy = tar_vy/numsteps; - tar_vz = tar_vz/numsteps; + tar_vector=1.0f ; + m_TargetV.m_X = m_TargetV.m_X/numsteps; + m_TargetV.m_Y = m_TargetV.m_Y/numsteps; + m_TargetV.m_Z = m_TargetV.m_Z/numsteps; - float new_x = m_Position.m_X + tar_vx; - float new_y = m_Position.m_Y + tar_vy; - float new_z = m_Position.m_Z + tar_vz; + float new_x = m_Position.m_X + m_TargetV.m_X; + float new_y = m_Position.m_Y + m_TargetV.m_Y; + float new_z = m_Position.m_Z + m_TargetV.m_Z; if(IsNPC()) { entity_list.ProcessMove(CastToNPC(), new_x, new_y, new_z); } @@ -659,9 +659,9 @@ bool Mob::MakeNewPositionAndSendUpdate(float x, float y, float z, float speed, b else { tar_vector/=20; - float new_x = m_Position.m_X + tar_vx*tar_vector; - float new_y = m_Position.m_Y + tar_vy*tar_vector; - float new_z = m_Position.m_Z + tar_vz*tar_vector; + float new_x = m_Position.m_X + m_TargetV.m_X*tar_vector; + float new_y = m_Position.m_Y + m_TargetV.m_Y*tar_vector; + float new_z = m_Position.m_Z + m_TargetV.m_Z*tar_vector; if(IsNPC()) { entity_list.ProcessMove(CastToNPC(), new_x, new_y, new_z); } @@ -753,22 +753,22 @@ bool Mob::CalculateNewPosition(float x, float y, float z, float speed, bool chec } float old_test_vector=test_vector; - tar_vx = x - nx; - tar_vy = y - ny; - tar_vz = z - nz; + m_TargetV.m_X = x - nx; + m_TargetV.m_Y = y - ny; + m_TargetV.m_Z = z - nz; - if (tar_vx == 0 && tar_vy == 0) + if (m_TargetV.m_X == 0 && m_TargetV.m_Y == 0) return false; pRunAnimSpeed = (uint8)(speed*NPC_RUNANIM_RATIO); speed *= NPC_SPEED_MULTIPLIER; - mlog(AI__WAYPOINTS, "Calculating new position to (%.3f, %.3f, %.3f) vector (%.3f, %.3f, %.3f) rate %.3f RAS %d", x, y, z, tar_vx, tar_vy, tar_vz, speed, pRunAnimSpeed); + mlog(AI__WAYPOINTS, "Calculating new position to (%.3f, %.3f, %.3f) vector (%.3f, %.3f, %.3f) rate %.3f RAS %d", x, y, z, m_TargetV.m_X, m_TargetV.m_Y, m_TargetV.m_Z, speed, pRunAnimSpeed); // -------------------------------------------------------------------------- // 2: get unit vector // -------------------------------------------------------------------------- test_vector=sqrtf (x*x + y*y + z*z); - tar_vector = speed / sqrtf (tar_vx*tar_vx + tar_vy*tar_vy + tar_vz*tar_vz); + tar_vector = speed / sqrtf (m_TargetV.m_X*m_TargetV.m_X + m_TargetV.m_Y*m_TargetV.m_Y + m_TargetV.m_Z*m_TargetV.m_Z); m_Position.m_Heading = CalculateHeadingToTarget(x, y); if (tar_vector >= 1.0) { @@ -782,9 +782,9 @@ bool Mob::CalculateNewPosition(float x, float y, float z, float speed, bool chec mlog(AI__WAYPOINTS, "Close enough, jumping to waypoint"); } else { - float new_x = m_Position.m_X + tar_vx*tar_vector; - float new_y = m_Position.m_Y + tar_vy*tar_vector; - float new_z = m_Position.m_Z + tar_vz*tar_vector; + float new_x = m_Position.m_X + m_TargetV.m_X*tar_vector; + float new_y = m_Position.m_Y + m_TargetV.m_Y*tar_vector; + float new_z = m_Position.m_Z + m_TargetV.m_Z*tar_vector; if(IsNPC()) { entity_list.ProcessMove(CastToNPC(), new_x, new_y, new_z); }