- Matrix projection = Matrix.getProjectionMatrix(gl);
- double dist = Double.MAX_VALUE;
- if (getMouseClick() != null) return;
- closest = null;
- for(Mesh mesh : meshes)
- if (mesh.option_selectable)
- for(Mesh.Vertex v : mesh.vertices()) {
- if (!v.visible) continue;
- Point p = projection.times(v.getPoint());
- int x = (int)p.x;
- int y = (int)p.y;
- int mousex = (int)getMouse().x;
- int mousey = (int)getMouse().y;
- if (closest==null || (x-mousex)*(x-mousex)+(y-mousey)*(y-mousey) < dist) {
- dist = (x-mousex)*(x-mousex)+(y-mousey)*(y-mousey);
- closest = v;
+ if (updateVisibilities) {
+ updateVisibilities = false;
+ // update vertex visibilities
+ updateVisibility(gl);
+
+ //Matrix projection = Matrix.getProjectionMatrix(gl);
+ double dist = Double.MAX_VALUE;
+ closest = null;
+ for(Mesh mesh : meshes)
+ if (mesh.option_selectable)
+ for(Mesh.Vertex v : mesh.vertices()) {
+ if (!v.visible) continue;
+ Point p = projection.times(v.getPoint());
+ int x = (int)p.x;
+ int y = (int)p.y;
+ int mousex = (int)getMouse().x;
+ int mousey = (int)getMouse().y;
+ if (closest==null || (x-mousex)*(x-mousex)+(y-mousey)*(y-mousey) < dist) {
+ dist = (x-mousex)*(x-mousex)+(y-mousey)*(y-mousey);
+ closest = v;
+ }