private void TryToAddRenderers(IRuntimeSelection selection) { if (selection.gameObjects != null) { Renderer[] renderers = selection.gameObjects.Where(go => go != null).Select(go => go.GetComponent <ExposeToEditor>()).Where(e => e != null && e.ShowSelectionGizmo && (e.gameObject.hideFlags & HideFlags.HideInHierarchy) == 0).SelectMany(e => e.GetComponentsInChildren <Renderer>().Where(r => (r.gameObject.hideFlags & HideFlags.HideInHierarchy) == 0)).ToArray(); m_outlineEffect.AddRenderers(renderers); } }
private void OnSelectionChanged(IRuntimeSelection selection, Object[] unselectedObjects) { if (unselectedObjects != null) { Renderer[] renderers = unselectedObjects.Select(go => go as GameObject).Where(go => go != null).SelectMany(go => go.GetComponentsInChildren <Renderer>(true)).ToArray(); m_outlineEffect.RemoveRenderers(renderers); } TryToAddRenderers(selection); }
protected void Awake() { m_wm = IOC.Resolve <IWindowManager>(); m_editor = IOC.Resolve <IRTE>(); m_selection = new RuntimeSelection(m_editor); m_selection.EnableUndo = false; IOC.RegisterFallback <ICustomSelectionComponent>(this); Enabled = false; }
protected override void OnDestroy() { base.OnDestroy(); Window.IOCContainer.UnregisterFallback <IScenePivot>(this); Window.IOCContainer.UnregisterFallback <IRuntimeSelectionComponent>(this); if (m_boxSelection != null) { m_boxSelection.Filtering -= OnBoxSelectionFiltering; m_boxSelection.Selection -= OnBoxSelection; } if (Editor != null) { Editor.Tools.ToolChanged -= OnRuntimeToolChanged; Editor.Selection.SelectionChanged -= OnRuntimeEditorSelectionChanged; } if (m_positionHandle != null) { m_positionHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_positionHandle.Drop.RemoveListener(OnDrop); } if (m_rotationHandle != null) { m_rotationHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_rotationHandle.Drop.RemoveListener(OnDrop); } if (m_scaleHandle != null) { m_scaleHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_scaleHandle.Drop.RemoveListener(OnDrop); } if (m_rectTool != null) { m_rectTool.BeforeDrag.RemoveListener(OnBeforeDrag); m_rectTool.Drop.RemoveListener(OnDrop); } if (m_customHandle != null) { m_customHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_customHandle.Drop.RemoveListener(OnDrop); } if (m_selectionOverride != null) { m_selectionOverride.SelectionChanged -= OnRuntimeSelectionChanged; m_selectionOverride = null; } }
private void TryToAddRenderers(IRuntimeSelection selection) { if (selection.gameObjects != null) { IList <Renderer> renderers = GetRenderers(selection.gameObjects); m_outlineEffect.AddRenderers(renderers.ToArray()); IList <ICustomOutlinePrepass> customRenderers = GetCustomRenderers(selection.gameObjects); m_outlineEffect.AddRenderers(customRenderers.ToArray()); } }
private void TryToAddRenderers(IRuntimeSelection selection) { if (selection.gameObjects != null) { ICustomOutlinePrepass[] renderers = selection.gameObjects.Where(go => go != null).Select(go => go.GetComponent <ExposeToEditor>()).Where(e => e != null && e.ShowSelectionGizmo && !e.gameObject.IsPrefab() && (e.gameObject.hideFlags & HideFlags.HideInHierarchy) == 0).SelectMany(e => e.GetComponentsInChildren <ICustomOutlinePrepass>()).Where(e => e.GetRenderer().gameObject.activeInHierarchy).ToArray(); for (int i = 0; i < renderers.Length; ++i) { ICustomOutlinePrepass renderer = renderers[i]; m_rendererItems.Add(renderer); } } }
private void OnSelectionChanged(IRuntimeSelection selection, Object[] unselectedObjects) { if (unselectedObjects != null) { Renderer[] renderers = unselectedObjects.Select(go => go as GameObject).Where(go => go != null).SelectMany(go => go.GetComponentsInChildren <Renderer>(true)).ToArray(); for (int i = 0; i < renderers.Length; ++i) { Renderer renderer = renderers[i]; m_cache.Remove(renderer); } } TryToAddRenderers(selection); }
private void TryToAddRenderers(IRuntimeSelection selection) { if (selection.gameObjects != null) { Renderer[] renderers = selection.gameObjects.Where(go => go != null).Select(go => go.GetComponent <ExposeToEditor>()).Where(e => e != null && e.ShowSelectionGizmo && !e.gameObject.IsPrefab() && (e.gameObject.hideFlags & HideFlags.HideInHierarchy) == 0).SelectMany(e => e.GetComponentsInChildren <Renderer>().Where(r => (r.gameObject.hideFlags & HideFlags.HideInHierarchy) == 0)).ToArray(); for (int i = 0; i < renderers.Length; ++i) { Renderer renderer = renderers[i]; if ((renderer.hideFlags & HideFlags.HideInHierarchy) == 0) { m_cache.Add(renderer); } } } }
private void HandleRuntimeSelectionChange(IRuntimeSelection selection, UnityObject[] unselected) { if (!IsSelectionVisible) { return; } if (unselected != null) { for (int i = 0; i < unselected.Length; ++i) { GameObject unselectedObj = unselected[i] as GameObject; if (unselectedObj != null) { 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) { if (exposeToEditor.Selected != null) { exposeToEditor.Selected.Invoke(exposeToEditor); } } } } }
private void Awake() { IOC.RegisterFallback <IManualUVEditor>(this); m_editor = IOC.Resolve <IRuntimeEditor>(); m_tool = IOC.Resolve <IProBuilderTool>(); m_tool.SelectionChanged += OnSelectionChanged; m_tool.ModeChanged += OnModeChanged; m_pivotPointSelection = new RuntimeSelection(IOC.Resolve <IRTE>()); m_pivotPoint = new GameObject("ManualUVEditorPivotPoint").transform; m_pivotPoint.SetParent(transform, false); LockAxes la = m_pivotPoint.gameObject.AddComponent <LockAxes>(); la.PositionZ = true; la.RotationX = la.RotationY = la.RotationFree = la.RotationScreen = true; la.ScaleZ = true; la.PivotRotationValue = RuntimePivotRotation.Global; la.PivotRotation = true; }
protected virtual void SelectGO() { RuntimeTools tools = m_component.Editor.Tools; IRuntimeSelection selection = m_component.Selection; if (tools.ActiveTool != null && tools.ActiveTool != m_component.BoxSelection) { return; } if (tools.IsViewing) { return; } if (!selection.Enabled) { return; } OnSelectGO(); }
private void OnSelectionChanged(IRuntimeSelection selection, Object[] unselectedObjects) { TryToRemoveRenderers(unselectedObjects); TryToAddRenderers(selection); }
protected override void OnDestroyOverride() { base.OnDestroyOverride(); Window.IOCContainer.UnregisterFallback <IScenePivot>(this); Window.IOCContainer.UnregisterFallback <IRuntimeSelectionComponent>(this); if (m_boxSelection != null) { m_boxSelection.Filtering -= OnBoxSelectionFiltering; m_boxSelection.Selection -= OnBoxSelection; } if (Editor != null) { Editor.Tools.ToolChanged -= OnRuntimeToolChanged; Editor.Selection.SelectionChanged -= OnRuntimeEditorSelectionChanged; } /* * GameObject[] selectedObjects = Editor.Selection.gameObjects; * if (selectedObjects != null) * { * for (int i = 0; i < selectedObjects.Length; ++i) * { * GameObject go = selectedObjects[i]; * if (go != null) * { * SelectionGizmo[] selectionGizmo = go.GetComponents<SelectionGizmo>(); * for (int g = 0; g < selectionGizmo.Length; ++g) * { * if (selectionGizmo[g] != null && selectionGizmo[g].Window == Window) * { * Destroy(selectionGizmo[g]); * } * } * } * } * }*/ if (m_positionHandle != null) { m_positionHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_positionHandle.Drop.RemoveListener(OnDrop); } if (m_rotationHandle != null) { m_rotationHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_rotationHandle.Drop.RemoveListener(OnDrop); } if (m_scaleHandle != null) { m_scaleHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_scaleHandle.Drop.RemoveListener(OnDrop); } if (m_rectTool != null) { m_rectTool.BeforeDrag.RemoveListener(OnBeforeDrag); m_rectTool.Drop.RemoveListener(OnDrop); } if (m_customHandle != null) { m_customHandle.BeforeDrag.RemoveListener(OnBeforeDrag); m_customHandle.Drop.RemoveListener(OnDrop); } if (m_selectionOverride != null) { m_selectionOverride.SelectionChanged -= OnRuntimeSelectionChanged; m_selectionOverride = null; } }
private void HandleRuntimeSelectionChange(IRuntimeSelection selection, UnityObject[] unselected) { if (!IsSelectionVisible) { return; } 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); } } } } }
public void Exec(string cmd) { cmd = cmd.ToLower(); GameObject go = null; switch (cmd) { case "createempty": go = new GameObject(); go.name = "Empty"; break; case "createemptychild": go = new GameObject(); go.name = "Empty"; IRuntimeSelection selection = m_editor.Selection; go.transform.SetParent(selection.activeTransform, false); break; case "cube": go = GameObject.CreatePrimitive(PrimitiveType.Cube); break; case "sphere": go = GameObject.CreatePrimitive(PrimitiveType.Sphere); break; case "capsule": go = GameObject.CreatePrimitive(PrimitiveType.Capsule); break; case "cylinder": go = GameObject.CreatePrimitive(PrimitiveType.Cylinder); break; case "plane": go = GameObject.CreatePrimitive(PrimitiveType.Plane); break; case "quad": go = GameObject.CreatePrimitive(PrimitiveType.Quad); break; case "directionallight": { go = new GameObject(); go.name = "Directional Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Directional; } break; case "pointlight": { go = new GameObject(); go.name = "Point Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Point; } break; case "spotlight": { go = new GameObject(); go.name = "Spot Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Point; } break; case "camera": { go = new GameObject(); go.SetActive(false); go.name = "Camera"; go.AddComponent <Camera>(); go.AddComponent <GameViewCamera>(); } break; } if (go != null) { Vector3 pivot = Vector3.zero; IScenePivot scenePivot = GetScenePivot(); if (scenePivot != null) { pivot = scenePivot.SecondaryPivot.position; } go.transform.position = pivot; go.AddComponent <ExposeToEditor>(); go.SetActive(true); m_editor.RegisterCreatedObjects(new[] { go }); } }
public void Exec(string cmd) { cmd = cmd.ToLower(); GameObject go = null; switch (cmd) { case "createempty": go = new GameObject(); go.name = "Empty"; break; case "createemptychild": go = new GameObject(); go.name = "Empty"; IRuntimeSelection selection = m_editor.Selection; go.transform.SetParent(selection.activeTransform, false); break; case "cube": go = GameObject.CreatePrimitive(PrimitiveType.Cube); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "sphere": go = GameObject.CreatePrimitive(PrimitiveType.Sphere); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "capsule": go = GameObject.CreatePrimitive(PrimitiveType.Capsule); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "cylinder": go = GameObject.CreatePrimitive(PrimitiveType.Cylinder); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "plane": go = GameObject.CreatePrimitive(PrimitiveType.Plane); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "quad": go = GameObject.CreatePrimitive(PrimitiveType.Quad); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "directionallight": { go = new GameObject(); go.name = "Directional Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Directional; } break; case "pointlight": { go = new GameObject(); go.name = "Point Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Point; } break; case "spotlight": { go = new GameObject(); go.name = "Spot Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Spot; } break; case "camera": { go = new GameObject(); go.SetActive(false); go.name = "Camera"; go.AddComponent <Camera>(); go.AddComponent <GameViewCamera>(); } break; } if (go != null) { m_editor.AddGameObjectToScene(go); } }
public void Exec(string cmd) { cmd = cmd.ToLower(); GameObject go = null; switch (cmd) { case "createempty": go = new GameObject(); go.name = "Empty"; break; case "createemptychild": go = new GameObject(); go.name = "Empty"; IRuntimeSelection selection = m_editor.Selection; go.transform.SetParent(selection.activeTransform, false); break; case "cube": go = GameObject.CreatePrimitive(PrimitiveType.Cube); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "sphere": go = GameObject.CreatePrimitive(PrimitiveType.Sphere); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "capsule": go = GameObject.CreatePrimitive(PrimitiveType.Capsule); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "cylinder": go = GameObject.CreatePrimitive(PrimitiveType.Cylinder); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "plane": go = GameObject.CreatePrimitive(PrimitiveType.Plane); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "quad": go = GameObject.CreatePrimitive(PrimitiveType.Quad); go.GetComponent <Renderer>().sharedMaterial = m_defaultMaterial; break; case "directionallight": { go = new GameObject(); go.name = "Directional Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Directional; } break; case "pointlight": { go = new GameObject(); go.name = "Point Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Point; } break; case "spotlight": { go = new GameObject(); go.name = "Spot Light"; Light light = go.AddComponent <Light>(); light.type = LightType.Point; } break; case "camera": { go = new GameObject(); go.SetActive(false); go.name = "Camera"; go.AddComponent <Camera>(); go.AddComponent <GameViewCamera>(); } break; #region Imp case "机器人": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; case "总控": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; case "总控电气柜": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; case "抽拉底座": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; case "立体库": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; case "车床": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; case "输送机": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; case "铣床": go = Instantiate(Resources.Load("Model/" + cmd) as GameObject); go.name = cmd; break; #endregion } if (go != null) { Vector3 pivot = Vector3.zero; IScenePivot scenePivot = GetScenePivot(); if (scenePivot != null) { pivot = scenePivot.SecondaryPivot; } go.transform.position = pivot; go.AddComponent <ExposeToEditor>(); Modle equipment = new Modle() { modleName = go.name, position = Util.Vector3ToVector3d(go.transform.position), rotation = Util.Vector3ToVector3d(go.transform.localRotation.eulerAngles) }; //go.AddComponent<Equipment>(); go.SetActive(true); m_editor.RegisterCreatedObjects(new[] { go }); RuntimeEditor.modelDic.Add(go, equipment); RuntimeEditor.solutionInfo.equipmentList.Add(equipment); } }