public static TagSelector Select(Tag tag, Vector2 pos, float maxDist) { Vector2 delta = tag.Pos - pos; float dist = delta.Length; if (dist < maxDist) { TagSelector selector = new TagSelector(tag, dist); return(selector); } return(null); }
public void OnTapGesture(Vector2 posView) { float touchRange = ccContext.SelectRadius; Vector2 pos = CCContext.ViewToModel(posView, ccContext.ModelViewMatrix); // Mask draw and erase if (activeTool == Tool.MaskDraw || activeTool == Tool.MaskErase) { bool foreground = activeTool == Tool.MaskDraw; CountLayerHelper.MaskDraw(pos, pos, foreground, frameBuffer, maskTexName, ccContext.ImageSize, unitSphereVertices, ccContext.DrawRadius); bUpdateROI = true; bUpdateSeqmentation = true; ccContext.RequestRender(); return; } // Tap pos in count view spacew float radius = CCContext.ViewToModel(touchRange, ccContext.ModelViewMatrix); switch (ccContext.CountLayerContext.ActiveTool) { case CountLayerContext.Tool.TagCreate: { // Make sure tag is inside ROI if ((pos - roiSphere.center).Length < roiSphere.radius) { tags.Add(new Tag(pos)); bUpdateSeqmentation = true; ccContext.RequestRender(); } break; } case CountLayerContext.Tool.TagDelete: { TagSelector selector = TagSelector.Select(tags, pos, radius); if (selector != null) { Tag tag = selector.GetPrimitive() as Tag; tags.Remove(tag); bUpdateSeqmentation = true; ccContext.RequestRender(); } break; } } }
public static TagSelector Select(ICollection <Tag> tags, Vector2 pos, float maxDist) { TagSelector selector = null; foreach (Tag tag in tags) { TagSelector newSelector = Select(tag, pos, maxDist); if (newSelector != null) { selector = newSelector; maxDist = selector.GetSelectDistance(); } } return(selector); }
public bool OnSelect(Vector2 posView) { float touchRange = ccContext.SelectRadius; Vector2 p = CCContext.ViewToModel(posView, ccContext.ModelViewMatrix); float radius = CCContext.ViewToModel(touchRange, ccContext.ModelViewMatrix); switch (activeTool) { case Tool.ROIEdit: { selectedPrim = SphereSelector.Select(roiSphere, p, radius, true, true); if (selectedPrim != null) { ccContext.RequestRender(); return(true); } break; } case Tool.TagCreate: case Tool.TagDelete: { selectedPrim = TagSelector.Select(tags, p, radius); if (selectedPrim != null) { ccContext.RequestRender(); Console.WriteLine("selected:" + selectedPrim.GetPrimitive()); return(true); } break; } } return(false); }