private void HandleRuntimeSelectionChange(IRuntimeSelection selection, UnityObject[] unselected) { if (unselected != null) { for (int i = 0; i < unselected.Length; ++i) { GameObject unselectedObj = unselected[i] as GameObject; if (unselectedObj != null) { SelectionGizmo[] selectionGizmo = unselectedObj.GetComponents <SelectionGizmo>(); for (int g = 0; g < selectionGizmo.Length; ++g) { if (selectionGizmo[g] != null && selectionGizmo[g].Window == Window) { //DestroyImmediate(selectionGizmo[g]); selectionGizmo[g].Internal_Destroyed = true; Destroy(selectionGizmo[g]); } } ExposeToEditor exposeToEditor = unselectedObj.GetComponent <ExposeToEditor>(); if (exposeToEditor) { if (exposeToEditor.Unselected != null) { exposeToEditor.Unselected.Invoke(exposeToEditor); } } } } } GameObject[] selected = selection.gameObjects; if (selected != null) { for (int i = 0; i < selected.Length; ++i) { GameObject selectedObj = selected[i]; ExposeToEditor exposeToEditor = selectedObj.GetComponent <ExposeToEditor>(); if (exposeToEditor && !selectedObj.IsPrefab() && !selectedObj.isStatic) { SelectionGizmo selectionGizmo = selectedObj.GetComponent <SelectionGizmo>(); if (selectionGizmo == null || selectionGizmo.Internal_Destroyed || selectionGizmo.Window != Window) { if (!Editor.IsPlaymodeStateChanging || !Editor.IsPlaying) { if ((selectedObj.hideFlags & HideFlags.DontSave) == 0) { if (m_outlineManager == null) { selectionGizmo = selectedObj.AddComponent <SelectionGizmo>(); if (m_selectionGizmoPrefab != null) { selectionGizmo.SelectionGizmoModel = Instantiate(m_selectionGizmoPrefab, selectionGizmo.transform); //selectionGizmo.SelectionGizmoModel.layer = Editor.CameraLayerSettings.RuntimeGraphicsLayer; } } } } } if (selectionGizmo != null) { selectionGizmo.Window = Window; } if (exposeToEditor.Selected != null) { exposeToEditor.Selected.Invoke(exposeToEditor); } } } } }
private void OnRuntimeSelectionChanged(Object[] unselected) { if (unselected != null) { for (int i = 0; i < unselected.Length; ++i) { GameObject unselectedObj = unselected[i] as GameObject; if (unselectedObj != null) { SelectionGizmo selectionGizmo = unselectedObj.GetComponent <SelectionGizmo>(); if (selectionGizmo != null) { DestroyImmediate(selectionGizmo); } ExposeToEditor exposeToEditor = unselectedObj.GetComponent <ExposeToEditor>(); if (exposeToEditor) { if (exposeToEditor.Unselected != null) { exposeToEditor.Unselected.Invoke(exposeToEditor); } } } } } GameObject[] selected = RuntimeSelection.gameObjects; if (selected != null) { for (int i = 0; i < selected.Length; ++i) { GameObject selectedObj = selected[i]; ExposeToEditor exposeToEditor = selectedObj.GetComponent <ExposeToEditor>(); if (exposeToEditor && exposeToEditor.CanSelect && !selectedObj.IsPrefab() && !selectedObj.isStatic) { SelectionGizmo selectionGizmo = selectedObj.GetComponent <SelectionGizmo>(); if (selectionGizmo == null) { selectionGizmo = selectedObj.AddComponent <SelectionGizmo>(); } selectionGizmo.SceneCamera = SceneCamera; if (exposeToEditor.Selected != null) { exposeToEditor.Selected.Invoke(exposeToEditor); } } } } if (RuntimeSelection.activeGameObject == null || RuntimeSelection.activeGameObject.IsPrefab()) { if (m_positionHandle != null) { m_positionHandle.gameObject.SetActive(false); } if (m_rotationHandle != null) { m_rotationHandle.gameObject.SetActive(false); } if (m_scaleHandle != null) { m_scaleHandle.gameObject.SetActive(false); } } else { OnRuntimeToolChanged(); } }
private void OnRuntimeSelectionChanged(Object[] unselected) { if (unselected != null) { for (int i = 0; i < unselected.Length; ++i) { GameObject unselectedObj = unselected[i] as GameObject; if (unselectedObj != null) { SelectionGizmo[] selectionGizmo = unselectedObj.GetComponents <SelectionGizmo>(); for (int g = 0; g < selectionGizmo.Length; ++g) { if (selectionGizmo[g] != null && selectionGizmo[g].Window == Window) { //DestroyImmediate(selectionGizmo[g]); selectionGizmo[g].Internal_Destroyed = true; Destroy(selectionGizmo[g]); } } ExposeToEditor exposeToEditor = unselectedObj.GetComponent <ExposeToEditor>(); if (exposeToEditor) { if (exposeToEditor.Unselected != null) { exposeToEditor.Unselected.Invoke(exposeToEditor); } } } } } GameObject[] selected = Editor.Selection.gameObjects; if (selected != null) { for (int i = 0; i < selected.Length; ++i) { GameObject selectedObj = selected[i]; ExposeToEditor exposeToEditor = selectedObj.GetComponent <ExposeToEditor>(); if (exposeToEditor && exposeToEditor.CanSelect && !selectedObj.IsPrefab() && !selectedObj.isStatic) { SelectionGizmo selectionGizmo = selectedObj.GetComponent <SelectionGizmo>(); if (selectionGizmo == null || selectionGizmo.Internal_Destroyed || selectionGizmo.Window != Window) { if (!Editor.IsPlaymodeStateChanging || !Editor.IsPlaying) { selectionGizmo = selectedObj.AddComponent <SelectionGizmo>(); } } if (selectionGizmo != null) { selectionGizmo.Window = Window; } if (exposeToEditor.Selected != null) { exposeToEditor.Selected.Invoke(exposeToEditor); } } } } if (Editor.Selection.activeGameObject == null || Editor.Selection.activeGameObject.IsPrefab()) { if (m_positionHandle != null) { m_positionHandle.gameObject.SetActive(false); } if (m_rotationHandle != null) { m_rotationHandle.gameObject.SetActive(false); } if (m_scaleHandle != null) { m_scaleHandle.gameObject.SetActive(false); } } else { OnRuntimeToolChanged(); } }