From b6efb029509980fd08ca4ebe28c89cf8d79fa46c Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Tue, 03 Sep 2019 21:25:24 -0400 Subject: [PATCH] deepCopyNode --- ObjEditor.java | 21 +- MorphNode.java | 4 Sphere.java | 4 BezierPatch.java | 4 Lathe.java | 4 BlobComponent.java | 4 FileObject.java | 4 TextureNode.java | 4 Klein.java | 4 ScriptNode.java | 4 Skybox.java | 4 FrameSelector.java | 4 Superellipsoid.java | 4 RandomNode.java | 21 +++ Blob.java | 4 Torus.java | 4 Cone.java | 4 SwitchNode.java | 4 Box.java | 4 Grid.java | 4 Biparam.java | 4 CSG.java | 4 Composite.java | 4 JpegLoader.java | 16 ++ RandomEditor.java | 9 + Attribute.java | 4 Object3D.java | 208 ++++++++++++++++++----------- Spline.java | 4 28 files changed, 229 insertions(+), 138 deletions(-) diff --git a/Attribute.java b/Attribute.java index 670dda4..5e115c3 100644 --- a/Attribute.java +++ b/Attribute.java @@ -22,9 +22,9 @@ return csg; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Attribute c = (Attribute) other; c.cleardepth = cleardepth; diff --git a/BezierPatch.java b/BezierPatch.java index 7686627..2b6e438 100644 --- a/BezierPatch.java +++ b/BezierPatch.java @@ -43,9 +43,9 @@ return l; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); BezierPatch bp = (BezierPatch)other; bp.depth = depth; int count = ctrlPnts.size(); diff --git a/Biparam.java b/Biparam.java index a6be6c3..51c6b3f 100644 --- a/Biparam.java +++ b/Biparam.java @@ -40,9 +40,9 @@ super.DrawNode(display, root, selected); } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Biparam bp = (Biparam)other; bp.uDivs = uDivs; bp.vDivs = vDivs; diff --git a/Blob.java b/Blob.java index 6a7cf90..69de286 100644 --- a/Blob.java +++ b/Blob.java @@ -21,9 +21,9 @@ return blob; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Blob b = (Blob)other; b.threshold = threshold; b.cellSize = cellSize; diff --git a/BlobComponent.java b/BlobComponent.java index dc3a512..f2cbc54 100644 --- a/BlobComponent.java +++ b/BlobComponent.java @@ -20,9 +20,9 @@ return comp; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); BlobComponent b = (BlobComponent)other; //b.center = new cVector(); //LA.vecCopy(center, b.center); diff --git a/Box.java b/Box.java index 8459450..75353f5 100644 --- a/Box.java +++ b/Box.java @@ -23,9 +23,9 @@ return rec; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); // Box rec = (Box)other; // rec.minima = new cVector(); // LA.vecCopy(minima, rec.minima); diff --git a/CSG.java b/CSG.java index cefd400..5a4e95c 100644 --- a/CSG.java +++ b/CSG.java @@ -31,9 +31,9 @@ return csg; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); CSG c = (CSG) other; c.csgType = csgType; c.genType = genType; diff --git a/Composite.java b/Composite.java index c4deff4..2b8dc5e 100644 --- a/Composite.java +++ b/Composite.java @@ -293,9 +293,9 @@ return compo; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); if (false) { diff --git a/Cone.java b/Cone.java index 571227c..1cd10db 100644 --- a/Cone.java +++ b/Cone.java @@ -86,9 +86,9 @@ return cone; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Cone c = (Cone)other; LA.vecCopy(base, c.base); c.baseRadius = baseRadius; diff --git a/FileObject.java b/FileObject.java index 0d614bf..e7042e6 100644 --- a/FileObject.java +++ b/FileObject.java @@ -101,9 +101,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); } // void Draw(CameraPane display, Object3D /*Composite*/ root, boolean selected) diff --git a/FrameSelector.java b/FrameSelector.java index d811fba..08538f9 100644 --- a/FrameSelector.java +++ b/FrameSelector.java @@ -47,9 +47,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); FrameSelector bp = (FrameSelector)other; // bp.frame = (int)(Math.random()*(getNumFrames() - mocap.offset)); } diff --git a/Grid.java b/Grid.java index f4023e6..97d7ca9 100644 --- a/Grid.java +++ b/Grid.java @@ -37,9 +37,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Grid e = (Grid)other; e.center = new cVector(); LA.vecCopy(center, e.center); diff --git a/JpegLoader.java b/JpegLoader.java new file mode 100644 index 0000000..8d7c2b5 --- /dev/null +++ b/JpegLoader.java @@ -0,0 +1,16 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +/** + * + * @author nbriere + */ +public class JpegLoader +{ + static java.awt.image.BufferedImage load(String name) + { + return new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage(); + } +} diff --git a/Klein.java b/Klein.java index 601ff95..2c4f0f3 100644 --- a/Klein.java +++ b/Klein.java @@ -74,9 +74,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Klein e = (Klein) other; if (center != null) { diff --git a/Lathe.java b/Lathe.java index e9dd881..be0cc73 100644 --- a/Lathe.java +++ b/Lathe.java @@ -22,9 +22,9 @@ return l; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Lathe l = (Lathe)other; l.spline = (Spline)spline.deepCopy(); } diff --git a/MorphNode.java b/MorphNode.java index 5d2224f..c67411a 100644 --- a/MorphNode.java +++ b/MorphNode.java @@ -107,9 +107,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); MorphNode bp = (MorphNode)other; bp.morphweights = (double[]) Grafreed.clone(morphweights); diff --git a/ObjEditor.java b/ObjEditor.java index 06f91f8..7f5ac09 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -24,6 +24,7 @@ matrix.Matrix; import grafeme.ui.*; +import org.xj3d.ui.swt.widgets.ImageLoader; class ObjEditor /*extends JFrame*/ implements iCallBack, ObjectUI, ActionListener, ChangeListener, @@ -141,7 +142,7 @@ try { // Much faster! - image = new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage(); + image = JpegLoader.load(name); } catch (Exception e) { @@ -4662,9 +4663,8 @@ changed.ExtractBigData(Grafreed.grafreed.universe.versiontable); changed.clear(); - - changed.skyboxname = obj.skyboxname; - changed.skyboxext = obj.skyboxext; + + obj.deepCopyNode(changed); for (int i=0; i<obj.Size(); i++) { @@ -4860,11 +4860,14 @@ void SetCameras() { - Camera neweye = (Camera)copy.GetObject(cameraView.cameras[0].GetUUID()); - Camera newlight = (Camera)copy.GetObject(cameraView.LightCamera().GetUUID()); - - cameraView.SetCamera(neweye); - cameraView.SetLight(newlight); + if (copy == Grafreed.grafreed.universe) + { + Camera neweye = (Camera)copy.GetObject(cameraView.cameras[0].GetUUID()); + Camera newlight = (Camera)copy.GetObject(cameraView.LightCamera().GetUUID()); + + cameraView.SetCamera(neweye); + cameraView.SetLight(newlight); + } } void ImportGFD() diff --git a/Object3D.java b/Object3D.java index 88267e2..864faeb 100644 --- a/Object3D.java +++ b/Object3D.java @@ -40,6 +40,78 @@ ScriptNode scriptnode; + void deepCopyNode(Object3D other) + { + other.skyboxname = skyboxname; + other.skyboxext = skyboxext; + + if (toParent != null) + { + other.toParent = LA.newMatrix(); + other.fromParent = LA.newMatrix(); + LA.matCopy(toParent, other.toParent); + LA.matCopy(fromParent, other.fromParent); + if (toParentMarked != null) + { + other.toParentMarked = LA.newMatrix(); + other.fromParentMarked = LA.newMatrix(); + LA.matCopy(toParentMarked, other.toParentMarked); + LA.matCopy(fromParentMarked, other.fromParentMarked); + } + } + else + { + if (other.toParent == null) +// assert(other.toParent == null); +// new Exception().printStackTrace(); + System.err.println("null parent: " + other); + } + + /* + double ident[][] = LA.newMatrix(); + if (bRep == null) + other.bRep = null; + else + other.bRep = new BoundaryRep(bRep, ident); + */ + // Really new... + //other.editWindow = null; + if (name == null) + other.name = null; + else + other.name = new String(name); + + if (material != null) + { + other.material = new cMaterial(material); + } else + { + other.material = null; + } + + other.GetTextures().name = GetTextures().name; + + CopyExtraMaterial(other); + + other.touched = touched; + other.softtouched = softtouched; + + other.random = random; + other.link2master = link2master; + other.transformcount = transformcount; + other.marked = marked; + other.skip = skip; + other.count = count; + other.flipV = flipV; + other.live = live; + other.rewind = rewind; + other.hide = hide; + other.texres = texres; + other.speedup = speedup; + other.height = height; + other.depth = depth; + } + int VersionCount() { int count = 0; @@ -1310,78 +1382,16 @@ return; blockloop = true; + + other.parent = parent; + //System.out.println("COPY " + this + " to " + other); //new Exception().printStackTrace(); + deepCopyNode(other); - other.parent = parent; - if (toParent != null) - { - other.toParent = LA.newMatrix(); - other.fromParent = LA.newMatrix(); - LA.matCopy(toParent, other.toParent); - LA.matCopy(fromParent, other.fromParent); - if (toParentMarked != null) - { - other.toParentMarked = LA.newMatrix(); - other.fromParentMarked = LA.newMatrix(); - LA.matCopy(toParentMarked, other.toParentMarked); - LA.matCopy(fromParentMarked, other.fromParentMarked); - } - } - else - { - if (other.toParent == null) -// assert(other.toParent == null); -// new Exception().printStackTrace(); - System.err.println("null parent: " + other); - } - /* - double ident[][] = LA.newMatrix(); - if (bRep == null) - other.bRep = null; - else - other.bRep = new BoundaryRep(bRep, ident); - */ - // Really new... other.bRep = bRep; // Share the geometry other.support = support; // Share the support - - //other.editWindow = null; - if (name == null) - other.name = null; - else - other.name = new String(name); - - if (material != null) - { - other.material = new cMaterial(material); - } else - { - other.material = null; - } - - other.GetTextures().name = GetTextures().name; - - CopyExtraMaterial(other); - - other.touched = touched; - other.softtouched = softtouched; - - other.random = random; - other.link2master = link2master; - other.transformcount = transformcount; - other.marked = marked; - other.skip = skip; - other.count = count; - other.flipV = flipV; - other.live = live; - other.rewind = rewind; - other.hide = hide; - other.texres = texres; - other.speedup = speedup; - other.height = height; - other.depth = depth; // aout 2013 if (/*displaylist != -1 &&*/other.displaylist != displaylist) // { @@ -1437,17 +1447,24 @@ if ((mask & GEOMETRY) != 0) { if (bRep != null) - bRep.overwriteThis(other.bRep==null?other.transientrep:other.bRep); - else - assert(other.bRep == null); - - if (bRep != null) { + bRep.overwriteThis(other.bRep==null?other.transientrep:other.bRep); CameraPane.RemoveList(bRep.displaylist); bRep.displaylist = 0; // june 2013 -1; } else - bRep = bRep; + { + //assert(other.bRep == null); + bRep = other.bRep; + } + +// if (bRep != null) +// { +// CameraPane.RemoveList(bRep.displaylist); +// bRep.displaylist = 0; // june 2013 -1; +// } +// else +// bRep = bRep; } /* Use a MASK = GEO/MAT @@ -4260,9 +4277,9 @@ max = new cVector(); } - for (int i = 0; i<size(); i++) + for (int i = 0; i<Size(); i++) { - Object3D child = (Object3D) reserve(i); + Object3D child = (Object3D) get(i); //reserve(i); if (child == null) continue; @@ -4281,14 +4298,14 @@ if (child.hide && !(child instanceof Merge) || child.skip) //if (child.hide) { - release(i); + //release(i); continue; } blockloop = true; child.getBounds(min, max, true); // xform); blockloop = false; - release(i); + //release(i); MinMax(minima, maxima); } @@ -6357,6 +6374,20 @@ { drawSelf(display, root, selected, blocked); } + +// if (!(this instanceof Composite)) +// { +// for (int i = 0; i < size(); i++) +// { +// Object3D child = (Object3D) reserve(i); +// if (child == null) +// continue; +// +// child.draw(display, root, selected, blocked); +// +// release(i); +// } +// } } else { /* @@ -6427,6 +6458,20 @@ // june 2013 drawSelf(display, root, selected); } } + + assert (!(this instanceof Composite)); + { + for (int i = 0; i < size(); i++) + { + Object3D child = (Object3D) reserve(i); + if (child == null) + continue; + + child.draw(display, root, selected, blocked); + + release(i); + } + } } if (!failedBump) @@ -6479,16 +6524,17 @@ void CallList(iCameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked) { - if (GetBRep() == null) - { - drawSelf(display, root, selected, blocked); - } else + if (GetBRep() != null) { DrawNode(display, root, selected); if (this instanceof BezierPatch) { //drawSelf(display, root, selected); } + } + else + { + drawSelf(display, root, selected, blocked); } } @@ -8237,7 +8283,7 @@ // if (!Globals.ADVANCED) // return objname; - return objname + " " + System.identityHashCode(this); // + GetUUID() + return objname; // + " " + System.identityHashCode(this); // + GetUUID() } public int hashCode() diff --git a/RandomEditor.java b/RandomEditor.java index f6e4a71..747e799 100644 --- a/RandomEditor.java +++ b/RandomEditor.java @@ -136,9 +136,14 @@ return objEditor; } - void refreshContents2() + void refreshContents() { - objEditor.refreshContents(); + itemField.setMinimum(0); + itemField.setMaximum(randomnode.Size() - 1); + itemField.setInteger(randomnode.rndIndex); + + itemField.validate(); + // objEditor.refreshContents(); } RandomNode randomnode; diff --git a/RandomNode.java b/RandomNode.java index daf6231..5551439 100644 --- a/RandomNode.java +++ b/RandomNode.java @@ -20,6 +20,15 @@ return comp; } + protected void deepCopyNode(Object3D other) + { + super.deepCopyNode(other); + RandomNode bp = (RandomNode)other; + bp.rndIndex = rndIndex; + bp.damp = damp; + bp.firstchoice = firstchoice; + } + // public int Size() // { // return 1; @@ -43,6 +52,18 @@ return super.size(); } + void addChild(Object3D child) + { + super.addChild(child); + + this.rndIndex = Size() - 1; + + if (this.editWindow != null) + { + ((RandomEditor)this.objectUI).refreshContents(); + } + } + int rndIndex = -1; static int globalseed = 0; diff --git a/ScriptNode.java b/ScriptNode.java index 269b6be..68ec53e 100644 --- a/ScriptNode.java +++ b/ScriptNode.java @@ -1821,9 +1821,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); // FrameSelector bp = (FrameSelector)other; // bp.frame = (int)(Math.random()*(getNumFrames() - mocap.offset)); } diff --git a/Skybox.java b/Skybox.java index b019c2a..e2eb3df 100644 --- a/Skybox.java +++ b/Skybox.java @@ -24,9 +24,9 @@ return rec; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Skybox rec = (Skybox)other; rec.minima = new cVector(); LA.vecCopy(minima, rec.minima); diff --git a/Sphere.java b/Sphere.java index baf117f..4a0b298 100644 --- a/Sphere.java +++ b/Sphere.java @@ -95,9 +95,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Sphere e = (Sphere) other; if (center != null) { diff --git a/Spline.java b/Spline.java index 4fdf5a6..8baab7b 100644 --- a/Spline.java +++ b/Spline.java @@ -19,9 +19,9 @@ return spline; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Spline spline = (Spline)other; spline.type = type; int count = ctrlPnts.size(); diff --git a/Superellipsoid.java b/Superellipsoid.java index 8c643f0..79fdb29 100644 --- a/Superellipsoid.java +++ b/Superellipsoid.java @@ -30,9 +30,9 @@ return s; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Superellipsoid s = (Superellipsoid)other; s.east = east; s.north = north; diff --git a/SwitchNode.java b/SwitchNode.java index 7189ebc..edfdfe0 100644 --- a/SwitchNode.java +++ b/SwitchNode.java @@ -138,9 +138,9 @@ return e; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); SwitchNode bp = (SwitchNode)other; bp.child = child; } diff --git a/TextureNode.java b/TextureNode.java index 83bf1db..39c3c15 100644 --- a/TextureNode.java +++ b/TextureNode.java @@ -124,9 +124,9 @@ // else // return 1; // } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); other.maxcount = maxcount; other.transformcount = transformcount; diff --git a/Torus.java b/Torus.java index dd1a181..3b5ebd2 100644 --- a/Torus.java +++ b/Torus.java @@ -25,9 +25,9 @@ return t; } - protected void deepCopySelf(Object3D other) + protected void deepCopyNode(Object3D other) { - super.deepCopySelf(other); + super.deepCopyNode(other); Torus t = (Torus)other; t.major = major; t.minor = minor; -- Gitblit v1.6.2