Ejemplo n.º 1
0
		public static Intersection GetPrimitiveOnRay(Ray ray, Vector3 relViewPos, IEnumerable<IEditorPrimitive> primitives)
		{
			var items = RayPrimitivesIntersect(ray, relViewPos, primitives);
				
			Intersection[] isect = new Intersection[(int)PrimitiveType.MaxTypes];

			foreach (var i in items) {
				//float dist = i.point.DistanceTo(camera.Position);
				float dist = ray.DistanceToPoint(i.point);

				float f = i.primitive.GetSelectFactor(ray.start, ray.dir, i.point);

				int sp = (int)i.primitive.PrimitiveType;
				if (isect [sp].primitive == null || f < i.primitive.GetSelectFactor (ray.start, ray.dir, isect[sp].point))
					isect[sp] = i;
			}

			return isect.FirstOrDefault(i => i.primitive != null);
		}