import java.util.List;
import java.util.Set;
+import org.simantics.db.Resource;
import org.simantics.db.Session;
import org.simantics.g3d.csg.scenegraph2.CSGrootNode;
import org.simantics.g3d.csg.scenegraph2.ICSGnode;
+import org.simantics.g3d.scenegraph.base.INode;
import org.simantics.g3d.scenegraph.base.ParentNode;
import org.simantics.g3d.vtk.awt.InteractiveVtkPanel;
import org.simantics.g3d.vtk.common.AbstractVTKNodeMap;
import vtk.vtkProp;
import vtk.vtkProp3D;
-public class CSGNodeMap extends AbstractVTKNodeMap<ICSGnode> {
+public class CSGNodeMap extends AbstractVTKNodeMap<Resource,ICSGnode> {
-
-
- public CSGNodeMap(Session session, IMapping mapping, InteractiveVtkPanel panel, CSGrootNode rootNode) {
+ public CSGNodeMap(Session session, IMapping<Resource,INode> mapping, InteractiveVtkPanel panel, CSGrootNode rootNode) {
super(session, mapping, panel, rootNode);
rootNode.setNodeMap(this);
}
view.lock();
node.visualize(view);
-
- for (vtkProp3D act : node.getActors()) {
- nodeToActor.add(node, act);
- actorToNode.put(act, node);
- }
+
+ map(node, node.getActors());
view.unlock();
private boolean hasActor(ICSGnode node) {
- List<vtkProp> list = nodeToActor.getValues(node);
+ Collection<vtkProp> list = getRenderObjects(node);
if (list == null || list.size() == 0)
return false;
return true;
if (Thread.currentThread() != view.getThreadQueue().getThread())
throw new RuntimeException("Illegal thread.");
- List<vtkProp> list = nodeToActor.getValues(node);
- if (list != null) {
- for (vtkProp obj : list) {
- actorToNode.remove(obj);
- }
- nodeToActor.remove(node);
+ Collection<vtkProp> list = getRenderObjects(node);
+ if (list.size() > 0) {
+ removeMap(node);
view.lock();
-
node.stopVisualize();
-
view.unlock();
}
}