[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view View.java, 1.154, 1.155
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-09-29 12:09:54
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv8033/src/net/sourceforge/bprocessor/gl/view Modified Files: View.java Log Message: Improved hit-detection of transformed entities. Index: View.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/View.java,v retrieving revision 1.154 retrieving revision 1.155 diff -C2 -d -r1.154 -r1.155 *** View.java 28 Sep 2006 06:09:14 -0000 1.154 --- View.java 29 Sep 2006 12:09:50 -0000 1.155 *************** *** 886,890 **** Object o = iter.next(); if (o instanceof Surface) { ! drawObject(o); } } --- 886,890 ---- Object o = iter.next(); if (o instanceof Surface) { ! drawGeometric((Geometric) o); } } *************** *** 910,914 **** Object o = highlightIter.next(); if (!(o instanceof Surface)) { ! drawObject(o); } } --- 910,914 ---- Object o = highlightIter.next(); if (!(o instanceof Surface)) { ! drawGeometric((Geometric) o); } } *************** *** 919,931 **** Iterator it = tempVertices.iterator(); while (it.hasNext()) { ! drawObject(it.next()); } } // draw target ! if (target != null) { gl.glColor3fv(targetColor); gl.glLineWidth(1.5f); ! drawObject(target); } --- 919,931 ---- Iterator it = tempVertices.iterator(); while (it.hasNext()) { ! drawGeometric((Geometric) it.next()); } } // draw target ! if (target != null && target instanceof Geometric) { gl.glColor3fv(targetColor); gl.glLineWidth(1.5f); ! drawGeometric((Geometric) target); } *************** *** 940,944 **** Iterator it = onTopEntities.iterator(); while (it.hasNext()) { ! drawObject(it.next()); } } --- 940,944 ---- Iterator it = onTopEntities.iterator(); while (it.hasNext()) { ! drawGeometric((Geometric) it.next()); } } *************** *** 998,1005 **** */ private void transformTo(Space space) { ! if (space.getOwner() != null) { transformTo(space.getOwner()); } - transform(space.getTransformations()); } --- 998,1005 ---- */ private void transformTo(Space space) { ! if (space != null) { transformTo(space.getOwner()); + transform(space.getTransformations()); } } *************** *** 1098,1101 **** --- 1098,1112 ---- } + /** + * Transform the the geometrics coordinate system before + * drawing. + * @param geometric Geometric + */ + private void drawGeometric(Geometric geometric) { + gl.glPushMatrix(); + transformTo(geometric.getOwner()); + drawObject(geometric); + gl.glPopMatrix(); + } /** *************** *** 1912,1939 **** --- 1923,1977 ---- if (selectMode == VERTICES || selectMode == ALL) { Iterator iter = vertices.iterator(); + gl.glPushMatrix(); + Space owner = null; while (iter.hasNext()) { Vertex v = (Vertex)iter.next(); pushName(gl, v); + if (v.getOwner() != owner) { + gl.glPopMatrix(); + gl.glPushMatrix(); + owner = v.getOwner(); + transformTo(owner); + } drawVertexHit(v); popName(gl); } + gl.glPopMatrix(); } if (selectMode == EDGES || selectMode == ALL) { Iterator iter = edges.iterator(); + gl.glPushMatrix(); + Space owner = null; while (iter.hasNext()) { Edge e = (Edge)iter.next(); pushName(gl, e); + if (e.getOwner() != owner) { + gl.glPopMatrix(); + gl.glPushMatrix(); + owner = e.getOwner(); + transformTo(owner); + } drawEdge(e); popName(gl); } + gl.glPopMatrix(); } if (selectMode == SURFACES || selectMode == ALL) { Iterator it = surfaces.iterator(); + gl.glPushMatrix(); + Space owner = null; while (it.hasNext()) { Surface s = (Surface)it.next(); pushName(gl, s); + if (s.getOwner() != owner) { + gl.glPopMatrix(); + gl.glPushMatrix(); + owner = s.getOwner(); + transformTo(owner); + } drawSurface(s); popName(gl); } + gl.glPopMatrix(); } { *************** *** 1966,1972 **** --- 2004,2019 ---- all.addAll(tempConstructors); Iterator iter = all.iterator(); + Space owner = null; + gl.glPushMatrix(); while (iter.hasNext()) { Constructor current = (Constructor) iter.next(); + if (!excluded.contains(current)) { + if (current.getOwner() != owner) { + gl.glPopMatrix(); + gl.glPushMatrix(); + owner = current.getOwner(); + transformTo(owner); + } if (camera.getType() == Camera.PERSPECTIVE) { dist = (current.getOrigin().minus(v)).length() * scale; *************** *** 2029,2032 **** --- 2076,2080 ---- } } + gl.glPopMatrix(); } } |