Hey, saw someone looking for custom action that I made a while ago, so I posted it here.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace AC
{
[System.Serializable]
public class ActionPauseRandom : Action
{
public int parameterIDMin = -1;
public int parameterIDMax = -1;
public float timeToPauseMin;
public float timeToPauseMax;
public ActionPauseRandom ()
{
this.isDisplayed = true;
category = ActionCategory.Engine;
title = "Wait Random";
description = "Waits a random time between the values continuing.";
}
override public void AssignValues (List<ActionParameter> parameters)
{
timeToPauseMin = AssignFloat (parameters, parameterIDMin, timeToPauseMin);
timeToPauseMin = Mathf.Max (0f, timeToPauseMin);
timeToPauseMax = AssignFloat(parameters, parameterIDMax, timeToPauseMax);
timeToPauseMax = Mathf.Max(0f, timeToPauseMax);
}
override public float Run ()
{
if (!isRunning)
{
isRunning = true;
return Random.Range(timeToPauseMin, timeToPauseMax);
}
else
{
isRunning = false;
return 0f;
}
}
override public void ShowGUI (List<ActionParameter> parameters)
{
parameterIDMin = Action.ChooseParameterGUI ("Minimum wait time (s):", parameters, parameterIDMin, ParameterType.Float);
if (parameterIDMax < 0)
{
timeToPauseMin = EditorGUILayout.FloatField ("Minimum wait time (s):", timeToPauseMin);
}
parameterIDMax = Action.ChooseParameterGUI ("Maximum wait time (s):", parameters, parameterIDMax, ParameterType.Float);
if (parameterIDMax < 0)
{
timeToPauseMax = EditorGUILayout.FloatField ("Maximum wait time (s):", timeToPauseMax);
}
AfterRunningOption ();
}
public override string SetLabel ()
{
string labelAdd = " (" + timeToPauseMin+"-"+ timeToPauseMax + "s)";
return labelAdd;
}
}
}
Comments