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

52 lines
1.1 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2016. All rights reserved.
#if UNITY_5_4_OR_NEWER
using System;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Scene)]
[Tooltip("Send an event when the active scene has changed.")]
public class SendActiveSceneChangedEvent : FsmStateAction
{
[RequiredField]
[Tooltip("The event to send when an active scene changed")]
public FsmEvent activeSceneChanged;
public static Scene lastPreviousActiveScene;
public static Scene lastNewActiveScene;
public override void Reset()
{
activeSceneChanged = null;
}
public override void OnEnter()
{
SceneManager.activeSceneChanged += SceneManager_activeSceneChanged;
Finish();
}
void SceneManager_activeSceneChanged (Scene previousActiveScene , Scene activeScene)
{
lastNewActiveScene = activeScene;
lastPreviousActiveScene = previousActiveScene;
Fsm.Event (activeSceneChanged);
Finish ();
}
public override void OnExit()
{
SceneManager.activeSceneChanged -= SceneManager_activeSceneChanged;
}
}
}
#endif