public virtual void BeginStroke(Ray3f rayS) { Vector3f camDirW = Scene.ActiveCamera.Forward(); Vector3f camDirS = Scene.ToSceneP(camDirW); PlaneFrameS = new Frame3f(Target.GetLocalFrame(CoordSpace.SceneCoords).Origin, camDirS); CurrentStroke.Clear(); CurrentStroke.Add(rayS); CurrentStart = PlaneFrameS.RayPlaneIntersection(rayS.Origin, rayS.Direction, 2); CurrentEnd = CurrentStart; if (currentLine == null) { currentLine = new LineIndicator() { SceneStartF = () => { return(CurrentStart); }, SceneEndF = () => { return(CurrentEnd); }, VisibleF = () => { return(CurrentStroke.Count > 1); }, ColorF = () => { return(this.LineColor); }, LineWidth = fDimension.Scene(LineWidth) }; Indicators.AddIndicator(currentLine); } }
public override void Setup() { BasePointID = AppendSurfacePoint("BasePoint", Colorf.Blue); FrontPointID = AppendSurfacePoint("FrontPoint", Colorf.Green); TopPointID = AppendSurfacePoint("TopPoint", Colorf.Magenta); //TopPointTarget = new PlaneIntersectionTarget() { NormalAxis = 1 }; //TopPointID = AppendTargetPoint("MidPoint", new Colorf(Colorf.Magenta,0.5f), TopPointTarget); //SetPointColor(TopPointID, new Colorf(Colorf.Magenta, 0.5f), FPlatform.WidgetOverlayLayer); Indicators.AddIndicator(new LineIndicator() { LineWidth = fDimension.Scene(1.0f), SceneStartF = () => { return(GizmoPoints[BasePointID].currentFrameS.Origin); }, SceneEndF = () => { return(GizmoPoints[TopPointID].currentFrameS.Origin); }, }); Indicators.AddIndicator(new LineIndicator() { LineWidth = fDimension.Scene(1.0f), ColorF = () => { return(Colorf.LightSteelBlue); }, SceneStartF = () => { return(start_forward_pt_S); }, SceneEndF = () => { return(current_forward_pt_S); }, }); }
public virtual void Setup() { // turn on xform gizmo Scene.Context.TransformManager.PushOverrideGizmoType(BendPlanePivotGizmo.DefaultTypeName); Vector3d ctrPt = TargetSO.Mesh.CachedBounds.Center; Frame3f nearestF = MeshQueries.NearestPointFrame(TargetSO.Mesh, TargetSO.Spatial, ctrPt, true); BendPlaneOriginS = SceneTransforms.ObjectToSceneP(TargetSO, nearestF.Origin); BendPlaneNormalS = Vector3d.AxisY; bendPlaneGizmoSO = new BendPlanePivotSO(); bendPlaneGizmoSO.Create(Scene.PivotSOMaterial, Scene.FrameSOMaterial); bendPlaneGizmoSO.OnTransformModified += OnBendPlaneTransformModified; Scene.AddSceneObject(bendPlaneGizmoSO); Frame3f cutFrameS = new Frame3f(BendPlaneOriginS); cutFrameS.AlignAxis(1, (Vector3f)BendPlaneNormalS); bendPlaneGizmoSO.SetLocalFrame(cutFrameS, CoordSpace.SceneCoords); allow_selection_changes = true; Scene.Select(bendPlaneGizmoSO, true); allow_selection_changes = false; StandardIndicatorFactory factory = new StandardIndicatorFactory(); SectionPlaneIndicator bendPlane = factory.MakeSectionPlaneIndicator( 100, "bendPlane", fDimension.Scene(100), () => { return(new Frame3f(BendPlaneOriginS, BendPlaneNormalS)); }, () => { return(new Colorf(Colorf.LightGreen, 0.5f)); }, () => { return(true); } ); Indicators.AddIndicator(bendPlane); // save initial vtx positions VertexPositions = new Vector3d[TargetSO.Mesh.MaxVertexID]; foreach (int vid in TargetSO.Mesh.VertexIndices()) { VertexPositions[vid] = TargetSO.Mesh.GetVertex(vid); } PreviewSO = TargetSO.Duplicate() as DMeshSO; Scene.AddSceneObject(PreviewSO); //PreviewSO.AssignSOMaterial(Scene.TransparentNewSOMaterial); fMaterial transMat = MaterialUtil.CreateTransparentMaterial(Colorf.BlueMetal.SetAlpha(0.1f)); TargetSO.PushOverrideMaterial(transMat); TargetSO.SetLayer(FPlatform.WidgetOverlayLayer); }
protected virtual void initialize_point(ControlPoint pt) { SphereIndicator indicator = IndicatorBuilder.MakeSphereIndicator( pt.id, pt.name, fDimension.Scene(pt.sizeS / 2), () => { return(pt.currentFrameS); }, () => { return(pt.color); }, () => { return(true); } ); Indicators.AddIndicator(indicator); indicator.RootGameObject.SetName(pt.name); pt.indicator = indicator; if (pt.layer != -1) { Indicators.SetLayer(indicator, pt.layer); } pt.initialized = true; OnPointInitialized(pt); }
/// <summary> /// called on click-down /// </summary> override public void Begin(SceneObject so, Vector2d downPos, Ray3f downRay) { SORayHit hit; if (TargetSO.FindRayIntersection(downRay, out hit) == false) { return; } Vector3d scenePos = SceneTransforms.WorldToSceneP(this.Scene, hit.hitPos); CurrentHitPosS = new Frame3f(scenePos); float fObjectT = (CurrentHitPosS.Origin - ObjectFrameS.Origin).Dot(ObjectFrameS.Y); CurrentPlaneFrameS = ObjectFrameS.Translated(fObjectT, 1); if (have_set_plane == false) { sphereIndicator = IndicatorBuilder.MakeSphereIndicator(0, "hit_point", fDimension.Scene(sphere_indicator_size * 0.5), () => { return(CurrentHitPosS); }, () => { return(Colorf.Orange); }, () => { return(true); }); Indicators.AddIndicator(sphereIndicator); sphereIndicator.RootGameObject.SetName("hit_point"); planeIndicator = IndicatorBuilder.MakeSectionPlaneIndicator(1, "section_plane", fDimension.Scene(plane_indicator_width), () => { return(CurrentPlaneFrameS); }, () => { return(new Colorf(Colorf.LightGreen, 0.5f)); }, () => { return(true); }); Indicators.AddIndicator(planeIndicator); planeIndicator.RootGameObject.SetName("section_plane"); have_set_plane = true; } }
public override void Setup() { StartPointID = AppendSurfacePoint("StartPoint", Colorf.Blue); EndPointID = AppendSurfacePoint("EndPoint", Colorf.Green); //LineIndicator line = new LineIndicator() { // LineWidth = fDimension.Scene(1.0f), // SceneStartF = () => { return GizmoPoints[StartPointID].currentFrameS.Origin; }, // SceneEndF = () => { return GizmoPoints[EndPointID].currentFrameS.Origin; }, //}; //indicators.AddIndicator(line); //indicators.SetLayer(line, FPlatform.HUDOverlay); // has to be hud overlay or it will be clipped by depth render Frame3f TargetFrameS = TargetSO.GetLocalFrame(CoordSpace.SceneCoords); TargetAxis = new Line3d(TargetFrameS.Origin, Vector3d.AxisY); SectionPlaneIndicator startPlane = IndicatorBuilder.MakeSectionPlaneIndicator( 100, "startPlane", fDimension.Scene(plane_indicator_width), () => { return(new Frame3f(TargetAxis.ClosestPoint(GizmoPoints[StartPointID].currentFrameS.Origin))); }, () => { return(new Colorf(Colorf.LightGreen, 0.5f)); }, () => { return(true); } ); Indicators.AddIndicator(startPlane); SectionPlaneIndicator endPlane = IndicatorBuilder.MakeSectionPlaneIndicator( 101, "endPlane", fDimension.Scene(plane_indicator_width), () => { return(new Frame3f(TargetAxis.ClosestPoint(GizmoPoints[EndPointID].currentFrameS.Origin))); }, () => { return(new Colorf(Colorf.LightGreen, 0.5f)); }, () => { return(true); } ); Indicators.AddIndicator(endPlane); }