private bool RenderLoadedObjectProperties() { bool dataChanged = false; if (_gameObject._scene.IsSceneValid()) { Scene scene = _gameObject._scene.GetScene(); if (scene.isLoaded) { if (!_editorSceneLoaded) { _editorLoaderGameObject = _gameObject.GetGameObjectLoader(scene); _editorComponent = GetBaseComponent(); _editorSceneLoaded = true; } if (_editorLoaderGameObject != null) { if (_editorLoaderGameObject.IsLoaded()) { if (!_editorLoaderIsLoaded) { _editorComponent = GetBaseComponent(); _editorLoaderIsLoaded = true; } dataChanged |= RenderLoadedObjectField(); dataChanged |= RenderComponentIndexField(); } else { _editorLoaderIsLoaded = false; if (_gameObject.RenderLoadedNotLoadedField(_editorLoaderGameObject)) { ClearComponent(); dataChanged = true; } } } } else { _editorSceneLoaded = false; if (_gameObject.RenderSceneNotLoadedField()) { ClearComponent(); dataChanged = true; } } } else { dataChanged |= RenderLoadedObjectField(); } return(dataChanged); }
private bool RenderLoadedProperties() { if (_scene.IsSceneValid()) { Scene scene = _scene.GetScene(); if (scene.IsValid() && scene.isLoaded) { if (!_editorSceneLoaded) { _editorLoaderGameObject = GetGameObjectLoader(scene); _editorGameObject = GetLoadedObject(scene); _editorSceneLoaded = true; } if (_editorLoaderGameObject != null) { if (_editorLoaderGameObject.IsLoaded()) { if (!_editorLoaderIsLoaded) { _editorGameObject = GetLoadedObject(_scene.GetScene()); _editorLoaderIsLoaded = true; } return(RenderLoadedObjectField()); } else { _editorLoaderIsLoaded = false; if (RenderLoadedNotLoadedField(_editorLoaderGameObject)) { ClearGameObject(); return(true); } } } } else { _editorSceneLoaded = false; if (RenderSceneNotLoadedField()) { ClearGameObject(); return(true); } } } else { return(RenderLoadedObjectField()); } return(false); }
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; } } }
private static void RenderLoadedObjectField <T>(ref ComponentRef <T> componentRef, ref bool dataChanged) where T : class { //If the component is valid if (componentRef.IsValid()) { //Check its scene is loaded Scene scene = componentRef.GetGameObjectRef().GetSceneRef().GetScene(); if (scene.isLoaded) { //If loaded and not tried finding editor loader, find it now GameObjectLoader gameObjectLoader = componentRef.GetGameObjectRef().GetEditorGameObjectLoader(scene); //If have a valid loader... if (gameObjectLoader != null) { //Check its loaded if (gameObjectLoader.IsLoaded()) { //Then render component field if (RenderObjectField(ref componentRef)) { dataChanged = true; } } //If the loader is not loaded show warning and allow clearing of the component else if (GameObjectRefEditor.RenderLoadedNotLoadedField(gameObjectLoader)) { componentRef = new ComponentRef <T>(GameObjectRef.eSourceType.Loaded); dataChanged = true; } } } //If the scene is not loaded show warning and allow clearing of the component else if (GameObjectRefEditor.RenderSceneNotLoadedField(componentRef.GetGameObjectRef())) { componentRef = new ComponentRef <T>(GameObjectRef.eSourceType.Loaded); dataChanged = true; } } //Else don't have a component set, render component field else if (RenderObjectField(ref componentRef)) { dataChanged = true; } }
private GameObject GetLoadedObject(Scene scene) { GameObject gameObject = null; if (scene.IsValid() && scene.isLoaded) { GameObjectLoader loader = GetGameObjectLoader(scene); if (loader != null && loader.IsLoaded()) { Transform child = loader.transform.Find(_objectName); if (child != null) { gameObject = child.gameObject; } } } return(gameObject); }