[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view View.java, 1.266, 1.267
Status: Pre-Alpha
Brought to you by:
henryml
From: rimestad <rim...@us...> - 2007-12-03 17:52:52
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv17546/src/net/sourceforge/bprocessor/gl/view Modified Files: View.java Log Message: Added geometry inference on instances... Do work for selection and such but screws move and others a bit up >:- Index: View.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/View.java,v retrieving revision 1.266 retrieving revision 1.267 diff -C2 -d -r1.266 -r1.267 *** View.java 2 Dec 2007 12:02:04 -0000 1.266 --- View.java 3 Dec 2007 17:52:55 -0000 1.267 *************** *** 1239,1245 **** } - /** * Process Selection * @param unWantedEntities Entities to be ignored * @param intersections Are intersections wanted --- 1239,1260 ---- } /** * Process Selection + * + * --- Selection buffer contains --- + * [0] number of names on names stack = n_0 + * [1] minimum z value + * [2] maximum z value + * [3] top of names stack + * . + * . + * . + * [n_0+2] bottom of names stack + * [n_0+3] number of names on names stack for this record = n_1 + * [n_0+4] minimum z value + * . + * . + * . + * * @param unWantedEntities Entities to be ignored * @param intersections Are intersections wanted *************** *** 1269,1278 **** Collection<Edge> edges = new HashSet<Edge>(); for (int i = 0; i < hits; i++) { names = selectBuffer.get(bufferOffset); if (names > 0) { ! bufferOffset++; ! long z1 = 0xFFFFFFFFL & selectBuffer.get(bufferOffset); ! long z2 = 0xFFFFFFFFL & selectBuffer.get(bufferOffset + 1); double near = (double) z1 / (double) zMax; double far = (double) z2 / (double) zMax; --- 1284,1294 ---- Collection<Edge> edges = new HashSet<Edge>(); + Space instance = null; + for (int i = 0; i < hits; i++) { names = selectBuffer.get(bufferOffset); if (names > 0) { ! long z1 = 0xFFFFFFFFL & selectBuffer.get(bufferOffset + 1); ! long z2 = 0xFFFFFFFFL & selectBuffer.get(bufferOffset + 2); double near = (double) z1 / (double) zMax; double far = (double) z2 / (double) zMax; *************** *** 1281,1287 **** bufferOffset += 2; ! int id = selectBuffer.get(bufferOffset); ! bufferOffset += names; Object current = getObject(id); --- 1297,1307 ---- bufferOffset += 2; ! ! if (names > 1) { ! instance = (Space)getObject(selectBuffer.get(bufferOffset + names - 1)); ! } ! int id = selectBuffer.get(bufferOffset + names); ! bufferOffset += names + 1; Object current = getObject(id); *************** *** 1408,1411 **** --- 1428,1434 ---- ray = transformation.unProject(ray); if (vertex != null) { + if (instance != null) { + vertex = instance.getInstanceAnchor().unTranslate(vertex); + } return new Intersection(vertex, Intersection.VERTEX, vertex); } else { *************** *** 1413,1416 **** --- 1436,1442 ---- return glo.intersection(ray); } else if (edge != null) { + if (instance != null) { + edge = instance.getInstanceAnchor().unTranslate(edge); + } if (!edge.getStrippled()) { Vertex m = edge.getFrom().add(edge.getTo()); *************** *** 1455,1458 **** --- 1481,1487 ---- { if (lastSurface != null) { + if (instance != null) { + lastSurface = instance.getInstanceAnchor().unTranslate(lastSurface); + } if (!unWantedEntities.contains(lastSurface)) { Plane plane = lastSurface.plane(); *************** *** 1479,1482 **** --- 1508,1514 ---- } else { if (surface != null) { + if (instance != null) { + surface = instance.getInstanceAnchor().unTranslate(surface); + } Plane plane = surface.plane(); for (Edge current : (Collection<Edge>) edges) { *************** *** 1511,1515 **** } } else { ! if (object != null) { return object; } else if (vertex != null) { --- 1543,1549 ---- } } else { ! if (instance != null && instance != Project.getInstance().getActiveSpace()) { ! return instance; ! } else if (object != null) { return object; } else if (vertex != null) { |