From bc829f47837b5a001f911542140b0b8e63c2bb0c Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 14 Jul 2019 19:47:03 -0400 Subject: [PATCH] Fix extract big data. --- Object3D.java | 129 +++++++++++++++++++++++++++++++++--------- 1 files changed, 101 insertions(+), 28 deletions(-) diff --git a/Object3D.java b/Object3D.java index 7b52765..750acd4 100644 --- a/Object3D.java +++ b/Object3D.java @@ -24,9 +24,9 @@ private UUID uuid = UUID.randomUUID(); - // TEMPORARY for mocap undo - mocap.reader.BVHReader.BVHResult bvh; - Object3D skeleton; + // TEMPORARY for mocap undo. No need to be transient. + mocap.reader.BVHReader.BVHResult savebvh; + Object3D saveskeleton; // ScriptNode scriptnode; @@ -170,24 +170,35 @@ void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) { + Object3D o; + if (hashtable.containsKey(GetUUID())) { - Object3D o = hashtable.get(GetUUID()); + o = hashtable.get(GetUUID()); Grafreed.Assert(this.bRep == o.bRep); - if (this.bRep != null) - assert(this.bRep.support == o.transientrep); + //if (this.bRep != null) + // assert(this.bRep.support == o.transientrep); + if (this.support != null) + assert(this.support.bRep == o.transientrep); + } + else + { + o = new Object3D("copy of " + this.name); - return; + hashtable.put(GetUUID(), o); } - Object3D o = new Object3D(); - - hashtable.put(GetUUID(), o); - - for (int i=0; i<Size(); i++) + if (!blockloop) { - get(i).ExtractBigData(hashtable); + blockloop = true; + + for (int i=0; i<Size(); i++) + { + get(i).ExtractBigData(hashtable); + } + + blockloop = false; } ExtractBigData(o); @@ -195,11 +206,23 @@ void ExtractBigData(Object3D o) { + if (o.bRep != null) + Grafreed.Assert(o.bRep == this.bRep); + o.bRep = this.bRep; - if (this.bRep != null) +// July 2019 if (this.bRep != null) +// { +// o.transientrep = this.bRep.support; +// o.bRep.support = null; +// } + + if (this.support != null) { - o.transientrep = this.bRep.support; - o.bRep.support = null; + if (o.transientrep != null) + Grafreed.Assert(o.transientrep == this.support.bRep); + + o.transientrep = this.support.bRep; + this.support.bRep = null; } // o.support = this.support; @@ -223,19 +246,30 @@ RestoreBigData(o); - hashtable.remove(GetUUID()); + if (blockloop) + return; + + blockloop = true; + + //hashtable.remove(GetUUID()); for (int i=0; i<Size(); i++) { get(i).RestoreBigData(hashtable); } + + blockloop = false; } void RestoreBigData(Object3D o) { this.bRep = o.bRep; - if (this.bRep != null) - this.bRep.support = o.transientrep; + if (this.support != null && o.transientrep != null) + { + this.support.bRep = o.transientrep; + } +// July 2019 if (this.bRep != null) +// this.bRep.support = o.transientrep; // this.support = o.support; // this.fileparent = o.fileparent; } @@ -881,7 +915,7 @@ if (marked && Globals.isLIVE() && live && //TEMP21aug2018 - (Globals.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW) && + (Globals.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW || !Globals.COMPUTESHADOWWHENLIVE) && currentframe != Globals.framecount) { currentframe = Globals.framecount; @@ -966,6 +1000,7 @@ if (material == null || material.multiply) return true; + // Transparent objects are dynamic because we have to sort the triangles. return material.opacity > 0.99; } @@ -1366,6 +1401,7 @@ toParent = LA.newMatrix(); fromParent = LA.newMatrix(); } + LA.matCopy(other.toParent, toParent); LA.matCopy(other.fromParent, fromParent); @@ -2387,6 +2423,10 @@ } */ } + else + { + //((ObjEditor)editWindow).SetupUI2(null); + } } void createEditWindow(GroupEditor callee, boolean newWindow) //, boolean root) @@ -2428,6 +2468,14 @@ { editWindow.refreshContents(); } + else + { + if (manipWindow != null) + { + manipWindow.refreshContents(); + } + } + //if (parent != null) //parent.refreshEditWindow(); } @@ -4958,6 +5006,14 @@ } } + ObjEditor GetWindow() + { + if (editWindow != null) + return editWindow; + + return manipWindow; + } + cTreePath Select(int indexcount, boolean deselect) { if (hide || dontselect) @@ -4994,10 +5050,11 @@ if (leaf != null) { cTreePath tp = new cTreePath(this, leaf); - if (editWindow != null) + ObjEditor window = GetWindow(); + if (window != null) { //System.out.println("editWindow = " + editWindow + " vs " + this); - editWindow.Select(tp, deselect, true); + window.Select(tp, deselect, true); } return tp; @@ -5014,6 +5071,7 @@ if (child == null) continue; + if (child.HasTransparency() && child.size() != 0) { cTreePath leaf = child.Select(indexcount, deselect); @@ -5023,9 +5081,10 @@ if (leaf != null) { cTreePath tp = new cTreePath(this, leaf); - if (editWindow != null) + ObjEditor window = GetWindow(); + if (window != null) { - editWindow.Select(tp, deselect, true); + window.Select(tp, deselect, true); } return tp; @@ -5746,7 +5805,7 @@ support = support; //boolean usecalllists = IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null || !link2master); // !(this instanceof cSpring) && !(this instanceof BezierPatch); - boolean usecalllists = IsLive(); // IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null) && !link2master; // !(this instanceof cSpring) && !(this instanceof BezierPatch); + boolean usecalllists = !IsLive(); // IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null) && !link2master; // !(this instanceof cSpring) && !(this instanceof BezierPatch); if (!usecalllists && bRep != null && bRep.displaylist > 0) { @@ -5767,7 +5826,7 @@ if (!selectmode && //display.DrawMode() != display.SELECTION && //(touched || (bRep != null && bRep.displaylist <= 0))) - (Globals.isLIVE() || touched && (bRep != null && bRep.displaylist <= 0))) + (Globals.isLIVE() && Globals.COMPUTESHADOWWHENLIVE || touched && Globals.COMPUTESHADOWWHENLIVE)) // || (bRep != null && bRep.displaylist <= 0))) { Globals.lighttouched = true; } // all panes... @@ -5899,6 +5958,7 @@ if (GetBRep() != null) { display.NextIndex(); + // vertex color conflict : gl.glCallList(list); DrawNode(display, root, selected); if (this instanceof BezierPatch) @@ -6359,6 +6419,11 @@ // dec 2012 new Exception().printStackTrace(); return; + } + + if (dontselect) + { + //bRep.GenerateNormalsMINE(); } display.DrawGeometry(bRep, flipV, selectmode); @@ -7251,8 +7316,8 @@ // { // CameraPane.Ymax = spoth; // } - info.g.drawArc(boundary.x, boundary.y, - boundary.width, boundary.height, 0, 360); + info.g.drawArc(boundary.x + info.DX, boundary.y + info.DY, + (int)(boundary.width * info.W), (int)(boundary.height * info.W), 0, 360); //info.g.drawArc(spot.x, spotw, spot.width/2, boundary.height/2, 0, 360); // if (CameraPane.Xmin > boundary.x) // { @@ -7796,6 +7861,10 @@ editWindow = null; } // ? } + else + { + //editWindow.closeUI(); + } } boolean root; // patch for edit windows @@ -7953,6 +8022,10 @@ } transient ObjEditor editWindow; + transient ObjEditor manipWindow; + + transient boolean pinned; + transient ObjectUI objectUI; public static int povDepth = 0; private static cVector tbMin = new cVector(); -- Gitblit v1.6.2