/** * Clears the meshes contained in this builder. */ public void clear() { meshBuilder.clear(); }
/** * Clears the meshes contained in this builder. */ public void clear() { meshBuilder.clear(); }
@Override public void run() { LineSegment3DMessage[] newMessage = intersectionsMessage.getAndSet(null); // Reset both clears by using only one pipe if (clearOcTree.getAndSet(false) | clear.getAndSet(false)) { meshAndMaterialToRender.set(new Pair<>(null, null)); return; } if (!enable.get()) return; uiMessager.submitStateRequestToModule(REAModuleAPI.RequestPlanarRegionsIntersections); if (newMessage == null) return; meshBuilder.clear(); for (LineSegment3DMessage intersection : newMessage) { Point3D32 start = intersection.getStart(); Point3D32 end = intersection.getEnd(); float lineWidth = 0.01f; meshBuilder.addLine(start, end, lineWidth); } meshAndMaterialToRender.set(new Pair<Mesh, Material>(meshBuilder.generateMesh(), material)); }
@Override public void run() { NormalOcTreeMessage newBufferState = bufferState.getAndSet(null); if (!showBuffer.get()) { if (hasClearedBufferGraphics) return; bufferMeshBuilder.clear(); meshAndMaterialToRender.set(new Pair<>(null, null)); hasClearedBufferGraphics = true; return; } uiMessager.submitStateRequestToModule(REAModuleAPI.RequestBuffer); bufferMeshBuilder.clear(); if (newBufferState == null) return; UIOcTree uiOcTree = new UIOcTree(newBufferState); for (UIOcTreeNode uiOcTreeNode : uiOcTree) { Point3D nodeCenter = new Point3D(uiOcTreeNode.getX(), uiOcTreeNode.getY(), uiOcTreeNode.getZ()); bufferMeshBuilder.addTetrahedron(NODE_SCALE * uiOcTreeNode.getSize(), nodeCenter); } meshAndMaterialToRender.set(new Pair<>(bufferMeshBuilder.generateMesh(), bufferMaterial)); hasClearedBufferGraphics = false; }