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