From 767be784dc7fe293bf5c5ee6507df242526be3ed Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 24 Sep 2019 02:10:06 -0400
Subject: [PATCH] Rag doll is back.

---
 Box.java |   75 +++++++++++++++++++++++++++++--------
 1 files changed, 58 insertions(+), 17 deletions(-)

diff --git a/Box.java b/Box.java
index 04886dd..75353f5 100644
--- a/Box.java
+++ b/Box.java
@@ -1,6 +1,9 @@
 public class Box extends Object3D implements java.io.Serializable
 {
+    static final long serialVersionUID = 0;
 
+    boolean open;
+    
     Box()
     {
         inPnt = new cVector();
@@ -8,9 +11,6 @@
         minima = LA.newVector(-0.5, 0, -0.5);
         maxima = LA.newVector(0.5, 1, 0.5);
 		bRep = new BoundaryRep();
-        bRep.redimension(8, 12);
-        for (int i=0; i < 12; i++)
-            bRep.setFace(i, faces[i]);
 
         recalculate();
         CreateMaterial();
@@ -23,14 +23,14 @@
         return rec;
     }
 
-    protected void deepCopySelf(Object3D other)
+    protected void deepCopyNode(Object3D other)
     {
-        super.deepCopySelf(other);
-        Box rec = (Box)other;
-        rec.minima = new cVector();
-        LA.vecCopy(minima, rec.minima);
-        rec.maxima = new cVector();
-        LA.vecCopy(maxima, rec.maxima);
+        super.deepCopyNode(other);
+//        Box rec = (Box)other;
+//        rec.minima = new cVector();
+//        LA.vecCopy(minima, rec.minima);
+//        rec.maxima = new cVector();
+//        LA.vecCopy(maxima, rec.maxima);
     }
 
     void createEditWindow(GroupEditor callee, boolean newWindow)
@@ -38,12 +38,12 @@
         //editWindow = new BoxEditor(this, deepCopy(), callee);
         /**/
 		if (newWindow)
-			objectUI = new ObjEditor(this, deepCopy(), callee);
+			objectUI = new BoxEditor(this, deepCopy(), callee);
 		else
-			objectUI = new ObjEditor(this, callee);
+			objectUI = new BoxEditor(this, callee);
         editWindow = objectUI.GetEditor();
-	if (!newWindow)
-            ((ObjEditor)objectUI).SetupUI2(callee);
+//	if (!newWindow)
+//            ((ObjEditor)objectUI).SetupUI2(callee);
          /**/
     }
 
@@ -63,6 +63,19 @@
 
     void recalculate()
     {
+        if (open)
+        {
+            bRep.redimension(8, 8);
+            for (int i=0; i < 8; i++)
+                bRep.setFace(i, facesopen[i]);
+        }
+        else
+        {
+            bRep.redimension(8, 12);
+            for (int i=0; i < 12; i++)
+                bRep.setFace(i, faces[i]);
+        }
+
         for (int i=0; i < 8; i++)
         {
             double x = i >= 4 ? maxima.x : minima.x;
@@ -70,7 +83,7 @@
             double z = i % 2 != 0 ? maxima.z : minima.z;
             bRep.setVertex(i, x, y, z, umap[i], vmap[i]);
         }
-
+            
 //		bRep.Trim(false, false);
 		
 		super.recalculate();
@@ -105,10 +118,10 @@
     cVector minima;
     cVector maxima;
     static float umap[] = {
-        0, 1, 0, 1, 1, 0, 1, 0
+        0, 1, 0, 1, 1, 0, 1, 0,
     };
     static float vmap[] = {
-        0, 0, 1, 1, 1, 1, 0, 0
+        1, 1, 0, 0, 1, 1, 0, 0,
     };
     static int faces[][] = {
         {
@@ -138,5 +151,33 @@
         }
     };
 
+    static int facesopen[][] = {
+        {
+            0, 1, 3
+        }, {
+            0, 3, 2
+        }, {
+//            2, 3, 7
+//        }, {
+//            2, 7, 6
+//        }, {
+            1, 5, 7
+        }, {
+            1, 7, 3
+        }, {
+            4, 6, 7
+        }, {
+            4, 7, 5
+        }, {
+//            0, 4, 5
+//        }, {
+//            0, 5, 1
+//        }, {
+            0, 2, 6
+        }, {
+            0, 6, 4
+        }
+    };
+    
     protected cVector inPnt;
 }

--
Gitblit v1.6.2