コード例 #1
0
ファイル: NetworkAnimator.cs プロジェクト: PlayFab/MpsSamples
        /// <summary>
        /// Custom Serialization
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="initialState"></param>
        /// <returns></returns>
        public override bool OnSerialize(NetworkWriter writer, bool initialState)
        {
            bool changed = base.OnSerialize(writer, initialState);

            if (initialState)
            {
                for (int i = 0; i < animator.layerCount; i++)
                {
                    if (animator.IsInTransition(i))
                    {
                        AnimatorStateInfo st = animator.GetNextAnimatorStateInfo(i);
                        writer.WriteInt(st.fullPathHash);
                        writer.WriteFloat(st.normalizedTime);
                    }
                    else
                    {
                        AnimatorStateInfo st = animator.GetCurrentAnimatorStateInfo(i);
                        writer.WriteInt(st.fullPathHash);
                        writer.WriteFloat(st.normalizedTime);
                    }
                    writer.WriteFloat(animator.GetLayerWeight(i));
                }
                WriteParameters(writer, initialState);
                return(true);
            }
            return(changed);
        }
コード例 #2
0
 public static void WriteRect(this NetworkWriter writer, Rect value)
 {
     writer.WriteFloat(value.xMin);
     writer.WriteFloat(value.yMin);
     writer.WriteFloat(value.width);
     writer.WriteFloat(value.height);
 }
コード例 #3
0
 public static void WriteQuaternion(this NetworkWriter writer, Quaternion value)
 {
     writer.WriteFloat(value.x);
     writer.WriteFloat(value.y);
     writer.WriteFloat(value.z);
     writer.WriteFloat(value.w);
 }
コード例 #4
0
 public static void WriteColor(this NetworkWriter writer, Color value)
 {
     writer.WriteFloat(value.r);
     writer.WriteFloat(value.g);
     writer.WriteFloat(value.b);
     writer.WriteFloat(value.a);
 }
コード例 #5
0
 public static void WriteVector4(this NetworkWriter writer, Vector4 value)
 {
     writer.WriteFloat(value.x);
     writer.WriteFloat(value.y);
     writer.WriteFloat(value.z);
     writer.WriteFloat(value.w);
 }
コード例 #6
0
ファイル: NetworkAnimator.cs プロジェクト: PlayFab/MpsSamples
        bool WriteParameters(NetworkWriter writer, bool forceAll = false)
        {
            ulong dirtyBits = forceAll ? (~0ul) : NextDirtyBits();

            writer.WriteULong(dirtyBits);
            for (int i = 0; i < parameters.Length; i++)
            {
                if ((dirtyBits & (1ul << i)) == 0)
                {
                    continue;
                }

                AnimatorControllerParameter par = parameters[i];
                if (par.type == AnimatorControllerParameterType.Int)
                {
                    int newIntValue = animator.GetInteger(par.nameHash);
                    writer.WriteInt(newIntValue);
                }
                else if (par.type == AnimatorControllerParameterType.Float)
                {
                    float newFloatValue = animator.GetFloat(par.nameHash);
                    writer.WriteFloat(newFloatValue);
                }
                else if (par.type == AnimatorControllerParameterType.Bool)
                {
                    bool newBoolValue = animator.GetBool(par.nameHash);
                    writer.WriteBool(newBoolValue);
                }
            }
            return(dirtyBits != 0);
        }
コード例 #7
0
 public static void WriteFloatNullable(this NetworkWriter writer, float?value)
 {
     writer.WriteBool(value.HasValue);
     if (value.HasValue)
     {
         writer.WriteFloat(value.Value);
     }
 }
コード例 #8
0
 public static void WriteMatrix4x4(this NetworkWriter writer, Matrix4x4 value)
 {
     writer.WriteFloat(value.m00);
     writer.WriteFloat(value.m01);
     writer.WriteFloat(value.m02);
     writer.WriteFloat(value.m03);
     writer.WriteFloat(value.m10);
     writer.WriteFloat(value.m11);
     writer.WriteFloat(value.m12);
     writer.WriteFloat(value.m13);
     writer.WriteFloat(value.m20);
     writer.WriteFloat(value.m21);
     writer.WriteFloat(value.m22);
     writer.WriteFloat(value.m23);
     writer.WriteFloat(value.m30);
     writer.WriteFloat(value.m31);
     writer.WriteFloat(value.m32);
     writer.WriteFloat(value.m33);
 }
コード例 #9
0
 public static void WritePlane(this NetworkWriter writer, Plane value)
 {
     writer.WriteVector3(value.normal);
     writer.WriteFloat(value.distance);
 }
コード例 #10
0
 public static void WriteSingle(this NetworkWriter writer, float value) => writer.WriteFloat(value);