// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved. using UnityEngine; namespace HutongGames.PlayMaker.Actions { [ActionCategory(ActionCategory.StateMachine)] [ActionTarget(typeof(PlayMakerFSM), "gameObject,fsmName")] [Tooltip("Get the value of a Vector2 Variable from another FSM.")] public class GetFsmVector2 : FsmStateAction { [RequiredField] public FsmOwnerDefault gameObject; [UIHint(UIHint.FsmName)] [Tooltip("Optional name of FSM on Game Object")] public FsmString fsmName; [RequiredField] [UIHint(UIHint.FsmVector2)] public FsmString variableName; [RequiredField] [UIHint(UIHint.Variable)] public FsmVector2 storeValue; public bool everyFrame; private GameObject goLastFrame; private string fsmNameLastFrame; private PlayMakerFSM fsm; public override void Reset() { gameObject = null; fsmName = ""; storeValue = null; } public override void OnEnter() { DoGetFsmVector2(); if (!everyFrame) Finish(); } public override void OnUpdate() { DoGetFsmVector2(); } private void DoGetFsmVector2() { if (storeValue == null) { return; } var go = Fsm.GetOwnerDefaultTarget(gameObject); if (go == null) { return; } if (go != goLastFrame || fsmName.Value != fsmNameLastFrame) { goLastFrame = go; fsmNameLastFrame = fsmName.Value; // only get the fsm component if go or fsm name has changed fsm = ActionHelpers.GetGameObjectFsm(go, fsmName.Value); } if (fsm == null) { return; } var fsmVector2 = fsm.FsmVariables.GetFsmVector2(variableName.Value); if (fsmVector2 == null) { return; } storeValue.Value = fsmVector2.Value; } } }