public bool HasCollision(Vector3 RayPosition, Vector3 RayDirection) { CollisionResults Results = new CollisionResults(); for (int i = 0; i < CollisionBuffer.Length; i += 3) { if (CollisionUtil.Intersect(CollisionBuffer[i] + Position, CollisionBuffer[i + 1] + Position, CollisionBuffer[i + 2] + Position, RayPosition, RayDirection)) { Vector3 CollisionPoint = CollisionUtil.GetCollisionPoint(CollisionBuffer[i] + Position, CollisionBuffer[i + 1] + Position, CollisionBuffer[i + 2] + Position, RayPosition, RayDirection); return(true); } } return(false); }
public CollisionResults CollideWith(Vector3 RayPosition, Vector3 RayDirection) { CollisionResults Results = new CollisionResults(); for (int i = 0; i < CollisionBuffer.Length; i += 3) { if (CollisionUtil.Intersect(CollisionBuffer[i] + Position, CollisionBuffer[i + 1] + Position, CollisionBuffer[i + 2] + Position, RayPosition, RayDirection)) { Vector3 CollisionPoint = CollisionUtil.GetCollisionPoint(CollisionBuffer[i] + Position, CollisionBuffer[i + 1] + Position, CollisionBuffer[i + 2] + Position, RayPosition, RayDirection); CollisionResult Result = new CollisionResult( Name, CollisionBuffer[i], CollisionBuffer[i + 1], CollisionBuffer[i + 2], Position, CollisionPoint ); Results.Add(Result); } } return(Results); }
public void AddRange(CollisionResults NewResults) { Results.AddRange(NewResults.Results); Count = Results.Count(); Results = Results.OrderBy(x => x.Distance).ToList(); }