Exemplo n.º 1
0
        private void Awake()
        {
            if (m_instance != null)
            {
                Debug.LogWarning("Another instance of RuntimeEditor exists");
            }
            m_instance = this;

            m_projectManager = Dependencies.ProjectManager;
            if (m_projectManager == null)
            {
                Debug.LogWarning("ProjectManager not found");
            }

            if (m_projectManager != null)
            {
                m_projectManager.IgnoreTypes(
                    typeof(SpriteGizmo),
                    typeof(AudioReverbZoneGizmo),
                    typeof(AudioSourceGizmo),
                    typeof(BoxColliderGizmo),
                    typeof(CapsuleColliderGizmo),
                    typeof(SphereColliderGizmo),
                    typeof(LightGizmo),
                    typeof(DirectionalLightGizmo),
                    typeof(PointLightGizmo),
                    typeof(SpotlightGizmo),
                    typeof(SkinnedMeshRendererGizmo));

                m_projectManager.SceneLoaded  += OnSceneLoaded;
                m_projectManager.SceneCreated += OnSceneCreated;
            }

            RuntimeEditorApplication.IsOpenedChanged       += OnIsOpenedChanged;
            RuntimeEditorApplication.PlaymodeStateChanging += OnPlaymodeStateChanging;

            ExposeToEditor[] editorObjects = ExposeToEditor.FindAll(ExposeToEditorObjectType.Undefined, false).Select(go => go.GetComponent <ExposeToEditor>()).ToArray();
            for (int i = 0; i < editorObjects.Length; ++i)
            {
                editorObjects[i].ObjectType = ExposeToEditorObjectType.EditorMode;
                editorObjects[i].Init();
            }

            ExposeToEditor.Awaked  += OnObjectAwaked;
            ExposeToEditor.Started += OnObjectStarted;
            RuntimeEditorApplication.SceneCameras = SceneCameras;

            PrepareCameras();
            RuntimeEditorApplication.SceneCameras[0].gameObject.SetActive(true);
            for (int i = 1; i < RuntimeEditorApplication.SceneCameras.Length; ++i)
            {
                RuntimeEditorApplication.SceneCameras[i].gameObject.SetActive(false);
            }

            EditorsMap.LoadMap();
        }
        private void BindGameObjects()
        {
            IEnumerable <GameObject> gameObjects = RuntimeEditorApplication.IsPlaying ?
                                                   ExposeToEditor.FindAll(ExposeToEditorObjectType.PlayMode) :
                                                   ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode);

            if (gameObjects.Any())
            {
                Transform commonParent = gameObjects.First().transform.parent;
                foreach (GameObject go in gameObjects)
                {
                    if (go.transform.parent != commonParent)
                    {
                        Debug.LogWarning("ExposeToEditor objects have different parents, hierarchy may not work correctly.");
                        break;
                    }
                }
            }
            m_treeView.Items = gameObjects.OrderBy(g => g.transform.GetSiblingIndex());
        }
Exemplo n.º 3
0
        private void OnProjectResourcesDoubleClick(object sender, ProjectResourcesEventArgs e)
        {
            if (e.ItemObjectPair != null)
            {
                ProjectItem projectItem = e.ItemObjectPair.ProjectItem;
                if (projectItem.IsFolder)
                {
                    m_projectTree.SelectedFolder = projectItem;
                }
                else if (projectItem.IsScene)
                {
                    if (RuntimeEditorApplication.IsPlaying)
                    {
                        PopupWindow.Show("Unable to load scene", "Unable to load scene in play mode", "OK");
                        return;
                    }

                    RuntimeUndo.Purge();

                    ExposeToEditor[] editorObjects = ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode, false).Select(go => go.GetComponent <ExposeToEditor>()).ToArray();
                    for (int i = 0; i < editorObjects.Length; ++i)
                    {
                        ExposeToEditor exposeToEditor = editorObjects[i];
                        if (exposeToEditor != null)
                        {
                            DestroyImmediate(exposeToEditor.gameObject);
                        }
                    }

                    ShowProgress = true;
                    m_projectManager.LoadScene(projectItem, () =>
                    {
                        ShowProgress = false;
                    });
                }
            }
        }
