override protected void OnBeginCapture(Ray3f worldRay, Standard3DWidget w) { List <SceneObject> PotentialTargets = new List <SceneObject>(ConstraintSurfaces); foreach (var v in Widgets) { if (v.Value is SurfaceConstrainedPointWidget) { SurfaceConstrainedPointWidget widget = v.Value as SurfaceConstrainedPointWidget; widget.SourceSO = Targets[0]; widget.ConstraintSurfaces = PotentialTargets; } } }
override protected void BuildGizmo() { gizmo.SetName("SurfaceConstrainedGizmo"); make_materials(); centerGO = AppendMeshGO("object_origin", UnityUtil.GetPrimitiveMesh(PrimitiveType.Sphere), srcMaterial, gizmo); centerGO.SetLocalScale(WidgetScale); Widgets[centerGO] = new SurfaceConstrainedPointWidget(this, this.parentScene) { RootGameObject = centerGO, StandardMaterial = srcMaterial, HoverMaterial = srcHoverMaterial }; PuncturedDiscGenerator discgen = new PuncturedDiscGenerator() { StartAngleDeg = 180, EndAngleDeg = 270, OuterRadius = 1.5f, InnerRadius = 0.75f }; discgen.Generate(); SimpleMesh discmesh = discgen.MakeSimpleMesh(); MeshTransforms.Rotate(discmesh, Vector3d.Zero, Quaternionf.AxisAngleD(Vector3f.AxisX, 90)); rotateGO = AppendMeshGO("object_rotate", new fMesh(discmesh), srcMaterial, gizmo); rotateGO.SetLocalScale(WidgetScale); Widgets[rotateGO] = new AxisRotationWidget(2) { RootGameObject = rotateGO, StandardMaterial = srcMaterial, HoverMaterial = srcHoverMaterial }; gizmo.Hide(); }