Files
2024-11-20 15:21:28 +01:00

59 lines
1.2 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.StateMachine)]
[Tooltip("Sends a Random Event picked from an array of Events. Optionally set the relative weight of each event.")]
public class SendRandomEvent : FsmStateAction
{
[CompoundArray("Events", "Event", "Weight")]
public FsmEvent[] events;
[HasFloatSlider(0, 1)]
public FsmFloat[] weights;
public FsmFloat delay;
DelayedEvent delayedEvent;
public override void Reset()
{
events = new FsmEvent[3];
weights = new FsmFloat[] {1,1,1};
delay = null;
}
public override void OnEnter()
{
if (events.Length > 0)
{
int randomIndex = ActionHelpers.GetRandomWeightedIndex(weights);
if (randomIndex != -1)
{
if (delay.Value < 0.001f)
{
Fsm.Event(events[randomIndex]);
Finish();
}
else
{
delayedEvent = Fsm.DelayedEvent(events[randomIndex], delay.Value);
}
return;
}
}
Finish();
}
public override void OnUpdate()
{
if (DelayedEvent.WasSent(delayedEvent))
{
Finish();
}
}
}
}