public void EndDraw() { if (preview.Curve.ArcLength > 2 * SamplingRate) { if (EmitNewCurveF == null) { // store undo/redo record for new primitive SOMaterial mat = (CurveMaterialF == null) ? scene.DefaultCurveSOMaterial : CurveMaterialF(); PolyCurveSO CurveSO = preview.BuildSO(mat, 1.0f); scene.History.PushChange( new AddSOChange() { scene = scene, so = CurveSO, bKeepWorldPosition = false }); // link ? if (AttachCurveToSurface) { scene.History.PushChange( new SOAddFrameLinkChangeOp(CurveSO, Target as TransformableSO)); } scene.History.PushInteractionCheckpoint(); } else { EmitNewCurveF(preview); } } preview.Destroy(); preview = null; //SavedSettings.Save("DrawSurfaceCurveTool_width", width); }
public virtual void EndDraw() { in_draw = false; if (preview == null) { return; } if (preview.Curve.VertexCount > 2 && preview.Curve.ArcLength > 2 * SamplingRateScene) { // update Closed state because in some cases we change this during drawing // (ie when drawing multi-point curve, but closing at end) preview.Closed = this.Closed; if (EmitNewCurveF == null) { // store undo/redo record for new primitive SOMaterial mat = (CurveMaterialF == null) ? Scene.DefaultCurveSOMaterial : CurveMaterialF(); PolyCurveSO CurveSO = preview.BuildSO(mat, 1.0f); Scene.History.PushChange( new AddSOChange() { scene = Scene, so = CurveSO, bKeepWorldPosition = false }); // link ? if (AttachCurveToSurface) { Scene.History.PushChange( new SOAddFrameLinkChangeOp(CurveSO, Target)); } Scene.History.PushInteractionCheckpoint(); } else { EmitNewCurveF(preview); } } preview.Destroy(); preview = null; //SavedSettings.Save("DrawSurfaceCurveTool_width", width); }