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()); }
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; }); } } }
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); //} } }
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); } } }