protected override void OnAddedClickPoint(Vector3d vNew, bool bFirst) { Vector3f pos = (Vector3f)preview[preview.VertexCount - 1]; Vector3f color = (bFirst) ? Colorf.VideoRed : Colorf.ForestGreen; SphereIndicator dot = new SphereIndicator() { SceneFrameF = () => { return(new Frame3f(pos)); }, Radius = indicator_size, ColorF = () => { return(color); } }; indicators.AddIndicator(dot); }
/// <summary> /// called on click-down /// </summary> override public void Begin(SceneObject so, Vector2d downPos, Ray3f downRayWorld) { SORayHit hit; if (TargetSO.FindRayIntersection(downRayWorld, out hit) == false) { return; } Vector3d scenePos = SceneTransforms.WorldToSceneP(this.Scene, hit.hitPos); if (have_source == false) { CurrentSourceHitPosS = new Frame3f(scenePos); sourceIndicator = new SphereIndicator() { SceneFrameF = () => { return(CurrentSourceHitPosS); }, Radius = fDimension.Scene(SourceIndicatorSizeScene * 0.5), ColorF = () => { return(Colorf.Orange); } }; indicators.AddIndicator(sourceIndicator); have_source = true; source_modified = true; } else if (have_extent == false) { CurrentExtentHitPosS = new Frame3f(scenePos); extentIndicator = new SphereIndicator() { SceneFrameF = () => { return(CurrentExtentHitPosS); }, Radius = fDimension.Scene(ExtentIndicatorSizeScene * 0.5), ColorF = () => { return(Colorf.CornflowerBlue); } }; indicators.AddIndicator(extentIndicator); have_extent = true; extent_modified = true; } }
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; } }