childrenLoaded = true;
}
-
+
+void Leaf::addPolyLine(PolyLineRef aLine)
+{
+ lines.push_back(aLine);
+}
+
+void Leaf::visitForLines(const SGVec3d& aPos, double aCutoff,
+ PolyLineList& aLines,
+ FindLinesDeque& aQ) const
+{
+ aLines.insert(aLines.end(), lines.begin(), lines.end());
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
Branch::Branch(const SGBoxd& aBox, int64_t aIdent) :
Node(aBox, aIdent),
childrenLoaded(false)
aQ.push(Ordered<Node*>(children[i], d));
} // of child iteration
}
+
+void Branch::visitForLines(const SGVec3d& aPos, double aCutoff,
+ PolyLineList& aLines,
+ FindLinesDeque& aQ) const
+{
+ for (unsigned int i=0; i<8; ++i) {
+ if (!children[i]) {
+ continue;
+ }
+
+ double d = children[i]->distToNearest(aPos);
+ if (d > aCutoff) {
+ continue; // exceeded cutoff
+ }
+
+ aQ.push_back(children[i]);
+ } // of child iteration
+}
Node* Branch::childForPos(const SGVec3d& aCart) const
{
return result;
}
-bool findNearestN(const SGVec3d& aPos, unsigned int aN, double aCutoffM, FGPositioned::Filter* aFilter, FGPositioned::List& aResults, int aCutoffMsec)
+bool findNearestN(const SGVec3d& aPos, unsigned int aN, double aCutoffM, FGPositioned::Filter* aFilter, FGPositionedList& aResults, int aCutoffMsec)
{
aResults.clear();
FindNearestPQueue pq;
return !pq.empty();
}
-bool findAllWithinRange(const SGVec3d& aPos, double aRangeM, FGPositioned::Filter* aFilter, FGPositioned::List& aResults, int aCutoffMsec)
+bool findAllWithinRange(const SGVec3d& aPos, double aRangeM, FGPositioned::Filter* aFilter, FGPositionedList& aResults, int aCutoffMsec)
{
aResults.clear();
FindNearestPQueue pq;