From 5a546232b84ce65d8779d29e9171e7e2df013614 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sat, 20 Jul 2019 20:50:17 -0400
Subject: [PATCH] Restore bind texture

---
 CameraPane.java |  145 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 93 insertions(+), 52 deletions(-)

diff --git a/CameraPane.java b/CameraPane.java
index 9699e8e..b55d184 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -2298,10 +2298,17 @@
         HANDLES ^= true;
     }
 
+    Object3D paintFolder;
+    
     void TogglePaint()
     {
         PAINTMODE ^= true;
         paintcount = 0;
+        
+        if (PAINTMODE)
+        {
+            paintFolder = GetFolder();
+        }
     }
 
     void SwapCamera(int a, int b)
@@ -7923,7 +7930,7 @@
         String pigment = Object3D.GetPigment(tex);
         String bump = Object3D.GetBump(tex);
 
-        if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
+        //if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
         {
         //    System.out.print("RELEASE  +++++++++++++++  pigment = " + pigment);
         //    System.out.println("; bump = " + bump);
@@ -7957,7 +7964,7 @@
         
         String pigment = Object3D.GetPigment(tex);
 
-        if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
+        //if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
         {
         //    System.out.print("RELEASE  +++++++++++++++  pigment = " + pigment);
         //    System.out.println("; bump = " + bump);
@@ -7986,7 +7993,7 @@
         
         String bump = Object3D.GetBump(tex);
 
-        if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
+        //if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
         {
         //    System.out.print("RELEASE  +++++++++++++++  pigment = " + pigment);
         //    System.out.println("; bump = " + bump);
@@ -8124,7 +8131,7 @@
         usedtextures.put(pigment, pigment);
         usedtextures.put(bump, bump);
         
-        if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
+        //if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
         {
         //    System.out.print("BIND  +++++++++++++++  pigment = " + pigment);
         //    System.out.println("; bump = " + bump);
@@ -8166,7 +8173,7 @@
 
         usedtextures.put(pigment, pigment);
         
-        if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
+        //if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
         {
         //    System.out.print("BIND  +++++++++++++++  pigment = " + pigment);
         //    System.out.println("; bump = " + bump);
@@ -8199,7 +8206,7 @@
 
         usedtextures.put(bump, bump);
         
-        if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
+        //if (!tex.equals(":") && !tex.equals(DEFAULT_TEXTURES))
         {
         //    System.out.print("BIND  +++++++++++++++  pigment = " + pigment);
         //    System.out.println("; bump = " + bump);
@@ -8510,7 +8517,7 @@
             return false;
         }
 
-        boolean newtex = false;
+        //boolean newtex = false;
 
         com.sun.opengl.util.texture.Texture texture = GetTexture(tex, bump, resolution);
 
@@ -8542,7 +8549,7 @@
         texture.setTexParameteri(GetGL().GL_TEXTURE_WRAP_S, GetGL().GL_REPEAT);
         texture.setTexParameteri(GetGL().GL_TEXTURE_WRAP_T, GetGL().GL_REPEAT);
         
-        return newtex;
+        return true; // Warning: not used.
     }
     
     ShadowBuffer shadowPBuf;
@@ -11028,9 +11035,9 @@
 
             gl.glMatrixMode(GL.GL_MODELVIEW);
 
-//gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST);
-//gl.glEnable(gl.GL_POLYGON_SMOOTH);
-//gl.glEnable(gl.GL_MULTISAMPLE);
+gl.glEnable(gl.GL_POLYGON_SMOOTH);
+gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST);
+gl.glEnable(gl.GL_MULTISAMPLE);
         } else
         {
             //gl.glDisable(GL.GL_TEXTURE_2D);
@@ -11041,7 +11048,7 @@
         //System.out.println("BLENDING ON");
         gl.glEnable(GL.GL_BLEND);
         gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
-
+//        gl.glBlendFunc(GL.GL_SRC_ALPHA_SATURATE, GL.GL_ONE);
         gl.glMatrixMode(gl.GL_PROJECTION);
         gl.glLoadIdentity();
 
@@ -14297,12 +14304,12 @@
     void GoDown(int mod)
     {
         MODIFIERS |= COMMAND;
-        /*
+        /**/
         if((mod&SHIFT) == SHIFT)
         manipCamera.RotatePosition(0, -speed);
         else
-        manipCamera.BackForth(0, -speed*delta, getWidth());
-         */
+        manipCamera.BackForth(0, -speed*delta, 0); // getWidth());
+        /**/
         if ((mod & SHIFT) == SHIFT)
         {
             mouseMode = mouseMode; // VR??
@@ -14318,12 +14325,12 @@
     void GoUp(int mod)
     {
         MODIFIERS |= COMMAND;
-        /*
+        /**/
         if((mod&SHIFT) == SHIFT)
         manipCamera.RotatePosition(0, speed);
         else
-        manipCamera.BackForth(0, speed*delta, getWidth());
-         */
+        manipCamera.BackForth(0, speed*delta, 0); // getWidth());
+        /**/
         if ((mod & SHIFT) == SHIFT)
         {
             mouseMode = mouseMode;
@@ -14339,12 +14346,12 @@
     void GoLeft(int mod)
     {
         MODIFIERS |= COMMAND;
-        /*
+        /**/
         if((mod&SHIFT) == SHIFT)
-        manipCamera.RotatePosition(speed, 0);
-        else
         manipCamera.Translate(speed*delta, 0, getWidth());
-         */
+        else
+        manipCamera.RotatePosition(speed, 0);
+        /**/
         if ((mod & SHIFT) == SHIFT)
         {
             mouseMode = mouseMode;
@@ -14360,12 +14367,12 @@
     void GoRight(int mod)
     {
         MODIFIERS |= COMMAND;
-        /*
+        /**/
         if((mod&SHIFT) == SHIFT)
-        manipCamera.RotatePosition(-speed, 0);
-        else
         manipCamera.Translate(-speed*delta, 0, getWidth());
-         */
+        else
+        manipCamera.RotatePosition(-speed, 0);
+        /**/
         if ((mod & SHIFT) == SHIFT)
         {
             mouseMode = mouseMode;
@@ -14946,7 +14953,9 @@
             case 'E' : COMPACT ^= true;
                 repaint();
                 break;
-            case 'W' : DEBUGHSB ^= true;
+            case 'W' : // Wide Window (fullscreen)
+                //DEBUGHSB ^= true;
+                ObjEditor.theFrame.ToggleFullScreen();
                 repaint();
                 break;
             case 'u' : Udebug ^= true; Vdebug = false; NORMALdebug = false; programInitialized = false; repaint(); break;
@@ -14972,13 +14981,7 @@
                 repaint();
                 break;
             case 'l':
-                lightMode ^= true;
-                Globals.lighttouched = true;
-                manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera;
-                targetLookAt.set(manipCamera.lookAt);
-                repaint();
-                break;
-            case 'L':
+            //case 'L':
                 if (lightMode)
                 {
                     lightMode = false;
@@ -15125,7 +15128,10 @@
 //                kompactbit = 6;
 //                break;
             case ' ':
-                ObjEditor.theFrame.ToggleFullScreen();
+                lightMode ^= true;
+                Globals.lighttouched = true;
+                manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera;
+                targetLookAt.set(manipCamera.lookAt);
                 repaint();
                 break;
             //case '`' :
@@ -15709,6 +15715,7 @@
                     info.bounds.y += (height - desired) / 2;
                 }
             }
+            
             info.g = gr;
             info.camera = renderCamera;
             /* 
@@ -15718,6 +15725,8 @@
              */
             if (!isRenderer)
             {
+                Grafreed.Assert(object != null);
+                Grafreed.Assert(object.selection != null);
                 if (object.selection.Size() > 0)
                 {
                     int hitSomething = object.selection.get(0).hitSomething;
@@ -16551,6 +16560,14 @@
         }
     }
     
+    private Object3D GetFolder()
+    {
+        Object3D folder = object.GetWindow().copy;
+        if (object.GetWindow().copy.selection.Size() > 0)
+            folder = object.GetWindow().copy.selection.elementAt(0);
+        return folder;
+    }
+
     class SelectBuffer implements GLEventListener
     {
 
@@ -16630,6 +16647,17 @@
 
             //gl.glDisable(GL.GL_POLYGON_OFFSET_FILL);
 
+                if (PAINTMODE)
+                {
+                    if (object.GetWindow().copy.selection.Size() > 0)
+                    {
+                        Object3D paintobj = object.GetWindow().copy.selection.elementAt(0);
+
+                        // Make what you paint not selectable.
+                        paintobj.ResetSelectable();
+                    }
+                }
+                
             //int tmp = selection_view;
             //selection_view = -1;
             int temp = DrawMode();
@@ -16641,6 +16669,17 @@
             //    temp = DEFAULT; // patch for selection debug
             Globals.drawMode = temp; // WARNING
 
+                if (PAINTMODE)
+                {
+                    if (object.GetWindow().copy.selection.Size() > 0)
+                    {
+                        Object3D paintobj = object.GetWindow().copy.selection.elementAt(0);
+
+                        // Revert.
+                        paintobj.RestoreSelectable();
+                    }
+                }
+                
             //gl.glBindTexture(GL.GL_TEXTURE_2D, selection_view);
 
             // trying different ways of getting the depth info over
@@ -16746,27 +16785,29 @@
                 if (!movingcamera && !PAINTMODE)
                     object.GetWindow().ScreenFitPoint(); // fev 2014
                 
-                if (PAINTMODE && Grafreed.clipboard.size() == 1) // object.editWindow.copy.selection.Size() > 0)
+                if (PAINTMODE) // && Grafreed.clipboard.size() == 1) // object.editWindow.copy.selection.Size() > 0)
                 {
-                    Object3D paintobj = Grafreed.clipboard.get(0); // object.editWindow.copy.selection.elementAt(0);
-                    
-                    Object3D group = new Object3D("inst" + paintcount++);
-                    
-                    group.CreateMaterial(); // use a void leaf to select instances
-                    
-                    group.add(paintobj); // link
-                    
-                    object.GetWindow().SnapObject(group);
-                    
-                    Object3D folder = object.GetWindow().copy;
+                    //Object3D paintobj; // = Grafreed.clipboard.get(0); // object.editWindow.copy.selection.elementAt(0);
                     
                     if (object.GetWindow().copy.selection.Size() > 0)
-                        folder = object.GetWindow().copy.selection.elementAt(0);
+                    {
+                        Object3D paintobj = object.GetWindow().copy.selection.elementAt(0);
                     
-                    folder.add(group);
-                    
-                    object.GetWindow().ResetModel();
-                    object.GetWindow().refreshContents();
+                        Object3D inst = new Object3D("inst" + paintcount++);
+
+                        inst.CreateMaterial(); // use a void leaf to select instances
+
+                        inst.add(paintobj); // link
+
+                        object.GetWindow().SnapObject(inst);
+
+                        Object3D folder = paintFolder; // GetFolder();
+
+                        folder.add(inst);
+
+                        object.GetWindow().ResetModel();
+                        object.GetWindow().refreshContents();
+                    }
                 }
                 else
                     paintcount = 0;

--
Gitblit v1.6.2