From cb37a129d1adb403019c96e798e86e2da9667f15 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sun, 17 Nov 2019 17:56:04 -0500
Subject: [PATCH] Maze

---
 Merge.java |  134 ++++++++++++++++++++++++--------------------
 1 files changed, 72 insertions(+), 62 deletions(-)

diff --git a/Merge.java b/Merge.java
index 1c276fb..4629155 100644
--- a/Merge.java
+++ b/Merge.java
@@ -126,7 +126,7 @@
         
         bRep = null;
         
-        if (link2master)
+        if (Link2Support())
             renderme(); // null);
     }
     
@@ -134,8 +134,9 @@
     transient cVector maxima = new cVector();
 
 //    ObjectArrayList<Transform> initialmatrices;
+    transient boolean rendered = false;
 
-    void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) // ??
+    void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ??
     {
         //if (support == null)
       //      System.err.println("DrawNode Merge # " + ((Mocap)object).frame);
@@ -143,7 +144,7 @@
         if (bRep == null && GetObject() != null)
             renderme(); // display); // only once
         
-        if (/*display.LIVE && live &&*/link2master) // && display.drawMode == display.SHADOW) // FUCK!!!
+        if (/*display.LIVE && live &&*/Link2Support()) // && display.drawMode == display.SHADOW) // SHADOW!!!
         {
             try
             {
@@ -153,6 +154,8 @@
             {
                 e.printStackTrace();
             }
+            
+            rendered = true;
         }
         
         super.DrawNode(display, root, selected);
@@ -160,27 +163,27 @@
         // debug stuff
         if (false) // bRep.averagepoints != null)
         {
-            javax.media.opengl.GL gl = display.GetGL();
-            
-            gl.glColor3f(1, 0, 0);
-            //gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, colorV, 0);
-            //gl.glMaterialfv(gl.GL_BACK, gl.GL_DIFFUSE, colorV, 0);
-
-            for (int i=0; i<NumGeometries(GetObject()); i++)
-            {
-                int i3 = i*3;
-                
-                float off = 0.005f;
-                
-                gl.glBegin(gl.GL_LINES);
-                gl.glVertex3d(bRep.averagepoints[i3]-off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]);
-                gl.glVertex3d(bRep.averagepoints[i3]+off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]);
-                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]-off, bRep.averagepoints[i3+2]);
-                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]+off, bRep.averagepoints[i3+2]);
-                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]-off);
-                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]+off);
-                gl.glEnd();
-            }
+//            javax.media.opengl.GL gl = display.GetGL();
+//            
+//            gl.glColor3f(1, 0, 0);
+//            //gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, colorV, 0);
+//            //gl.glMaterialfv(gl.GL_BACK, gl.GL_DIFFUSE, colorV, 0);
+//
+//            for (int i=0; i<NumGeometries(GetObject()); i++)
+//            {
+//                int i3 = i*3;
+//                
+//                float off = 0.005f;
+//                
+//                gl.glBegin(gl.GL_LINES);
+//                gl.glVertex3d(bRep.averagepoints[i3]-off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]);
+//                gl.glVertex3d(bRep.averagepoints[i3]+off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]);
+//                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]-off, bRep.averagepoints[i3+2]);
+//                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]+off, bRep.averagepoints[i3+2]);
+//                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]-off);
+//                gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]+off);
+//                gl.glEnd();
+//            }
         }
     }
 
@@ -192,7 +195,7 @@
         try
         {
             //font = FontRender.createFont("Dialog", 11, false, true);
-            font = new FontRender.GLFont(gl, GrafreeD.class.getResourceAsStream("DejaVu_Sans_11.fnt"));
+            font = new FontRender.GLFont(gl, Grafreed.class.getResourceAsStream("DejaVu_Sans_11.fnt"));
         } catch (java.io.IOException e)
         {
             e.printStackTrace();
@@ -260,7 +263,8 @@
             bRep.startvertices = new int[NumGeometries(GetObject()) + 1];
             bRep.averagepoints = new float[(bRep.startvertices.length-1) * 3];
             bRep.extremepoints = new float[(bRep.startvertices.length-1) * 3];
-            bRep.supportsizes = new float[(bRep.startvertices.length-1)];
+            bRep.supportminsize = new float[(bRep.startvertices.length-1)];
+            bRep.supportmaxsize = new float[(bRep.startvertices.length-1)];
             buildrep = true;
 
          //   initialmatrices = new ObjectArrayList<Transform>();
@@ -396,9 +400,9 @@
 
     }
     
