Skip to content

Commit f0c0616

Browse files
authored
Merge pull request #12 from angusmf/master
Avoid allocations in NetworkedAnimator
2 parents 85eee7b + 14487b1 commit f0c0616

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

MLAPI/MonoBehaviours/Prototyping/NetworkedAnimator.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class NetworkedAnimator : NetworkedBehaviour
1313
[SerializeField] uint m_ParameterSendBits;
1414
[SerializeField] float m_SendRate = 0.1f;
1515

16+
AnimatorControllerParameter[] m_AnimatorParameters;
17+
1618
// properties
1719
public Animator animator
1820
{
@@ -72,6 +74,7 @@ public void ResetParameterOptions()
7274
{
7375
Debug.Log("ResetParameterOptions");
7476
m_ParameterSendBits = 0;
77+
m_AnimatorParameters = null;
7578
}
7679

7780
void FixedUpdate()
@@ -245,12 +248,13 @@ internal void HandleAnimTriggerMsg(int clientId, byte[] data)
245248

246249
void WriteParameters(BinaryWriter writer, bool autoSend)
247250
{
248-
for (int i = 0; i < m_Animator.parameters.Length; i++)
251+
if (m_AnimatorParameters == null) m_AnimatorParameters = m_Animator.parameters;
252+
for (int i = 0; i < m_AnimatorParameters.Length; i++)
249253
{
250254
if (autoSend && !GetParameterAutoSend(i))
251255
continue;
252256

253-
AnimatorControllerParameter par = m_Animator.parameters[i];
257+
AnimatorControllerParameter par = m_AnimatorParameters[i];
254258
if (par.type == AnimatorControllerParameterType.Int)
255259
{
256260
writer.Write((uint)m_Animator.GetInteger(par.nameHash));
@@ -276,12 +280,13 @@ void WriteParameters(BinaryWriter writer, bool autoSend)
276280

277281
void ReadParameters(BinaryReader reader, bool autoSend)
278282
{
279-
for (int i = 0; i < m_Animator.parameters.Length; i++)
283+
if (m_AnimatorParameters == null) m_AnimatorParameters = m_Animator.parameters;
284+
for (int i = 0; i < m_AnimatorParameters.Length; i++)
280285
{
281286
if (autoSend && !GetParameterAutoSend(i))
282287
continue;
283288

284-
AnimatorControllerParameter par = m_Animator.parameters[i];
289+
AnimatorControllerParameter par = m_AnimatorParameters[i];
285290
if (par.type == AnimatorControllerParameterType.Int)
286291
{
287292
int newValue = (int)reader.ReadUInt32();

0 commit comments

Comments
 (0)