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

86 lines
1.5 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Math)]
[Tooltip("Performs boolean operations on 2 Bool Variables.")]
public class BoolOperator : FsmStateAction
{
public enum Operation
{
AND,
NAND,
OR,
XOR
}
[RequiredField]
[Tooltip("The first Bool variable.")]
public FsmBool bool1;
[RequiredField]
[Tooltip("The second Bool variable.")]
public FsmBool bool2;
[Tooltip("Boolean Operation.")]
public Operation operation;
[RequiredField]
[UIHint(UIHint.Variable)]
[Tooltip("Store the result in a Bool Variable.")]
public FsmBool storeResult;
[Tooltip("Repeat every frame while the state is active.")]
public bool everyFrame;
public override void Reset()
{
bool1 = false;
bool2 = false;
operation = Operation.AND;
storeResult = null;
everyFrame = false;
}
public override void OnEnter()
{
DoBoolOperator();
if (!everyFrame)
{
Finish();
}
}
public override void OnUpdate()
{
DoBoolOperator();
}
void DoBoolOperator()
{
var v1 = bool1.Value;
var v2 = bool2.Value;
switch (operation)
{
case Operation.AND:
storeResult.Value = v1 && v2;
break;
case Operation.NAND:
storeResult.Value = !(v1 && v2);
break;
case Operation.OR:
storeResult.Value = v1 || v2;
break;
case Operation.XOR:
storeResult.Value = v1 ^ v2;
break;
}
}
}
}