public void  Serialize(BitWriter bw)
        {
            bw.Write(Sleeping);
            Position.Serialize(bw);
            Rotation.SerializeFixed(bw);

            if (!Sleeping)
            {
                LinearVelocity.Serialize(bw);
                AngularVelocity.Serialize(bw);
            }
        }
        public void  Serialize(BitWriter bw, UInt32 netVersion)
        {
            bw.Write(Sleeping);
            Position.Serialize(bw, netVersion);

            if (netVersion >= 7)
            {
                ((Quaternion)Rotation).Serialize(bw);
            }
            else
            {
                ((Vector3D)Rotation).SerializeFixed(bw);
            }

            if (!Sleeping)
            {
                LinearVelocity.Serialize(bw, netVersion);
                AngularVelocity.Serialize(bw, netVersion);
            }
        }
        public void  Serialize(BitWriter bw, UInt32 netVersion)
        {
            bw.Write(Sleeping);
            Position.Serialize(bw, netVersion);

            if (netVersion >= 7)
            {
                bw.Write(Unknown1);
            }

            Rotation.SerializeFixed(bw, netVersion);

            if (netVersion >= 7)
            {
                bw.Write(Unknown2);
            }

            if (!Sleeping)
            {
                LinearVelocity.Serialize(bw, netVersion);
                AngularVelocity.Serialize(bw, netVersion);
            }
        }