public void SetSceneGameObject(GameObject gameObject) { if (gameObject != null && gameObject.scene.IsValid()) { _editorGameObject = gameObject; _scene.SetScene(gameObject.scene); _objectName = gameObject.name; _sceneObjectID = SceneIndexer.GetIdentifier(gameObject); } else { ClearGameObject(); } }
public static GameObject GetObject(Scene scene, int sceneObjectID) { GameObject obj = null; if (sceneObjectID != -1) { SceneIndexer indexer = SceneUtils.FindInScene <SceneIndexer>(scene); if (indexer != null) { obj = indexer.GetObject(sceneObjectID); } } return(obj); }
public override void OnInspectorGUI() { EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(GUIContent.none, GUILayout.Width(EditorGUIUtility.labelWidth - (EditorGUI.indentLevel * 15.0f) + 11)); if (GUILayout.Button("Rebuild Scene", GUILayout.ExpandWidth(false))) { SceneIndexer indexer = target as SceneIndexer; indexer.CacheSceneObjects(); } } EditorGUILayout.EndHorizontal(); }
private GameObject GetSceneObject(Scene scene) { GameObject gameObject = null; if (scene.IsValid() && scene.isLoaded) { GameObject obj = SceneIndexer.GetObject(scene, _sceneObjectID); if (obj != null) { gameObject = obj; _objectName = obj.name; } } return(gameObject); }
private static void UpdateSceneIndex(Scene scene) { //Find SceneIndexer and update its caches list SceneIndexer indexer = SceneUtils.FindInScene <SceneIndexer>(scene); //Create a new one if one doesn't exist if (indexer == null) { GameObject newObj = new GameObject("SceneIndexer"); EditorSceneManager.MoveGameObjectToScene(newObj, scene); indexer = newObj.AddComponent <SceneIndexer>(); } indexer.CacheSceneObjects(); //Hack, save string on save scene Localisation.SaveStrings(); }
private GameObjectLoader GetGameObjectLoader(Scene scene) { GameObjectLoader loader = null; if (_sourceType == eSourceType.Loaded) { if (scene.IsValid() && scene.isLoaded) { GameObject obj = SceneIndexer.GetObject(scene, _sceneObjectID); if (obj != null) { loader = obj.GetComponent <GameObjectLoader>(); } } } return(loader); }
private static void UpdateSceneIndex(Scene scene) { //Find SceneIndexer and update its caches list SceneIndexer indexer = SceneUtils.FindInScene <SceneIndexer>(scene); //Create a new one if one doesn't exist if (indexer == null) { GameObject gameObject = new GameObject("Scene Indexer", typeof(SceneIndexer)) { hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector | HideFlags.NotEditable }; SceneManager.MoveGameObjectToScene(gameObject, scene); indexer = gameObject.GetComponent <SceneIndexer>(); } indexer.CacheSceneObjects(); }
public void SetLoadedGameObject(GameObjectLoader loader, GameObject gameObject) { if (loader != null) { _scene.SetScene(loader.gameObject.scene); _sceneObjectID = SceneIndexer.GetIdentifier(loader.gameObject); _editorLoaderGameObject = loader; if (gameObject != null && GameObjectUtils.IsChildOf(gameObject.transform, loader.transform)) { _objectName = GameObjectUtils.GetChildFullName(gameObject, loader.gameObject); _editorGameObject = gameObject; } else { _objectName = null; _editorGameObject = null; } } else { ClearGameObject(); } }
public GameObjectRef(eSourceType sourceType, GameObject gameObject) { _sourceType = sourceType; _sourceObject = null; _editorCollapsed = false; _prefab = new AssetRef <GameObject>(); _scene = new SceneRef(); _gameObject = gameObject; switch (sourceType) { case eSourceType.Prefab: { GameObject prefabAsset = (GameObject)PrefabUtility.GetPrefabParent(gameObject); if (prefabAsset != null) { gameObject = prefabAsset; } //Then find its root GameObject prefabRoot = PrefabUtility.FindPrefabRoot(gameObject); if (prefabRoot != null) { _objectName = GameObjectUtils.GetChildFullName(gameObject, prefabRoot); _prefab = new AssetRef <GameObject>(prefabRoot); } else { _objectName = string.Empty; } _sceneObjectID = -1; } break; case eSourceType.Loaded: { GameObjectLoader loader = gameObject.GetComponentInParent <GameObjectLoader>(); if (loader != null) { _scene = new SceneRef(loader.gameObject.scene); _sceneObjectID = SceneIndexer.GetIdentifier(loader.gameObject); if (gameObject != null && GameObjectUtils.IsChildOf(gameObject.transform, loader.transform)) { _objectName = GameObjectUtils.GetChildFullName(gameObject, loader.gameObject); } else { _objectName = null; } } else { _objectName = null; _sceneObjectID = -1; } } break; default: case eSourceType.Scene: { if (gameObject != null && gameObject.scene.IsValid()) { _scene = new SceneRef(gameObject.scene); _objectName = gameObject.name; _sceneObjectID = SceneIndexer.GetIdentifier(gameObject); } else { _objectName = string.Empty; _sceneObjectID = -1; } } break; } }