Completely eliminate allocating new AnimatorParameterController array in network animator.

This commit is contained in:
DESKTOP-4BMTUHM\Jim 2018-03-05 09:50:32 -07:00
parent 39042c4987
commit a6a0b136ff

View File

@ -13,6 +13,8 @@ namespace MLAPI
[SerializeField] uint m_ParameterSendBits; [SerializeField] uint m_ParameterSendBits;
[SerializeField] float m_SendRate = 0.1f; [SerializeField] float m_SendRate = 0.1f;
AnimatorControllerParameter[] m_AnimatorParameters;
// properties // properties
public Animator animator public Animator animator
{ {
@ -20,6 +22,7 @@ namespace MLAPI
set set
{ {
m_Animator = value; m_Animator = value;
m_AnimatorParameters = m_Animator.parameters;
ResetParameterOptions(); ResetParameterOptions();
} }
} }
@ -245,13 +248,12 @@ namespace MLAPI
void WriteParameters(BinaryWriter writer, bool autoSend) void WriteParameters(BinaryWriter writer, bool autoSend)
{ {
AnimatorControllerParameter[] parameters = m_Animator.parameters; for (int i = 0; i < m_AnimatorParameters.Length; i++)
for (int i = 0; i < parameters.Length; i++)
{ {
if (autoSend && !GetParameterAutoSend(i)) if (autoSend && !GetParameterAutoSend(i))
continue; continue;
AnimatorControllerParameter par = parameters[i]; AnimatorControllerParameter par = m_AnimatorParameters[i];
if (par.type == AnimatorControllerParameterType.Int) if (par.type == AnimatorControllerParameterType.Int)
{ {
writer.Write((uint)m_Animator.GetInteger(par.nameHash)); writer.Write((uint)m_Animator.GetInteger(par.nameHash));
@ -277,13 +279,12 @@ namespace MLAPI
void ReadParameters(BinaryReader reader, bool autoSend) void ReadParameters(BinaryReader reader, bool autoSend)
{ {
AnimatorControllerParameter[] parameters = m_Animator.parameters; for (int i = 0; i < m_AnimatorParameters.Length; i++)
for (int i = 0; i < parameters.Length; i++)
{ {
if (autoSend && !GetParameterAutoSend(i)) if (autoSend && !GetParameterAutoSend(i))
continue; continue;
AnimatorControllerParameter par = parameters[i]; AnimatorControllerParameter par = m_AnimatorParameters[i];
if (par.type == AnimatorControllerParameterType.Int) if (par.type == AnimatorControllerParameterType.Int)
{ {
int newValue = (int)reader.ReadUInt32(); int newValue = (int)reader.ReadUInt32();