protected override void KeyHandles(SplineSampleModifier.Key key, bool edit) { if (!isOpen) { return; } bool is2D = user.spline != null && user.spline.is2D; SplineSample result = new SplineSample(); List <SplineSampleModifier.Key> keys = module.GetKeys(); OffsetModifier.OffsetKey offsetKey = (OffsetModifier.OffsetKey)key; user.spline.Evaluate(offsetKey.position, result); matrix.SetTRS(result.position, Quaternion.LookRotation(result.direction, result.normal), Vector3.one * result.size); Vector3 pos = matrix.MultiplyPoint(offsetKey.offset); if (is2D) { Handles.DrawLine(result.position, result.position + result.right * offsetKey.offset.x * result.size); Handles.DrawLine(result.position, result.position - result.right * offsetKey.offset.x * result.size); } else { Handles.DrawWireDisc(result.position, result.direction, offsetKey.offset.magnitude * result.size); } Handles.DrawLine(result.position, pos); if (edit) { Vector3 lastPos = pos; pos = SplineEditorHandles.FreeMoveRectangle(pos, HandleUtility.GetHandleSize(pos) * 0.1f); if (pos != lastPos) { pos = matrix.inverse.MultiplyPoint(pos); pos.z = 0f; if (is2D) { offsetKey.offset = Vector2.right * pos.x; } else { offsetKey.offset = pos; } user.Rebuild(); } } base.KeyHandles(key, edit); }
protected override void KeyGUI(SplineSampleModifier.Key key) { OffsetModifier.OffsetKey offsetKey = (OffsetModifier.OffsetKey)key; base.KeyGUI(key); offsetKey.offset = EditorGUILayout.Vector2Field("Offset", offsetKey.offset); }