SerializeRotation3D() public static method

public static SerializeRotation3D ( NetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression ) : void
writer NetworkWriter
rot UnityEngine.Quaternion
mode AxisSyncMode
compression CompressionSyncMode
return void
        void SerializeModeTransform(NetworkWriter writer)
        {
            int start = writer.Position;

            foreach (var bone in m_Bones)
            {
                // position
                writer.Write(bone.localPosition);

                // rotation
                if (m_SyncRotationAxis != NetworkTransform.AxisSyncMode.None)
                {
                    NetworkTransform.SerializeRotation3D(writer, bone.localRotation, syncRotationAxis, rotationSyncCompression);
                }
            }

            int sz = writer.Position - start;

            if (sz > 1400 && binarySize == 0)
            {
                // this is only generated once.
                Debug.LogWarning("NetworkSkeleton binary serialization size is very large:" + sz + ". Consider reducing the number of levels being synchronized.");
            }
            binarySize = sz;
        }
Esempio n. 2
0
 private void SerializeModeTransform(NetworkWriter writer)
 {
     writer.Write(this.m_Target.localPosition);
     if (this.m_SyncRotationAxis != NetworkTransform.AxisSyncMode.None)
     {
         NetworkTransform.SerializeRotation3D(writer, this.m_Target.localRotation, this.syncRotationAxis, this.rotationSyncCompression);
     }
     this.m_PrevPosition = this.m_Target.localPosition;
     this.m_PrevRotation = this.m_Target.localRotation;
 }
        void SerializeModeTransform(NetworkWriter writer)
        {
            // position
            writer.Write(m_Target.localPosition);

            // rotation
            if (m_SyncRotationAxis != NetworkTransform.AxisSyncMode.None)
            {
                NetworkTransform.SerializeRotation3D(writer, m_Target.localRotation, syncRotationAxis, rotationSyncCompression);
            }
            m_PrevPosition = m_Target.localPosition;
            m_PrevRotation = m_Target.localRotation;
        }
        //send transform data out
        void SerializeModeTransform(NetworkWriter writer)
        {
            int        start = writer.Position;
            int        i     = 0;
            Quaternion relativeRotation;
            Vector3    relativePosition;

            print("Serialize: numbones=" + m_Bones.Length);
            foreach (var bone in m_Bones)
            {
                if (!bone)
                {  //send bad quaternion if no bone
                    Debug.Log("server skipping bone " + i + ",bone=" + boneIndex2MecanimMap[i]);
                    i++;
                    relativeRotation   = Quaternion.identity;
                    relativePosition   = Vector3.zero;
                    relativePosition.x = 111f;
                    relativePosition.y = 222f;
                    relativePosition.z = 333f;
                    writer.Write(relativePosition);
                    if (m_SyncRotationAxis != NetworkTransform.AxisSyncMode.None)
                    {
                        NetworkTransform.SerializeRotation3D(writer, relativeRotation, syncRotationAxis, rotationSyncCompression);
                    }
                    continue;
                }
                // position
                if (globalData)
                {
                    relativePosition = bone.position;
                }
                else
                {
                    relativePosition = bone.localPosition;
                }

                writer.Write(relativePosition);

                if (globalData)
                {
                    //                    relativeRotation = Quaternion.Inverse(initialRotations[i]) * bone.rotation;
                    relativeRotation = bone.rotation * Quaternion.Inverse(initialRotations[i]);
                }
                else
                {
                    relativeRotation = bone.localRotation; // * Quaternion.Inverse(initialLocalRotations[i++]);
                }
                // rotation
                if (m_SyncRotationAxis != NetworkTransform.AxisSyncMode.None)
                {
                    NetworkTransform.SerializeRotation3D(writer, relativeRotation, syncRotationAxis, rotationSyncCompression);
                }
                if (i == -1)
                {
                    print("server processing bone " + i + ",bone=" + boneIndex2MecanimMap[i]);
                    print("server processing bone " + i + ",rot=" + relativeRotation);
                    print("server processing bone " + i + ",pos=" + relativePosition);
                }
                i++;
            }

            int sz = writer.Position - start;

            if (sz > 1400 && binarySize == 0)
            {
                // this is only generated once.
                Debug.LogWarning("NetworkSkeleton binary serialization size is very large:" + sz + ". Consider reducing the number of levels being synchronized.");
            }
            binarySize = sz;
        }