public static void BeginDrawTrimLineTool() { var M = OG.Model; M.Context.ToolManager.DeactivateTool(ToolSide.Right); M.Scene.ClearSelection(); M.Context.ToolManager.SetActiveToolType(BodyModelTools.DrawTrimLineIdentifier, ToolSide.Right); M.Scene.Select(OG.Leg.SO, true); M.Context.ToolManager.ActivateTool(ToolSide.Right); DrawSurfaceCurveTool tool = M.Context.ToolManager.ActiveRightTool as DrawSurfaceCurveTool; var target = new SOProjectionTarget(OG.Leg.SO) { Offset = M.Scene.ToWorldDimension(0.5f) }; tool.CurveProcessorF = gs.CurveDrawingUtil.MakeLoopOnSurfaceProcessorF(M.Scene, target, () => { return(tool.SamplingRateScene); }, () => { return(tool.Closed); }, 0.5f, 25); }
/// <summary> /// this is set as DrawSurfaceCurveTool.EmitNewCurveF, which is called automatically when user /// releases mouse, so we need to exit the tool here. /// </summary> public static void EmitRegionDeformationFromCurvePreview(CurvePreview preview) { if (preview.Closed == false) { preview.Closed = true; DrawSurfaceCurveTool tool = OG.Context.ToolManager.ActiveRightTool as DrawSurfaceCurveTool; if (tool != null) { tool.Closed = true; } } EnclosedPatchSO curveSO = EnclosedPatchSO.CreateFromPreview(preview, OrthogenMaterials.OffsetRegionMaterial, OG.Scene); AddNewRegionDeformation(curveSO, CurrentLegDeformType); // [RMS] this is called at end OG.Context.RegisterNextFrameAction(() => { OG.Transition(OGWorkflow.DrawAreaExitT); OG.Scene.Select(curveSO, true); }); }