-    public void drawCube(CameraPane display, float extent)
+    public void drawCube(iCameraPane display, float extent)
     {
-        GL gl = display.getGL();
+        GL gl = display.GetGL0();
 
         extent = extent * 0.5f;
 
@@ -686,11 +690,12 @@
                                 }
                                 else
                                 {
-                                    if (bRep.averagepoints == null || bRep.extremepoints == null || bRep.supportsizes == null)
+                                    if (bRep.averagepoints == null || bRep.extremepoints == null || bRep.supportminsize == null || bRep.supportmaxsize == null)
                                     {
                                         bRep.averagepoints = new float[(bRep.startvertices.length-1) * 3];
                                         bRep.extremepoints = new float[(bRep.startvertices.length-1) * 3];
-                                        bRep.supportsizes = new float[(bRep.startvertices.length-1)];
+                                        bRep.supportminsize = new float[(bRep.startvertices.length-1)];
+                                        bRep.supportmaxsize = new float[(bRep.startvertices.length-1)];
                                     }
                                     
                                     float averagex = 0;
@@ -731,42 +736,47 @@
                                         v.norm.normalize();
                                     }
                                     
-                                    int index3 = currentobject-1;
-                                    index3 *= 3;
-                                    
-                                    bRep.averagepoints[index3] = averagex/count;
-                                    bRep.averagepoints[index3+1] = averagey/count;
-                                    bRep.averagepoints[index3+2] = averagez/count;
-
-                                    double mindist2 = 1E10f;
-                                    double maxdist2 = -1E10f;
-                                    
-                                    for (int i=bRep.startvertices[currentobject-1]; i<bRep.startvertices[currentobject]; i++)
+                                    if (!rendered)
                                     {
-                                        Vertex v = bRep.GetVertex(i);
-                                        
-                                        double x = v.x - bRep.averagepoints[index3];
-                                        double y = v.y - bRep.averagepoints[index3+1];
-                                        double z = v.z - bRep.averagepoints[index3+2];
-                                        
-                                        double dist2 = x*x + y*y + z*z;
-                                        
-                                        if (mindist2 > dist2)
-                                            mindist2 = dist2;
-                                        if (maxdist2 < dist2)
+                                        int index3 = currentobject-1;
+                                        index3 *= 3;
+
+                                        bRep.averagepoints[index3] = averagex/count;
+                                        bRep.averagepoints[index3+1] = averagey/count;
+                                        bRep.averagepoints[index3+2] = averagez/count;
+
+                                        double mindist2 = 1E10f;
+                                        double maxdist2 = -1E10f;
+
+                                        for (int i=bRep.startvertices[currentobject-1]; i<bRep.startvertices[currentobject]; i++)
                                         {
-                                            maxdist2 = dist2;
-                                            bRep.extremepoints[index3] = (float)v.x;
-                                            bRep.extremepoints[index3+1] = (float)v.y;
-                                            bRep.extremepoints[index3+2] = (float)v.z;
+                                            Vertex v = bRep.GetVertex(i);
+
+                                            double x = v.x - bRep.averagepoints[index3];
+                                            double y = v.y - bRep.averagepoints[index3+1];
+                                            double z = v.z - bRep.averagepoints[index3+2];
+
+                                            double dist2 = x*x + y*y + z*z;
+
+                                            if (mindist2 > dist2)
+                                                mindist2 = dist2;
+
+                                            if (maxdist2 < dist2)
+                                            {
+                                                maxdist2 = dist2;
+                                                bRep.extremepoints[index3] = (float)v.x;
+                                                bRep.extremepoints[index3+1] = (float)v.y;
+                                                bRep.extremepoints[index3+2] = (float)v.z;
+                                            }
                                         }
+
+                                        bRep.supportminsize[currentobject-1] = (float)Math.sqrt(mindist2);
+                                        bRep.supportmaxsize[currentobject-1] = (float)Math.sqrt(maxdist2);
+    //                                    for (int i = 0; i < hull.numVertices(); i++)
+    //                                    {
+    //                                        
+    //                                    }
                                     }
-                                    
-                                    bRep.supportsizes[currentobject-1] = (float)Math.sqrt(mindist2);
-//                                    for (int i = 0; i < hull.numVertices(); i++)
-//                                    {
-//                                        
-//                                    }
                                 }
 
 //                                if (hull.numTriangles() > 0)

--
Gitblit v1.6.2