protected override void UpdateOverride() { base.UpdateOverride(); if (RuntimeEditorApplication.IsActiveWindow(this)) { if (InputController._GetKeyDown(RemoveKey)) { if (m_treeView.SelectedItem != null) { ProjectItem projectItem = (ProjectItem)m_treeView.SelectedItem; if (projectItem.Parent == null) { PopupWindow.Show("Unable to Remove", "Unable to remove root folder", "OK"); } else { PopupWindow.Show("Remove Selected assets", "You can not undo this action", "Delete", args => { m_treeView.RemoveSelectedItems(); }, "Cancel"); } } } } if (RuntimeEditorApplication.IsPointerOverWindow(this)) { if (m_dragProjectItem != null) { m_treeView.ExternalItemDrag(InputController._MousePosition); } } }
protected override void UpdateOverride() { base.UpdateOverride(); if (!RuntimeEditorApplication.IsPointerOverWindow(this)) { return; } if (InputController.GetKeyDown(SelectAllKey)) { if (InputController.GetKey(ModifierKey)) { if (RuntimeEditorApplication.IsActiveWindow(this)) { m_treeView.SelectedItems = m_treeView.Items; } } } if (RuntimeTools.SpawnPrefab == null) { return; } m_treeView.ExternalItemDrag(Input.mousePosition); if (Input.GetMouseButtonUp(0)) { m_isSpawningPrefab = true; GameObject prefabInstance = RuntimeTools.SpawnPrefab.InstantiatePrefab(Vector3.zero, Quaternion.identity); prefabInstance.SetActive(true); ExposeToEditor exposeToEditor = prefabInstance.GetComponent <ExposeToEditor>(); if (exposeToEditor == null) { exposeToEditor = prefabInstance.AddComponent <ExposeToEditor>(); } exposeToEditor.SetName(RuntimeTools.SpawnPrefab.name); RuntimeUndo.BeginRecord(); RuntimeUndo.RecordSelection(); RuntimeUndo.BeginRegisterCreateObject(prefabInstance); RuntimeUndo.EndRecord(); bool isEnabled = RuntimeUndo.Enabled; RuntimeUndo.Enabled = false; RuntimeSelection.activeGameObject = prefabInstance; RuntimeUndo.Enabled = isEnabled; RuntimeUndo.BeginRecord(); RuntimeUndo.RegisterCreatedObject(prefabInstance); RuntimeUndo.RecordSelection(); RuntimeUndo.EndRecord(); RuntimeTools.SpawnPrefab = null; } }
protected override void UpdateOverride() { base.UpdateOverride(); if (RuntimeTools.ActiveTool != null) { return; } HandleInput(); if (RuntimeEditorApplication.IsPointerOverWindow(this)) { SetCursor(); } else { CursorHelper.ResetCursor(this); } }
private void CompleteSpawn(object item) { ItemContainer itemContainer = m_listBox.GetItemContainer(item); if (itemContainer != null) { ResourcePreview resource = itemContainer.GetComponentInChildren <ResourcePreview>(); resource.CompleteSpawn(); } if (RuntimeEditorApplication.IsPointerOverWindow(RuntimeWindowType.Resources)) { RuntimeTools.SpawnPrefab = null; } if (Drop != null) { Drop(this, new ProjectResourcesEventArgs(new [] { (ProjectItemObjectPair)item })); } }
public ProjectItem BeginDropProjectItem() { ProjectItem dropTarget = null; if (m_dragProjectItem != null) { if (m_treeView.DropAction == ItemDropAction.SetLastChild) { dropTarget = (ProjectItem)m_treeView.DropTarget; } if (RuntimeEditorApplication.IsPointerOverWindow(RuntimeWindowType.ProjectTree)) { RuntimeTools.SpawnPrefab = null; } } m_treeView.ExternalItemDrop(); m_dragProjectItem = null; return(dropTarget); }
private void LateUpdate() { if (RuntimeTools.ActiveTool != null && RuntimeTools.ActiveTool != this) { return; } if (RuntimeTools.IsViewing) { return; } if (KeyCode == KeyCode.None || InputController.GetKeyDown(KeyCode)) { m_active = true; } if (m_active) { if (Input.GetMouseButtonDown(MouseButton)) { m_startMousePosition = Input.mousePosition; m_isDragging = GetPoint(out m_startPt) && (!RuntimeEditorApplication.IsOpened || RuntimeEditorApplication.IsPointerOverWindow(RuntimeWindowType.SceneView) && !RuntimeTools.IsPointerOverGameObject()); if (m_isDragging) { m_rectTransform.anchoredPosition = m_startPt; m_rectTransform.sizeDelta = new Vector2(0, 0); CursorHelper.SetCursor(this, null, Vector3.zero, CursorMode.Auto); } else { RuntimeTools.ActiveTool = null; } } else if (Input.GetMouseButtonUp(MouseButton)) { if (m_isDragging) { m_isDragging = false; HitTest(); m_rectTransform.sizeDelta = new Vector2(0, 0); CursorHelper.ResetCursor(this); } RuntimeTools.ActiveTool = null; m_active = false; } else if (m_isDragging) { GetPoint(out m_endPt); Vector2 size = m_endPt - m_startPt; if (size != Vector2.zero) { RuntimeTools.ActiveTool = this; } m_rectTransform.sizeDelta = new Vector2(Mathf.Abs(size.x), Mathf.Abs(size.y)); m_rectTransform.localScale = new Vector3(Mathf.Sign(size.x), Mathf.Sign(size.y), 1); } } }
public void CompleteSpawn() { if (RuntimeEditorApplication.IsPointerOverWindow(RuntimeWindowType.SceneView)) { if (m_resource is Material) { Material material = (Material)m_resource; Camera sceneCamera = RuntimeEditorApplication.ActiveSceneCamera; if (sceneCamera) { Ray ray = sceneCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo)) { MeshRenderer renderer = hitInfo.collider.GetComponentInChildren <MeshRenderer>(); SkinnedMeshRenderer sRenderer = hitInfo.collider.GetComponentInChildren <SkinnedMeshRenderer>(); if (renderer != null || sRenderer != null) { RuntimeUndo.BeginRecord(); } if (renderer != null) { RuntimeUndo.RecordValue(renderer, Strong.PropertyInfo((MeshRenderer x) => x.sharedMaterials)); Material[] materials = renderer.sharedMaterials; for (int i = 0; i < materials.Length; ++i) { materials[i] = material; } renderer.sharedMaterials = materials; } if (sRenderer != null) { RuntimeUndo.RecordValue(sRenderer, Strong.PropertyInfo((SkinnedMeshRenderer x) => x.sharedMaterials)); Material[] materials = sRenderer.sharedMaterials; for (int i = 0; i < materials.Length; ++i) { materials[i] = material; } sRenderer.sharedMaterials = materials; } if (renderer != null || sRenderer != null) { RuntimeUndo.EndRecord(); } if (renderer != null || sRenderer != null) { RuntimeUndo.BeginRecord(); } if (renderer != null) { RuntimeUndo.RecordValue(renderer, Strong.PropertyInfo((MeshRenderer x) => x.sharedMaterials)); } if (sRenderer != null) { RuntimeUndo.RecordValue(sRenderer, Strong.PropertyInfo((SkinnedMeshRenderer x) => x.sharedMaterials)); } if (renderer != null || sRenderer != null) { RuntimeUndo.EndRecord(); } } } } else { if (m_state == State.AfterSpawn) { bool isEnabled = RuntimeUndo.Enabled; RuntimeUndo.Enabled = false; RuntimeSelection.objects = m_selection; RuntimeUndo.Enabled = isEnabled; RuntimeUndo.BeginRecord(); RuntimeUndo.RecordSelection(); RuntimeUndo.BeginRegisterCreateObject(m_instance); RuntimeUndo.EndRecord(); RuntimeUndo.Enabled = false; RuntimeSelection.activeGameObject = m_instance; RuntimeUndo.Enabled = isEnabled; RuntimeUndo.BeginRecord(); RuntimeUndo.RegisterCreatedObject(m_instance); RuntimeUndo.RecordSelection(); RuntimeUndo.EndRecord(); } } EndSpawn(); RuntimeEditorApplication.ActivateWindow(RuntimeWindowType.SceneView); } else { if (!RuntimeEditorApplication.IsPointerOverWindow(RuntimeWindowType.Hierarchy)) { EndSpawn(); } } }
private void Update() { if (InputController._GetMouseButtonDown(0)) { if (RuntimeTools.Current != Tool && RuntimeTools.Current != RuntimeTool.None || RuntimeTools.IsViewing) { return; } if (RuntimeTools.IsPointerOverGameObject()) { return; } if (SceneCamera == null) { Debug.LogError("Camera is null"); return; } if (RuntimeTools.ActiveTool != null) { return; } if (RuntimeEditorApplication.ActiveSceneCamera != null && !RuntimeEditorApplication.IsPointerOverWindow(RuntimeWindowType.SceneView)) { return; } m_isDragging = OnBeginDrag(); if (m_isDragging) { RuntimeTools.ActiveTool = this; RecordTransform(); } else { RuntimeTools.ActiveTool = null; } } else if (InputController._GetMouseButtonUp(0)) { TryCancelDrag(); } else { if (m_isDragging) { if (InputController._GetKey(UnitSnapKey) || RuntimeTools.UnitSnapping) { EffectiveGridUnitSize = CurrentGridUnitSize; } else { EffectiveGridUnitSize = 0; } OnDrag(); } } UpdateOverride(); if (Model != null) { SyncModelTransform(); } if (m_isDragging) { if (RuntimeTools.PivotMode == RuntimePivotMode.Center && m_commonCenterTarget != null && m_realTargets != null && m_realTargets.Length > 1) { for (int i = 0; i < m_commonCenterTarget.Length; ++i) { Transform commonCenterTarget = m_commonCenterTarget[i]; Transform target = m_realTargets[i]; target.transform.position = commonCenterTarget.position; target.transform.rotation = commonCenterTarget.rotation; target.transform.localScale = commonCenterTarget.localScale; } } } }
private void Update() { if (Input.GetMouseButtonDown(0)) { if (RuntimeTools.IsPointerOverGameObject()) { return; } if (SceneCamera == null) { Debug.LogError("Camera is null"); return; } if (RuntimeTools.IsViewing) { return; } if (RuntimeTools.ActiveTool != null) { return; } if (RuntimeEditorApplication.ActiveSceneCamera != null && !RuntimeEditorApplication.IsPointerOverWindow(RuntimeWindowType.SceneView)) { return; } Vector2 pointer = Input.mousePosition; m_dragIndex = Hit(pointer, HandlesPositions, HandlesNormals); if (m_dragIndex >= 0 && OnBeginDrag(m_dragIndex)) { m_handlesTransform = HandlesTransform; m_handlesInverseTransform = Matrix4x4.TRS(Target.position, Target.rotation, Target.localScale).inverse; // m_handlesTransform.inverse; m_dragPlane = GetDragPlane(); m_isDragging = GetPointOnDragPlane(Input.mousePosition, out m_prevPoint); m_normal = HandlesNormals[m_dragIndex].normalized; if (m_isDragging) { RuntimeTools.ActiveTool = this; } if (EnableUndo) { bool isRecording = RuntimeUndo.IsRecording; if (!isRecording) { RuntimeUndo.BeginRecord(); } RecordOverride(); if (!isRecording) { RuntimeUndo.EndRecord(); } } } } else if (Input.GetMouseButtonUp(0)) { if (m_isDragging) { OnDrop(); bool isRecording = RuntimeUndo.IsRecording; if (!isRecording) { RuntimeUndo.BeginRecord(); } RecordOverride(); if (!isRecording) { RuntimeUndo.EndRecord(); } m_isDragging = false; RuntimeTools.ActiveTool = null; } } else { if (m_isDragging) { Vector3 point; if (GetPointOnDragPlane(Input.mousePosition, out point)) { Vector3 offset = m_handlesInverseTransform.MultiplyVector(point - m_prevPoint); offset = Vector3.Project(offset, m_normal); if (InputController.GetKey(UnitSnapKey) || RuntimeTools.UnitSnapping) { Vector3 gridOffset = Vector3.zero; if (Mathf.Abs(offset.x * 1.5f) >= GridSize) { gridOffset.x = GridSize * Mathf.Sign(offset.x); } if (Mathf.Abs(offset.y * 1.5f) >= GridSize) { gridOffset.y = GridSize * Mathf.Sign(offset.y); } if (Mathf.Abs(offset.z * 1.5f) >= GridSize) { gridOffset.z = GridSize * Mathf.Sign(offset.z); } if (gridOffset != Vector3.zero) { if (OnDrag(m_dragIndex, gridOffset)) { m_prevPoint = point; } } } else { if (OnDrag(m_dragIndex, offset)) { m_prevPoint = point; } } } } } UpdateOverride(); }