.. | .. |
---|
33 | 33 | String skyboxname; |
---|
34 | 34 | String skyboxext; |
---|
35 | 35 | |
---|
36 | | - Object3D versionlist[]; |
---|
| 36 | + Object3D[] versionlist; |
---|
37 | 37 | int versionindex = -1; |
---|
38 | 38 | |
---|
39 | 39 | java.util.Hashtable<java.util.UUID, Object3D> versiontable; // = new java.util.Hashtable<java.util.UUID, Object3D>(); |
---|
.. | .. |
---|
190 | 190 | } |
---|
191 | 191 | } |
---|
192 | 192 | |
---|
| 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 | + |
---|
193 | 221 | void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) |
---|
194 | 222 | { |
---|
| 223 | + if (blockloop) |
---|
| 224 | + return; |
---|
| 225 | + |
---|
195 | 226 | Object3D o; |
---|
196 | 227 | |
---|
197 | 228 | boolean isnew = false; |
---|
.. | .. |
---|
215 | 246 | hashtable.put(GetUUID(), o); |
---|
216 | 247 | } |
---|
217 | 248 | |
---|
218 | | - if (!blockloop) |
---|
| 249 | + //if (!blockloop) |
---|
219 | 250 | { |
---|
220 | 251 | blockloop = true; |
---|
221 | 252 | |
---|
.. | .. |
---|
227 | 258 | blockloop = false; |
---|
228 | 259 | } |
---|
229 | 260 | |
---|
230 | | - if (isnew) |
---|
| 261 | + //if (isnew) |
---|
231 | 262 | ExtractBigData(o); |
---|
232 | 263 | } |
---|
233 | 264 | |
---|
.. | .. |
---|
338 | 369 | |
---|
339 | 370 | void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) |
---|
340 | 371 | { |
---|
| 372 | + if (blockloop) |
---|
| 373 | + return; |
---|
| 374 | + |
---|
341 | 375 | if (!hashtable.containsKey(GetUUID())) |
---|
342 | 376 | return; |
---|
343 | 377 | |
---|
344 | 378 | Object3D o = hashtable.get(GetUUID()); |
---|
345 | 379 | |
---|
346 | 380 | RestoreBigData(o); |
---|
347 | | - |
---|
348 | | - if (blockloop) |
---|
349 | | - return; |
---|
350 | 381 | |
---|
351 | 382 | blockloop = true; |
---|
352 | 383 | |
---|
.. | .. |
---|
363 | 394 | void RestoreBigData(Object3D o) |
---|
364 | 395 | { |
---|
365 | 396 | //System.err.println("RestoreBigData : " + this + " <-- " + o); |
---|
| 397 | + Grafreed.Assert(this.bRep == null); |
---|
366 | 398 | |
---|
367 | 399 | this.bRep = o.bRep; |
---|
368 | 400 | if (this.support != null && o.transientrep != null) |
---|