561 lines
17 KiB
C#
561 lines
17 KiB
C#
using System;
|
|
using UnityEngine.Networking.NetworkSystem;
|
|
|
|
namespace UnityEngine.Networking
|
|
{
|
|
// Token: 0x02000033 RID: 51
|
|
[DisallowMultipleComponent]
|
|
[AddComponentMenu("Network/NetworkAnimator")]
|
|
[RequireComponent(typeof(NetworkIdentity))]
|
|
[RequireComponent(typeof(Animator))]
|
|
public class NetworkAnimator : NetworkBehaviour
|
|
{
|
|
// Token: 0x1700001B RID: 27
|
|
// (get) Token: 0x060000E3 RID: 227 RVA: 0x0000981C File Offset: 0x00007A1C
|
|
// (set) Token: 0x060000E4 RID: 228 RVA: 0x00009837 File Offset: 0x00007A37
|
|
public Animator animator
|
|
{
|
|
get
|
|
{
|
|
return this.m_Animator;
|
|
}
|
|
set
|
|
{
|
|
this.m_Animator = value;
|
|
this.ResetParameterOptions();
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000E5 RID: 229 RVA: 0x00009847 File Offset: 0x00007A47
|
|
public void SetParameterAutoSend(int index, bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
this.m_ParameterSendBits |= 1U << index;
|
|
}
|
|
else
|
|
{
|
|
this.m_ParameterSendBits &= ~(1U << index);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000E6 RID: 230 RVA: 0x00009880 File Offset: 0x00007A80
|
|
public bool GetParameterAutoSend(int index)
|
|
{
|
|
return (this.m_ParameterSendBits & (1U << index)) != 0U;
|
|
}
|
|
|
|
// Token: 0x1700001C RID: 28
|
|
// (get) Token: 0x060000E7 RID: 231 RVA: 0x000098A8 File Offset: 0x00007AA8
|
|
private bool sendMessagesAllowed
|
|
{
|
|
get
|
|
{
|
|
if (base.isServer)
|
|
{
|
|
if (!base.localPlayerAuthority)
|
|
{
|
|
return true;
|
|
}
|
|
if (base.netIdentity != null && base.netIdentity.clientAuthorityOwner == null)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return base.hasAuthority;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000E8 RID: 232 RVA: 0x00009917 File Offset: 0x00007B17
|
|
internal void ResetParameterOptions()
|
|
{
|
|
Debug.Log("ResetParameterOptions");
|
|
this.m_ParameterSendBits = 0U;
|
|
}
|
|
|
|
// Token: 0x060000E9 RID: 233 RVA: 0x0000992C File Offset: 0x00007B2C
|
|
private void FixedUpdate()
|
|
{
|
|
if (this.sendMessagesAllowed)
|
|
{
|
|
if (this.m_ParameterWriter == null)
|
|
{
|
|
this.m_ParameterWriter = new NetworkWriter();
|
|
}
|
|
this.CheckSendRate();
|
|
int num;
|
|
float num2;
|
|
if (this.CheckAnimStateChanged(out num, out num2))
|
|
{
|
|
AnimationMessage animationMessage = new AnimationMessage();
|
|
animationMessage.netId = base.netId;
|
|
animationMessage.stateHash = num;
|
|
animationMessage.normalizedTime = num2;
|
|
this.m_ParameterWriter.SeekZero();
|
|
this.WriteParameters(this.m_ParameterWriter, false);
|
|
animationMessage.parameters = this.m_ParameterWriter.ToArray();
|
|
this.SendMessage(40, animationMessage);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000EA RID: 234 RVA: 0x000099D0 File Offset: 0x00007BD0
|
|
private bool CheckAnimStateChanged(out int stateHash, out float normalizedTime)
|
|
{
|
|
stateHash = 0;
|
|
normalizedTime = 0f;
|
|
bool flag;
|
|
if (this.m_Animator.IsInTransition(0))
|
|
{
|
|
AnimatorTransitionInfo animatorTransitionInfo = this.m_Animator.GetAnimatorTransitionInfo(0);
|
|
if (animatorTransitionInfo.fullPathHash != this.m_TransitionHash)
|
|
{
|
|
this.m_TransitionHash = animatorTransitionInfo.fullPathHash;
|
|
this.m_AnimationHash = 0;
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AnimatorStateInfo currentAnimatorStateInfo = this.m_Animator.GetCurrentAnimatorStateInfo(0);
|
|
if (currentAnimatorStateInfo.fullPathHash != this.m_AnimationHash)
|
|
{
|
|
if (this.m_AnimationHash != 0)
|
|
{
|
|
stateHash = currentAnimatorStateInfo.fullPathHash;
|
|
normalizedTime = currentAnimatorStateInfo.normalizedTime;
|
|
}
|
|
this.m_TransitionHash = 0;
|
|
this.m_AnimationHash = currentAnimatorStateInfo.fullPathHash;
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x060000EB RID: 235 RVA: 0x00009AA0 File Offset: 0x00007CA0
|
|
private void CheckSendRate()
|
|
{
|
|
if (this.sendMessagesAllowed && this.GetNetworkSendInterval() != 0f && this.m_SendTimer < Time.time)
|
|
{
|
|
this.m_SendTimer = Time.time + this.GetNetworkSendInterval();
|
|
AnimationParametersMessage animationParametersMessage = new AnimationParametersMessage();
|
|
animationParametersMessage.netId = base.netId;
|
|
this.m_ParameterWriter.SeekZero();
|
|
this.WriteParameters(this.m_ParameterWriter, true);
|
|
animationParametersMessage.parameters = this.m_ParameterWriter.ToArray();
|
|
this.SendMessage(41, animationParametersMessage);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000EC RID: 236 RVA: 0x00009B31 File Offset: 0x00007D31
|
|
private void SendMessage(short type, MessageBase msg)
|
|
{
|
|
if (base.isServer)
|
|
{
|
|
NetworkServer.SendToReady(base.gameObject, type, msg);
|
|
}
|
|
else if (ClientScene.readyConnection != null)
|
|
{
|
|
ClientScene.readyConnection.Send(type, msg);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000ED RID: 237 RVA: 0x00009B70 File Offset: 0x00007D70
|
|
private void SetSendTrackingParam(string p, int i)
|
|
{
|
|
p = "Sent Param: " + p;
|
|
if (i == 0)
|
|
{
|
|
this.param0 = p;
|
|
}
|
|
if (i == 1)
|
|
{
|
|
this.param1 = p;
|
|
}
|
|
if (i == 2)
|
|
{
|
|
this.param2 = p;
|
|
}
|
|
if (i == 3)
|
|
{
|
|
this.param3 = p;
|
|
}
|
|
if (i == 4)
|
|
{
|
|
this.param4 = p;
|
|
}
|
|
if (i == 5)
|
|
{
|
|
this.param5 = p;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000EE RID: 238 RVA: 0x00009BE0 File Offset: 0x00007DE0
|
|
private void SetRecvTrackingParam(string p, int i)
|
|
{
|
|
p = "Recv Param: " + p;
|
|
if (i == 0)
|
|
{
|
|
this.param0 = p;
|
|
}
|
|
if (i == 1)
|
|
{
|
|
this.param1 = p;
|
|
}
|
|
if (i == 2)
|
|
{
|
|
this.param2 = p;
|
|
}
|
|
if (i == 3)
|
|
{
|
|
this.param3 = p;
|
|
}
|
|
if (i == 4)
|
|
{
|
|
this.param4 = p;
|
|
}
|
|
if (i == 5)
|
|
{
|
|
this.param5 = p;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000EF RID: 239 RVA: 0x00009C4E File Offset: 0x00007E4E
|
|
internal void HandleAnimMsg(AnimationMessage msg, NetworkReader reader)
|
|
{
|
|
if (!base.hasAuthority)
|
|
{
|
|
if (msg.stateHash != 0)
|
|
{
|
|
this.m_Animator.Play(msg.stateHash, 0, msg.normalizedTime);
|
|
}
|
|
this.ReadParameters(reader, false);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000F0 RID: 240 RVA: 0x00009C8E File Offset: 0x00007E8E
|
|
internal void HandleAnimParamsMsg(AnimationParametersMessage msg, NetworkReader reader)
|
|
{
|
|
if (!base.hasAuthority)
|
|
{
|
|
this.ReadParameters(reader, true);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000F1 RID: 241 RVA: 0x00009CA9 File Offset: 0x00007EA9
|
|
internal void HandleAnimTriggerMsg(int hash)
|
|
{
|
|
this.m_Animator.SetTrigger(hash);
|
|
}
|
|
|
|
// Token: 0x060000F2 RID: 242 RVA: 0x00009CB8 File Offset: 0x00007EB8
|
|
private void WriteParameters(NetworkWriter writer, bool autoSend)
|
|
{
|
|
for (int i = 0; i < this.m_Animator.parameters.Length; i++)
|
|
{
|
|
if (!autoSend || this.GetParameterAutoSend(i))
|
|
{
|
|
AnimatorControllerParameter animatorControllerParameter = this.m_Animator.parameters[i];
|
|
if (animatorControllerParameter.type == AnimatorControllerParameterType.Int)
|
|
{
|
|
writer.WritePackedUInt32((uint)this.m_Animator.GetInteger(animatorControllerParameter.nameHash));
|
|
this.SetSendTrackingParam(animatorControllerParameter.name + ":" + this.m_Animator.GetInteger(animatorControllerParameter.nameHash), i);
|
|
}
|
|
if (animatorControllerParameter.type == AnimatorControllerParameterType.Float)
|
|
{
|
|
writer.Write(this.m_Animator.GetFloat(animatorControllerParameter.nameHash));
|
|
this.SetSendTrackingParam(animatorControllerParameter.name + ":" + this.m_Animator.GetFloat(animatorControllerParameter.nameHash), i);
|
|
}
|
|
if (animatorControllerParameter.type == AnimatorControllerParameterType.Bool)
|
|
{
|
|
writer.Write(this.m_Animator.GetBool(animatorControllerParameter.nameHash));
|
|
this.SetSendTrackingParam(animatorControllerParameter.name + ":" + this.m_Animator.GetBool(animatorControllerParameter.nameHash), i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000F3 RID: 243 RVA: 0x00009E04 File Offset: 0x00008004
|
|
private void ReadParameters(NetworkReader reader, bool autoSend)
|
|
{
|
|
for (int i = 0; i < this.m_Animator.parameters.Length; i++)
|
|
{
|
|
if (!autoSend || this.GetParameterAutoSend(i))
|
|
{
|
|
AnimatorControllerParameter animatorControllerParameter = this.m_Animator.parameters[i];
|
|
if (animatorControllerParameter.type == AnimatorControllerParameterType.Int)
|
|
{
|
|
int num = (int)reader.ReadPackedUInt32();
|
|
this.m_Animator.SetInteger(animatorControllerParameter.nameHash, num);
|
|
this.SetRecvTrackingParam(animatorControllerParameter.name + ":" + num, i);
|
|
}
|
|
if (animatorControllerParameter.type == AnimatorControllerParameterType.Float)
|
|
{
|
|
float num2 = reader.ReadSingle();
|
|
this.m_Animator.SetFloat(animatorControllerParameter.nameHash, num2);
|
|
this.SetRecvTrackingParam(animatorControllerParameter.name + ":" + num2, i);
|
|
}
|
|
if (animatorControllerParameter.type == AnimatorControllerParameterType.Bool)
|
|
{
|
|
bool flag = reader.ReadBoolean();
|
|
this.m_Animator.SetBool(animatorControllerParameter.nameHash, flag);
|
|
this.SetRecvTrackingParam(animatorControllerParameter.name + ":" + flag, i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000F4 RID: 244 RVA: 0x00009F28 File Offset: 0x00008128
|
|
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
|
|
{
|
|
bool flag;
|
|
if (forceAll)
|
|
{
|
|
if (this.m_Animator.IsInTransition(0))
|
|
{
|
|
AnimatorStateInfo nextAnimatorStateInfo = this.m_Animator.GetNextAnimatorStateInfo(0);
|
|
writer.Write(nextAnimatorStateInfo.fullPathHash);
|
|
writer.Write(nextAnimatorStateInfo.normalizedTime);
|
|
}
|
|
else
|
|
{
|
|
AnimatorStateInfo currentAnimatorStateInfo = this.m_Animator.GetCurrentAnimatorStateInfo(0);
|
|
writer.Write(currentAnimatorStateInfo.fullPathHash);
|
|
writer.Write(currentAnimatorStateInfo.normalizedTime);
|
|
}
|
|
this.WriteParameters(writer, false);
|
|
flag = true;
|
|
}
|
|
else
|
|
{
|
|
flag = false;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x060000F5 RID: 245 RVA: 0x00009FBC File Offset: 0x000081BC
|
|
public override void OnDeserialize(NetworkReader reader, bool initialState)
|
|
{
|
|
if (initialState)
|
|
{
|
|
int num = reader.ReadInt32();
|
|
float num2 = reader.ReadSingle();
|
|
this.ReadParameters(reader, false);
|
|
this.m_Animator.Play(num, 0, num2);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000F6 RID: 246 RVA: 0x00009FF6 File Offset: 0x000081F6
|
|
public void SetTrigger(string triggerName)
|
|
{
|
|
this.SetTrigger(Animator.StringToHash(triggerName));
|
|
}
|
|
|
|
// Token: 0x060000F7 RID: 247 RVA: 0x0000A008 File Offset: 0x00008208
|
|
public void SetTrigger(int hash)
|
|
{
|
|
AnimationTriggerMessage animationTriggerMessage = new AnimationTriggerMessage();
|
|
animationTriggerMessage.netId = base.netId;
|
|
animationTriggerMessage.hash = hash;
|
|
if (base.hasAuthority && base.localPlayerAuthority)
|
|
{
|
|
if (NetworkClient.allClients.Count > 0)
|
|
{
|
|
NetworkConnection readyConnection = ClientScene.readyConnection;
|
|
if (readyConnection != null)
|
|
{
|
|
readyConnection.Send(42, animationTriggerMessage);
|
|
}
|
|
}
|
|
}
|
|
else if (base.isServer && !base.localPlayerAuthority)
|
|
{
|
|
NetworkServer.SendToReady(base.gameObject, 42, animationTriggerMessage);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000F8 RID: 248 RVA: 0x0000A09C File Offset: 0x0000829C
|
|
internal static void OnAnimationServerMessage(NetworkMessage netMsg)
|
|
{
|
|
netMsg.ReadMessage<AnimationMessage>(NetworkAnimator.s_AnimationMessage);
|
|
if (LogFilter.logDev)
|
|
{
|
|
Debug.Log(string.Concat(new object[]
|
|
{
|
|
"OnAnimationMessage for netId=",
|
|
NetworkAnimator.s_AnimationMessage.netId,
|
|
" conn=",
|
|
netMsg.conn
|
|
}));
|
|
}
|
|
GameObject gameObject = NetworkServer.FindLocalObject(NetworkAnimator.s_AnimationMessage.netId);
|
|
if (!(gameObject == null))
|
|
{
|
|
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
|
if (component != null)
|
|
{
|
|
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationMessage.parameters);
|
|
component.HandleAnimMsg(NetworkAnimator.s_AnimationMessage, networkReader);
|
|
NetworkServer.SendToReady(gameObject, 40, NetworkAnimator.s_AnimationMessage);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000F9 RID: 249 RVA: 0x0000A160 File Offset: 0x00008360
|
|
internal static void OnAnimationParametersServerMessage(NetworkMessage netMsg)
|
|
{
|
|
netMsg.ReadMessage<AnimationParametersMessage>(NetworkAnimator.s_AnimationParametersMessage);
|
|
if (LogFilter.logDev)
|
|
{
|
|
Debug.Log(string.Concat(new object[]
|
|
{
|
|
"OnAnimationParametersMessage for netId=",
|
|
NetworkAnimator.s_AnimationParametersMessage.netId,
|
|
" conn=",
|
|
netMsg.conn
|
|
}));
|
|
}
|
|
GameObject gameObject = NetworkServer.FindLocalObject(NetworkAnimator.s_AnimationParametersMessage.netId);
|
|
if (!(gameObject == null))
|
|
{
|
|
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
|
if (component != null)
|
|
{
|
|
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationParametersMessage.parameters);
|
|
component.HandleAnimParamsMsg(NetworkAnimator.s_AnimationParametersMessage, networkReader);
|
|
NetworkServer.SendToReady(gameObject, 41, NetworkAnimator.s_AnimationParametersMessage);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000FA RID: 250 RVA: 0x0000A224 File Offset: 0x00008424
|
|
internal static void OnAnimationTriggerServerMessage(NetworkMessage netMsg)
|
|
{
|
|
netMsg.ReadMessage<AnimationTriggerMessage>(NetworkAnimator.s_AnimationTriggerMessage);
|
|
if (LogFilter.logDev)
|
|
{
|
|
Debug.Log(string.Concat(new object[]
|
|
{
|
|
"OnAnimationTriggerMessage for netId=",
|
|
NetworkAnimator.s_AnimationTriggerMessage.netId,
|
|
" conn=",
|
|
netMsg.conn
|
|
}));
|
|
}
|
|
GameObject gameObject = NetworkServer.FindLocalObject(NetworkAnimator.s_AnimationTriggerMessage.netId);
|
|
if (!(gameObject == null))
|
|
{
|
|
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
|
if (component != null)
|
|
{
|
|
component.HandleAnimTriggerMsg(NetworkAnimator.s_AnimationTriggerMessage.hash);
|
|
NetworkServer.SendToReady(gameObject, 42, NetworkAnimator.s_AnimationTriggerMessage);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000FB RID: 251 RVA: 0x0000A2DC File Offset: 0x000084DC
|
|
internal static void OnAnimationClientMessage(NetworkMessage netMsg)
|
|
{
|
|
netMsg.ReadMessage<AnimationMessage>(NetworkAnimator.s_AnimationMessage);
|
|
GameObject gameObject = ClientScene.FindLocalObject(NetworkAnimator.s_AnimationMessage.netId);
|
|
if (!(gameObject == null))
|
|
{
|
|
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
|
if (component != null)
|
|
{
|
|
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationMessage.parameters);
|
|
component.HandleAnimMsg(NetworkAnimator.s_AnimationMessage, networkReader);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000FC RID: 252 RVA: 0x0000A348 File Offset: 0x00008548
|
|
internal static void OnAnimationParametersClientMessage(NetworkMessage netMsg)
|
|
{
|
|
netMsg.ReadMessage<AnimationParametersMessage>(NetworkAnimator.s_AnimationParametersMessage);
|
|
GameObject gameObject = ClientScene.FindLocalObject(NetworkAnimator.s_AnimationParametersMessage.netId);
|
|
if (!(gameObject == null))
|
|
{
|
|
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
|
if (component != null)
|
|
{
|
|
NetworkReader networkReader = new NetworkReader(NetworkAnimator.s_AnimationParametersMessage.parameters);
|
|
component.HandleAnimParamsMsg(NetworkAnimator.s_AnimationParametersMessage, networkReader);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060000FD RID: 253 RVA: 0x0000A3B4 File Offset: 0x000085B4
|
|
internal static void OnAnimationTriggerClientMessage(NetworkMessage netMsg)
|
|
{
|
|
netMsg.ReadMessage<AnimationTriggerMessage>(NetworkAnimator.s_AnimationTriggerMessage);
|
|
GameObject gameObject = ClientScene.FindLocalObject(NetworkAnimator.s_AnimationTriggerMessage.netId);
|
|
if (!(gameObject == null))
|
|
{
|
|
NetworkAnimator component = gameObject.GetComponent<NetworkAnimator>();
|
|
if (component != null)
|
|
{
|
|
component.HandleAnimTriggerMsg(NetworkAnimator.s_AnimationTriggerMessage.hash);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x040000A6 RID: 166
|
|
[SerializeField]
|
|
private Animator m_Animator;
|
|
|
|
// Token: 0x040000A7 RID: 167
|
|
[SerializeField]
|
|
private uint m_ParameterSendBits;
|
|
|
|
// Token: 0x040000A8 RID: 168
|
|
private static AnimationMessage s_AnimationMessage = new AnimationMessage();
|
|
|
|
// Token: 0x040000A9 RID: 169
|
|
private static AnimationParametersMessage s_AnimationParametersMessage = new AnimationParametersMessage();
|
|
|
|
// Token: 0x040000AA RID: 170
|
|
private static AnimationTriggerMessage s_AnimationTriggerMessage = new AnimationTriggerMessage();
|
|
|
|
// Token: 0x040000AB RID: 171
|
|
private int m_AnimationHash;
|
|
|
|
// Token: 0x040000AC RID: 172
|
|
private int m_TransitionHash;
|
|
|
|
// Token: 0x040000AD RID: 173
|
|
private NetworkWriter m_ParameterWriter;
|
|
|
|
// Token: 0x040000AE RID: 174
|
|
private float m_SendTimer;
|
|
|
|
// Token: 0x040000AF RID: 175
|
|
public string param0;
|
|
|
|
// Token: 0x040000B0 RID: 176
|
|
public string param1;
|
|
|
|
// Token: 0x040000B1 RID: 177
|
|
public string param2;
|
|
|
|
// Token: 0x040000B2 RID: 178
|
|
public string param3;
|
|
|
|
// Token: 0x040000B3 RID: 179
|
|
public string param4;
|
|
|
|
// Token: 0x040000B4 RID: 180
|
|
public string param5;
|
|
}
|
|
}
|