예제 #1
0
        /// <summary>
        /// Custom Deserialization
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="initialState"></param>
        public override void OnDeserialize(NetworkReader reader, bool initialState)
        {
            base.OnDeserialize(reader, initialState);
            if (initialState)
            {
                for (int i = 0; i < animator.layerCount; i++)
                {
                    int   stateHash      = reader.ReadInt();
                    float normalizedTime = reader.ReadFloat();
                    animator.SetLayerWeight(i, reader.ReadFloat());
                    animator.Play(stateHash, i, normalizedTime);
                }

                ReadParameters(reader);
            }
        }
예제 #2
0
        void ReadParameters(NetworkReader reader)
        {
            bool animatorEnabled = animator.enabled;
            // need to read values from NetworkReader even if animator is disabled

            ulong dirtyBits = reader.ReadULong();

            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 = reader.ReadInt();
                    if (animatorEnabled)
                    {
                        animator.SetInteger(par.nameHash, newIntValue);
                    }
                }
                else if (par.type == AnimatorControllerParameterType.Float)
                {
                    float newFloatValue = reader.ReadFloat();
                    if (animatorEnabled)
                    {
                        animator.SetFloat(par.nameHash, newFloatValue);
                    }
                }
                else if (par.type == AnimatorControllerParameterType.Bool)
                {
                    bool newBoolValue = reader.ReadBool();
                    if (animatorEnabled)
                    {
                        animator.SetBool(par.nameHash, newBoolValue);
                    }
                }
            }
        }