public MovementData(WorldObject wo, Motion motion) { WorldObject = wo; //var sequence = wo.Sequences; // do this here, or in network writer? IsAutonomous = motion.IsAutonomous; //MovementSequence = BitConverter.ToUInt16(sequence.GetNextSequence(SequenceType.ObjectMovement)); //if (IsAutonomous) //ServerControlSequence = BitConverter.ToUInt16(sequence.GetCurrentSequence(SequenceType.ObjectServerControl)); //else //ServerControlSequence = BitConverter.ToUInt16(sequence.GetNextSequence(SequenceType.ObjectServerControl)); MovementType = motion.MovementType; MotionFlags = motion.MotionFlags; //if (motion.HasTarget) //MotionFlags |= MotionFlags.StickToObject; //if (motion.StandingLongJump) //MotionFlags |= MotionFlags.StandingLongJump; // indicates if player started charging jump bar while standing still CurrentStyle = motion.Stance; switch (MovementType) { case MovementType.Invalid: Invalid = new MovementInvalid(this, motion); break; case MovementType.MoveToObject: MoveToObject = new MoveToObject(motion); break; case MovementType.MoveToPosition: MoveToPosition = new MoveToPosition(motion); break; case MovementType.TurnToObject: TurnToObject = new TurnToObject(motion); break; case MovementType.TurnToHeading: TurnToHeading = new TurnToHeading(motion); break; } }
public static void Write(this BinaryWriter writer, TurnToObject turnTo) { writer.WriteGuid(turnTo.Target); writer.Write(turnTo.DesiredHeading); writer.Write(turnTo.TurnToParameters); }