public static HitRecord[] RayPick(Matrix4F viewxform, Matrix4F projxfrom, Ray3F rayW, bool skipSelected) { HitRecord *nativeHits = null; int count; fixed(float *ptr1 = &viewxform.M11, ptr2 = &projxfrom.M11) { NativeRayPick( ptr1, ptr2, &rayW, skipSelected, &nativeHits, out count); } var objects = new List <HitRecord>(); for (int k = 0; k < count; k++) { objects.Add(*nativeHits); nativeHits++; } return(objects.ToArray()); }
public static HitRecord[] FrustumPick(ulong renderSurface, Matrix4F viewxform, Matrix4F projxfrom, RectangleF rect) { s_rect[0] = rect.X; s_rect[1] = rect.Y; s_rect[2] = rect.Width; s_rect[3] = rect.Height; HitRecord *nativeHits = null; int count; fixed(float *ptr1 = &viewxform.M11, ptr2 = &projxfrom.M11) { NativeFrustumPick( renderSurface, ptr1, ptr2, s_rect, &nativeHits, out count); } var objects = new List <HitRecord>(); for (int k = 0; k < count; k++) { HitRecord nativehit = *nativeHits; objects.Add(nativehit); nativeHits++; } return(objects.ToArray()); }
public static bool RayPick(Matrix4F viewxform, Matrix4F projxfrom, Ray3F rayW, bool skipSelected, out HitRecord hit) { HitRecord *nativeHits = null; int count; //bool skipSelected, fixed(float *ptr1 = &viewxform.M11, ptr2 = &projxfrom.M11) { NativeRayPick( ptr1, ptr2, &rayW, skipSelected, &nativeHits, out count); } if (count > 0) { hit = *nativeHits; } else { hit = new HitRecord(); } return(count > 0); }