public void DeformAxis(Axis axis)
        {
            Deformer deformer = m_editor.Selection.activeGameObject.GetComponent <Deformer>();

            if (deformer == null)
            {
                m_editor.Undo.BeginRecord();
                m_editor.Undo.AddComponent(m_editor.Selection.activeGameObject.GetComponent <ExposeToEditor>(), typeof(Deformer));
                m_editor.Undo.CreateRecord(redo =>
                {
                    EnableSplineRenderers(Mode == MeshDeformerToolMode.ControlPoint);
                    return(false);
                }, undo => false);
                m_editor.Undo.EndRecord();
            }
            else
            {
                BaseSplineState oldState     = deformer.GetState();
                PickResult      oldSelection = m_picker.Selection != null ? new PickResult(m_picker.Selection) : null;
                deformer.Axis = axis;
                BaseSplineState newState     = deformer.GetState();
                PickResult      newSelection = m_picker.Selection != null ? new PickResult(m_picker.Selection) : null;
                RecordState(deformer.gameObject, oldState, newState, m_picker, oldSelection, newSelection);
            }

            EnableSplineRenderers(false);
        }
        public bool DragControlPoint(bool extend)
        {
            PositionHandle positionHandle = m_editor.Tools.ActiveTool as PositionHandle;

            if (m_picker.IsControlPointSelected && positionHandle != null && positionHandle.IsDragging)
            {
                if (extend)
                {
                    ControlPointPicker picker       = m_editor.Selection.activeGameObject.GetComponent <ControlPointPicker>();
                    BaseSpline         spline       = picker.Selection.GetSpline();
                    BaseSplineState    oldState     = spline.GetState();
                    PickResult         oldSelection = picker.Selection != null ? new PickResult(picker.Selection) : null;
                    m_picker.Drag(true);
                    spline = picker.Selection.GetSpline();
                    BaseSplineState newState     = spline.GetState();
                    PickResult      newSelection = picker.Selection != null ? new PickResult(picker.Selection) : null;
                    RecordState(spline.gameObject, oldState, newState, picker, oldSelection, newSelection);
                }
                else
                {
                    m_picker.Drag(false);
                }
                return(true);
            }
            return(false);
        }
Ejemplo n.º 3
0
        public override void SetState(BaseSplineState state)
        {
            DeformerState deformerState = (DeformerState)state;

            m_spline.SetState(state);
            m_axis = deformerState.Axis;
            Refresh();
        }
        public void Remove()
        {
            ControlPointPicker picker       = m_editor.Selection.activeGameObject.GetComponent <ControlPointPicker>();
            BaseSpline         spline       = picker.Selection.GetSpline();
            BaseSplineState    oldState     = spline.GetState();
            PickResult         oldSelection = picker.Selection != null ? new PickResult(picker.Selection) : null;

            picker.Remove();
            PickResult newSelection = picker.Selection != null ? new PickResult(picker.Selection) : null;

            spline = picker.Selection.GetSpline();
            BaseSplineState newState = spline.GetState();

            RecordState(spline.gameObject, oldState, newState, picker, oldSelection, newSelection);
        }
 private void RecordState(GameObject spline,
                          BaseSplineState oldState,
                          BaseSplineState newState,
                          ControlPointPicker picker,
                          PickResult oldSelection,
                          PickResult newSelection)
 {
     m_editor.Undo.CreateRecord(record =>
     {
         Deformer deformer = spline.GetComponent <Deformer>();
         deformer.SetState(newState);
         picker.Selection = newSelection;
         return(true);
     },
                                record =>
     {
         Deformer deformer = spline.GetComponent <Deformer>();
         deformer.SetState(oldState);
         picker.Selection = oldSelection;
         return(true);
     });
 }
        public void Append()
        {
            ControlPointPicker picker       = m_editor.Selection.activeGameObject.GetComponent <ControlPointPicker>();
            BaseSpline         spline       = picker.Selection.GetSpline();
            BaseSplineState    oldState     = spline.GetState();
            PickResult         oldSelection = picker.Selection != null ? new PickResult(picker.Selection) : null;

            if (picker.Selection.Index == 0 || picker.Selection.Index == 1)
            {
                picker.Prepend();
            }
            else
            {
                picker.Append();
            }

            spline = picker.Selection.GetSpline();
            BaseSplineState newState     = spline.GetState();
            PickResult      newSelection = picker.Selection != null ? new PickResult(picker.Selection) : null;

            RecordState(spline.gameObject, oldState, newState, picker, oldSelection, newSelection);
        }