mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-16 01:01:30 +00:00
tarv_x, tarv_y. tarv_z converted to xyz_location
This commit is contained in:
parent
75543e68e3
commit
408fdc7178
@ -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();
|
||||
|
||||
10
zone/mob.h
10
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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user