From 829f93f305ce15893aada126a98d9068b1cdefed Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Mon, 24 Jun 2019 23:26:38 -0400
Subject: [PATCH] Fix light

---
 Object3D.java |   39 +++++++++++++++++++++++++++++++++------
 1 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/Object3D.java b/Object3D.java
index 45bb2a6..c2b61ec 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)
@@ -2433,6 +2440,14 @@
         {
             editWindow.refreshContents();
         }
+        else
+        {
+            if (manipWindow != null)
+            {
+                manipWindow.refreshContents();
+            }
+        }
+                
     //if (parent != null)
     //parent.refreshEditWindow();
     }
@@ -4963,6 +4978,14 @@
         }
     }
     
+    ObjEditor GetWindow()
+    {
+        if (editWindow != null)
+            return editWindow;
+        
+        return manipWindow;
+    }
+    
     cTreePath Select(int indexcount, boolean deselect)
     {
         if (hide || dontselect)
@@ -4999,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;
@@ -5028,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;
@@ -7967,6 +7992,8 @@
     }
     
     transient ObjEditor editWindow;
+    transient ObjEditor manipWindow;
+    
     transient ObjectUI objectUI;
     public static int povDepth = 0;
     private static cVector tbMin = new cVector();

--
Gitblit v1.6.2