void ReadParameters(NetworkReader reader) { bool animatorEnabled = animator.enabled; // need to read values from NetworkReader even if animator is disabled ulong dirtyBits = reader.ReadUInt64(); 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.ReadInt32(); if (animatorEnabled) { animator.SetInteger(par.nameHash, newIntValue); } } else if (par.type == AnimatorControllerParameterType.Float) { float newFloatValue = reader.ReadSingle(); if (animatorEnabled) { animator.SetFloat(par.nameHash, newFloatValue); } } else if (par.type == AnimatorControllerParameterType.Bool) { bool newBoolValue = reader.ReadBoolean(); if (animatorEnabled) { animator.SetBool(par.nameHash, newBoolValue); } } } }