public HitTestResult HitTest(HitTestRay ray, float snap_distance, EHitTestFlags flags, Guid[] guids, int include_count, int exclude_count) { Debug.Assert(include_count + exclude_count == guids.Length); var rays = new HitTestRay[1] { ray }; var hits = new HitTestResult[1]; using var rays_buf = Marshal_.Pin(rays, GCHandleType.Pinned); using var hits_buf = Marshal_.Pin(hits, GCHandleType.Pinned); using var guids_buf = Marshal_.Pin(guids, GCHandleType.Pinned); View3D_WindowHitTestByCtx(Handle, rays_buf.Pointer, hits_buf.Pointer, 1, snap_distance, flags, guids_buf.Pointer, include_count, exclude_count); return(hits[0]); }
public HitTestResult HitTest(HitTestRay ray, float snap_distance, EHitTestFlags flags, IEnumerable <Object> objects) { var rays = new HitTestRay[1] { ray }; var hits = new HitTestResult[1]; var insts = objects.Select(x => x.Handle).ToArray(); using var rays_buf = Marshal_.Pin(rays, GCHandleType.Pinned); using var hits_buf = Marshal_.Pin(hits, GCHandleType.Pinned); using var insts_buf = Marshal_.Pin(insts, GCHandleType.Pinned); View3D_WindowHitTestObjects(Handle, rays_buf.Pointer, hits_buf.Pointer, 1, snap_distance, flags, insts, insts.Length); return(hits[0]); }
/// <summary>Perform a hit test in the scene</summary> public HitTestResult HitTest(HitTestRay ray, float snap_distance, EHitTestFlags flags) { return(HitTest(ray, snap_distance, flags, new Guid[0], 0, 0)); }