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