Exemple #1
0
 /// Construct with ray and query parameters.
 public RayOctreeQuery(Ray ray, RayQueryLevel level = RayQueryLevel.RAY_TRIANGLE, float maxDistance = Single.PositiveInfinity, uint drawableFlags = Constants.DRAWABLE_ANY, uint viewMask = Constants.DEFAULT_VIEWMASK)
 {
     this.Ray           = ray;
     this.Level         = level;
     this.MaxDistance   = maxDistance;
     this.DrawableFlags = drawableFlags;
     this.ViewMask      = viewMask;
 }
Exemple #2
0
        public RayQueryResult?RaycastSingle(Ray ray, RayQueryLevel level, float maxDistance, DrawableFlags drawableFlags, uint viewMask = UInt32.MaxValue)
        {
            Runtime.ValidateRefCounted(this);
            var result = Raycast(ray, level, maxDistance, drawableFlags, true, viewMask);

            if (result != null && result.Count > 0)
            {
                return(result[0]);
            }
            return(null);
        }
Exemple #3
0
		public List<RayQueryResult> RaycastSingle(Ray ray, RayQueryLevel level, float maxDistance, DrawableFlags drawableFlags, uint viewMask = UInt32.MaxValue)
		{
			List<RayQueryResult> result = new List<RayQueryResult>();

			int count;
			var ptr = Octree_RaycastSingle(Handle, ref ray, ref level, maxDistance, (uint)drawableFlags, viewMask, out count);

			if (ptr == IntPtr.Zero)
				return result;

			int structSize = Marshal.SizeOf(typeof (RayQueryResult));
			for (int i = 0; i < count; i++)
			{
				IntPtr data = new IntPtr(ptr.ToInt64() + structSize * i);
				RayQueryResult item = (RayQueryResult)Marshal.PtrToStructure(data, typeof(RayQueryResult));
				result.Add(item);
			}

			return result;
		} 
Exemple #4
0
        public List <RayQueryResult> RaycastSingle(Ray ray, RayQueryLevel level, float maxDistance, DrawableFlags drawableFlags, uint viewMask = UInt32.MaxValue)
        {
            List <RayQueryResult> result = new List <RayQueryResult>();

            int count;
            var ptr = Octree_RaycastSingle(Handle, ref ray, ref level, maxDistance, (uint)drawableFlags, viewMask, out count);

            if (ptr == IntPtr.Zero)
            {
                return(result);
            }

            int structSize = Marshal.SizeOf(typeof(RayQueryResult));

            for (int i = 0; i < count; i++)
            {
                IntPtr         data = new IntPtr(ptr.ToInt64() + structSize * i);
                RayQueryResult item = (RayQueryResult)Marshal.PtrToStructure(data, typeof(RayQueryResult));
                result.Add(item);
            }

            return(result);
        }
Exemple #5
0
 internal static extern IntPtr csi_Atomic_Octree_Raycast(IntPtr self, ref Ray ray, ref RayQueryLevel level, float maxDistance, uint drawableFlags, uint viewMask, bool single, out IntPtr resultVector, out int count);
Exemple #6
0
 internal static extern IntPtr Octree_RaycastSingle(IntPtr handle, ref Ray ray, ref RayQueryLevel level, float maxDistance, uint drawableFlags, uint viewMask, out int count);
Exemple #7
0
 /// Construct with ray and query parameters.
 public RayOctreeQuery(Ray ray, RayQueryLevel level = RayQueryLevel.RAY_TRIANGLE, float maxDistance = Single.PositiveInfinity, uint drawableFlags = Constants.DRAWABLE_ANY, uint viewMask = Constants.DEFAULT_VIEWMASK)
 {
     this.Ray = ray;
     this.Level = level;
     this.MaxDistance = maxDistance;
     this.DrawableFlags = drawableFlags;
     this.ViewMask = viewMask;
 }
Exemple #8
0
 internal static extern IntPtr csi_Atomic_Octree_Raycast(IntPtr self, ref Ray ray, ref RayQueryLevel level, float maxDistance, uint drawableFlags, uint viewMask, bool single, out IntPtr resultVector, out int count);
Exemple #9
0
 public List <RayQueryResult> RaycastSingle(Ray ray, RayQueryLevel level, float maxDistance, DrawableFlags drawableFlags, uint viewMask = UInt32.MaxValue)
 {
     Runtime.ValidateRefCounted(this);
     return(Raycast(ray, level, maxDistance, drawableFlags, true, viewMask));
 }
Exemple #10
0
		internal static extern IntPtr Octree_RaycastSingle(IntPtr handle, ref Ray ray, ref RayQueryLevel level, float maxDistance, uint drawableFlags, uint viewMask, out int count);
Exemple #11
0
 public List<RayQueryResult> RaycastSingle(Ray ray, RayQueryLevel level, float maxDistance, DrawableFlags drawableFlags, uint viewMask = UInt32.MaxValue)
 {
     Runtime.ValidateRefCounted(this);
     return Raycast(ray, level, maxDistance, drawableFlags, true, viewMask);
 }
Exemple #12
0
 public List <RayQueryResult> Raycast(Ray ray, RayQueryLevel level = RayQueryLevel.Triangle, float maxDistance = 10000, DrawableFlags drawableFlags = DrawableFlags.Geometry, uint viewMask = UInt32.MaxValue)
 {
     Runtime.ValidateRefCounted(this);
     return(Raycast(ray, level, maxDistance, drawableFlags, false, viewMask));
 }