public static Vector2 SingleLineVector2Field(Rect rect, Vector2 value, GUIContent label, float aspectRatio) { rect = EditorGUI.PrefixLabel(rect, label); using (new LabelWidthScope(14)) { int indent = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; rect.width = (rect.width - 4) * 0.5f; using (var scope = ChangeCheckScope.New()) { value.x = EditorGUI.FloatField(rect, "X", value.x); if (scope.changed) { value.y = value.x / aspectRatio; } } rect.x = rect.xMax + 4; using (var scope = ChangeCheckScope.New()) { value.y = EditorGUI.FloatField(rect, "Y", value.y); if (scope.changed) { value.x = value.y * aspectRatio; } } EditorGUI.indentLevel = indent; } return(value); }
void DrawDistanceHandles() { if (_distanceStartTrans) { using (var scope = ChangeCheckScope.New()) { _distanceStartPos = Handles.PositionHandle(_distanceStartTrans.position, Tools.pivotRotation == PivotRotation.Local ? _distanceStartTrans.rotation : Quaternion.identity); if (scope.changed) { Undo.RecordObject(_distanceStartTrans, "Transform.position"); _distanceStartTrans.position = _distanceStartPos; EditorUtility.SetDirty(_distanceStartTrans); } } } else { using (var scope = ChangeCheckScope.New()) { _distanceStartPos = Handles.PositionHandle(_distanceStartPos, Quaternion.identity); if (scope.changed) { Repaint(); } } } if (_distanceEndTrans) { using (var scope = ChangeCheckScope.New()) { _distanceEndPos = Handles.PositionHandle(_distanceEndTrans.position, Tools.pivotRotation == PivotRotation.Local ? _distanceEndTrans.rotation : Quaternion.identity); if (scope.changed) { Undo.RecordObject(_distanceEndTrans, "Transform.position"); _distanceEndTrans.position = _distanceEndPos; EditorUtility.SetDirty(_distanceEndTrans); } } } else { using (var scope = ChangeCheckScope.New()) { _distanceEndPos = Handles.PositionHandle(_distanceEndPos, Quaternion.identity); if (scope.changed) { Repaint(); } } } Handles.DrawLine(_distanceStartPos, _distanceEndPos); Handles.Label((_distanceStartPos + _distanceEndPos) * 0.5f, Vector3.Distance(_distanceStartPos, _distanceEndPos).ToString("0.00 m"), EditorStyles.whiteLabel); }
void DrawDistanceUI() { EditorGUILayout.LabelField("Start"); using (new IndentScope(2)) { _distanceStartTrans = EditorGUILayout.ObjectField(GUIContent.none, _distanceStartTrans, typeof(Transform), true) as Transform; if (_distanceStartTrans) { using (var scope = ChangeCheckScope.New()) { _distanceStartPos = EditorGUILayout.Vector3Field(GUIContent.none, _distanceStartTrans.position); if (scope.changed) { Undo.RecordObject(_distanceStartTrans, "Transform.position"); _distanceStartTrans.position = _distanceStartPos; EditorUtility.SetDirty(_distanceStartTrans); } } } else { _distanceStartPos = EditorGUILayout.Vector3Field(GUIContent.none, _distanceStartPos); } } EditorGUILayout.LabelField("End"); using (new IndentScope(2)) { _distanceEndTrans = EditorGUILayout.ObjectField(GUIContent.none, _distanceEndTrans, typeof(Transform), true) as Transform; if (_distanceEndTrans) { using (var scope = ChangeCheckScope.New()) { _distanceEndPos = EditorGUILayout.Vector3Field(GUIContent.none, _distanceEndTrans.position); if (scope.changed) { Undo.RecordObject(_distanceEndTrans, "Transform.position"); _distanceEndTrans.position = _distanceEndPos; EditorUtility.SetDirty(_distanceEndTrans); } } } else { _distanceEndPos = EditorGUILayout.Vector3Field(GUIContent.none, _distanceEndPos); } } EditorGUILayout.LabelField("Distance"); using (new IndentScope(2)) { EditorGUILayout.Vector3Field(GUIContent.none, _distanceEndPos - _distanceStartPos); EditorGUILayout.FloatField(GUIContent.none, Vector3.Distance(_distanceStartPos, _distanceEndPos)); } }