From b33ef80d78f01a6a61f4248b1bb7deaade42d503 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sun, 16 Jun 2019 11:49:21 -0400
Subject: [PATCH] Attribute editor
---
ObjEditor.java | 21 ++++--
AttributeEditor.java | 28 +++++----
CameraPane.java | 71 ++++++++++++++++-------
Camera.java | 1
Globals.java | 2
Object3D.java | 19 +++++-
6 files changed, 95 insertions(+), 47 deletions(-)
diff --git a/AttributeEditor.java b/AttributeEditor.java
index 797e00a..4552a44 100644
--- a/AttributeEditor.java
+++ b/AttributeEditor.java
@@ -41,20 +41,24 @@
super.SetupUI2(oe); // Shows composite UI !!
//super.SetupName(oe);
- oe.aConstraints.weighty = 0;
-
- oe.aConstraints.gridwidth = 1;
- oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
- oe.aConstraints.gridwidth = 1;
- oe.aConstraints.anchor = GridBagConstraints.WEST;
- oe.ctrlPanel.add(cleardepth = new JCheckBox("Clear Depth", attribute.cleardepth), oe.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
- oe.aConstraints.gridx += 1;
+// oe.aConstraints.weighty = 0;
+//
+// oe.aConstraints.gridwidth = 1;
+// oe.aConstraints.fill = GridBagConstraints.HORIZONTAL;
+// oe.aConstraints.gridwidth = 1;
+// oe.aConstraints.anchor = GridBagConstraints.WEST;
+ oe.ctrlPanel.add(cleardepth = new JCheckBox("Clear Depth", attribute.cleardepth)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
+
+ oe.ctrlPanel.Return();
+// oe.aConstraints.gridx += 1;
// oe.ctrlPanel.add(passtest = new JCheckBox("Write depth", attribute.passtest), oe.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
// oe.aConstraints.gridx += 1;
- oe.ctrlPanel.add(passtest = new JCheckBox("Pass Test", attribute.passtest), oe.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
- oe.aConstraints.gridx += 1;
- oe.ctrlPanel.add(backfacecull = new JCheckBox("Backface Cull", attribute.backfacecull), oe.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
- oe.aConstraints.gridx += 1;
+ oe.ctrlPanel.add(passtest = new JCheckBox("Pass Test", attribute.passtest)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
+ oe.ctrlPanel.Return();
+// oe.aConstraints.gridx += 1;
+ oe.ctrlPanel.add(backfacecull = new JCheckBox("Backface Cull", attribute.backfacecull)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount() - 2);
+ oe.ctrlPanel.Return();
+// oe.aConstraints.gridx += 1;
cleardepth.addItemListener(this);
passtest.addItemListener(this);
diff --git a/Camera.java b/Camera.java
index 8454950..f5243d4 100644
--- a/Camera.java
+++ b/Camera.java
@@ -3,7 +3,6 @@
// Decompiler options: packimports(3)
// Source File Name: Camera.java
-
class Camera extends Object3D
{
static final long serialVersionUID = 4754289789178680517L;
diff --git a/CameraPane.java b/CameraPane.java
index 16d28d9..b4be4fc 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -150,6 +150,8 @@
defaultcaps.setAccumAlphaBits(16);
}
+ private File defaultDirectory = javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory();
+
void SetAsGLRenderer(boolean b)
{
isRenderer = b;
@@ -462,7 +464,7 @@
if (!selectmode) // display.drawMode != display.SELECTION) // && display.drawMode != display.SHADOW) // (attributes & FILL) != 0)
{
//gl.glBegin(gl.GL_TRIANGLES);
- boolean hasnorm = pv.norm != null; // && (pv.norm.x != 0 || pv.norm.y != 0 || pv.norm.z != 0);
+ boolean hasnorm = pv.norm != null && (pv.norm.x != 0 || pv.norm.y != 0 || pv.norm.z != 0);
if (!hasnorm)
{
// System.out.println("FUCK!!");
@@ -2374,7 +2376,7 @@
{
return currentGL;
}
-
+
/**/
class CacheTexture
{
@@ -8067,6 +8069,26 @@
return; // true;
}
+ java.util.HashSet<String> missingTextures = new java.util.HashSet<String>();
+
+ private boolean FileExists(String tex)
+ {
+ if (missingTextures.contains(tex))
+ {
+ return false;
+ }
+
+ boolean fileExists = new File(tex).exists();
+
+ if (!fileExists)
+ {
+ // If file exists, the "new File()" is not executed sgain
+ missingTextures.add(tex);
+ }
+
+ return fileExists;
+ }
+
CacheTexture GetCacheTexture(String tex, boolean bump, int resolution) throws Exception
{
CacheTexture/*com.sun.opengl.util.texture.Texture*/ texture = null;
@@ -8075,15 +8097,17 @@
{
String texname = tex;
+ String fallbackTextureName = defaultDirectory + "/Textures/" + texname;
+
// String[] split = tex.split("Textures");
// if (split.length > 1)
// texname = "/Users/nbriere/Textures" + split[split.length-1];
// else
// if (!texname.startsWith("/"))
// texname = "/Users/nbriere/Textures/" + texname;
- if (!new File(tex).exists())
+ if (!FileExists(tex))
{
- texname = javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory() + "/Textures/" + texname;
+ texname = fallbackTextureName;
}
if (CACHETEXTURE)
@@ -8153,7 +8177,7 @@
}
cachename = texname.substring(0, texname.length()-4)+ext+".jpg";
- if (!new File(cachename).exists())
+ if (!FileExists(cachename))
cachename = texname;
else
processbump = false; // don't process bump map again
@@ -8175,7 +8199,7 @@
}
cachename = texname.substring(0, texname.length()-4)+ext+".png";
- if (!new File(cachename).exists())
+ if (!FileExists(cachename))
cachename = texname;
else
processbump = false; // don't process bump map again
@@ -9310,8 +9334,8 @@
assert (parentcam != renderCamera);
if (renderCamera != lightCamera)
- for (int count = parentcam.GetTransformCount(); --count>=0;)
- LA.matConcat(matrix, parentcam.toParent, matrix);
+ //for (int count = parentcam.GetTransformCount(); --count>=0;)
+ LA.matConcat(matrix, parentcam.GlobalTransformInv(), matrix);
// LA.matConcat(renderCamera.toScreen, renderCamera.toParent, matrix);
@@ -9326,8 +9350,8 @@
LA.matCopy(renderCamera.fromScreen, matrix);
if (renderCamera != lightCamera)
- for (int count = parentcam.GetTransformCount(); --count>=0;)
- LA.matConcat(parentcam.fromParent, matrix, matrix);
+ //for (int count = parentcam.GetTransformCount(); --count>=0;)
+ LA.matConcat(parentcam.GlobalTransform(), matrix, matrix);
// LA.matConcat(renderCamera.fromParent, renderCamera.fromScreen, matrix);
@@ -10525,8 +10549,8 @@
// if (parentcam != renderCamera) // not a light
if (cam != lightCamera)
- for (int count = parentcam.GetTransformCount(); --count>=0;)
- LA.matConcat(matrix, parentcam.toParent, matrix);
+ //for (int count = parentcam.GetTransformCount(); --count>=0;)
+ LA.matConcat(matrix, parentcam.GlobalTransformInv(), matrix);
for (int j = 0; j < 4; j++)
{
@@ -10540,8 +10564,8 @@
// if (parentcam != renderCamera) // not a light
if (cam != lightCamera)
- for (int count = parentcam.GetTransformCount(); --count>=0;)
- LA.matConcat(parentcam.fromParent, matrix, matrix);
+ //for (int count = parentcam.GetTransformCount(); --count>=0;)
+ LA.matConcat(parentcam.GlobalTransform(), matrix, matrix);
//LA.matConcat(cam.fromScreen, parentcam.fromParent, matrix);
@@ -10934,8 +10958,8 @@
System.err.println("parentcam != renderCamera");
// if (cam != lightCamera)
- for (int count = parentcam.GetTransformCount(); --count>=0;)
- LA.xformDir(lightposition, parentcam.toParent, lightposition); // may 2013
+ //for (int count = parentcam.GetTransformCount(); --count>=0;)
+ LA.xformDir(lightposition, parentcam.GlobalTransformInv(), lightposition); // may 2013
}
LA.xformDir(lightposition, cam.toScreen, lightposition);
@@ -10956,8 +10980,8 @@
if (true) // TODO
{
if (cam != lightCamera)
- for (int count = parentcam.GetTransformCount(); --count>=0;)
- LA.xformDir(light0, parentcam.toParent, light0); // may 2013
+ //for (int count = parentcam.GetTransformCount(); --count>=0;)
+ LA.xformDir(light0, parentcam.GlobalTransformInv(), light0); // may 2013
}
LA.xformPos(light0, cam.toScreen, light0);
@@ -11869,8 +11893,8 @@
//obj.TransformToWorld(light, light);
for (int i = tp.size(); --i >= 0;)
{
- for (int count = tp.get(i).GetTransformCount(); --count>=0;)
- LA.xformPos(light, tp.get(i).toParent, light);
+ //for (int count = tp.get(i).GetTransformCount(); --count>=0;)
+ LA.xformPos(light, tp.get(i).GlobalTransformInv(), light);
}
@@ -11887,8 +11911,8 @@
parentcam = cameras[0];
}
- for (int count = parentcam.GetTransformCount(); --count>=0;)
- LA.xformPos(light, parentcam.toParent, light); // may 2013
+ //for (int count = parentcam.GetTransformCount(); --count>=0;)
+ LA.xformPos(light, parentcam.GlobalTransformInv(), light); // may 2013
LA.xformPos(light, renderCamera.toScreen, light);
@@ -13812,6 +13836,7 @@
//System.out.println("mouseDragged: " + e);
if (isRenderer)
movingcamera = true;
+
//if (drawing)
//return;
if ((e.getModifiersEx() & CTRL) != 0
@@ -15911,7 +15936,7 @@
Object3D object;
static Object3D trackedobject;
Camera renderCamera; // Light or Eye (or Occlusion)
- /*static*/ Camera manipCamera; // Light or Eye
+ /*static*/ Camera manipCamera; // Light or Eye. Can be Light when Eye, not Eye when Light
/*static*/ Camera eyeCamera;
/*static*/ Camera lightCamera;
int cameracount;
diff --git a/Globals.java b/Globals.java
index e0c7291..f6ac3a4 100644
--- a/Globals.java
+++ b/Globals.java
@@ -7,6 +7,8 @@
private static boolean LIVE = false;
public static boolean RENDERSHADOW = true;
+
+ // Hold on calculation when moving camera
public static boolean FREEZEONMOVE = false; // true;
static boolean CROWD = false;
diff --git a/ObjEditor.java b/ObjEditor.java
index 1319073..747c30b 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -278,7 +278,7 @@
frame.setMenuBar(menuBar = new MenuBar());
menuBar.add(fileMenu = new Menu("File"));
fileMenu.add(newItem = new MenuItem("New"));
- fileMenu.add(loadItem = new MenuItem("Load..."));
+ fileMenu.add(loadItem = new MenuItem("Open..."));
//oe.menuBar.add(menu = new Menu("Include"));
Menu menu = new Menu("Import");
@@ -2072,19 +2072,19 @@
void LoadObjFile(String fullname)
{
- /*
+ System.out.println("Loading " + fullname);
+ /**/
//lastFilename = fullname;
if(loadObjThread == null)
{
- loadObjThread = new LoadOBJThread();
- loadObjThread.start();
+ loadObjThread = new LoadOBJThread();
+ loadObjThread.start();
}
loadObjThread.add(fullname);
- */
+ /**/
- System.out.println("Loading " + fullname);
- makeSomething(new FileObject(fullname, true), true);
+ //makeSomething(new FileObject(fullname, true), true);
}
void LoadGFDFile(String fullname)
@@ -3214,7 +3214,7 @@
objEditor.refreshContents();
}
- static public byte[] Compress(Object o)
+ static public byte[] Compress(Object3D o)
{
try
{
@@ -3222,8 +3222,13 @@
java.util.zip.GZIPOutputStream zstream = new java.util.zip.GZIPOutputStream(baos);
ObjectOutputStream out = new ObjectOutputStream(zstream);
+ Object3D parent = o.parent;
+ o.parent = null;
+
out.writeObject(o);
+ o.parent = parent;
+
out.flush();
zstream.close();
diff --git a/Object3D.java b/Object3D.java
index d7a346f..28b696b 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -174,7 +174,7 @@
{
Object3D o = hashtable.get(GetUUID());
- assert(this.bRep == o.bRep);
+ Grafreed.Assert(this.bRep == o.bRep);
if (this.bRep != null)
assert(this.bRep.support == o.transientrep);
@@ -563,12 +563,14 @@
toParent = LA.newMatrix();
fromParent = LA.newMatrix();
}
+
if (toParentMarked == null)
{
if (maxcount != 1)
{
new Exception().printStackTrace();
}
+
toParentMarked = LA.newMatrix();
fromParentMarked = LA.newMatrix();
}
@@ -5572,12 +5574,23 @@
boolean NeedSupport()
{
return
- CameraPane.SUPPORT && (!CameraPane.movingcamera || !Globals.FREEZEONMOVE) && link2master && /*live &&*/ support != null
+ CameraPane.SUPPORT && (!CameraPane.movingcamera || (!Globals.FREEZEONMOVE && Globals.isLIVE())) && link2master && /*live &&*/ support != null
// PROBLEM with CROWD!!
&& (Globals.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW || Globals.CROWD);
}
static boolean DEBUG_SELECTION = false;
+
+ boolean IsLive()
+ {
+ if (live)
+ return true;
+
+ if (parent == null)
+ return false;
+
+ return parent.IsLive();
+ }
void Draw(iCameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked)
{
@@ -5640,7 +5653,7 @@
support = support;
//boolean usecalllists = IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null || !link2master); // !(this instanceof cSpring) && !(this instanceof BezierPatch);
- boolean usecalllists = false; // 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)
{
--
Gitblit v1.6.2