Esempio n. 1
0
 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();
     }
 }
Esempio n. 2
0
            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);
            }
Esempio n. 3
0
                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();
                }
Esempio n. 4
0
            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);
            }
Esempio n. 5
0
                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();
                }
Esempio n. 6
0
            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();
                }
Esempio n. 8
0
            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();
                }
            }
Esempio n. 9
0
            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;
                }
            }