private void HandleMoveTool() { Quaternion parentRot = Quaternion.identity; Vector3 handlePos = _primaryItem.GetEditorPosition(); if (_transform.parent != null) { handlePos = _transform.parent.TransformPoint(handlePos); parentRot = _transform.parent.transform.rotation; } EditorGUI.BeginChangeCheck(); handlePos = HandlesUtils.HandlePosition(handlePos, _primaryItem.EditorPositionType, parentRot); if (EditorGUI.EndChangeCheck()) { FinishMove(handlePos); } }
/// <summary> /// Takes care of the rendering-related stuff. /// </summary> /// /// <remarks> /// This is called by the drag point inspector. /// </remarks> /// /// <param name="evt">Event from the inspector</param> /// <param name="onChange"></param> public void OnSceneGUI(Event evt, OnDragPointPositionChange onChange = null) { switch (evt.type) { case EventType.Layout: InitSceneGui(); break; case EventType.MouseDown: OnMouseDown(); break; case EventType.Repaint: CurveTravellerVisible = false; break; } // Handle the common position handler for all selected control points if (SelectedControlPoints.Count > 0) { var parentRot = Quaternion.identity; if (Transform.parent != null) { parentRot = Transform.parent.transform.rotation; } EditorGUI.BeginChangeCheck(); var newHandlePos = HandlesUtils.HandlePosition(_positionHandlePosition, DragPointEditable.GetHandleType(), parentRot); if (EditorGUI.EndChangeCheck()) { onChange?.Invoke(newHandlePos); var deltaPosition = newHandlePos - _positionHandlePosition; foreach (var controlPoint in SelectedControlPoints) { controlPoint.WorldPos += deltaPosition; controlPoint.UpdateDragPoint(DragPointEditable, Transform); } } } //Render the curve & drag points _sceneViewHandler.OnSceneGUI(); }