public void GetBodiesIntersecting(Ray ray, List <Body> components, CollisionManager.CollisionType type) { HashSet <Body> set = new HashSet <Body>(); CollisionManager.GetObjectsIntersecting(ray, set, type); components.AddRange(set); }
public void GetBodiesIntersecting(BoundingFrustum frustrum, List <Body> components, CollisionManager.CollisionType type) { HashSet <Body> set = new HashSet <Body>(); CollisionManager.GetObjectsIntersecting(frustrum, set, type); components.AddRange(set); }
public void GetBodiesIntersecting(BoundingBox box, List <Body> components, CollisionManager.CollisionType type) { HashSet <IBoundedObject> set = new HashSet <IBoundedObject>(); CollisionManager.GetObjectsIntersecting(box, set, type); components.AddRange(set.Where(o => o is Body).Select(o => o as Body)); }
public void GetBodiesUnderMouse(MouseState mouse, Camera camera, Viewport viewPort, List <Body> components) { Vector3 pos1 = viewPort.Unproject(new Vector3(mouse.X, mouse.Y, 0), camera.ProjectionMatrix, camera.ViewMatrix, Matrix.Identity); Vector3 pos2 = viewPort.Unproject(new Vector3(mouse.X, mouse.Y, 1), camera.ProjectionMatrix, camera.ViewMatrix, Matrix.Identity); Vector3 dir = Vector3.Normalize(pos2 - pos1); Ray toCast = new Ray(pos1, dir); HashSet <Body> set = new HashSet <Body>(); CollisionManager.GetObjectsIntersecting(toCast, set, CollisionManager.CollisionType.Dynamic | CollisionManager.CollisionType.Static); components.AddRange(set); }