Core/Movement: Some movement fixes
This commit is contained in:
@@ -40,6 +40,7 @@ namespace Game
|
||||
[WorldPacketHandler(ClientOpcodes.MoveHeartbeat, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveJump, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveSetFacing, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveSetFacingHeartbeat, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveSetFly, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveSetPitch, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveSetRunMode, Processing = PacketProcessing.ThreadSafe)]
|
||||
@@ -61,6 +62,7 @@ namespace Game
|
||||
[WorldPacketHandler(ClientOpcodes.MoveStopStrafe, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveStopSwim, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveStopTurn, Processing = PacketProcessing.ThreadSafe)]
|
||||
[WorldPacketHandler(ClientOpcodes.MoveUpdateFallSpeed, Processing = PacketProcessing.ThreadSafe)]
|
||||
void HandleMovement(ClientPlayerMovement packet)
|
||||
{
|
||||
HandleMovementOpcode(packet.GetOpcode(), packet.Status);
|
||||
|
||||
@@ -266,9 +266,9 @@ namespace Game.Movement
|
||||
static bool PositionOkay(Unit owner, Unit target, float? minDistance, float? maxDistance, ChaseAngle? angle)
|
||||
{
|
||||
float distSq = owner.GetExactDistSq(target);
|
||||
if (minDistance.HasValue && distSq < MathF.Sqrt(minDistance.Value))
|
||||
if (minDistance.HasValue && distSq < minDistance.Value * minDistance.Value)
|
||||
return false;
|
||||
if (maxDistance.HasValue && distSq > MathF.Sqrt(maxDistance.Value))
|
||||
if (maxDistance.HasValue && distSq > maxDistance.Value * maxDistance.Value)
|
||||
return false;
|
||||
if (angle.HasValue && !angle.Value.IsAngleOkay(target.GetRelativeAngle(owner)))
|
||||
return false;
|
||||
|
||||
@@ -210,7 +210,7 @@ namespace Game.Movement
|
||||
|
||||
static bool PositionOkay(Unit owner, Unit target, float range, ChaseAngle? angle = null)
|
||||
{
|
||||
if (owner.GetExactDistSq(target) > MathF.Sqrt(owner.GetCombatReach() + target.GetCombatReach() + range))
|
||||
if (owner.GetExactDistSq(target) > (owner.GetCombatReach() + target.GetCombatReach() + range) * (owner.GetCombatReach() + target.GetCombatReach() + range))
|
||||
return false;
|
||||
|
||||
return !angle.HasValue || angle.Value.IsAngleOkay(target.GetRelativeAngle(owner));
|
||||
|
||||
Reference in New Issue
Block a user