public class RayTracer
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static class |
RayTracer.RayTraceBlockResult |
static class |
RayTracer.RayTraceEntityResult |
static class |
RayTracer.RayTraceResult |
| Modifier and Type | Field and Description |
|---|---|
double |
distance |
int |
parallelThreshold |
Ray |
ray |
| Constructor and Description |
|---|
RayTracer(Entity entity)
Does an entity look ray trace to see which block the entity is looking at.
|
RayTracer(Ray ray) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
doParallel() |
java.util.Optional<RayTracer.RayTraceResult> |
rayTrace(Cuboid cuboid) |
<R extends RayTracer.RayTraceResult> |
rayTrace(Cuboid cuboid,
java.util.function.BiFunction<org.apache.commons.math3.geometry.euclidean.threed.Vector3D,Cuboid,R> resultMapper)
Ray traces a cuboid
|
java.util.Optional<org.apache.commons.math3.geometry.euclidean.threed.Vector3D> |
rayTrace(Cuboid cuboid,
double minDist,
double maxDist)
Calculates intersection with the given ray between a certain distance
interval.
|
java.util.List<RayTracer.RayTraceResult> |
rayTrace(java.util.stream.Stream<Cuboid> stream)
Ray traces a set of cuboids
|
java.util.stream.Stream<RayTracer.RayTraceResult> |
rayTraceAll(World world) |
java.util.stream.Stream<RayTracer.RayTraceBlockResult> |
rayTraceBlocks(java.util.Set<Block> blocks)
Ray traces a set of blocks
|
java.util.stream.Stream<RayTracer.RayTraceBlockResult> |
rayTraceBlocks(java.util.stream.Stream<Block> blockStream) |
java.util.stream.Stream<RayTracer.RayTraceBlockResult> |
rayTraceBlocks(World world)
Check all blocks that are in a line
|
<R extends RayTracer.RayTraceResult> |
rayTraceCollider(ComponentProvider<? extends ComponentMap> colliderProvider,
java.util.function.BiFunction<org.apache.commons.math3.geometry.euclidean.threed.Vector3D,Cuboid,R> resultMapper) |
java.util.stream.Stream<RayTracer.RayTraceEntityResult> |
rayTraceEntities(java.util.stream.Stream<Entity> entityStream) |
java.util.stream.Stream<RayTracer.RayTraceEntityResult> |
rayTraceEntities(World world) |
RayTracer |
setDistance(double distance)
Sets the distance of the ray
|
RayTracer |
setParallelThreshold(int parallelThreshold) |
public final Ray ray
public double distance
public int parallelThreshold
public RayTracer(Ray ray)
public RayTracer(Entity entity)
entity - The entitypublic RayTracer setDistance(double distance)
distance - Distance in meterspublic RayTracer setParallelThreshold(int parallelThreshold)
public boolean doParallel()
public java.util.stream.Stream<RayTracer.RayTraceResult> rayTraceAll(World world)
public java.util.stream.Stream<RayTracer.RayTraceBlockResult> rayTraceBlocks(World world)
world - The world to perform the ray trace in.public java.util.stream.Stream<RayTracer.RayTraceBlockResult> rayTraceBlocks(java.util.Set<Block> blocks)
blocks - Set of blockspublic java.util.stream.Stream<RayTracer.RayTraceBlockResult> rayTraceBlocks(java.util.stream.Stream<Block> blockStream)
public java.util.stream.Stream<RayTracer.RayTraceEntityResult> rayTraceEntities(World world)
public java.util.stream.Stream<RayTracer.RayTraceEntityResult> rayTraceEntities(java.util.stream.Stream<Entity> entityStream)
public <R extends RayTracer.RayTraceResult> java.util.stream.Stream<R> rayTraceCollider(ComponentProvider<? extends ComponentMap> colliderProvider, java.util.function.BiFunction<org.apache.commons.math3.geometry.euclidean.threed.Vector3D,Cuboid,R> resultMapper)
public java.util.List<RayTracer.RayTraceResult> rayTrace(java.util.stream.Stream<Cuboid> stream)
stream - A stream of cuboidspublic java.util.Optional<RayTracer.RayTraceResult> rayTrace(Cuboid cuboid)
public <R extends RayTracer.RayTraceResult> java.util.Optional<R> rayTrace(Cuboid cuboid, java.util.function.BiFunction<org.apache.commons.math3.geometry.euclidean.threed.Vector3D,Cuboid,R> resultMapper)
R - the result typecuboid - The cuboid in absolute world coordinatesresultMapper - the RayTracer.RayTraceResult converterpublic java.util.Optional<org.apache.commons.math3.geometry.euclidean.threed.Vector3D> rayTrace(Cuboid cuboid, double minDist, double maxDist)
Ray-box intersection is using IEEE numerical properties to ensure the
test is both robust and efficient, as described in:
Amy Williams, Steve Barrus, R. Keith Morley, and Peter Shirley: "An
Efficient and Robust Ray-Box Intersection Algorithm" Journal of graphics
tools, 10(1):49-54, 2005
cuboid - The cuboid to traceminDist - The minimum distancemaxDist - The maximum distance