public MarkingMenu(ref Scene scene, MenuLayout2 layout = MenuLayout2.MainMenu) : base(ref scene) { mScene = scene; mLayout = layout; mNumSectors = getNumSectors(layout); mFirstSectorOffsetAngle = getAngularMenuOffset(mNumSectors); mCurrentSelection = -1; if (scene.isOculus) { mMinSelectionRadius = 0.2f; mOuterSelectionRadius = 0.8f; } else { mMinSelectionRadius = 0.4f; mOuterSelectionRadius = 0.6f; } Geometry.Geometry g = new Geometry.Geometry("C:\\workspace\\SparrowHawk\\src\\resources\\circle.obj"); switch (mLayout) { } radialMenuMat = new Material.RadialMenuMaterial(mScene.rhinoDoc, getTexturePath(mLayout)); mSceneNode = new SceneNode("MarkingMenu", ref g, ref radialMenuMat); mSceneNode.transform = new OpenTK.Matrix4(2, 0, 0, 0, 0, 0, -2, 0, 0, 2, 0, 0, 0, 0, 0, 1); UtilOld.showLaser(ref mScene, false); }
public override void init() { resetVariables(); //support undo function if (mScene != null && (afterCurveCount - beforeCurveCount) > 0) { if (mScene.iCurveList[mScene.iCurveList.Count - 1].GetUserString(CurveData.CurveOnObj.ToString()) != "") { Guid curveOnObjId = new Guid(mScene.iCurveList[mScene.iCurveList.Count - 1].GetUserString(CurveData.CurveOnObj.ToString())); ObjRef curveOnObjRef = new ObjRef(curveOnObjId); if (curveOnObjRef.Object().Attributes.Name.Contains("MoveP")) { UtilOld.removeRhinoObject(ref mScene, curveOnObjRef.ObjectId); } } mScene.iCurveList.RemoveAt(mScene.iCurveList.Count - 1); pointOnObjRef = null; } if (drawnType != DrawnType.In3D && drawnType != DrawnType.None) { UtilOld.showLaser(ref mScene, true); if (drawnType == DrawnType.Plane) { UtilOld.setPlaneAlpha(ref mScene, 0.4f); } //init rayCastingObjs Rhino.DocObjects.ObjectEnumeratorSettings settings = new Rhino.DocObjects.ObjectEnumeratorSettings(); settings.ObjectTypeFilter = Rhino.DocObjects.ObjectType.Brep; foreach (Rhino.DocObjects.RhinoObject rhObj in mScene.rhinoDoc.Objects.GetObjectList(settings)) { bool b1 = (drawnType == DrawnType.Plane) && rhObj.Attributes.Name.Contains("plane"); bool b2 = (drawnType == DrawnType.Surface) && (rhObj.Attributes.Name.Contains("brepMesh") || rhObj.Attributes.Name.Contains("aprint") || rhObj.Attributes.Name.Contains("patchSurface")); bool b3 = (drawnType == DrawnType.Reference) && rhObj.Attributes.Name.Contains("railPlane"); if (b1 || b2 || b3) { rayCastingObjs.Add(new ObjRef(rhObj.Id)); } } Geometry.Geometry geo = new Geometry.DrawPointMarker(new OpenTK.Vector3(0, 0, 0)); Material.Material m = new Material.SingleColorMaterial(1, 1, 1, 0); drawPoint = new SceneNode("drawPoint", ref geo, ref m); UtilOld.addSceneNode(ref mScene, ref drawPoint); } else { UtilOld.showLaser(ref mScene, false); } }
public CreatePatch(ref Scene s) : base(ref s) { mScene = s; stroke_g = new Geometry.GeometryStroke(ref mScene); stroke_m = new Material.SingleColorMaterial(1, 0, 0, 1); mesh_m = new Material.RGBNormalMaterial(.5f); currentState = State.READY; //TODO-support both controllers if (mScene.mIsLefty) { primaryDeviceIndex = (uint)mScene.leftControllerIdx; } else { primaryDeviceIndex = (uint)mScene.rightControllerIdx; } UtilOld.showLaser(ref mScene, false); }
public override void init() { resetVariables(); //support undo function if (mScene != null && (afterCurveCount - beforeCurveCount) > 0) { //don't have curveOnObject don't need to do anything if (mScene.iCurveList[mScene.iCurveList.Count - 1].GetUserString(CurveData.CurveOnObj.ToString()) != "") { Guid curveOnObjId = new Guid(mScene.iCurveList[mScene.iCurveList.Count - 1].GetUserString(CurveData.CurveOnObj.ToString())); ObjRef curveOnObjRef = new ObjRef(curveOnObjId); if (curveOnObjRef.Object().Attributes.Name.Contains("MoveP")) { UtilOld.removeRhinoObject(ref mScene, curveOnObjRef.ObjectId); } } mScene.iCurveList.RemoveAt(mScene.iCurveList.Count - 1); if (renderObjSN != null) { UtilOld.removeSceneNode(ref mScene, ref renderObjSN); renderObjSN = null; } } // Set initial timeout that cannot be skipped to prevent double selections. mInitialSelectOKTime = mScene.gameTime + defaultInitialDelay; if (drawnType == DrawnType.Reference) { isProjection = true; } else { isProjection = false; } UtilOld.showLaser(ref mScene, false); }
protected void setupScene() { mScene = new Scene(ref mDoc, ref mHMD); mScene.setWindowSize(this.Width, this.Height); mScene.mIsLefty = mIsLefty; if (mStrDriver.Contains("oculus")) { mScene.isOculus = true; } else { mScene.isOculus = false; } if (mHMD != null) { mHMD.GetRecommendedRenderTargetSize(ref mRenderWidth, ref mRenderHeight); } //visualizing axises OpenTK.Vector3 x0 = UtilOld.platformToVRPoint(ref mScene, new OpenTK.Vector3(-240, 0, 0)); OpenTK.Vector3 x1 = UtilOld.platformToVRPoint(ref mScene, new OpenTK.Vector3(240, 0, 0)); OpenTK.Vector3 y0 = UtilOld.platformToVRPoint(ref mScene, new OpenTK.Vector3(0, -240, 0)); OpenTK.Vector3 y1 = UtilOld.platformToVRPoint(ref mScene, new OpenTK.Vector3(0, 240, 0)); OpenTK.Vector3 z0 = UtilOld.platformToVRPoint(ref mScene, new OpenTK.Vector3(0, 0, -240)); OpenTK.Vector3 z1 = UtilOld.platformToVRPoint(ref mScene, new OpenTK.Vector3(0, 0, 240)); Geometry.Geometry xAxis_g = new Geometry.GeometryStroke(ref mScene); Material.Material xAxis_m = new Material.SingleColorMaterial(1, 1, 1, 0); ((Geometry.GeometryStroke)xAxis_g).addPoint(x0); ((Geometry.GeometryStroke)xAxis_g).addPoint(x1); mScene.xAxis = new SceneNode("xAxis", ref xAxis_g, ref xAxis_m); mScene.staticGeometry.add(ref mScene.xAxis); Geometry.Geometry yAxis_g = new Geometry.GeometryStroke(ref mScene); Material.Material yAxis_m = new Material.SingleColorMaterial(1, 1, 1, 0); ((Geometry.GeometryStroke)yAxis_g).addPoint(y0); ((Geometry.GeometryStroke)yAxis_g).addPoint(y1); mScene.yAxis = new SceneNode("yAxis", ref yAxis_g, ref yAxis_m); mScene.staticGeometry.add(ref mScene.yAxis); Geometry.Geometry zAxis_g = new Geometry.GeometryStroke(ref mScene); Material.Material zAxis_m = new Material.SingleColorMaterial(1, 1, 1, 0); ((Geometry.GeometryStroke)zAxis_g).addPoint(z0); ((Geometry.GeometryStroke)zAxis_g).addPoint(z1); mScene.zAxis = new SceneNode("zAxis", ref zAxis_g, ref zAxis_m); mScene.staticGeometry.add(ref mScene.zAxis); // LeftController Point and Laser //g = new Geometry.Geometry("C:/workspace/Kestrel/resources/meshes/bunny.obj"); //m = new Material.RGBNormalMaterial(1); Geometry.Geometry controllerL_g = new Geometry.PointMarker(new Vector3(0, 0, 0)); Material.Material controllerL_m = new Material.SingleColorMaterial(1, 0, 0, 1); SceneNode controllerL_p = new SceneNode("Left Cursor", ref controllerL_g, ref controllerL_m); mScene.leftControllerNode.add(ref controllerL_p); controllerL_p.transform = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);//mScene.mLeftControllerOffset; Geometry.Geometry controllerR_g = new Geometry.PointMarker(new Vector3(0, 0, 0)); Material.Material controllerR_m = new Material.SingleColorMaterial(1, 0, 0, 1); SceneNode controllerR_p = new SceneNode("Right Cursor", ref controllerR_g, ref controllerR_m); mScene.rightControllerNode.add(ref controllerR_p); controllerR_p.transform = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); Geometry.Geometry controllerLRay_g = new Geometry.GeometryStroke(ref mScene); Material.Material controllerLRay_m = new Material.SingleColorMaterial(1, 0, 0, 1); ((Geometry.GeometryStroke)controllerLRay_g).addPoint(new Vector3(0, 0, 0)); ((Geometry.GeometryStroke)controllerLRay_g).addPoint(new Vector3(0, 0, -1)); SceneNode rayTraceL = new SceneNode("ControllerRay", ref controllerLRay_g, ref controllerLRay_m); if (mIsLefty) { mScene.leftControllerNode.add(ref rayTraceL); } else { mScene.rightControllerNode.add(ref rayTraceL); } rayTraceL.transform = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);//mScene.mLeftControllerOffset; UtilOld.showLaser(ref mScene, false); mScene.xzPlane = new DesignPlane(ref mScene, XYZPlanes.XZ); mScene.xyPlane = new DesignPlane(ref mScene, XYZPlanes.XY); mScene.yzPlane = new DesignPlane(ref mScene, XYZPlanes.YZ); }
public override void init() { resetVariables(); //support undo function if (mScene != null && (afterCurveCount - beforeCurveCount) > 0) { if (mScene.iCurveList[mScene.iCurveList.Count - 1].GetUserString(CurveData.CurveOnObj.ToString()) != "") { Guid curveOnObjId = new Guid(mScene.iCurveList[mScene.iCurveList.Count - 1].GetUserString(CurveData.CurveOnObj.ToString())); ObjRef curveOnObjRef = new ObjRef(curveOnObjId); if (curveOnObjRef.Object().Attributes.Name.Contains("railPlane") || curveOnObjRef.Object().Attributes.Name.Contains("MoveP")) { UtilOld.removeRhinoObject(ref mScene, curveOnObjRef.ObjectId); } } mScene.iCurveList.RemoveAt(mScene.iCurveList.Count - 1); UtilOld.removeSceneNode(ref mScene, ref strokeSN); strokeSN = null; //need to clear stroke tprint SceneNode as well here if (renderObjSN != null) { UtilOld.removeSceneNode(ref mScene, ref renderObjSN); renderObjSN = null; } //Util.removeRhinoObject(ref mScene, curveOnObjRef.ObjectId); curveOnObjRef = null; if (railPlaneSN != null) { UtilOld.removeRhinoObjectSceneNode(ref mScene, ref railPlaneSN); railPlaneSN = null; } } if (drawnType != DrawnType.In3D && drawnType != DrawnType.None) { UtilOld.showLaser(ref mScene, true); //create and add referece planes to scene if (drawnType == DrawnType.Reference) { Vector3 railPlaneNormal = UtilOld.RhinoToOpenTKVector(UtilOld.getVectorfromString(mScene.iCurveList[mScene.iCurveList.Count - 1].GetUserString(CurveData.PlaneNormal.ToString()))); OpenTK.Vector3 worldUpAxis = new Vector3(0, 0, 1); //trick to avoid cross product of 2 parallel vetors if (railPlaneNormal.X == 0 && railPlaneNormal.Y == 0 && railPlaneNormal.Z == 1) { railPlaneNormal = new Vector3(0, 0.005f, 1); } Plane railPlane = new Plane(mScene.iCurveList[mScene.iCurveList.Count - 1].GetBoundingBox(true).Center, UtilOld.openTkToRhinoVector(Vector3.Cross(railPlaneNormal, worldUpAxis))); float planeSize = 240; PlaneSurface plane_surface2 = new PlaneSurface(railPlane, new Interval(-planeSize, planeSize), new Interval(-planeSize, planeSize)); Brep railPlane2 = Brep.CreateFromSurface(plane_surface2); Guid railPlaneGuid = UtilOld.addRhinoObjectSceneNode(ref mScene, ref railPlane2, ref railPlane_m, "railPlane", out railPlaneSN); } else if (drawnType == DrawnType.Plane) { UtilOld.setPlaneAlpha(ref mScene, 0.4f); } //init rayCastingObjs Rhino.DocObjects.ObjectEnumeratorSettings settings = new Rhino.DocObjects.ObjectEnumeratorSettings(); settings.ObjectTypeFilter = Rhino.DocObjects.ObjectType.Brep; foreach (Rhino.DocObjects.RhinoObject rhObj in mScene.rhinoDoc.Objects.GetObjectList(settings)) { bool b1 = (drawnType == DrawnType.Plane) && rhObj.Attributes.Name.Contains("plane"); bool b2 = (drawnType == DrawnType.Surface) && (rhObj.Attributes.Name.Contains("brepMesh") || rhObj.Attributes.Name.Contains("aprint") || rhObj.Attributes.Name.Contains("patchSurface")); bool b3 = (drawnType == DrawnType.Reference) && rhObj.Attributes.Name.Contains("railPlane"); if (b1 || b2 || b3) { rayCastingObjs.Add(new ObjRef(rhObj.Id)); } } Geometry.Geometry geo = new Geometry.DrawPointMarker(new OpenTK.Vector3(0, 0, 0)); Material.Material m = new Material.SingleColorMaterial(1, 1, 1, 0);//TODO: teseting alpha working or not drawPoint = new SceneNode("drawPoint", ref geo, ref m); UtilOld.addSceneNode(ref mScene, ref drawPoint); } else { UtilOld.showLaser(ref mScene, false); } //generate snap points when we need to draw from the center of the shapes, drawnType could be DrawnType.Reference or DrawnType.In3D if (dynamicRender == "Extrude" || dynamicRender == "Sweep" || drawnType == DrawnType.Reference) { shouldSnap = true; ShapeType shapeType = (ShapeType)mScene.selectionDic[SelectionKey.Profile1Shape]; Circle circle; Rectangle3d rect; if (shapeType == ShapeType.Circle) { if (mScene.iCurveList[mScene.iCurveList.Count - 1].TryGetCircle(out circle)) { snapPointsList.Add(circle.Center); } } else if (shapeType == ShapeType.Rect) { Rhino.Geometry.Polyline polyline; if (mScene.iCurveList[mScene.iCurveList.Count - 1].TryGetPolyline(out polyline)) { rect = Rectangle3d.CreateFromPolyline(polyline); snapPointsList.Add(rect.Center); } } //visualize the snap points Geometry.Geometry geo = new Geometry.DrawPointMarker(new Vector3(0, 0, 0)); Material.Material m = new Material.SingleColorMaterial(0, 1, 0, 1); UtilOld.MarkPointVR(ref mScene, UtilOld.platformToVRPoint(ref mScene, UtilOld.RhinoToOpenTKPoint(snapPointsList[0])), ref geo, ref m, out snapPointSN); } d = new generateModel_Delegate(generateModel); }