TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
WorldPackets::Movement::CommonMovement Class Reference

#include <MovementPackets.h>

Static Public Member Functions

static void WriteCreateObjectSplineDataBlock (::Movement::MoveSpline const &moveSpline, ByteBuffer &data)
 

Member Function Documentation

void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock ( ::Movement::MoveSpline const moveSpline,
ByteBuffer data 
)
static
272 {
273  data << uint32(moveSpline.GetId()); // ID
274 
275  if (!moveSpline.isCyclic()) // Destination
276  data << moveSpline.FinalDestination().xyz();
277  else
278  data << G3D::Vector3::zero();
279 
280  if (data.WriteBit(!moveSpline.Finalized())) // MovementSplineMove
281  {
282  data.FlushBits();
283 
284  ::Movement::MoveSplineFlag const& splineFlags = moveSpline.splineflags;
285 
286  data.WriteBits(moveSpline.splineflags.raw(), 28); // SplineFlags
287 
289  if (splineFlags.final_angle)
291  else if (splineFlags.final_target)
293  else if (splineFlags.final_point)
295 
296  data.WriteBits(face, 2); // Face
297 
298  bool HasJumpGravity = data.WriteBit(moveSpline.splineflags & (::Movement::MoveSplineFlag::Parabolic | ::Movement::MoveSplineFlag::Animation)); // HasJumpGravity
299  bool HasSpecialTime = data.WriteBit((moveSpline.splineflags & ::Movement::MoveSplineFlag::Parabolic) && moveSpline.effect_start_time < moveSpline.Duration()); // HasSpecialTime
300 
301  data.WriteBits(uint8(moveSpline.spline.mode()), 2); // Mode
302 
303  data.WriteBit(0); // HasSplineFilterKey
304 
305  data << int32(moveSpline.timePassed()); // Elapsed
306  data << uint32(moveSpline.Duration()); // Duration
307  data << float(1.0f); // DurationModifier
308  data << float(1.0f); // NextDurationModifier
309 
310  uint32 PointsCount = moveSpline.getPath().size();
311  data << uint32(PointsCount);
312 
313  switch (face)
314  {
316  data << moveSpline.facing.f; // FaceSpot
317  break;
319  data << moveSpline.facing.target; // FaceGUID
320  break;
322  data << moveSpline.facing.angle; // FaceDirection
323  break;
324  }
325 
326  if (HasJumpGravity)
327  data << float(moveSpline.vertical_acceleration); // JumpGravity
328 
329  if (HasSpecialTime)
330  data << uint32(moveSpline.effect_start_time); // SpecialTime
331 
332  //if (HasSplineFilterKey)
333  //{
334  // data << uint32(FilterKeysCount);
335  // for (var i = 0; i < PointsCount; ++i)
336  // {
337  // data << float(In);
338  // data << float(Out);
339  // }
340 
341  // data.WriteBits(FilterFlags, 2);
342  //}
343 
344  data.append<G3D::Vector3>(&moveSpline.getPath()[0], PointsCount); // Points
345  }
346 }
Definition: MovementTypedefs.h:39
Definition: MoveSplineFlag.h:57
void FlushBits()
Definition: ByteBuffer.h:150
bool WriteBit(uint32 bit)
Definition: ByteBuffer.h:170
Definition: Vector3.h:58
bool final_point
Definition: MoveSplineFlag.h:136
static const Vector3 & zero()
Definition: Vector3.cpp:119
uint32_t uint32
Definition: Define.h:150
Definition: MoveSplineFlag.h:58
void append(T value)
Definition: ByteBuffer.h:143
Definition: MoveSplineFlag.h:28
uint8_t uint8
Definition: g3dmath.h:164
int32_t int32
Definition: g3dmath.h:167
uint8_t uint8
Definition: Define.h:152
uint32_t uint32
Definition: g3dmath.h:168
bool final_target
Definition: MoveSplineFlag.h:137
Definition: MovementTypedefs.h:37
Definition: MovementTypedefs.h:38
void WriteBits(T value, int32 bits)
Definition: ByteBuffer.h:198
bool final_angle
Definition: MoveSplineFlag.h:138
Definition: MovementTypedefs.h:40

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


The documentation for this class was generated from the following files: