From 89b25e7cc97f6fe221dfd41c4d463500f8a31bc1 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 25 Jun 2019 23:58:09 -0400
Subject: [PATCH] Edit panel pin state.

---
 Merge.java |   82 +++++++++++++++++++++++------------------
 1 files changed, 46 insertions(+), 36 deletions(-)

diff --git a/Merge.java b/Merge.java
index be363c1..03408c4 100644
--- a/Merge.java
+++ b/Merge.java
@@ -134,6 +134,7 @@
     transient cVector maxima = new cVector();
 
 //    ObjectArrayList<Transform> initialmatrices;
+    transient boolean rendered = false;
 
     void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ??
     {
@@ -153,6 +154,8 @@
             {
                 e.printStackTrace();
             }
+            
+            rendered = true;
         }
         
         super.DrawNode(display, root, selected);
@@ -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>();
@@ -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