private static void RenderSceneGameObjectField(ref GameObjectRef gameObjectRef, ref bool dataChanged) { if (gameObjectRef.IsValid()) { Scene scene = gameObjectRef.GetSceneRef().GetScene(); if (scene.IsValid() && scene.isLoaded) { EditorGUI.BeginChangeCheck(); GameObject gameObj = (GameObject)EditorGUILayout.ObjectField(kLabel, gameObjectRef.GetGameObject(), typeof(GameObject), true); if (EditorGUI.EndChangeCheck()) { gameObjectRef = new GameObjectRef(GameObjectRef.eSourceType.Scene, gameObj); dataChanged = true; } } else if (RenderSceneNotLoadedField(gameObjectRef)) { gameObjectRef = new GameObjectRef(GameObjectRef.eSourceType.Scene); dataChanged = true; } } else { EditorGUI.BeginChangeCheck(); GameObject gameObj = (GameObject)EditorGUILayout.ObjectField(kLabel, gameObjectRef.GetGameObject(), typeof(GameObject), true); if (EditorGUI.EndChangeCheck()) { gameObjectRef = new GameObjectRef(GameObjectRef.eSourceType.Scene, gameObj); dataChanged = true; } } }
public static bool RenderSceneNotLoadedField(GameObjectRef gameObjectRef) { bool clear = false; EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField("Scene '" + gameObjectRef.GetSceneRef() + "' not loaded"); if (GUILayout.Button("Load", GUILayout.ExpandWidth(false))) { gameObjectRef.GetSceneRef().OpenSceneInEditor(); } clear = GUILayout.Button("Clear", GUILayout.ExpandWidth(false)); } EditorGUILayout.EndHorizontal(); return(clear); }
private static void RenderLoadedGameObjectField(ref GameObjectRef gameObjectRef, ref bool dataChanged) { if (gameObjectRef.IsValid()) { Scene scene = gameObjectRef.GetSceneRef().GetScene(); if (scene.IsValid() && scene.isLoaded) { //If loaded and not tried finding editor loader, find it now GameObjectLoader gameObjectLoader = gameObjectRef.GetEditorGameObjectLoader(scene); //If have a valid loader... if (gameObjectLoader != null) { if (gameObjectLoader.IsLoaded()) { EditorGUI.BeginChangeCheck(); GameObject obj = (GameObject)EditorGUILayout.ObjectField(kLabel, gameObjectRef.GetGameObject(), typeof(GameObject), true); if (EditorGUI.EndChangeCheck()) { gameObjectRef = new GameObjectRef(GameObjectRef.eSourceType.Loaded, obj); dataChanged = true; } } else if (RenderLoadedNotLoadedField(gameObjectLoader)) { gameObjectRef = new GameObjectRef(GameObjectRef.eSourceType.Loaded); dataChanged = true; } } } else if (RenderSceneNotLoadedField(gameObjectRef)) { gameObjectRef = new GameObjectRef(GameObjectRef.eSourceType.Loaded); dataChanged = true; } } else { EditorGUI.BeginChangeCheck(); GameObject obj = (GameObject)EditorGUILayout.ObjectField(kLabel, gameObjectRef.GetGameObject(), typeof(GameObject), true); if (EditorGUI.EndChangeCheck()) { gameObjectRef = new GameObjectRef(GameObjectRef.eSourceType.Loaded, obj); dataChanged = true; } } }