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