From 89b25e7cc97f6fe221dfd41c4d463500f8a31bc1 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 25 Jun 2019 23:58:09 -0400
Subject: [PATCH] Edit panel pin state.

---
 Object3D.java |   61 ++++++++++++++++++++++++++----
 1 files changed, 52 insertions(+), 9 deletions(-)

diff --git a/Object3D.java b/Object3D.java
index 7b52765..e829908 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -181,7 +181,7 @@
             return;
         }
 
-        Object3D o = new Object3D();
+        Object3D o = new Object3D("copy of " + this.name);
 
         hashtable.put(GetUUID(), o);
 
@@ -219,16 +219,23 @@
         if (!hashtable.containsKey(GetUUID()))
             return;
 
+        if (blockloop)
+            return;
+
+        blockloop = true;
+
         Object3D o = hashtable.get(GetUUID());
 
         RestoreBigData(o);
 
-        hashtable.remove(GetUUID());
+        //hashtable.remove(GetUUID());
 
         for (int i=0; i<Size(); i++)
         {
             get(i).RestoreBigData(hashtable);
         }
+        
+        blockloop = false;
     }
 
     void RestoreBigData(Object3D o)
@@ -881,7 +888,7 @@
         
         if (marked && Globals.isLIVE() && live &&
                 //TEMP21aug2018
-                (Globals.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW) &&
+                (Globals.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW || !Globals.COMPUTESHADOWWHENLIVE) &&
                 currentframe != Globals.framecount)
         {
             currentframe = Globals.framecount;
@@ -966,6 +973,7 @@
         if (material == null || material.multiply)
             return true;
         
+        // Transparent objects are dynamic because we have to sort the triangles.
         return material.opacity > 0.99;
     }
     
@@ -2387,6 +2395,10 @@
         }
          */
         }
+        else
+        {
+            //((ObjEditor)editWindow).SetupUI2(null);
+        }
     }
 
     void createEditWindow(GroupEditor callee, boolean newWindow) //, boolean root)
@@ -2428,6 +2440,14 @@
         {
             editWindow.refreshContents();
         }
+        else
+        {
+            if (manipWindow != null)
+            {
+                manipWindow.refreshContents();
+            }
+        }
+                
     //if (parent != null)
     //parent.refreshEditWindow();
     }
@@ -4958,6 +4978,14 @@
         }
     }
     
+    ObjEditor GetWindow()
+    {
+        if (editWindow != null)
+            return editWindow;
+        
+        return manipWindow;
+    }
+    
     cTreePath Select(int indexcount, boolean deselect)
     {
         if (hide || dontselect)
@@ -4994,10 +5022,11 @@
                 if (leaf != null)
                 {
                     cTreePath tp = new cTreePath(this, leaf);
-                    if (editWindow != null)
+                    ObjEditor window = GetWindow();
+                    if (window != null)
                     {
                         //System.out.println("editWindow = " + editWindow + " vs " + this);
-                        editWindow.Select(tp, deselect, true);
+                        window.Select(tp, deselect, true);
                     }
 
                     return tp;
@@ -5023,9 +5052,10 @@
                 if (leaf != null)
                 {
                     cTreePath tp = new cTreePath(this, leaf);
-                    if (editWindow != null)
+                    ObjEditor window = GetWindow();
+                    if (window != null)
                     {
-                        editWindow.Select(tp, deselect, true);
+                        window.Select(tp, deselect, true);
                     }
 
                     return tp;
@@ -5746,7 +5776,7 @@
             support = support;
         
         //boolean usecalllists = 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);
+        boolean usecalllists = !IsLive(); // IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null) && !link2master; // !(this instanceof cSpring) && !(this instanceof BezierPatch);
         
         if (!usecalllists && bRep != null && bRep.displaylist > 0)
         {
@@ -5767,7 +5797,7 @@
         
         if (!selectmode && //display.DrawMode() != display.SELECTION &&
                 //(touched || (bRep != null && bRep.displaylist <= 0)))
-                (Globals.isLIVE() || touched && (bRep != null && bRep.displaylist <= 0)))
+                (Globals.isLIVE() && Globals.COMPUTESHADOWWHENLIVE || touched || (bRep != null && bRep.displaylist <= 0)))
         {
             Globals.lighttouched = true;
         } // all panes...
@@ -6359,6 +6389,11 @@
                 // dec 2012
                 new Exception().printStackTrace();
                 return;
+            }
+            
+            if (dontselect)
+            {
+                //bRep.GenerateNormalsMINE();
             }
             
             display.DrawGeometry(bRep, flipV, selectmode);
@@ -7796,6 +7831,10 @@
             editWindow = null;
         } // ?
         }
+        else
+        {
+            //editWindow.closeUI();
+        }
     }
     
     boolean root; // patch for edit windows
@@ -7953,6 +7992,10 @@
     }
     
     transient ObjEditor editWindow;
+    transient ObjEditor manipWindow;
+    
+    transient boolean pinned;
+    
     transient ObjectUI objectUI;
     public static int povDepth = 0;
     private static cVector tbMin = new cVector();

--
Gitblit v1.6.2