|
|||||||||
Atavism Version 2018.1 | AGIS API | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectatavism.server.engine.QuadTree<ElementType>
public class QuadTree<ElementType extends QuadTreeElement<ElementType>>
Nested Class Summary | |
---|---|
class |
QuadTree.NewsAndFrees
Instances of this class are used to accumulate news and frees of objects, from the point of view of perceivers, so that we can perform the new and free operations, which generate messages, without holding the top-level quad tree lock. |
Field Summary | |
---|---|
protected java.util.Set<FixedPerceiver<ElementType>> |
fixedPerceivers
|
protected static Logger |
log
|
QuadTree.NewsAndFrees |
spawningNewsAndFrees
|
Constructor Summary | |
---|---|
QuadTree(Geometry g)
|
|
QuadTree(Geometry g,
boolean supportsExtentBasedPerceiver)
|
|
QuadTree(Geometry g,
int hysteresis)
|
Method Summary | |
---|---|
QuadTreeNode<ElementType> |
addElement(ElementType elem)
|
protected QuadTreeNode<ElementType> |
addElementInternal(ElementType elem,
QuadTree.NewsAndFrees newsAndFrees)
|
java.lang.Integer |
addElementReturnCountForPerceiver(ElementType elem,
OID mobilePerceiverOid)
If the perceiverOid is non-null, the count returned is the count of the number of news plus number of frees for the perceiver as a result of adding elem to the quadtree; else null |
void |
addFixedPerceiver(FixedPerceiver<ElementType> perceiver)
|
protected QuadTreeNode<ElementType> |
addHelper(QuadTreeNode<ElementType> node,
ElementType elem,
Point loc,
QuadTree.NewsAndFrees newsAndFrees)
|
void |
addRegion(Region region)
|
protected void |
createQuadTree(Geometry g,
int hysteresis)
|
java.util.Collection<ElementType> |
getElementPerceivables(ElementType elem)
|
java.util.Set<ElementType> |
getElements(ElementType elem,
int radius)
|
java.util.Set<ElementType> |
getElements(Point loc,
int radius)
|
java.util.Set<ElementType> |
getElementsBetween(Point loc1,
Point loc2)
|
int |
getHysteresis()
|
Geometry |
getLocalGeometry()
|
java.util.concurrent.locks.Lock |
getLock()
|
int |
getMaxDepth()
|
int |
getMaxObjects()
|
java.util.List<Region> |
getRegionsContainingPoint(Point loc)
Entrypoint to get the regions containing the point - - needed now that we've done away with the RegionManager |
boolean |
getSupportsExtentBasedPerceiver()
|
void |
printTree()
|
boolean |
removeElement(ElementType elem)
|
protected boolean |
removeElementInternal(ElementType elem,
QuadTree.NewsAndFrees newsAndFrees)
|
java.lang.Integer |
removeElementReturnCountForPerceiver(ElementType elem,
OID mobilePerceiverOid)
If the perceiverOid is non-null, the count returned is the count of the number of news plus number of frees for the perceiver as a result of adding elem to the quadtree; else null |
void |
removeFixedPerceiver(FixedPerceiver<ElementType> perceiver)
|
void |
setHysteresis(int hysteresis)
|
void |
setLocalGeometry(Geometry g)
|
protected void |
setLocalGeometryHelper(QuadTreeNode<ElementType> node,
Geometry g,
QuadTree.NewsAndFrees newsAndFrees)
|
void |
setMaxDepth(int max)
|
void |
setMaxObjects(int max)
|
void |
updateElement(ElementType elem,
Point loc)
Moves elem to the right place in the quadtree if its position has changed. |
protected void |
updateElementInternal(ElementType elem,
Point loc,
QuadTree.NewsAndFrees newsAndFrees)
|
protected void |
updateElementPerceiversInternal(ElementType elem,
QuadTreeNode<ElementType> oldNode,
QuadTreeNode<ElementType> newNode,
QuadTree.NewsAndFrees newsAndFrees)
Notify all perceivers that can now see, or can no longer see the specified object (elem) |
protected void |
updatePerceiver(Perceiver<ElementType> perceiver)
|
protected void |
updatePerceiverHelper(java.util.Set<QuadTreeNode<ElementType>> nodeSet,
QuadTreeNode<ElementType> node,
Perceiver<ElementType> perceiver)
Adds all nodes to nodeSet in or under 'node' that the passed in perceiver overlaps with. |
protected void |
updatePerceiverInternal(Perceiver<ElementType> perceiver,
QuadTree.NewsAndFrees newsAndFrees)
Notify the object's perceiver about what they can see/not see. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public QuadTree.NewsAndFrees spawningNewsAndFrees
protected java.util.Set<FixedPerceiver<ElementType extends QuadTreeElement<ElementType>>> fixedPerceivers
protected static final Logger log
Constructor Detail |
---|
public QuadTree(Geometry g)
public QuadTree(Geometry g, int hysteresis)
public QuadTree(Geometry g, boolean supportsExtentBasedPerceiver)
Method Detail |
---|
protected void createQuadTree(Geometry g, int hysteresis)
public void printTree()
public java.util.Set<ElementType> getElements(Point loc, int radius)
public java.util.Set<ElementType> getElementsBetween(Point loc1, Point loc2)
public java.util.Set<ElementType> getElements(ElementType elem, int radius)
public Geometry getLocalGeometry()
public void addRegion(Region region)
public java.util.List<Region> getRegionsContainingPoint(Point loc)
public void setMaxObjects(int max)
public int getMaxObjects()
public void setMaxDepth(int max)
public int getMaxDepth()
public boolean getSupportsExtentBasedPerceiver()
public java.util.concurrent.locks.Lock getLock()
public int getHysteresis()
public void setHysteresis(int hysteresis)
public QuadTreeNode<ElementType> addElement(ElementType elem)
public java.lang.Integer addElementReturnCountForPerceiver(ElementType elem, OID mobilePerceiverOid)
public boolean removeElement(ElementType elem)
public java.lang.Integer removeElementReturnCountForPerceiver(ElementType elem, OID mobilePerceiverOid)
public void updateElement(ElementType elem, Point loc)
elem
- loc
- protected void updatePerceiver(Perceiver<ElementType> perceiver)
public void addFixedPerceiver(FixedPerceiver<ElementType> perceiver)
public void removeFixedPerceiver(FixedPerceiver<ElementType> perceiver)
public void setLocalGeometry(Geometry g)
public java.util.Collection<ElementType> getElementPerceivables(ElementType elem)
protected QuadTreeNode<ElementType> addElementInternal(ElementType elem, QuadTree.NewsAndFrees newsAndFrees)
protected QuadTreeNode<ElementType> addHelper(QuadTreeNode<ElementType> node, ElementType elem, Point loc, QuadTree.NewsAndFrees newsAndFrees)
protected boolean removeElementInternal(ElementType elem, QuadTree.NewsAndFrees newsAndFrees)
protected void updateElementInternal(ElementType elem, Point loc, QuadTree.NewsAndFrees newsAndFrees)
protected void updateElementPerceiversInternal(ElementType elem, QuadTreeNode<ElementType> oldNode, QuadTreeNode<ElementType> newNode, QuadTree.NewsAndFrees newsAndFrees)
elem:
- the element that is movingoldNode:
- the node the element has leftnewNode:
- the node the element has enterednewsAndFrees
- protected void updatePerceiverInternal(Perceiver<ElementType> perceiver, QuadTree.NewsAndFrees newsAndFrees)
perceiver
- newsAndFrees
- protected void updatePerceiverHelper(java.util.Set<QuadTreeNode<ElementType>> nodeSet, QuadTreeNode<ElementType> node, Perceiver<ElementType> perceiver)
nodeSet
- node
- perceiver
- protected void setLocalGeometryHelper(QuadTreeNode<ElementType> node, Geometry g, QuadTree.NewsAndFrees newsAndFrees)
|
Copyright © 2018 Dragonsan Studios Sp. z o.o. |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |