1- using System ;
2- using System . IO ;
1+ using System . IO ;
32using UnityEngine ;
43
54namespace MLAPI
65{
7- [ DisallowMultipleComponent ]
8- [ RequireComponent ( typeof ( Animator ) ) ]
96 public class NetworkedAnimator : NetworkedBehaviour
107 {
11- // configuration
12- [ SerializeField ] Animator m_Animator ;
13- [ SerializeField ] uint m_ParameterSendBits ;
14- [ SerializeField ] float m_SendRate = 0.1f ;
8+ [ SerializeField ]
9+ private Animator _animator ;
10+ [ SerializeField ]
11+ private uint parameterSendBits ;
12+ [ SerializeField ]
13+ private float sendRate = 0.1f ;
14+ private AnimatorControllerParameter [ ] animatorParameters ;
15+
16+ private int animationHash ;
17+ private int transitionHash ;
18+ private float sendTimer ;
19+
20+ // tracking - these should probably move to a Preview component. -- Comment from HLAPI. Needs clarification
21+ public string param0 ;
22+ public string param1 ;
23+ public string param2 ;
24+ public string param3 ;
25+ public string param4 ;
26+ public string param5 ;
1527
16- AnimatorControllerParameter [ ] m_AnimatorParameters ;
17-
18- // properties
1928 public Animator animator
2029 {
21- get { return m_Animator ; }
30+ get { return _animator ; }
2231 set
2332 {
24- m_Animator = value ;
33+ _animator = value ;
2534 ResetParameterOptions ( ) ;
2635 }
2736 }
@@ -30,32 +39,20 @@ public void SetParameterAutoSend(int index, bool value)
3039 {
3140 if ( value )
3241 {
33- m_ParameterSendBits |= ( uint ) ( 1 << index ) ;
42+ parameterSendBits |= ( uint ) ( 1 << index ) ;
3443 }
3544 else
3645 {
37- m_ParameterSendBits &= ( uint ) ( ~ ( 1 << index ) ) ;
46+ parameterSendBits &= ( uint ) ( ~ ( 1 << index ) ) ;
3847 }
3948 }
4049
4150 public bool GetParameterAutoSend ( int index )
4251 {
43- return ( m_ParameterSendBits & ( uint ) ( 1 << index ) ) != 0 ;
52+ return ( parameterSendBits & ( uint ) ( 1 << index ) ) != 0 ;
4453 }
4554
46- int m_AnimationHash ;
47- int m_TransitionHash ;
48- float m_SendTimer ;
49-
50- // tracking - these should probably move to a Preview component.
51- public string param0 ;
52- public string param1 ;
53- public string param2 ;
54- public string param3 ;
55- public string param4 ;
56- public string param5 ;
57-
58- bool sendMessagesAllowed
55+ private bool sendMessagesAllowed
5956 {
6057 get
6158 {
@@ -73,23 +70,22 @@ public override void NetworkStart()
7370 public void ResetParameterOptions ( )
7471 {
7572 Debug . Log ( "ResetParameterOptions" ) ;
76- m_ParameterSendBits = 0 ;
77- m_AnimatorParameters = null ;
73+ parameterSendBits = 0 ;
74+ animatorParameters = null ;
7875 }
7976
80- void FixedUpdate ( )
77+ private void FixedUpdate ( )
8178 {
8279 if ( ! sendMessagesAllowed )
8380 return ;
8481
8582 CheckSendRate ( ) ;
8683
87- int stateHash ;
88- float normalizedTime ;
89- if ( ! CheckAnimStateChanged ( out stateHash , out normalizedTime ) )
84+ if ( ! CheckAnimStateChanged ( out int stateHash , out float normalizedTime ) )
9085 {
9186 return ;
9287 }
88+
9389 using ( MemoryStream stream = new MemoryStream ( ) )
9490 {
9591 using ( BinaryWriter writer = new BinaryWriter ( stream ) )
@@ -109,46 +105,46 @@ void FixedUpdate()
109105 }
110106 }
111107
112- bool CheckAnimStateChanged ( out int stateHash , out float normalizedTime )
108+ private bool CheckAnimStateChanged ( out int stateHash , out float normalizedTime )
113109 {
114110 stateHash = 0 ;
115111 normalizedTime = 0 ;
116112
117- if ( m_Animator . IsInTransition ( 0 ) )
113+ if ( animator . IsInTransition ( 0 ) )
118114 {
119- AnimatorTransitionInfo tt = m_Animator . GetAnimatorTransitionInfo ( 0 ) ;
120- if ( tt . fullPathHash != m_TransitionHash )
115+ AnimatorTransitionInfo animationTransitionInfo = animator . GetAnimatorTransitionInfo ( 0 ) ;
116+ if ( animationTransitionInfo . fullPathHash != transitionHash )
121117 {
122118 // first time in this transition
123- m_TransitionHash = tt . fullPathHash ;
124- m_AnimationHash = 0 ;
119+ transitionHash = animationTransitionInfo . fullPathHash ;
120+ animationHash = 0 ;
125121 return true ;
126122 }
127123 return false ;
128124 }
129125
130- AnimatorStateInfo st = m_Animator . GetCurrentAnimatorStateInfo ( 0 ) ;
131- if ( st . fullPathHash != m_AnimationHash )
126+ AnimatorStateInfo animationSateInfo = animator . GetCurrentAnimatorStateInfo ( 0 ) ;
127+ if ( animationSateInfo . fullPathHash != animationHash )
132128 {
133129 // first time in this animation state
134- if ( m_AnimationHash != 0 )
130+ if ( animationHash != 0 )
135131 {
136132 // came from another animation directly - from Play()
137- stateHash = st . fullPathHash ;
138- normalizedTime = st . normalizedTime ;
133+ stateHash = animationSateInfo . fullPathHash ;
134+ normalizedTime = animationSateInfo . normalizedTime ;
139135 }
140- m_TransitionHash = 0 ;
141- m_AnimationHash = st . fullPathHash ;
136+ transitionHash = 0 ;
137+ animationHash = animationSateInfo . fullPathHash ;
142138 return true ;
143139 }
144140 return false ;
145141 }
146142
147- void CheckSendRate ( )
143+ private void CheckSendRate ( )
148144 {
149- if ( sendMessagesAllowed && m_SendRate != 0 && m_SendTimer < Time . time )
145+ if ( sendMessagesAllowed && sendRate != 0 && sendTimer < Time . time )
150146 {
151- m_SendTimer = Time . time + m_SendRate ;
147+ sendTimer = Time . time + sendRate ;
152148
153149 using ( MemoryStream stream = new MemoryStream ( ) )
154150 {
@@ -168,7 +164,7 @@ void CheckSendRate()
168164 }
169165 }
170166
171- void SetSendTrackingParam ( string p , int i )
167+ private void SetSendTrackingParam ( string p , int i )
172168 {
173169 p = "Sent Param: " + p ;
174170 if ( i == 0 ) param0 = p ;
@@ -179,7 +175,7 @@ void SetSendTrackingParam(string p, int i)
179175 if ( i == 5 ) param5 = p ;
180176 }
181177
182- void SetRecvTrackingParam ( string p , int i )
178+ private void SetRecvTrackingParam ( string p , int i )
183179 {
184180 p = "Recv Param: " + p ;
185181 if ( i == 0 ) param0 = p ;
@@ -190,13 +186,12 @@ void SetRecvTrackingParam(string p, int i)
190186 if ( i == 5 ) param5 = p ;
191187 }
192188
193- internal void HandleAnimMsg ( int clientId , byte [ ] data )
189+ private void HandleAnimMsg ( int clientId , byte [ ] data )
194190 {
195191 // usually transitions will be triggered by parameters, if not, play anims directly.
196192 // NOTE: this plays "animations", not transitions, so any transitions will be skipped.
197193 // NOTE: there is no API to play a transition(?)
198194
199- //isServer AND the message is not from ourselves. This prevents a stack overflow. Infinite call to itself.
200195 if ( isServer )
201196 {
202197 SendToNonLocalClientsTarget ( "MLAPI_HandleAnimationMessage" , "MLAPI_ANIMATION_UPDATE" , data , true ) ;
@@ -209,14 +204,14 @@ internal void HandleAnimMsg(int clientId, byte[] data)
209204 float normalizedTime = reader . ReadSingle ( ) ;
210205 if ( stateHash != 0 )
211206 {
212- m_Animator . Play ( stateHash , 0 , normalizedTime ) ;
207+ animator . Play ( stateHash , 0 , normalizedTime ) ;
213208 }
214209 ReadParameters ( reader , false ) ;
215210 }
216211 }
217212 }
218213
219- internal void HandleAnimParamsMsg ( int clientId , byte [ ] data )
214+ private void HandleAnimParamsMsg ( int clientId , byte [ ] data )
220215 {
221216 if ( isServer )
222217 {
@@ -231,7 +226,7 @@ internal void HandleAnimParamsMsg(int clientId, byte[] data)
231226 }
232227 }
233228
234- internal void HandleAnimTriggerMsg ( int clientId , byte [ ] data )
229+ private void HandleAnimTriggerMsg ( int clientId , byte [ ] data )
235230 {
236231 if ( isServer )
237232 {
@@ -241,72 +236,76 @@ internal void HandleAnimTriggerMsg(int clientId, byte[] data)
241236 {
242237 using ( BinaryReader reader = new BinaryReader ( stream ) )
243238 {
244- m_Animator . SetTrigger ( reader . ReadInt32 ( ) ) ;
239+ animator . SetTrigger ( reader . ReadInt32 ( ) ) ;
245240 }
246241 }
247242 }
248243
249- void WriteParameters ( BinaryWriter writer , bool autoSend )
244+ private void WriteParameters ( BinaryWriter writer , bool autoSend )
250245 {
251- if ( m_AnimatorParameters == null ) m_AnimatorParameters = m_Animator . parameters ;
252- for ( int i = 0 ; i < m_AnimatorParameters . Length ; i ++ )
246+ if ( animatorParameters == null )
247+ animatorParameters = animator . parameters ;
248+
249+ for ( int i = 0 ; i < animatorParameters . Length ; i ++ )
253250 {
254251 if ( autoSend && ! GetParameterAutoSend ( i ) )
255252 continue ;
256253
257- AnimatorControllerParameter par = m_AnimatorParameters [ i ] ;
254+ AnimatorControllerParameter par = animatorParameters [ i ] ;
258255 if ( par . type == AnimatorControllerParameterType . Int )
259256 {
260- writer . Write ( ( uint ) m_Animator . GetInteger ( par . nameHash ) ) ;
257+ writer . Write ( ( uint ) animator . GetInteger ( par . nameHash ) ) ;
261258
262- SetSendTrackingParam ( par . name + ":" + m_Animator . GetInteger ( par . nameHash ) , i ) ;
259+ SetSendTrackingParam ( par . name + ":" + animator . GetInteger ( par . nameHash ) , i ) ;
263260 }
264261
265262 if ( par . type == AnimatorControllerParameterType . Float )
266263 {
267- writer . Write ( m_Animator . GetFloat ( par . nameHash ) ) ;
264+ writer . Write ( animator . GetFloat ( par . nameHash ) ) ;
268265
269- SetSendTrackingParam ( par . name + ":" + m_Animator . GetFloat ( par . nameHash ) , i ) ;
266+ SetSendTrackingParam ( par . name + ":" + animator . GetFloat ( par . nameHash ) , i ) ;
270267 }
271268
272269 if ( par . type == AnimatorControllerParameterType . Bool )
273270 {
274- writer . Write ( m_Animator . GetBool ( par . nameHash ) ) ;
271+ writer . Write ( animator . GetBool ( par . nameHash ) ) ;
275272
276- SetSendTrackingParam ( par . name + ":" + m_Animator . GetBool ( par . nameHash ) , i ) ;
273+ SetSendTrackingParam ( par . name + ":" + animator . GetBool ( par . nameHash ) , i ) ;
277274 }
278275 }
279276 }
280277
281- void ReadParameters ( BinaryReader reader , bool autoSend )
278+ private void ReadParameters ( BinaryReader reader , bool autoSend )
282279 {
283- if ( m_AnimatorParameters == null ) m_AnimatorParameters = m_Animator . parameters ;
284- for ( int i = 0 ; i < m_AnimatorParameters . Length ; i ++ )
280+ if ( animatorParameters == null )
281+ animatorParameters = animator . parameters ;
282+
283+ for ( int i = 0 ; i < animatorParameters . Length ; i ++ )
285284 {
286285 if ( autoSend && ! GetParameterAutoSend ( i ) )
287286 continue ;
288287
289- AnimatorControllerParameter par = m_AnimatorParameters [ i ] ;
288+ AnimatorControllerParameter par = animatorParameters [ i ] ;
290289 if ( par . type == AnimatorControllerParameterType . Int )
291290 {
292291 int newValue = ( int ) reader . ReadUInt32 ( ) ;
293- m_Animator . SetInteger ( par . nameHash , newValue ) ;
292+ animator . SetInteger ( par . nameHash , newValue ) ;
294293
295294 SetRecvTrackingParam ( par . name + ":" + newValue , i ) ;
296295 }
297296
298297 if ( par . type == AnimatorControllerParameterType . Float )
299298 {
300299 float newFloatValue = reader . ReadSingle ( ) ;
301- m_Animator . SetFloat ( par . nameHash , newFloatValue ) ;
300+ animator . SetFloat ( par . nameHash , newFloatValue ) ;
302301
303302 SetRecvTrackingParam ( par . name + ":" + newFloatValue , i ) ;
304303 }
305304
306305 if ( par . type == AnimatorControllerParameterType . Bool )
307306 {
308307 bool newBoolValue = reader . ReadBoolean ( ) ;
309- m_Animator . SetBool ( par . nameHash , newBoolValue ) ;
308+ animator . SetBool ( par . nameHash , newBoolValue ) ;
310309
311310 SetRecvTrackingParam ( par . name + ":" + newBoolValue , i ) ;
312311 }
0 commit comments