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); }
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); }