Beispiel #1
0
 public override void OnDeserialize(NetworkReader reader, bool initialState)
 {
     if (initialState)
     {
         TargetTransform.SetPosition(base.UseLocalSpace, reader.ReadVector3());
         TargetTransform.SetRotation(base.UseLocalSpace, Quaternions.DecompressQuaternion(reader.ReadUInt32()));
         TargetTransform.SetScale(reader.ReadVector3());
     }
     base.OnDeserialize(reader, initialState);
 }
Beispiel #2
0
        /// <summary>
        /// Reads a compressed quaternion from a reader.
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public static Quaternion ReadCompressedQuaternion(NetworkReader reader)
        {
            byte  largest = reader.ReadByte();
            short a = 0, b = 0, c = 0;

            if (!Quaternions.UseLargestOnly(largest))
            {
                a = reader.ReadInt16();
                b = reader.ReadInt16();
                c = reader.ReadInt16();
            }
            return(Quaternions.DecompressQuaternion(largest, a, b, c));
        }
        public override void OnDeserialize(NetworkReader reader, bool initialState)
        {
            if (initialState)
            {
                /* If root then no need to read transform data as that's already
                 * handled in the spawn message. */
                if (transform.root == null)
                {
                    base.OnDeserialize(reader, initialState);
                    return;
                }

                TargetTransform.SetPosition(base.UseLocalSpace, reader.ReadVector3());
                TargetTransform.SetRotation(base.UseLocalSpace, Quaternions.DecompressQuaternion(reader.ReadUInt32()));
                TargetTransform.SetScale(reader.ReadVector3());
            }
            base.OnDeserialize(reader, initialState);
        }
        /// <summary>
        /// Converts reader data into a new TransformSyncData.
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public static TransformSyncData ReadTransformSyncData(this NetworkReader reader)
        {
            TransformSyncData syncData = new TransformSyncData();

            //Sync properties.
            SyncProperties sp = (SyncProperties)reader.ReadByte();

            syncData.SyncProperties = (byte)sp;

            //NetworkIdentity.
            if (EnumContains.SyncPropertiesContains(sp, SyncProperties.Id1))
            {
                syncData.NetworkIdentity = reader.ReadByte();
            }
            else if (EnumContains.SyncPropertiesContains(sp, SyncProperties.Id2))
            {
                syncData.NetworkIdentity = reader.ReadUInt16();
            }
            else
            {
                syncData.NetworkIdentity = reader.ReadUInt32();
            }
            //ComponentIndex.
            syncData.ComponentIndex = reader.ReadByte();

            //Position.
            if (EnumContains.SyncPropertiesContains(sp, SyncProperties.Position))
            {
                if (EnumContains.SyncPropertiesContains(sp, SyncProperties.CompressSmall))
                {
                    syncData.Position = ReadCompressedVector3(reader);
                }
                else
                {
                    syncData.Position = reader.ReadVector3();
                }
            }
            //Rotation.
            if (EnumContains.SyncPropertiesContains(sp, SyncProperties.Rotation))
            {
                syncData.Rotation = Quaternions.DecompressQuaternion(reader.ReadUInt32());
            }
            //scale.
            if (EnumContains.SyncPropertiesContains(sp, SyncProperties.Scale))
            {
                if (EnumContains.SyncPropertiesContains(sp, SyncProperties.CompressSmall))
                {
                    syncData.Scale = ReadCompressedVector3(reader);
                }
                else
                {
                    syncData.Scale = reader.ReadVector3();
                }
            }
            //Platformed.
            if (EnumContains.SyncPropertiesContains(sp, SyncProperties.Platform))
            {
                syncData.PlatformNetId = reader.ReadUInt32();
            }

            return(syncData);
        }