Files
beyond/Assets/ThirdParty/PlayMaker/Actions/Logic/ObjectCompare.cs
2024-11-20 15:21:28 +01:00

74 lines
1.5 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Logic)]
[Tooltip("Compare 2 Object Variables and send events based on the result.")]
public class ObjectCompare : FsmStateAction
{
[RequiredField]
[UIHint(UIHint.Variable), Readonly]
public FsmObject objectVariable;
[RequiredField]
public FsmObject compareTo;
//[ActionSection("")]
[Tooltip("Event to send if the 2 object values are equal.")]
public FsmEvent equalEvent;
[Tooltip("Event to send if the 2 object values are not equal.")]
public FsmEvent notEqualEvent;
[UIHint(UIHint.Variable)]
[Tooltip("Store the result in a variable.")]
public FsmBool storeResult;
//[ActionSection("")]
[Tooltip("Repeat every frame.")]
public bool everyFrame;
public override void Reset()
{
objectVariable = null;
compareTo = null;
storeResult = null;
equalEvent = null;
notEqualEvent = null;
everyFrame = false;
}
public override void OnEnter()
{
DoObjectCompare();
if (!everyFrame)
{
Finish();
}
}
public override void OnUpdate()
{
DoObjectCompare();
}
void DoObjectCompare()
{
var result = objectVariable.Value == compareTo.Value;
storeResult.Value = result;
Fsm.Event(result ? equalEvent : notEqualEvent);
}
#if UNITY_EDITOR
public override string AutoName()
{
return ActionHelpers.AutoName(this, objectVariable, compareTo);
}
#endif
}
}