From 0cdf3fb57ddea3226f094ba45c836c7e9b123e3a Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 13 Aug 2019 10:33:05 -0400
Subject: [PATCH] No background

---
 ObjEditor.java   |   14 ++++---
 BoundaryRep.java |   24 ++++++++----
 CameraPane.java  |   21 +++++++---
 Globals.java     |    1 
 GroupEditor.java |   43 +++++++++++++++------
 Grafreed.java    |    2 +
 6 files changed, 72 insertions(+), 33 deletions(-)

diff --git a/BoundaryRep.java b/BoundaryRep.java
index 79ff6fe..44b0ba9 100644
--- a/BoundaryRep.java
+++ b/BoundaryRep.java
@@ -4022,8 +4022,6 @@
                 //System.out.println("NEW = " + positions.length);
                 uvmap = new float[ta.getVertexCount() * 2];
                 
-                colors = new float[ta.getVertexCount()]; // * 3];
-
                 ta.getCoordinates(0, positions);
                 ta.getNormals(0, normals);
 //                ta.getColors(0, colors);
@@ -4031,6 +4029,14 @@
 
                 System.out.println("UV = " + uvmap[2] + ", " + uvmap[3] + ";");
 
+                colors = null;
+//                colors = new float[ta.getVertexCount()]; // * 3];
+//
+//                for (int i=colors.length; --i>=0;)
+//                {
+//                        colors[i] = 1;
+//                }
+                
                 triangles = new int[ta.getVertexCount()];
 
                 for (int i = 0; i < triangles.length; i++)
@@ -4068,17 +4074,18 @@
                 positions = new float[3 * ga.getVertexCount()];
                 normals = new float[3 * ga.getVertexCount()];
                 uvmap = new float[2 * ga.getVertexCount()];
-                colors = new float[1 * ga.getVertexCount()];
 
                 tsa.getCoordinates(0, positions);
                 tsa.getNormals(0, normals);
                 tsa.getTextureCoordinates(0, 0, uvmap);
            //     tsa.getColors(0, colors);
-                
-                for (int i=colors.length; --i>=0;)
-                {
-                        colors[i] = 1;
-                }
+
+                colors = null;
+//                colors = new float[1 * ga.getVertexCount()];
+//                for (int i=colors.length; --i>=0;)
+//                {
+//                        colors[i] = 1;
+//                }
 
                 int stripcount = tsa.getNumStrips();
                 triangles = new int[stripcount];
@@ -4087,6 +4094,7 @@
                 stripified = true;
             } catch (ClassCastException e)
             {
+                // ??? aug 2019
                 TriangleArray ta = (TriangleArray) ga;
 
                 positions = new float[3 * ga.getVertexCount()];
diff --git a/CameraPane.java b/CameraPane.java
index 9cebb20..df28651 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -173,7 +173,7 @@
     static boolean doublesided = false; // true; // reversed normals are awful for conformance
     boolean anisotropy = true;
     boolean softshadow = true; // slower but better false;
-    boolean opacityhalo = false;
+    boolean opacityhalo = false; // reverse the halo effect (e.g. glass)
     
     boolean macromode = false;
     
@@ -17533,10 +17533,14 @@
             gl.glFlush();
             
             /**/
-            gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_DEPTH_COMPONENT, GL.GL_FLOAT, occlusionsizebuffer);
+            gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_DEPTH_COMPONENT, GL.GL_FLOAT, occlusiondepthbuffer);
 
-            float[] pixels = occlusionsizebuffer.array();
+            float[] depths = occlusiondepthbuffer.array();
 
+            gl.glReadPixels(0, 0, OCCLUSION_SIZE, OCCLUSION_SIZE, GL.GL_BGRA, GL.GL_UNSIGNED_INT_8_8_8_8_REV, occlusioncolorbuffer);
+
+            int[] pixels = selectsizebuffer.array();
+            
             double r = 0, g = 0, b = 0;
 
             double count = 0;
@@ -17547,7 +17551,7 @@
             
             double FACTOR = 1;
 
