-
Notifications
You must be signed in to change notification settings - Fork 461
Expand file tree
/
Copy pathAnimatorTestHelper.cs
More file actions
113 lines (95 loc) · 3.59 KB
/
AnimatorTestHelper.cs
File metadata and controls
113 lines (95 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using System;
using System.Collections.Generic;
using UnityEngine;
using Unity.Netcode;
using Unity.Netcode.Components;
namespace TestProject.RuntimeTests
{
public class AnimatorTestHelper : NetworkBehaviour
{
public static AnimatorTestHelper ServerSideInstance { get; private set; }
public readonly static Dictionary<ulong, AnimatorTestHelper> ClientSideInstances = new Dictionary<ulong, AnimatorTestHelper>();
public static bool IsTriggerTest;
public static void Initialize()
{
ServerSideInstance = null;
ClientSideInstances.Clear();
}
private Animator m_Animator;
private NetworkAnimator m_NetworkAnimator;
private void Awake()
{
m_Animator = GetComponent<Animator>();
m_NetworkAnimator = GetComponent<NetworkAnimator>();
}
public override void OnNetworkSpawn()
{
if (IsTriggerTest)
{
Debug.Log($"[AnimatorTestHelper][{IsServer}] {NetworkManager.name}");
}
if (IsServer)
{
ServerSideInstance = this;
}
else
{
if (!ClientSideInstances.ContainsKey(NetworkManager.LocalClientId))
{
ClientSideInstances.Add(NetworkManager.LocalClientId, this);
}
}
base.OnNetworkSpawn();
}
public Action<bool, bool> OnCheckIsServerIsClient;
public override void OnNetworkDespawn()
{
// This verifies the issue where IsServer and IsClient were
// being reset prior to NetworkObjects being despawned during
// the shutdown period.
OnCheckIsServerIsClient?.Invoke(IsServer, IsClient);
if (ClientSideInstances.ContainsKey(NetworkManager.LocalClientId))
{
ClientSideInstances.Remove(NetworkManager.LocalClientId);
}
base.OnNetworkDespawn();
}
public class ParameterValues
{
public float FloatValue;
public int IntValue;
public bool BoolValue;
public bool ValuesMatch(ParameterValues parameters, bool printOutput = false)
{
if (printOutput)
{
Debug.Log($"[ValuesMatch] Current values: {ValuesToString()}");
Debug.Log($"[ValuesMatch] Values to match {parameters.ValuesToString()}");
}
return parameters.BoolValue == BoolValue && parameters.FloatValue == FloatValue && parameters.IntValue == IntValue;
}
public string ValuesToString()
{
return $"{FloatValue}, {IntValue}, {BoolValue}";
}
}
public ParameterValues GetParameterValues()
{
return new ParameterValues() { FloatValue = m_Animator.GetFloat("TestFloat"), IntValue = m_Animator.GetInteger("TestInt"), BoolValue = m_Animator.GetBool("TestBool") };
}
public void UpdateParameters(ParameterValues parameterValues)
{
m_Animator.SetFloat("TestFloat", parameterValues.FloatValue);
m_Animator.SetInteger("TestInt", parameterValues.IntValue);
m_Animator.SetBool("TestBool", parameterValues.BoolValue);
}
public bool GetCurrentTriggerState()
{
return m_Animator.GetBool("TestTrigger");
}
public void SetTrigger(string name = "TestTrigger")
{
m_NetworkAnimator.SetTrigger(name);
}
}
}