node-red-contrib-tak-registration
Version:
A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK
36 lines (35 loc) • 1.14 kB
JavaScript
import hasInterface from '../../../../../hasInterface'
import Collection from '../../../../../java/util/Collection'
import QuadEdgeTriangle from './QuadEdgeTriangle'
import LinkedList from '../../../../../java/util/LinkedList'
export default class EdgeConnectedTriangleTraversal {
constructor() {
EdgeConnectedTriangleTraversal.constructor_.apply(this, arguments)
}
static constructor_() {
this._triQueue = new LinkedList()
}
init() {
if (arguments[0] instanceof QuadEdgeTriangle) {
const tri = arguments[0]
this._triQueue.addLast(tri)
} else if (hasInterface(arguments[0], Collection)) {
const tris = arguments[0]
this._triQueue.addAll(tris)
}
}
process(currTri, visitor) {
currTri.getNeighbours()
for (let i = 0; i < 3; i++) {
const neighTri = currTri.getEdge(i).sym().getData()
if (neighTri === null) continue
if (visitor.visit(currTri, i, neighTri)) this._triQueue.addLast(neighTri)
}
}
visitAll(visitor) {
while (!this._triQueue.isEmpty()) {
const tri = this._triQueue.removeFirst()
this.process(tri, visitor)
}
}
}