From f868664f7e7626f651e6ade9c9f6863851ef43b7 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Wed, 06 Nov 2019 23:12:57 -0500
Subject: [PATCH] Dangerous "reset".

---
 Composite.java |   48 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/Composite.java b/Composite.java
index 32ee24c..9301234 100644
--- a/Composite.java
+++ b/Composite.java
@@ -543,33 +543,49 @@
 
     void SoftTouch()
     {
-        super.SoftTouch();
-        for (int i = 0; i < Children().size(); i++)
+        if (blockloop)
         {
-            Object3D obj = (Object3D) Children().reserve(i);
-            
-            if (obj == null)
-                continue;
-            
-            if (obj.material == null)
-            {
-                obj.SoftTouch();
-            }
-            Children().release(i);
+            return;
         }
+
+        blockloop = true;
+        
+        super.SoftTouch();
+        
+        for (int i = 0; i < Size(); i++)
+        {
+            Object3D child = (Object3D) get(i);
+            if (child == null)
+                continue;
+            if (child.material == null)
+            {
+                child.SoftTouch();
+            }
+        }
+        
+        blockloop = false;
     }
 
     void HardTouch()
     {
-        super.HardTouch();
-        for (int i = 0; i < Children().size(); i++)
+        if (blockloop)
         {
-            Object3D child = (Object3D) Children().reserve(i);
+            return;
+        }
+
+        blockloop = true;
+        
+        super.HardTouch();
+        
+        for (int i = 0; i < Size(); i++)
+        {
+            Object3D child = (Object3D) get(i);
             if (child == null)
                 continue;
             child.HardTouch();
-            Children().release(i);
         }
+        
+        blockloop = false;
     }
 
 //    void ClearMaterial()

--
Gitblit v1.6.2