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

123 lines
2.5 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("Get the last Loaded Scene Event data when event was sent from the action 'SendSceneLoadedEvent")]
public class GetSceneLoadedEventData : FsmStateAction
{
[UIHint(UIHint.Variable)]
[Tooltip("The scene loaded mode")]
[ObjectType(typeof(LoadSceneMode))]
public FsmEnum loadedMode;
[UIHint(UIHint.Variable)]
[Tooltip("The scene name")]
public FsmString name;
[Tooltip("The scene path")]
[UIHint(UIHint.Variable)]
public FsmString path;
[Tooltip("true if the scene is valid.")]
[UIHint(UIHint.Variable)]
public FsmBool isValid;
[Tooltip("The scene Build Index")]
[UIHint(UIHint.Variable)]
public FsmInt buildIndex;
[Tooltip("true if the scene is loaded.")]
[UIHint(UIHint.Variable)]
public FsmBool isLoaded;
[UIHint(UIHint.Variable)]
[Tooltip("true if the scene is modified.")]
public FsmBool isDirty;
[Tooltip("The scene RootCount")]
[UIHint(UIHint.Variable)]
public FsmInt rootCount;
[Tooltip("The scene Root GameObjects")]
[UIHint(UIHint.Variable)]
[ArrayEditor(VariableType.GameObject)]
public FsmArray rootGameObjects;
Scene _scene;
public override void Reset()
{
loadedMode = null;
name = null;
path = null;
isValid = null;
buildIndex = null;
isLoaded = null;
rootCount = null;
rootGameObjects = null;
isDirty = null;
}
public override void OnEnter()
{
DoGetSceneProperties();
Finish();
}
void DoGetSceneProperties()
{
_scene = SendSceneLoadedEvent.lastLoadedScene;
if (!name.IsNone) {
loadedMode.Value = SendSceneLoadedEvent.lastLoadedMode;
}
if (!name.IsNone) {
name.Value = _scene.name;
}
if (!buildIndex.IsNone) {
buildIndex.Value = _scene.buildIndex;
}
if (!path.IsNone) {
path.Value = _scene.path;
}
if (!isValid.IsNone) {
isValid.Value = _scene.IsValid();
}
if (!isDirty.IsNone) {
isDirty.Value = _scene.isDirty;
}
if (!isLoaded.IsNone) {
isLoaded.Value = _scene.isLoaded;
}
if (!rootCount.IsNone) {
rootCount.Value = _scene.rootCount;
}
if (!rootGameObjects.IsNone) {
if (_scene.IsValid ()) {
rootGameObjects.Values = _scene.GetRootGameObjects ();
} else {
rootGameObjects.Resize (0);
}
}
}
}
}
#endif