/// <summary> /// Constructor. /// </summary> /// <param name="gizmo">The gizmo which owns the slider.</param> /// <param name="handleId">The id of the slider handle.</param> /// <param name="capHandleId">The id of the slider's cap handle.</param> public GizmoLineSlider3D(Gizmo gizmo, int handleId, int capHandleId) : base(gizmo, handleId) { _segmentIndex = Handle.Add3DShape(_segment); _boxIndex = Handle.Add3DShape(_box); _cylinderIndex = Handle.Add3DShape(_cylinder); _cap3D = new GizmoCap3D(Gizmo, capHandleId); SetupSharedLookAndFeel(); MapDirection(0, AxisSign.Positive); SetDragChannel(GizmoDragChannel.Offset); _controllerData.Gizmo = Gizmo; _controllerData.Slider = this; _controllerData.SliderHandle = Handle; _controllerData.Segment = _segment; _controllerData.Box = _box; _controllerData.Cylinder = _cylinder; _controllerData.SegmentIndex = _segmentIndex; _controllerData.BoxIndex = _boxIndex; _controllerData.CylinderIndex = _cylinderIndex; _controllers[(int)GizmoLine3DType.Thin] = new GizmoThinLineSlider3DController(_controllerData); _controllers[(int)GizmoLine3DType.Box] = new GizmoBoxLineSlider3DController(_controllerData); _controllers[(int)GizmoLine3DType.Cylinder] = new GizmoCylinderLineSlider3DController(_controllerData); _transform.Changed += OnTransformChanged; Gizmo.PreUpdateBegin += OnGizmoPreUpdateBegin; Gizmo.PreDragBeginAttempt += OnGizmoAttemptHandleDragBegin; Gizmo.PreHoverEnter += OnGizmoHandleHoverEnter; Gizmo.PreHoverExit += OnGizmoHandleHoverExit; Gizmo.PostEnabled += OnGizmoPostEnabled; Gizmo.PostDisabled += OnGizmoPostDisabled; AddTargetTransform(_transform); AddTargetTransform(Gizmo.Transform); _cap3D.RegisterTransformAsDragTarget(_offsetDrag); _cap3D.RegisterTransformAsDragTarget(_rotationDrag); _cap3D.RegisterTransformAsDragTarget(_scaleDrag); _transform.SetParent(Gizmo.Transform); }