289{
290 data <<
uint32(movementSpline.Flags);
291 data <<
int32(movementSpline.Elapsed);
292 data <<
uint32(movementSpline.MoveTime);
293 data <<
uint32(movementSpline.FadeObjectTime);
294 data <<
uint8(movementSpline.Mode);
295 data << movementSpline.TransportGUID;
296 data <<
int8(movementSpline.VehicleSeat);
298 data.
WriteBits(movementSpline.Points.size(), 16);
299 data.
WriteBit(movementSpline.VehicleExitVoluntary);
300 data.
WriteBit(movementSpline.Interpolate);
301 data.
WriteBits(movementSpline.PackedDeltas.size(), 16);
302 data.
WriteBit(movementSpline.SplineFilter.has_value());
303 data.
WriteBit(movementSpline.SpellEffectExtraData.has_value());
304 data.
WriteBit(movementSpline.JumpExtraData.has_value());
305 data.
WriteBit(movementSpline.AnimTierTransition.has_value());
306 data.
WriteBit(movementSpline.Unknown901.has_value());
308
309 if (movementSpline.SplineFilter)
310 data << *movementSpline.SplineFilter;
311
312 switch (movementSpline.Face)
313 {
314 case ::Movement::MONSTER_MOVE_FACING_SPOT:
315 data << movementSpline.FaceSpot;
316 break;
317 case ::Movement::MONSTER_MOVE_FACING_TARGET:
318 data << float(movementSpline.FaceDirection);
319 data << movementSpline.FaceGUID;
320 break;
321 case ::Movement::MONSTER_MOVE_FACING_ANGLE:
322 data << float(movementSpline.FaceDirection);
323 break;
324 }
325
327 data << pos;
328
330 data << pos;
331
332 if (movementSpline.SpellEffectExtraData)
333 data << *movementSpline.SpellEffectExtraData;
334
335 if (movementSpline.JumpExtraData)
336 data << *movementSpline.JumpExtraData;
337
338 if (movementSpline.AnimTierTransition)
339 data << *movementSpline.AnimTierTransition;
340
341 if (movementSpline.Unknown901)
342 data << *movementSpline.Unknown901;
343
344 return data;
345}
uint8_t uint8
Definition: Define.h:145
int8_t int8
Definition: Define.h:141
int32_t int32
Definition: Define.h:139
Definition: Position.h:203