Exemplo n.º 4
0
        private void DataBind(bool clearItems)
        {
            if (m_items == null)
            {
                m_listBox.SelectedItems = null;
                m_listBox.Items         = null;
            }
            else
            {
                if (clearItems)
                {
                    if (m_listBox == null)
                    {
                        Debug.LogError("ListBox is null");
                    }
                    m_listBox.Items = null;
                }

                m_listBox.SelectedItems = null;

                List <ProjectItem> itemsList = m_items.ToList();
                if (TypeFilter != null)
                {
                    for (int i = itemsList.Count - 1; i >= 0; i--)
                    {
                        ProjectItem item = itemsList[i];
                        if (item.IsFolder)
                        {
                            itemsList.Remove(item);
                        }
                        else
                        {
                            AssetItem assetItem = (AssetItem)item;
                            Type      type      = m_typeMap.ToType(assetItem.TypeGuid);
                            if (type == null)
                            {
                                itemsList.RemoveAt(i);
                            }
                            else if (!TypeFilter.IsAssignableFrom(type))
                            {
                                itemsList.RemoveAt(i);
                            }
                        }
                    }

                    if (typeof(GameObject) == TypeFilter)
                    {
                        IEnumerable <GameObject> sceneObjects = RuntimeEditorApplication.IsPlaying ?
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.PlayMode) :
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode);

                        foreach (GameObject go in sceneObjects)
                        {
                            AssetItem sceneItem = new AssetItem();
                            sceneItem.ItemID   = m_assetDB.ToID(go);
                            sceneItem.Name     = go.name;
                            sceneItem.Ext      = m_project.GetExt(go);
                            sceneItem.TypeGuid = m_typeMap.ToGuid(typeof(GameObject));
                            itemsList.Add(sceneItem);
                        }
                    }
                    else if (typeof(Component).IsAssignableFrom(TypeFilter))
                    {
                        IEnumerable <GameObject> sceneObjects = RuntimeEditorApplication.IsPlaying ?
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.PlayMode) :
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode);

                        foreach (GameObject go in sceneObjects)
                        {
                            Component component = go.GetComponent(TypeFilter);
                            Guid      typeGuid  = m_typeMap.ToGuid(component.GetType());
                            if (component != null && typeGuid != Guid.Empty)
                            {
                                AssetItem sceneItem = new AssetItem();
                                sceneItem.ItemID   = m_assetDB.ToID(go);
                                sceneItem.Name     = go.name;
                                sceneItem.Ext      = m_project.GetExt(go);
                                sceneItem.TypeGuid = typeGuid;

                                itemsList.Add(sceneItem);
                            }
                        }
                    }

                    //itemsList.Insert(0, none);
                    m_listBox.Items = itemsList;
                }
                else
                {
                    m_listBox.Items = itemsList;
                }


                //if (m_selectedItems != null)
                //{
                //    m_listBox.SelectedItems = SelectionToProjectItemObjectPair(m_selectedItems);
                //}
            }
        }
Exemplo n.º 5
0
        private void DataBind(bool clearItems)
        {
            if (m_objects == null)
            {
                m_listBox.SelectedItems = null;
                m_listBox.Items         = null;
            }
            else
            {
                if (clearItems)
                {
                    if (m_listBox == null)
                    {
                        Debug.LogError("ListBox is null");
                    }
                    m_listBox.Items = null;
                }

                m_listBox.SelectedItems = null;

                List <ProjectItemObjectPair> objectsList = m_objects.ToList();
                if (TypeFilter != null)
                {
                    for (int i = objectsList.Count - 1; i >= 0; i--)
                    {
                        UnityObject obj = objectsList[i].Object;
                        if (!TypeFilter.IsAssignableFrom(obj.GetType()))
                        {
                            objectsList.RemoveAt(i);
                        }
                    }

                    m_sceneObjectDictionary.Clear();

                    if (typeof(GameObject) == TypeFilter)
                    {
                        IEnumerable <GameObject> sceneObjects = RuntimeEditorApplication.IsPlaying ?
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.PlayMode) :
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode);

                        foreach (GameObject go in sceneObjects)
                        {
                            m_sceneObjectDictionary.Add(m_projectManager.GetID(go), go);
                            objectsList.Add(new ProjectItemObjectPair(null, go));
                        }
                    }
                    else if (typeof(Component).IsAssignableFrom(TypeFilter))
                    {
                        IEnumerable <GameObject> sceneObjects = RuntimeEditorApplication.IsPlaying ?
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.PlayMode) :
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode);

                        foreach (GameObject go in sceneObjects)
                        {
                            Component component = go.GetComponent(TypeFilter);
                            if (component != null)
                            {
                                m_sceneObjectDictionary.Add(m_projectManager.GetID(component), component);
                                objectsList.Add(new ProjectItemObjectPair(null, component));
                            }
                        }
                    }

                    ProjectItemObjectPair none = new ProjectItemObjectPair(null, ScriptableObject.CreateInstance <NoneItem>());
                    objectsList.Insert(0, none);
                    m_listBox.Items = objectsList;
                }
                else
                {
                    m_listBox.Items = objectsList;
                }


                if (m_selectedItems != null)
                {
                    m_listBox.SelectedItems = SelectionToProjectItemObjectPair(m_selectedItems);
                }
            }
        }