diff options
| author | Shauren <shauren.trinity@gmail.com> | 2012-06-03 15:31:37 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2012-06-03 15:31:37 +0200 |
| commit | 3b44401aa66b8f6109a9499a71e40adc015219f4 (patch) | |
| tree | 9fd592286422bcb923bb4c66250e9c8619c1182b | |
| parent | 7a5e4dd5855bacb266084f1e1dcae7f74fc6159f (diff) | |
Core/Movement: Fixed Facing* splines on transports
| -rw-r--r-- | src/server/game/Movement/Spline/MoveSplineInit.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Movement/Spline/MoveSplineInit.h | 8 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index b8440e06076..c5f959e2f1d 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -138,6 +138,14 @@ namespace Movement void MoveSplineInit::SetFacing(float angle) { + if (unit.HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + { + if (Unit* vehicle = unit.GetVehicleBase()) + angle -= vehicle->GetOrientation(); + else if (Transport* transport = unit.GetTransport()) + angle -= transport->GetOrientation(); + } + args.facing.angle = G3D::wrap(angle, 0.f, (float)G3D::twoPi()); args.flags.EnableFacingAngle(); } diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index b1b08d97cfa..786324e3f77 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -166,9 +166,11 @@ namespace Movement inline void MoveSplineInit::SetFacing(Vector3 const& spot) { - args.facing.f.x = spot.x; - args.facing.f.y = spot.y; - args.facing.f.z = spot.z; + TransportPathTransform transform(unit); + Vector3 finalSpot = transform(spot); + args.facing.f.x = finalSpot.x; + args.facing.f.y = finalSpot.y; + args.facing.f.z = finalSpot.z; args.flags.EnableFacingPoint(); } } |
