Пример #1
0
 private void ClearPointSelection()
 {
     foreach (var p in SelectedControlPoints.OfType <ControlPointViewModelBase>())
     {
         p.IsSelected = false;
     }
     SelectedControlPoints.Clear();
 }
Пример #2
0
        private void InitSceneGui()
        {
            SelectedControlPoints.Clear();
            _flipAxis = Vector3.zero;

            //Setup Screen positions & controlID for control points (in case of modification of drag points coordinates outside)
            foreach (var controlPoint in ControlPoints)
            {
                controlPoint.WorldPos  = controlPoint.DragPoint.Vertex.ToUnityVector3();
                controlPoint.WorldPos += DragPointEditable.GetEditableOffset();
                controlPoint.WorldPos += DragPointEditable.GetDragPointOffset(controlPoint.IndexRatio);
                controlPoint.WorldPos  = Transform.localToWorldMatrix.MultiplyPoint(controlPoint.WorldPos);
                _flipAxis             += controlPoint.WorldPos;
                controlPoint.ScrPos    = Handles.matrix.MultiplyPoint(controlPoint.WorldPos);
                if (controlPoint.IsSelected)
                {
                    if (!controlPoint.DragPoint.IsLocked)
                    {
                        SelectedControlPoints.Add(controlPoint);
                    }
                }

                HandleUtility.AddControl(controlPoint.ControlId,
                                         HandleUtility.DistanceToCircle(controlPoint.ScrPos,
                                                                        HandleUtility.GetHandleSize(controlPoint.WorldPos) * ControlPoint.ScreenRadius *
                                                                        _sceneViewHandler.ControlPointsSizeRatio));
            }

            if (ControlPoints.Count > 0)
            {
                _flipAxis /= ControlPoints.Count;
            }

            //Setup PositionHandle if some control points are selected
            if (SelectedControlPoints.Count > 0)
            {
                _positionHandlePosition = Vector3.zero;
                foreach (var sCp in SelectedControlPoints)
                {
                    _positionHandlePosition += sCp.WorldPos;
                }

                _positionHandlePosition /= SelectedControlPoints.Count;
            }

            if (CurveTravellerVisible)
            {
                HandleUtility.AddControl(CurveTravellerControlId,
                                         HandleUtility.DistanceToCircle(Handles.matrix.MultiplyPoint(CurveTravellerPosition),
                                                                        HandleUtility.GetHandleSize(CurveTravellerPosition) * ControlPoint.ScreenRadius *
                                                                        _sceneViewHandler.CurveTravellerSizeRatio * 0.5f));
            }
        }
Пример #3
0
        public override void Destroy()
        {
            var curvesCopy = curves.ToList();

            // clear before destroying
            curves.Clear();
            SelectedControlPoints.Clear();
            selectedCurve = null;

            foreach (var curve in curvesCopy)
            {
                curve.Destroy();
            }
            base.Destroy();
        }