public BaseNAryInputSOTool(FScene scene, List <DMeshSO> meshSOs) { this.Scene = scene; if (meshSOs == null || meshSOs.Count == 0) { this.InputSOs = scene.FindSceneObjectsOfType <DMeshSO>(false, true, true); } else { this.InputSOs = meshSOs; } if (this.InputSOs.Count < 2) { throw new Exception("BaseNAryInputSOTool: requires at least two inputs!"); } // no behaviors.. behaviors = new InputBehaviorSet(); // hide target objects set_targets_visibility(false); // disable transformations Scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); // set up parameters parameters = new ParameterSet(); }
public virtual void Setup() { // do this here ?? behaviors = new InputBehaviorSet(); SpatialDeviceGrabBehavior behavior = new SpatialDeviceGrabBehavior(Scene.Context, (so) => { return(so == this.Target); }) { Priority = 1, RotationSpeed = 0.25f, TranslationSpeed = 0.25f }; behaviors.Add(behavior); indicators = new ToolIndicatorSet(this, Scene); float h = 300.0f; Frame3f f1 = Frame3f.Identity.Rotated(Quaternionf.AxisAngleD(Vector3f.AxisZ, 90.0f)).Translated(h * 0.5f * Vector3f.AxisY); var plane1 = new SectionPlaneIndicator() { Width = fDimension.Scene(h), // in mm SceneFrameF = () => { return(f1); } }; indicators.AddIndicator(plane1); Frame3f f2 = Frame3f.Identity.Rotated(Quaternionf.AxisAngleD(Vector3f.AxisX, 90.0f)).Translated(h * 0.5f * Vector3f.AxisY); var plane2 = new SectionPlaneIndicator() { Width = fDimension.Scene(h), // in mm SceneFrameF = () => { return(f2); } }; indicators.AddIndicator(plane2); }
public OldPlaneCutTool(FScene scene, SceneObject target) { this.scene = scene; this.target = target as DMeshSO; double plane_dim = 1.5 * this.target.Mesh.CachedBounds.DiagonalLength; behaviors = new InputBehaviorSet(); // TODO is this where we should be doing this?? behaviors.Add( new PlaneCutTool_SpatialBehavior(this, scene.Context) { Priority = 5 }); // shut off transform gizmo scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); indicators = new ToolIndicatorSet(this, scene); SectionPlaneIndicator section_plane = new SectionPlaneIndicator() { SceneFrameF = () => { return(cut_plane); }, Width = fDimension.Scene(() => { return((float)(plane_dim)); }) }; indicators.AddIndicator(section_plane); }
public MultiPointTool(FScene scene, SceneObject target) { this.Scene = scene; TargetSO = target; // do this here ?? behaviors = new InputBehaviorSet(); behaviors.Add( new MultiPointTool_2DBehavior(scene.Context, this) { Priority = 5 }); if (FPlatform.IsUsingVR()) { behaviors.Add( new MultiPointTool_SpatialBehavior(scene.Context, this) { Priority = 5 }); } Indicators = new ToolIndicatorSet(this, scene); IndicatorBuilder = new StandardIndicatorFactory(); GizmoPoints = new Dictionary <int, ControlPoint>(); PointHitTestF = PointIntersectionTest; }
public SnapDrawPrimitivesTool(FScene scene) { this.scene = scene; behaviors = new InputBehaviorSet(); // TODO is this where we should be doing this?? behaviors.Add( new SnapDrawPrimitivesTool_MouseBehavior(scene.Context) { Priority = 5 }); behaviors.Add( new SnapDrawPrimitivesTool_SpatialDeviceBehavior(scene.Context) { Priority = 5 }); // generate snap target set Snaps = SnapSet.CreateStandard(scene); Snaps.EnableSnapSegments = true; // shut off transform gizmo scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); scene.SelectionChangedEvent += Scene_SelectionChangedEvent; // initialize active set with input selection Scene_SelectionChangedEvent(null, null); }
public RevolveTool(FScene scene, List <SceneObject> targets) { this.scene = scene; behaviors = new InputBehaviorSet(); // TODO is this where we should be doing this?? behaviors.Add( new RevolveTool_MouseBehavior(scene.Context) { Priority = 5 }); behaviors.Add( new RevolveTool_SpatialDeviceBehavior(scene.Context) { Priority = 5 }); // generate snap target set Snaps = SnapSet.CreateStandard(scene); Snaps.EnableSnapSegments = false; Snaps.EnableSnapPoints = false; // shut off transform gizmo //scene.ActiveController.TransformManager.SetOverrideGizmoType(TransformManager.NoGizmoType); scene.SelectionChangedEvent += Scene_SelectionChangedEvent; // initialize active set with input selection Scene_SelectionChangedEvent(null, null); if (targets != null) { if (targets.Count == 2 && targets[0] is PolyCurveSO && targets[1] is PolyCurveSO) { PolyCurveSO curveSO = targets[0] as PolyCurveSO; PolyCurveSO axisSO = targets[1] as PolyCurveSO; set_curve(curveSO, true); set_axis(axisSO, true); } else { SceneObject foundCurveSO = targets.Find((so) => { return(so is PolyCurveSO); }); if (foundCurveSO != null) { set_curve(foundCurveSO as PolyCurveSO, false); } SceneObject otherSO = targets.Find((so) => { return(!(so is PolyCurveSO)); }); if (otherSO != null) { set_axis(otherSO, false); } } } }
public PurgeSpiralTool(FScene scene) { this.Scene = scene; // no behaviors.. behaviors = new InputBehaviorSet(); // disable transformations Scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); // set up parameters parameters = new ParameterSet(); }
public BendTool(FScene scene, DMeshSO target) { this.Scene = scene; TargetSO = target; // do this here ?? behaviors = new InputBehaviorSet(); //behaviors.Add( // new MultiPointTool_2DBehavior(scene.Context, this) { Priority = 5 }); //if (FPlatform.IsUsingVR()) { // behaviors.Add( // new MultiPointTool_SpatialBehavior(scene.Context, this) { Priority = 5 }); //} Indicators = new ToolIndicatorSet(this, scene); }
public SetDimensionsTool(FScene scene, List <DMeshSO> meshSOs) { this.Scene = scene; if (meshSOs == null || meshSOs.Count == 0) { this.InputSOs = scene.FindSceneObjectsOfType <DMeshSO>(false, true, true); } else { this.InputSOs = meshSOs; } // no behaviors.. behaviors = new InputBehaviorSet(); // disable transformations Scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); // set up parameters parameters = new ParameterSet(); }
public FillHolesTool(FScene scene, DMeshSO target) { this.Scene = scene; this.target = target; behaviors = new InputBehaviorSet(); // TODO is this where we should be doing this?? behaviors.Add( new HoleFillTool_2DInputBehavior(this, scene.Context) { Priority = 5 }); // shut off transform gizmo scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); // set up parameters initialize_parameters(); SceneUtil.SetVisible(Target, false); }
public TwoPointMeasureTool(FScene scene, List <SceneObject> targets) { this.scene = scene; SpecificTargets = (targets == null) ? null : new List <SceneObject>(targets); setPointsS = new Vector3d[2]; setPointsS[0] = setPointsS[1] = Vector3d.Zero; snappedPointsS = new Vector3d[2]; snappedPointsS[0] = snappedPointsS[1] = Vector3d.Zero; point_initialized = new bool[2] { false, false }; behaviors = new InputBehaviorSet(); if (FPlatform.IsUsingVR()) { behaviors.Add(new TwoPointMeasureTool_SpatialDeviceBehavior(scene.Context, this) { Priority = 5 }); } if (FPlatform.IsTouchDevice()) { behaviors.Add(new TwoPointMeasureTool_TouchBehavior(scene.Context, this) { Priority = 5 }); } behaviors.Add( new TwoPointMeasureTool_MouseBehavior(scene.Context, this) { Priority = 5 }); // shut off transform gizmo scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); scene.SelectionChangedEvent += Scene_SelectionChangedEvent; }
public SeparateSolidsTool(FScene scene, List <DMeshSO> meshSOs) { this.Scene = scene; if (meshSOs == null || meshSOs.Count == 0) { this.InputSOs = scene.FindSceneObjectsOfType <DMeshSO>(false, true, true); } else { this.InputSOs = meshSOs; } // no behaviors.. behaviors = new InputBehaviorSet(); // hide target objects set_targets_visibility(false); // disable transformations Scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); // set up parameters initialize_parameters(); }
public DrawCurveTool(FScene scene) { this.scene = scene; behaviors = new InputBehaviorSet(); // TODO is this where we should be doing this?? behaviors.Add( new DrawCurveTool_2DBehavior(scene.Context) { Priority = 5 }); behaviors.Add( new DrawCurveTool_SpatialDeviceBehavior(scene.Context) { Priority = 5 }); // restore radius if (SavedSettings.Restore("DrawCurveTool_width") != null) { width = (float)SavedSettings.Restore("DrawCurveTool_width"); } }
public DrawTubeTool(FScene scene) { this.scene = scene; behaviors = new InputBehaviorSet(); // TODO is this where we should be doing this?? behaviors.Add( new DrawTubeTool_MouseBehavior(scene.Context) { Priority = 5 }); behaviors.Add( new DrawTubeTool_SpatialDeviceBehavior(this, scene.Context) { Priority = 5 }); // restore radius if (SavedSettings.Restore("DrawTubeTool_radius") != null) { radius = (float)SavedSettings.Restore("DrawTubeTool_radius"); } indicators = new ToolIndicatorSet(this, scene); BrushCursorSphere brushSphere = new BrushCursorSphere() { PositionF = () => { return(lastPreviewPos.Origin); }, Radius = fDimension.Scene(() => { return(Radius); }) }; brushSphereMat = MaterialUtil.CreateTransparentMaterialF(Colorf.CornflowerBlue, 0.2f); brushSphere.material = brushSphereMat; indicators.AddIndicator(brushSphere); }
public RadialMeasureTool(FScene scene, SceneObject target) { this.scene = scene; behaviors = new InputBehaviorSet(); // TODO is this where we should be doing this?? behaviors.Add( new RadialMeasureTool_MouseBehavior(scene.Context) { Priority = 5 }); //behaviors.Add( // new RevolveTool_SpatialDeviceBehavior(scene.ActiveController) { Priority = 5 }); // shut off transform gizmo scene.Context.TransformManager.PushOverrideGizmoType(TransformManager.NoGizmoType); scene.SelectionChangedEvent += Scene_SelectionChangedEvent; this.meshTarget = target as MeshSO; var boundsW = meshTarget.GetBoundingBox(CoordSpace.WorldCoords); measureHitPos = boundsW.Center; update_measurement(); indicators = new ToolIndicatorSet(this, scene); TextLabelIndicator dimensionLabel = new TextLabelIndicator() { ScenePositionF = () => { return(displayPosS + 0.01f * Vector3f.AxisY); }, TextHeight = fDimension.Scene(0.05f), DimensionTextF = () => { return(" " + (curDimension * 100).ToString("F2") + "cm"); } }; indicators.AddIndicator(dimensionLabel); CircleIndicator circle = new CircleIndicator() { SceneFrameF = () => { return(new Frame3f(circleCenterS)); }, RadiusF = () => { return((float)(curDimension * 0.5)); }, ColorF = () => { return(new Colorf(Colorf.VideoRed, 0.5f)); }, LineWidth = fDimension.Scene(0.001f) }; indicators.AddIndicator(circle); LineIndicator diag = new LineIndicator() { SceneStartF = () => { return(maxStart); }, SceneEndF = () => { return(maxEnd); }, ColorF = () => { return(Colorf.VideoRed); }, LineWidth = fDimension.Scene(0.001f) }; indicators.AddIndicator(diag); SectionPlaneIndicator section_plane = new SectionPlaneIndicator() { SceneFrameF = () => { return(new Frame3f(displayPosS)); }, Width = fDimension.Scene(() => { return((float)(curDimension * 1.5)); }) }; indicators.AddIndicator(section_plane); }