public override void OnInspectorGUI() { DrawDefaultInspector(); VectorMapSegmentBuilder vectorMapSegment = (VectorMapSegmentBuilder)target; Undo.RecordObject(vectorMapSegment, "change points"); if (GUILayout.Button("Add Point")) { vectorMapSegment.AddPoint(); } if (GUILayout.Button("Remove Point")) { vectorMapSegment.RemovePoint(); } if (GUILayout.Button("Reverse Points")) { vectorMapSegment.ReversePoints(); } if (GUILayout.Button("Reset Points")) { vectorMapSegment.ResetPoints(); } }
protected virtual void OnSceneGUI() { VectorMapSegmentBuilder vmSegBuilder = (VectorMapSegmentBuilder)target; Undo.RecordObject(vmSegBuilder, "Segment points change"); var localPositions = vmSegBuilder.segment.targetLocalPositions; var pointCount = localPositions.Count; if (pointCount < 1) { return; } Transform mainTrans = vmSegBuilder.transform; if (vmSegBuilder.showHandles) { for (int i = 0; i < pointCount - 1; i++) { Vector3 newTargetPosition = Handles.PositionHandle(mainTrans.TransformPoint(localPositions[i]), Quaternion.identity); localPositions[i] = mainTrans.InverseTransformPoint(newTargetPosition); } Vector3 lastPoint = Handles.PositionHandle(mainTrans.TransformPoint(localPositions[pointCount - 1]), Quaternion.identity); localPositions[pointCount - 1] = mainTrans.InverseTransformPoint(lastPoint); } }
protected override void OnSceneGUI() { base.OnSceneGUI(); VectorMapSegmentBuilder vmSegBuilder = (VectorMapSegmentBuilder)target; Undo.RecordObject(vmSegBuilder, "Segment points change"); var localPositions = vmSegBuilder.segment.targetLocalPositions; var pointCount = localPositions.Count; if (pointCount < 2) { return; } Transform mainTrans = vmSegBuilder.transform; for (int i = 0; i < pointCount - 1; i++) { Handles.color = segmentPointColor; Handles.DrawWireDisc(mainTrans.TransformPoint(localPositions[i]), Vector3.up, VectorMapTool.PROXIMITY * 0.5f); Handles.color = rayColor; Handles.DrawLine(mainTrans.TransformPoint(localPositions[i]), mainTrans.TransformPoint(localPositions[i + 1])); } Handles.color = segmentPointColor; Handles.DrawWireDisc(mainTrans.TransformPoint(localPositions[pointCount - 1]), Vector3.up, VectorMapTool.PROXIMITY * 0.5f); }