Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 public static void WriteArray <T>(this NetworkWriter writer, T[] array)
 {
     if (array is null)
     {
         writer.WriteInt(-1);
         return;
     }
     writer.WriteInt(array.Length);
     for (int i = 0; i < array.Length; i++)
     {
         writer.Write(array[i]);
     }
 }
Esempio n. 3
0
 public static void WriteList <T>(this NetworkWriter writer, List <T> list)
 {
     if (list is null)
     {
         writer.WriteInt(-1);
         return;
     }
     writer.WriteInt(list.Count);
     for (int i = 0; i < list.Count; i++)
     {
         writer.Write(list[i]);
     }
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 public static void WriteIntNullable(this NetworkWriter writer, int?value)
 {
     writer.WriteBool(value.HasValue);
     if (value.HasValue)
     {
         writer.WriteInt(value.Value);
     }
 }
Esempio n. 6
0
        public static void WriteArraySegment <T>(this NetworkWriter writer, ArraySegment <T> segment)
        {
            int length = segment.Count;

            writer.WriteInt(length);
            for (int i = 0; i < length; i++)
            {
                writer.Write(segment.Array[segment.Offset + i]);
            }
        }
Esempio n. 7
0
 public static void WriteVector3Int(this NetworkWriter writer, Vector3Int value)
 {
     writer.WriteInt(value.x);
     writer.WriteInt(value.y);
     writer.WriteInt(value.z);
 }
Esempio n. 8
0
 public static void WriteInt32(this NetworkWriter writer, int value) => writer.WriteInt(value);