Normand Briere
2019-08-28 547c9203ab5d8e4bee36d1cbb453dfa36bbec4ef
Object3D.java
....@@ -33,7 +33,7 @@
3333 String skyboxname;
3434 String skyboxext;
3535
36
- Object3D versionlist[];
36
+ Object3D[] versionlist;
3737 int versionindex = -1;
3838
3939 java.util.Hashtable<java.util.UUID, Object3D> versiontable; // = new java.util.Hashtable<java.util.UUID, Object3D>();
....@@ -190,8 +190,39 @@
190190 }
191191 }
192192
193
+ boolean HasBigData()
194
+ {
195
+ if (blockloop)
196
+ return false;
197
+
198
+ if (bRep != null)
199
+ {
200
+ return true;
201
+ }
202
+
203
+ blockloop = true;
204
+
205
+ for (int i = 0; i < Size(); i++)
206
+ {
207
+ Object3D child = (Object3D) get(i);
208
+ if (child == null)
209
+ continue;
210
+ if (child.HasBigData())
211
+ {
212
+ blockloop = false;
213
+ return true;
214
+ }
215
+ }
216
+
217
+ blockloop = false;
218
+ return false;
219
+ }
220
+
193221 void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable)
194222 {
223
+ if (blockloop)
224
+ return;
225
+
195226 Object3D o;
196227
197228 boolean isnew = false;
....@@ -215,7 +246,7 @@
215246 hashtable.put(GetUUID(), o);
216247 }
217248
218
- if (!blockloop)
249
+ //if (!blockloop)
219250 {
220251 blockloop = true;
221252
....@@ -227,7 +258,7 @@
227258 blockloop = false;
228259 }
229260
230
- if (isnew)
261
+ //if (isnew)
231262 ExtractBigData(o);
232263 }
233264
....@@ -338,15 +369,15 @@
338369
339370 void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable)
340371 {
372
+ if (blockloop)
373
+ return;
374
+
341375 if (!hashtable.containsKey(GetUUID()))
342376 return;
343377
344378 Object3D o = hashtable.get(GetUUID());
345379
346380 RestoreBigData(o);
347
-
348
- if (blockloop)
349
- return;
350381
351382 blockloop = true;
352383
....@@ -363,6 +394,7 @@
363394 void RestoreBigData(Object3D o)
364395 {
365396 //System.err.println("RestoreBigData : " + this + " <-- " + o);
397
+ Grafreed.Assert(this.bRep == null);
366398
367399 this.bRep = o.bRep;
368400 if (this.support != null && o.transientrep != null)