override protected void OnBeginCapture(Ray3f worldRay, Standard3DWidget w)
 {
     foreach (var v in Widgets)
     {
         if (v.Value is PositionConstrainedPointWidget)
         {
             PositionConstrainedPointWidget widget = v.Value as PositionConstrainedPointWidget;
             widget.SourceSO       = Targets[0];
             widget.ScenePositionF = this.ScenePositionF;
         }
     }
 }
        override protected void BuildGizmo()
        {
            gizmo.SetName("PositionConstrainedGizmo");

            make_materials();

            centerGO = AppendMeshGO("object_origin",
                                    UnityUtil.GetPrimitiveMesh(PrimitiveType.Sphere), srcMaterial, gizmo);
            centerGO.SetLocalScale(WidgetScale);

            Widgets[centerGO] = new PositionConstrainedPointWidget(this, this.parentScene)
            {
                RootGameObject = centerGO, StandardMaterial = srcMaterial, HoverMaterial = srcHoverMaterial
            };

            gizmo.Hide();
        }