Esempio n. 1
0
            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]);
            }
Esempio n. 2
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]);
            }
Esempio n. 3
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));
 }