Never mind... I looked into it more and rewrote the Send Event script, here is what I have now:
// (c) Copyright HutongGames, LLC 2010-2011. All rights reserved.
using System;
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.StateMachine)]
[Tooltip("Sends an Event after an optional delay. NOTE: To send events between FSMs they must be marked as Global in the Events Browser.")]
public class SendEvent : FsmStateAction
{
[Tooltip("Where to send the event.")]
public FsmEventTarget eventTarget;
[RequiredField]
[Tooltip("The event to send. NOTE: Events must be marked Global to send between FSMs.")]
public FsmEvent sendEvent;
[HasFloatSlider(0, 10)]
[Tooltip("Optional delay in seconds.")]
public FsmFloat delay;
[Tooltip("Repeat every frame. Rarely needed.")]
public bool everyFrame;
public bool realtime;
private DelayedEvent delayedEvent;
private float startTime;
private float currentTime;
public override void Reset()
{
eventTarget = null;
sendEvent = null;
delay = null;
everyFrame = false;
realtime = false;
}
public override void OnEnter()
{
startTime = FsmTime.RealtimeSinceStartup;
currentTime = 0f;
if (delay.Value < 0.001f)
{
Fsm.Event(eventTarget, sendEvent);
Finish();
}
else if ( !realtime )
{
delayedEvent = Fsm.DelayedEvent(eventTarget, sendEvent, delay.Value);
}
}
public override void OnUpdate()
{
if (!everyFrame)
{
if ( realtime )
{
currentTime = FsmTime.RealtimeSinceStartup - startTime;
if ( currentTime >= delay.Value )
{
Fsm.Event(eventTarget, sendEvent);
Finish();
}
}
else
{
if ( DelayedEvent.WasSent(delayedEvent) )
Finish();
}
}
}
}
}