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) {
|