using System;
using System.Collections.Generic;
using HutongGames.PlayMaker;
using UnityEngine;
// Token: 0x0200005B RID: 91
[AddComponentMenu("PlayMaker/PlayMakerFSM")]
public class PlayMakerFSM : MonoBehaviour
{
// Token: 0x170000FC RID: 252
// (get) Token: 0x060003D6 RID: 982 RVA: 0x000113D4 File Offset: 0x0000F5D4
public static List<PlayMakerFSM> FsmList
{
get
{
return PlayMakerFSM.fsmList;
}
}
// Token: 0x060003D7 RID: 983 RVA: 0x000113DC File Offset: 0x0000F5DC
public static PlayMakerFSM FindFsmOnGameObject(GameObject go, string fsmName)
{
foreach (PlayMakerFSM playMakerFSM in PlayMakerFSM.fsmList)
{
if (playMakerFSM.gameObject == go && playMakerFSM.FsmName == fsmName)
{
return playMakerFSM;
}
}
return null;
}
// Token: 0x170000FD RID: 253
// (get) Token: 0x060003D8 RID: 984 RVA: 0x0001144C File Offset: 0x0000F64C
public FsmTemplate FsmTemplate
{
get
{
return this.fsmTemplate;
}
}
// Token: 0x170000FE RID: 254
// (get) Token: 0x060003D9 RID: 985 RVA: 0x00011454 File Offset: 0x0000F654
// (set) Token: 0x060003DA RID: 986 RVA: 0x0001145C File Offset: 0x0000F65C
public GUITexture GuiTexture { get; private set; }
// Token: 0x170000FF RID: 255
// (get) Token: 0x060003DB RID: 987 RVA: 0x00011468 File Offset: 0x0000F668
// (set) Token: 0x060003DC RID: 988 RVA: 0x00011470 File Offset: 0x0000F670
public GUIText GuiText { get; private set; }
// Token: 0x17000100 RID: 256
// (get) Token: 0x060003DD RID: 989 RVA: 0x0001147C File Offset: 0x0000F67C
// (set) Token: 0x060003DE RID: 990 RVA: 0x00011484 File Offset: 0x0000F684
public static bool DrawGizmos { get; set; }
// Token: 0x060003DF RID: 991 RVA: 0x0001148C File Offset: 0x0000F68C
public void Reset()
{
if (this.fsm == null)
{
this.fsm = new Fsm();
}
this.fsmTemplate = null;
this.fsm.Reset(this);
}
// Token: 0x060003E0 RID: 992 RVA: 0x000114B4 File Offset: 0x0000F6B4
private void Awake()
{
this.Init();
}
// Token: 0x060003E1 RID: 993 RVA: 0x000114BC File Offset: 0x0000F6BC
private void Init()
{
bool flag = Application.platform == RuntimePlatform.FlashPlayer;
if (flag)
{
Debug.LogError("PlayMaker: This build platform is not supported. Please check the Asset Store for Add-Ons to support Blackberry, Windows Phone 8, and Windows 8 Store platforms.");
base.enabled = false;
return;
}
if (this.fsmTemplate != null)
{
if (Application.isPlaying)
{
string name = this.fsm.Name;
this.fsm = new Fsm(this.fsmTemplate.fsm, this.fsm.Variables)
{
Name = name,
UsedInTemplate = null
};
}
}
else
{
if (this.fsm == null)
{
this.Reset();
}
if (this.fsm == null)
{
Debug.LogError("Could not initialize FSM!");
base.enabled = false;
return;
}
}
this.fsm.Init(this);
if (this.fsm.MouseEvents && base.GetComponent<PlayMakerMouseEvents>() == null)
{
base.gameObject.AddComponent<PlayMakerMouseEvents>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleCollisionEnter && base.GetComponent<PlayMakerCollisionEnter>() == null)
{
base.gameObject.AddComponent<PlayMakerCollisionEnter>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleCollisionExit && base.GetComponent<PlayMakerCollisionExit>() == null)
{
base.gameObject.AddComponent<PlayMakerCollisionExit>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleCollisionStay && base.GetComponent<PlayMakerCollisionStay>() == null)
{
base.gameObject.AddComponent<PlayMakerCollisionStay>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleTriggerEnter && base.GetComponent<PlayMakerTriggerEnter>() == null)
{
base.gameObject.AddComponent<PlayMakerTriggerEnter>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleTriggerExit && base.GetComponent<PlayMakerTriggerExit>() == null)
{
base.gameObject.AddComponent<PlayMakerTriggerExit>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleTriggerStay && base.GetComponent<PlayMakerTriggerStay>() == null)
{
base.gameObject.AddComponent<PlayMakerTriggerStay>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleFixedUpdate && base.GetComponent<PlayMakerFixedUpdate>() == null)
{
base.gameObject.AddComponent<PlayMakerFixedUpdate>().hideFlags = HideFlags.HideInInspector;
}
if (this.fsm.HandleOnGUI && base.GetComponent<PlayMakerOnGUI>() == null)
{
PlayMakerOnGUI playMakerOnGUI = base.gameObject.AddComponent<PlayMakerOnGUI>();
playMakerOnGUI.playMakerFSM = this;
}
if (this.fsm.HandleApplicationEvents && base.GetComponent<PlayMakerApplicationEvents>() == null)
{
base.gameObject.AddComponent<PlayMakerApplicationEvents>().hideFlags = HideFlags.HideInInspector;
}
}
// Token: 0x060003E2 RID: 994 RVA: 0x0001172C File Offset: 0x0000F92C
public void SetFsmTemplate(FsmTemplate template)
{
this.fsmTemplate = template;
if (template != null)
{
this.Fsm.Variables = new FsmVariables(this.fsmTemplate.fsm.Variables);
}
else
{
this.Fsm.Reset(this);
}
this.Init();
}
// Token: 0x060003E3 RID: 995 RVA: 0x00011780 File Offset: 0x0000F980
private void Start()
{
this.GuiTexture = base.GetComponent<GUITexture>();
this.GuiText = base.GetComponent<GUIText>();
if (!this.fsm.Started)
{
this.fsm.Start();
}
}
// Token: 0x060003E4 RID: 996 RVA: 0x000117B4 File Offset: 0x0000F9B4
private void OnEnable()
{
PlayMakerFSM.fsmList.Add(this);
this.fsm.OnEnable();
}
// Token: 0x060003E5 RID: 997 RVA: 0x000117CC File Offset: 0x0000F9CC
private void Update()
{
if (!this.fsm.Finished)
{
this.fsm.Update();
}
}
// Token: 0x060003E6 RID: 998 RVA: 0x000117E8 File Offset: 0x0000F9E8
private void LateUpdate()
{
FsmVariables.GlobalVariablesSynced = false;
if (!this.fsm.Finished)
{
this.fsm.LateUpdate();
}
}
// Token: 0x060003E7 RID: 999 RVA: 0x00011808 File Offset: 0x0000FA08
private void OnDisable()
{
PlayMakerFSM.fsmList.Remove(this);
if (this.fsm != null && !this.fsm.Finished)
{
this.fsm.OnDisable();
}
}
// Token: 0x060003E8 RID: 1000 RVA: 0x00011838 File Offset: 0x0000FA38
private void OnDestroy()
{
PlayMakerFSM.fsmList.Remove(this);
if (this.fsm != null)
{
this.fsm.OnDestroy();
}
}
// Token: 0x060003E9 RID: 1001 RVA: 0x0001185C File Offset: 0x0000FA5C
private void OnApplicationQuit()
{
this.fsm.Event(FsmEvent.ApplicationQuit);
PlayMakerFSM.ApplicationIsQuitting = true;
}
// Token: 0x060003EA RID: 1002 RVA: 0x00011874 File Offset: 0x0000FA74
private void OnDrawGizmos()
{
if (this.fsm != null)
{
this.fsm.OnDrawGizmos();
}
}
// Token: 0x060003EB RID: 1003 RVA: 0x0001188C File Offset: 0x0000FA8C
public void ChangeState(FsmEvent fsmEvent)
{
this.fsm.Event(fsmEvent);
}
// Token: 0x060003EC RID: 1004 RVA: 0x0001189C File Offset: 0x0000FA9C
[Obsolete("Use SendEvent(string) instead.")]
public void ChangeState(string eventName)
{
this.fsm.Event(eventName);
}
// Token: 0x060003ED RID: 1005 RVA: 0x000118AC File Offset: 0x0000FAAC
public void SendEvent(string eventName)
{
this.fsm.Event(eventName);
}
// Token: 0x060003EE RID: 1006 RVA: 0x000118BC File Offset: 0x0000FABC
[RPC]
public void SendRemoteFsmEvent(string eventName)
{
this.fsm.Event(eventName);
}
// Token: 0x060003EF RID: 1007 RVA: 0x000118CC File Offset: 0x0000FACC
public static void BroadcastEvent(string fsmEventName)
{
if (!string.IsNullOrEmpty(fsmEventName))
{
PlayMakerFSM.BroadcastEvent(FsmEvent.GetFsmEvent(fsmEventName));
}
}
// Token: 0x060003F0 RID: 1008 RVA: 0x000118E4 File Offset: 0x0000FAE4
public static void BroadcastEvent(FsmEvent fsmEvent)
{
List<PlayMakerFSM> list = new List<PlayMakerFSM>(PlayMakerFSM.FsmList);
foreach (PlayMakerFSM playMakerFSM in list)
{
if (!(playMakerFSM == null) && playMakerFSM.Fsm != null)
{
playMakerFSM.Fsm.ProcessEvent(fsmEvent, null);
}
}
}
// Token: 0x060003F1 RID: 1009 RVA: 0x00011954 File Offset: 0x0000FB54
private void OnBecameVisible()
{
this.fsm.Event(FsmEvent.BecameVisible);
}
// Token: 0x060003F2 RID: 1010 RVA: 0x00011968 File Offset: 0x0000FB68
private void OnBecameInvisible()
{
this.fsm.Event(FsmEvent.BecameInvisible);
}
// Token: 0x060003F3 RID: 1011 RVA: 0x0001197C File Offset: 0x0000FB7C
private void OnLevelWasLoaded()
{
this.fsm.Event(FsmEvent.LevelLoaded);
}
// Token: 0x060003F4 RID: 1012 RVA: 0x00011990 File Offset: 0x0000FB90
private void OnControllerColliderHit(ControllerColliderHit hitCollider)
{
this.fsm.OnControllerColliderHit(hitCollider);
}
// Token: 0x060003F5 RID: 1013 RVA: 0x000119A0 File Offset: 0x0000FBA0
private void OnPlayerConnected(NetworkPlayer player)
{
Fsm.EventData.Player = player;
this.fsm.Event(FsmEvent.PlayerConnected);
}
// Token: 0x060003F6 RID: 1014 RVA: 0x000119C0 File Offset: 0x0000FBC0
private void OnServerInitialized()
{
this.fsm.Event(FsmEvent.ServerInitialized);
}
// Token: 0x060003F7 RID: 1015 RVA: 0x000119D4 File Offset: 0x0000FBD4
private void OnConnectedToServer()
{
this.fsm.Event(FsmEvent.ConnectedToServer);
}
// Token: 0x060003F8 RID: 1016 RVA: 0x000119E8 File Offset: 0x0000FBE8
private void OnPlayerDisconnected(NetworkPlayer player)
{
Fsm.EventData.Player = player;
this.fsm.Event(FsmEvent.PlayerDisconnected);
}
// Token: 0x060003F9 RID: 1017 RVA: 0x00011A08 File Offset: 0x0000FC08
private void OnDisconnectedFromServer(NetworkDisconnection info)
{
Fsm.EventData.DisconnectionInfo = info;
this.fsm.Event(FsmEvent.DisconnectedFromServer);
}
// Token: 0x060003FA RID: 1018 RVA: 0x00011A28 File Offset: 0x0000FC28
private void OnFailedToConnect(NetworkConnectionError error)
{
Fsm.EventData.ConnectionError = error;
this.fsm.Event(FsmEvent.FailedToConnect);
}
// Token: 0x060003FB RID: 1019 RVA: 0x00011A48 File Offset: 0x0000FC48
private void OnNetworkInstantiate(NetworkMessageInfo info)
{
Fsm.EventData.NetworkMessageInfo = info;
this.fsm.Event(FsmEvent.NetworkInstantiate);
}
// Token: 0x060003FC RID: 1020 RVA: 0x00011A68 File Offset: 0x0000FC68
private void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
{
if (!FsmVariables.GlobalVariablesSynced)
{
FsmVariables.GlobalVariablesSynced = true;
PlayMakerFSM.NetworkSyncVariables(stream, FsmVariables.GlobalVariables);
}
PlayMakerFSM.NetworkSyncVariables(stream, this.Fsm.Variables);
}
// Token: 0x060003FD RID: 1021 RVA: 0x00011A94 File Offset: 0x0000FC94
private static void NetworkSyncVariables(BitStream stream, FsmVariables variables)
{
if (stream.isWriting)
{
foreach (FsmString fsmString in variables.StringVariables)
{
if (fsmString.NetworkSync)
{
char[] array = fsmString.Value.ToCharArray();
int num = array.Length;
stream.Serialize(ref num);
for (int j = 0; j < num; j++)
{
stream.Serialize(ref array[j]);
}
}
}
foreach (FsmBool fsmBool in variables.BoolVariables)
{
if (fsmBool.NetworkSync)
{
bool value = fsmBool.Value;
stream.Serialize(ref value);
}
}
foreach (FsmFloat fsmFloat in variables.FloatVariables)
{
if (fsmFloat.NetworkSync)
{
float value2 = fsmFloat.Value;
stream.Serialize(ref value2);
}
}
foreach (FsmInt fsmInt in variables.IntVariables)
{
if (fsmInt.NetworkSync)
{
int value3 = fsmInt.Value;
stream.Serialize(ref value3);
}
}
foreach (FsmQuaternion fsmQuaternion in variables.QuaternionVariables)
{
if (fsmQuaternion.NetworkSync)
{
Quaternion value4 = fsmQuaternion.Value;
stream.Serialize(ref value4);
}
}
foreach (FsmVector3 fsmVector in variables.Vector3Variables)
{
if (fsmVector.NetworkSync)
{
Vector3 value5 = fsmVector.Value;
stream.Serialize(ref value5);
}
}
foreach (FsmColor fsmColor in variables.ColorVariables)
{
if (fsmColor.NetworkSync)
{
Color value6 = fsmColor.Value;
stream.Serialize(ref value6.r);
stream.Serialize(ref value6.g);
stream.Serialize(ref value6.b);
stream.Serialize(ref value6.a);
}
}
foreach (FsmVector2 fsmVector2 in variables.Vector2Variables)
{
if (fsmVector2.NetworkSync)
{
Vector2 value7 = fsmVector2.Value;
stream.Serialize(ref value7.x);
stream.Serialize(ref value7.y);
}
}
return;
}
foreach (FsmString fsmString2 in variables.StringVariables)
{
if (fsmString2.NetworkSync)
{
int num6 = 0;
stream.Serialize(ref num6);
char[] array2 = new char[num6];
for (int num7 = 0; num7 < num6; num7++)
{
stream.Serialize(ref array2[num7]);
}
fsmString2.Value = new string(array2);
}
}
foreach (FsmBool fsmBool2 in variables.BoolVariables)
{
if (fsmBool2.NetworkSync)
{
bool value8 = false;
stream.Serialize(ref value8);
fsmBool2.Value = value8;
}
}
foreach (FsmFloat fsmFloat2 in variables.FloatVariables)
{
if (fsmFloat2.NetworkSync)
{
float value9 = 0f;
stream.Serialize(ref value9);
fsmFloat2.Value = value9;
}
}
foreach (FsmInt fsmInt2 in variables.IntVariables)
{
if (fsmInt2.NetworkSync)
{
int value10 = 0;
stream.Serialize(ref value10);
fsmInt2.Value = value10;
}
}
foreach (FsmQuaternion fsmQuaternion2 in variables.QuaternionVariables)
{
if (fsmQuaternion2.NetworkSync)
{
Quaternion identity = Quaternion.identity;
stream.Serialize(ref identity);
fsmQuaternion2.Value = identity;
}
}
foreach (FsmVector3 fsmVector3 in variables.Vector3Variables)
{
if (fsmVector3.NetworkSync)
{
Vector3 zero = Vector3.zero;
stream.Serialize(ref zero);
fsmVector3.Value = zero;
}
}
foreach (FsmColor fsmColor2 in variables.ColorVariables)
{
if (fsmColor2.NetworkSync)
{
float r = 0f;
stream.Serialize(ref r);
float g = 0f;
stream.Serialize(ref g);
float b = 0f;
stream.Serialize(ref b);
float a = 0f;
stream.Serialize(ref a);
fsmColor2.Value = new Color(r, g, b, a);
}
}
foreach (FsmVector2 fsmVector4 in variables.Vector2Variables)
{
if (fsmVector4.NetworkSync)
{
float x = 0f;
stream.Serialize(ref x);
float y = 0f;
stream.Serialize(ref y);
fsmVector4.Value = new Vector2(x, y);
}
}
}
// Token: 0x060003FE RID: 1022 RVA: 0x00011F74 File Offset: 0x00010174
private void OnMasterServerEvent(MasterServerEvent masterServerEvent)
{
Fsm.EventData.MasterServerEvent = masterServerEvent;
this.fsm.Event(FsmEvent.MasterServerEvent);
}
// Token: 0x17000101 RID: 257
// (get) Token: 0x060003FF RID: 1023 RVA: 0x00011F94 File Offset: 0x00010194
public Fsm Fsm
{
get
{
this.fsm.Owner = this;
return this.fsm;
}
}
// Token: 0x17000102 RID: 258
// (get) Token: 0x06000400 RID: 1024 RVA: 0x00011FA8 File Offset: 0x000101A8
// (set) Token: 0x06000401 RID: 1025 RVA: 0x00011FB8 File Offset: 0x000101B8
public string FsmName
{
get
{
return this.fsm.Name;
}
set
{
this.fsm.Name = value;
}
}
// Token: 0x17000103 RID: 259
// (get) Token: 0x06000402 RID: 1026 RVA: 0x00011FC8 File Offset: 0x000101C8
// (set) Token: 0x06000403 RID: 1027 RVA: 0x00011FD8 File Offset: 0x000101D8
public string FsmDescription
{
get
{
return this.fsm.Description;
}
set
{
this.fsm.Description = value;
}
}
// Token: 0x17000104 RID: 260
// (get) Token: 0x06000404 RID: 1028 RVA: 0x00011FE8 File Offset: 0x000101E8
public bool Active
{
get
{
return this.fsm.Active;
}
}
// Token: 0x17000105 RID: 261
// (get) Token: 0x06000405 RID: 1029 RVA: 0x00011FF8 File Offset: 0x000101F8
public string ActiveStateName
{
get
{
if (this.fsm.ActiveState != null)
{
return this.fsm.ActiveState.Name;
}
return "";
}
}
// Token: 0x17000106 RID: 262
// (get) Token: 0x06000406 RID: 1030 RVA: 0x00012020 File Offset: 0x00010220
public FsmState[] FsmStates
{
get
{
return this.fsm.States;
}
}
// Token: 0x17000107 RID: 263
// (get) Token: 0x06000407 RID: 1031 RVA: 0x00012030 File Offset: 0x00010230
public FsmEvent[] FsmEvents
{
get
{
return this.fsm.Events;
}
}
// Token: 0x17000108 RID: 264
// (get) Token: 0x06000408 RID: 1032 RVA: 0x00012040 File Offset: 0x00010240
public FsmTransition[] FsmGlobalTransitions
{
get
{
return this.fsm.GlobalTransitions;
}
}
// Token: 0x17000109 RID: 265
// (get) Token: 0x06000409 RID: 1033 RVA: 0x00012050 File Offset: 0x00010250
public FsmVariables FsmVariables
{
get
{
return this.fsm.Variables;
}
}
// Token: 0x1700010A RID: 266
// (get) Token: 0x0600040A RID: 1034 RVA: 0x00012060 File Offset: 0x00010260
public bool UsesTemplate
{
get
{
return this.fsmTemplate != null;
}
}
// Token: 0x0400024E RID: 590
private static readonly List<PlayMakerFSM> fsmList = new List<PlayMakerFSM>();
// Token: 0x0400024F RID: 591
public static bool ApplicationIsQuitting;
// Token: 0x04000250 RID: 592
[SerializeField]
[HideInInspector]
private Fsm fsm;
// Token: 0x04000251 RID: 593
[SerializeField]
private FsmTemplate fsmTemplate;
}