void PacketBuilder::WriteCreate(const MoveSpline& move_spline, ByteBuffer& data) { // WriteClientStatus(mov,data); // data.append<float>(&mov.m_float_values[SpeedWalk], SpeedMaxCount); // if (mov.SplineEnabled()) { MoveSplineFlag splineFlags = move_spline.splineflags; data << splineFlags.raw(); if (splineFlags.final_angle) { data << move_spline.facing.angle; } else if (splineFlags.final_target) { data << move_spline.facing.target; } else if (splineFlags.final_point) { data << move_spline.facing.f.x << move_spline.facing.f.y << move_spline.facing.f.z; } data << move_spline.timePassed(); data << move_spline.Duration(); data << move_spline.GetId(); uint32 nodes = move_spline.getPath().size(); data << nodes; data.append<Vector3>(&move_spline.getPath()[0], nodes); data << (move_spline.isCyclic() ? Vector3::zero() : move_spline.FinalDestination()); } }
void PacketBuilder::WriteCreateBits(MoveSpline const& moveSpline, ByteBuffer& data) { ASSERT(!moveSpline.Finalized()); MoveSplineFlag flags = moveSpline.splineflags; data.WriteBit(true); data.WriteBit(flags.parabolic || flags.animation); data.WriteBits(uint8(moveSpline.spline.mode()), 2); data.WriteBits(moveSpline.getPath().size(), 20); data.WriteBits(flags.raw(), 25); data.WriteBit(flags.parabolic); data.WriteBit(false); if (false) { data.WriteBits(0, 2); data.WriteBits(0, 21); } }