87 lines
1.5 KiB
C#
87 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 math operation on 2 Integers: Add, Subtract, Multiply, Divide, Min, Max.")]
|
|
public class IntOperator : FsmStateAction
|
|
{
|
|
public enum Operation
|
|
{
|
|
Add,
|
|
Subtract,
|
|
Multiply,
|
|
Divide,
|
|
Min,
|
|
Max
|
|
}
|
|
|
|
[RequiredField]
|
|
public FsmInt integer1;
|
|
[RequiredField]
|
|
public FsmInt integer2;
|
|
public Operation operation = Operation.Add;
|
|
[RequiredField]
|
|
[UIHint(UIHint.Variable)]
|
|
public FsmInt storeResult;
|
|
public bool everyFrame;
|
|
|
|
public override void Reset()
|
|
{
|
|
integer1 = null;
|
|
integer2 = null;
|
|
operation = Operation.Add;
|
|
storeResult = null;
|
|
everyFrame = false;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
DoIntOperator();
|
|
|
|
if (!everyFrame)
|
|
Finish();
|
|
}
|
|
|
|
// NOTE: very frame rate dependent!
|
|
public override void OnUpdate()
|
|
{
|
|
DoIntOperator();
|
|
}
|
|
|
|
void DoIntOperator()
|
|
{
|
|
int v1 = integer1.Value;
|
|
int v2 = integer2.Value;
|
|
|
|
switch (operation)
|
|
{
|
|
case Operation.Add:
|
|
storeResult.Value = v1 + v2;
|
|
break;
|
|
|
|
case Operation.Subtract:
|
|
storeResult.Value = v1 - v2;
|
|
break;
|
|
|
|
case Operation.Multiply:
|
|
storeResult.Value = v1 * v2;
|
|
break;
|
|
|
|
case Operation.Divide:
|
|
storeResult.Value = v1 / v2;
|
|
break;
|
|
|
|
case Operation.Min:
|
|
storeResult.Value = Mathf.Min(v1, v2);
|
|
break;
|
|
|
|
case Operation.Max:
|
|
storeResult.Value = Mathf.Max(v1, v2);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} |