-            for (int i = 0; i < pixels.length; i++)
+            for (int i = 0; i < depths.length; i++)
             {
                 int x = i / OCCLUSION_SIZE - OCCLUSION_SIZE / 2;
                 int y = i % OCCLUSION_SIZE - OCCLUSION_SIZE / 2;
@@ -17630,7 +17634,7 @@
 
                 double scale = ray.z; // 1; // cos
 
-                float depth = pixels[newindex];
+                float depth = depths[newindex];
 
                 /*
                 int newindex2 = (x + 1) * OCCLUSION_SIZE + y;
@@ -17827,11 +17831,14 @@
     static IntBuffer AAbuffer; // = IntBuffer.allocate(MAX_SIZE*MAX_SIZE);
     static IntBuffer bigAAbuffer;
     static java.nio.FloatBuffer histogram = BufferUtil.newFloatBuffer(HISTOGRAM_SIZE * 3);
-    static IntBuffer texturesizebuffer = IntBuffer.allocate(TEX_SIZE * TEX_SIZE);
+    //static IntBuffer texturesizebuffer = IntBuffer.allocate(TEX_SIZE * TEX_SIZE);
     static IntBuffer selectsizebuffer = IntBuffer.allocate(SELECT_SIZE * SELECT_SIZE);
     static java.nio.FloatBuffer pointselectsizebuffer = java.nio.FloatBuffer.allocate(SELECT_SIZE * SELECT_SIZE);
     //static IntBuffer occlusionsizebuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE);
-    static java.nio.FloatBuffer occlusionsizebuffer = java.nio.FloatBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE);
+    static java.nio.FloatBuffer occlusiondepthbuffer = java.nio.FloatBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE);
+    
+    static IntBuffer occlusioncolorbuffer = IntBuffer.allocate(OCCLUSION_SIZE * OCCLUSION_SIZE);
+    
     static BufferedImage bufimage = new BufferedImage(TEX_SIZE, TEX_SIZE, BufferedImage.TYPE_INT_RGB);
     static BufferedImage textest = new cBufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
     static java.util.Vector<BufferedImage> billboards = new java.util.Vector<BufferedImage>();
diff --git a/Globals.java b/Globals.java
index 2d50e5c..cc0475f 100644
--- a/Globals.java
+++ b/Globals.java
@@ -1,6 +1,7 @@
 
 public class Globals
 {
+        public static boolean TOOLTIPS = false;
         public static boolean ADVANCED = false;
         public static boolean DEBUG = false;
         
diff --git a/Grafreed.java b/Grafreed.java
index 1726670..8eda659 100644
--- a/Grafreed.java
+++ b/Grafreed.java
@@ -935,6 +935,8 @@
         //mon.stop();
         //System.out.println(mon);
         //timeflow.app.TimeflowAppLauncher.GetTimeFlow();
+        
+        javax.swing.ToolTipManager.sharedInstance().setEnabled(Globals.TOOLTIPS);
     }
 
     static Object3D materials;
diff --git a/GroupEditor.java b/GroupEditor.java
index e09d28f..4faf49e 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -31,7 +31,7 @@
         final String path = "cubemaps/" + f + "-skyboxes/" + s;
         row.add(skyboxButton = GetButton(path + "/preview.jpg", !Grafreed.NIMBUSLAF));
         //row.add(skyboxButton = GetButton(path + "/negx.jpg", !Grafreed.NIMBUSLAF));
-        skyboxButton.setToolTipText(s);
+        skyboxButton.setToolTipText(s.equals("") ? "No background" : s);
         skyboxButton.addActionListener(new ActionListener()
         {
                 @Override
@@ -73,7 +73,7 @@
         cGridBag row5 = new cGridBag();
         cGridBag row6 = new cGridBag();
         
-        AddSkyboxButton("default", "rgb", row0);
+        AddSkyboxButton("default", "", row0);
         //AddSkyboxButton("default", "cornell", row0);
         AddSkyboxButton("penguins", "dust", row0);
         AddSkyboxButton("penguins", "tropic", row0);
@@ -330,10 +330,19 @@
         
     public void ChangeSkybox(String skybox)
     {
-        //cameraView.envyoff = false;
-        group.skyboxname = skybox;
-        group.skyboxext = "jpg";
-        cameraView.repaint();
+        if (skybox.endsWith("/"))
+        {
+            group.skyboxname = null;
+            group.skyboxext = null;
+            cameraView.repaint();
+        }
+        else
+        {
+            //cameraView.envyoff = false;
+            group.skyboxname = skybox;
+            group.skyboxext = "jpg";
+            cameraView.repaint();
+        }
     }
 
     public void CreateSkyboxPanel(cGridBag skyboxPanel)
@@ -1459,11 +1468,11 @@
         {
             assert(obj instanceof Composite);
             
-            if (obj.versionlist == null)
-            {
-                obj.versionlist = new Object3D[100];
-                obj.versionindex = -1;
-            }
+//            if (obj.versionlist == null)
+//            {
+//                obj.versionlist = new Object3D[100];
+//                obj.versionindex = -1;
+//            }
             
             cRadio radioButton = new cRadio(obj.name);
             
@@ -4067,7 +4076,17 @@
                      */
                     radio.layout.doClick();
                     
-                    SetUndoStates();
+                    assert(copy instanceof Composite);
+                    
+        if (copy.versionlist == null)
+        {
+            copy.versionlist = new Object3D[100];
+            copy.versionindex = -1;
+            
+            Save(true);
+        }
+        
+                    SetVersionStates();
 
                     ClearUnpinned();
                     
diff --git a/ObjEditor.java b/ObjEditor.java
index 35727f1..c2908ed 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -4129,7 +4129,7 @@
     {
         //Save(true);
         Replace();
-        SetUndoStates();
+        SetVersionStates();
     }
     
     private boolean Equal(byte[] compress, byte[] name)
@@ -4159,7 +4159,7 @@
         
         CopyChanged();
         
-        SetUndoStates();
+        SetVersionStates();
     }
     
     public boolean Save(boolean user)
@@ -4205,7 +4205,7 @@
 //            copy.versionlist[i] = null;
 //        }
 
-        SetUndoStates();
+        SetVersionStates();
         
         // test save
         if (false)
@@ -4265,7 +4265,7 @@
     {
         Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]);
         
-        SetUndoStates();
+        SetVersionStates();
         
         boolean temp = CameraPane.SWITCH;
         CameraPane.SWITCH = false;
@@ -4332,7 +4332,7 @@
         return count;
     }
     
-    void SetUndoStates()
+    void SetVersionStates()
     {
         //if (true)
         //    return;
@@ -5111,7 +5111,7 @@
         }
         
         if (previousVersionButton != null && copy.versionlist != null)
-            SetUndoStates();
+            SetVersionStates();
     }
     
     static TweenManager tweenManager = new TweenManager();
@@ -5596,6 +5596,8 @@
 
     void save()
     {
+        Replace();
+        
         if (lastname == null)
         {
             return;

--
Gitblit v1.6.2