public class ConcurrentRegionQuadTree<T extends CollisionShape> extends ConcurrentPointQuadTree<T>
bottomLeft, bottomRight, ELEMENT_COLOR, elementLimitPerQuad, elements, lock, mergeWatermark, minimumQuadHeight, minimumQuadWidth, parent, QUAD_COLOR, topLeft, topRight, totalElementsCache, totalMerges
Constructor and Description |
---|
ConcurrentRegionQuadTree(ConcurrentRegionQuadTree<T> parent,
float x,
float y,
float width,
float height)
Constructs a
ConcurrentRegionQuadTree as a child of another
ConcurrentRegionQuadTree |
ConcurrentRegionQuadTree(float minimumQuadWidth,
float minimumQuadHeight,
int elementLimitPerQuad,
int mergeWatermark,
float x,
float y,
float width,
float height)
Constructs a
ConcurrentRegionQuadTree with a specified minimum
quad size, element limit and watermark |
ConcurrentRegionQuadTree(int elementLimit,
float x,
float y,
float width,
float height)
Constructs a
ConcurrentRegionQuadTree with a specified element
limit and no merging watermark. |
ConcurrentRegionQuadTree(int elementLimit,
int mergeWatermark,
float x,
float y,
float width,
float height)
Constructs a
ConcurrentRegionQuadTree with a specified element
limit and watermark |
Modifier and Type | Method and Description |
---|---|
boolean |
add(T element) |
void |
addAll(java.util.List<T> elements) |
protected boolean |
addElement(T element) |
protected boolean |
addElementToChild(T element) |
void |
debugRender(Graphics g) |
java.util.List<T> |
getElements() |
void |
getElements(java.util.List<T> result) |
void |
getElementsContainingPoint(java.util.Collection<T> result,
Point point) |
java.util.List<T> |
getElementsContainingPoint(Point point) |
void |
getElementsIntersectingLineSegment(java.util.Collection<T> result,
LineSegment lineSegment) |
java.util.List<T> |
getElementsIntersectingLineSegment(LineSegment lineSegment) |
void |
getElementsWithinArea(java.util.Collection<T> result,
Shape area) |
java.util.List<T> |
getElementsWithinArea(Shape area) |
int |
getTotalElements() |
void |
positionChanged(T moved) |
boolean |
remove(T element) |
void |
removeAll(java.util.List<T> elementsToRemove) |
protected boolean |
removeElement(T element,
boolean topDownInvocation) |
protected void |
subdivide() |
clearTotalElementsCache, getElementLimitPerQuad, getMergeWatermark, getMinimumQuadHeight, getMinimumQuadWidth, getParent, getTotalMergeOperations, getTotalQuads, isMergable, merge, removeElementFromChild
contains, contains, contains, contains, contains, contains, copy, draw, edgeIterator, equals, fill, getCenterX, getCenterY, getDistanceTo, getDistanceTo, getHeight, getMaxX, getMaxY, getMinX, getMinY, getNumberOfSides, getPolygon, getRotation, getVertices, getWidth, getX, getY, hashCode, intersection, intersects, intersects, intersects, intersects, intersects, intersects, intersects, intersectsLineSegment, intersectsLineSegment, intersectsLineSegment, isCircle, lerp, rotate, rotateAround, scale, set, set, set, set, setCenter, setCenterX, setCenterY, setHeight, setRadius, setRotation, setRotationAround, setRotationAround, setSize, setSize, setWidth, setX, setY, toString, translate
add, intersects, subtract
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
contains, contains, getHeight, getMaxX, getMaxY, getRotation, getWidth, getX, getY, intersects, intersects, intersectsLineSegment, rotate, rotateAround, setRotation, setRotationAround
public ConcurrentRegionQuadTree(int elementLimit, int mergeWatermark, float x, float y, float width, float height)
ConcurrentRegionQuadTree
with a specified element
limit and watermarkelementLimit
- The maximum number of elements in a
ConcurrentRegionQuadTree
before it is split into 4
child quadsmergeWatermark
- When a parent ConcurrentRegionQuadTree
's total
elements go lower than this mark, the child
ConcurrentRegionQuadTree
s will be merged back togetherx
- The x coordinate of the ConcurrentRegionQuadTree
y
- The y coordiante of the ConcurrentRegionQuadTree
width
- The width of the ConcurrentRegionQuadTree
height
- The height of the ConcurrentRegionQuadTree
public ConcurrentRegionQuadTree(int elementLimit, float x, float y, float width, float height)
ConcurrentRegionQuadTree
with a specified element
limit and no merging watermark. As elements are removed, small sized
child ConcurrentRegionQuadTree
s will not be merged back together.elementLimit
- The maximum number of elements in a quad before it is split
into 4 child ConcurrentRegionQuadTree
sx
- The x coordinate of the ConcurrentRegionQuadTree
y
- The y coordiante of the ConcurrentRegionQuadTree
width
- The width of the ConcurrentRegionQuadTree
height
- The height of the ConcurrentRegionQuadTree
public ConcurrentRegionQuadTree(ConcurrentRegionQuadTree<T> parent, float x, float y, float width, float height)
ConcurrentRegionQuadTree
as a child of another
ConcurrentRegionQuadTree
parent
- The parent ConcurrentRegionQuadTree
x
- The x coordinate of the ConcurrentRegionQuadTree
y
- The y coordiante of the ConcurrentRegionQuadTree
width
- The width of the ConcurrentRegionQuadTree
height
- The height of the ConcurrentRegionQuadTree
public ConcurrentRegionQuadTree(float minimumQuadWidth, float minimumQuadHeight, int elementLimitPerQuad, int mergeWatermark, float x, float y, float width, float height)
ConcurrentRegionQuadTree
with a specified minimum
quad size, element limit and watermarkminimumQuadWidth
- The minimum width of quads. Quads will not subdivide smaller
than this width.minimumQuadHeight
- The minimum height of quads. Quads will not subdivide smaller
than this height.elementLimitPerQuad
- The maximum number of elements in a quad before it is split
into 4 child ConcurrentRegionQuadTree
smergeWatermark
- When a parent ConcurrentRegionQuadTree
's total elements
go lower than this mark, the child
ConcurrentRegionQuadTree
s will be merged back togetherx
- The x coordinate of the ConcurrentRegionQuadTree
y
- The y coordiante of the ConcurrentRegionQuadTree
width
- The width of the ConcurrentRegionQuadTree
height
- The height of the ConcurrentRegionQuadTree
public void debugRender(Graphics g)
debugRender
in interface QuadTree<T extends CollisionShape>
debugRender
in class ConcurrentPointQuadTree<T extends CollisionShape>
public void addAll(java.util.List<T> elements)
addAll
in interface QuadTree<T extends CollisionShape>
addAll
in class ConcurrentPointQuadTree<T extends CollisionShape>
public boolean add(T element)
add
in interface QuadTree<T extends CollisionShape>
add
in class ConcurrentPointQuadTree<T extends CollisionShape>
protected boolean addElement(T element)
addElement
in class ConcurrentPointQuadTree<T extends CollisionShape>
protected boolean addElementToChild(T element)
addElementToChild
in class ConcurrentPointQuadTree<T extends CollisionShape>
protected void subdivide()
subdivide
in class ConcurrentPointQuadTree<T extends CollisionShape>
public void removeAll(java.util.List<T> elementsToRemove)
removeAll
in interface QuadTree<T extends CollisionShape>
removeAll
in class ConcurrentPointQuadTree<T extends CollisionShape>
public boolean remove(T element)
remove
in interface QuadTree<T extends CollisionShape>
remove
in class ConcurrentPointQuadTree<T extends CollisionShape>
protected boolean removeElement(T element, boolean topDownInvocation)
removeElement
in class ConcurrentPointQuadTree<T extends CollisionShape>
public java.util.List<T> getElementsWithinArea(Shape area)
getElementsWithinArea
in interface QuadTree<T extends CollisionShape>
getElementsWithinArea
in class ConcurrentPointQuadTree<T extends CollisionShape>
public void getElementsWithinArea(java.util.Collection<T> result, Shape area)
getElementsWithinArea
in interface QuadTree<T extends CollisionShape>
getElementsWithinArea
in class ConcurrentPointQuadTree<T extends CollisionShape>
public java.util.List<T> getElementsContainingPoint(Point point)
getElementsContainingPoint
in interface QuadTree<T extends CollisionShape>
getElementsContainingPoint
in class ConcurrentPointQuadTree<T extends CollisionShape>
public void getElementsContainingPoint(java.util.Collection<T> result, Point point)
getElementsContainingPoint
in interface QuadTree<T extends CollisionShape>
getElementsContainingPoint
in class ConcurrentPointQuadTree<T extends CollisionShape>
public java.util.List<T> getElementsIntersectingLineSegment(LineSegment lineSegment)
getElementsIntersectingLineSegment
in interface QuadTree<T extends CollisionShape>
getElementsIntersectingLineSegment
in class ConcurrentPointQuadTree<T extends CollisionShape>
public void getElementsIntersectingLineSegment(java.util.Collection<T> result, LineSegment lineSegment)
getElementsIntersectingLineSegment
in interface QuadTree<T extends CollisionShape>
getElementsIntersectingLineSegment
in class ConcurrentPointQuadTree<T extends CollisionShape>
public java.util.List<T> getElements()
getElements
in interface QuadTree<T extends CollisionShape>
getElements
in class ConcurrentPointQuadTree<T extends CollisionShape>
public void getElements(java.util.List<T> result)
getElements
in interface QuadTree<T extends CollisionShape>
getElements
in class ConcurrentPointQuadTree<T extends CollisionShape>
public int getTotalElements()
getTotalElements
in interface QuadTree<T extends CollisionShape>
getTotalElements
in class ConcurrentPointQuadTree<T extends CollisionShape>
public void positionChanged(T moved)
positionChanged
in interface PositionChangeListener<T extends CollisionShape>
positionChanged
in class ConcurrentPointQuadTree<T extends CollisionShape>