From 547c9203ab5d8e4bee36d1cbb453dfa36bbec4ef Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 27 Aug 2019 23:45:18 -0400
Subject: [PATCH] Test has big data.

---
 Object3D.java |   44 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/Object3D.java b/Object3D.java
index 05d5865..87058be 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -33,7 +33,7 @@
     String skyboxname;
     String skyboxext;
     
-    Object3D versionlist[];
+    Object3D[] versionlist;
     int versionindex = -1;    
         
     java.util.Hashtable<java.util.UUID, Object3D> versiontable; // = new java.util.Hashtable<java.util.UUID, Object3D>();
@@ -190,8 +190,39 @@
         }
     }
 
+    boolean HasBigData()
+    {
+        if (blockloop)
+            return false;
+
+        if (bRep != null)
+        {
+            return true;
+        }
+        
+        blockloop = true;
+        
+        for (int i = 0; i < Size(); i++)
+        {
+            Object3D child = (Object3D) get(i);
+            if (child == null)
+                continue;
+            if (child.HasBigData())
+            {
+                blockloop = false;
+                return true;
+            }
+        }
+        
+        blockloop = false;
+        return false;
+    }
+
     void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable)
     {
+        if (blockloop)
+            return;
+
         Object3D o;
         
         boolean isnew = false;
@@ -215,7 +246,7 @@
             hashtable.put(GetUUID(), o);
         }
 
-        if (!blockloop)
+        //if (!blockloop)
         {
             blockloop = true;
 
@@ -227,7 +258,7 @@
             blockloop = false;
         }
 
-        if (isnew)
+        //if (isnew)
             ExtractBigData(o);
     }
 
@@ -338,15 +369,15 @@
 
     void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable)
     {
+        if (blockloop)
+            return;
+
         if (!hashtable.containsKey(GetUUID()))
             return;
 
         Object3D o = hashtable.get(GetUUID());
 
         RestoreBigData(o);
-
-        if (blockloop)
-            return;
 
         blockloop = true;
 
@@ -363,6 +394,7 @@
     void RestoreBigData(Object3D o)
     {
         //System.err.println("RestoreBigData : " + this + " <-- " + o);
+        Grafreed.Assert(this.bRep == null);
         
         this.bRep = o.bRep;
         if (this.support != null && o.transientrep != null)

--
Gitblit v1.6.2