.. | .. |
---|
36 | 36 | Object3D versionlist[]; |
---|
37 | 37 | int versionindex = -1; |
---|
38 | 38 | |
---|
| 39 | + java.util.Hashtable<java.util.UUID, Object3D> versiontable; // = new java.util.Hashtable<java.util.UUID, Object3D>(); |
---|
| 40 | + |
---|
39 | 41 | ScriptNode scriptnode; |
---|
40 | 42 | |
---|
41 | 43 | void InitOthers() |
---|
.. | .. |
---|
269 | 271 | // |
---|
270 | 272 | // return null; |
---|
271 | 273 | // } |
---|
| 274 | + |
---|
| 275 | + transient boolean tag; |
---|
| 276 | + |
---|
| 277 | + void TagObjects(Object3D o, boolean tag) |
---|
| 278 | + { |
---|
| 279 | + if (blockloop) |
---|
| 280 | + return; |
---|
| 281 | + |
---|
| 282 | + o.tag = tag; |
---|
| 283 | + |
---|
| 284 | + if (o == this) |
---|
| 285 | + return; |
---|
| 286 | + |
---|
| 287 | + blockloop = true; |
---|
| 288 | + |
---|
| 289 | + for (int i=0; i<Size(); i++) |
---|
| 290 | + { |
---|
| 291 | + get(i).TagObjects(o, tag); |
---|
| 292 | + } |
---|
| 293 | + |
---|
| 294 | + blockloop = false; |
---|
| 295 | + } |
---|
| 296 | + |
---|
| 297 | + boolean HasTags() |
---|
| 298 | + { |
---|
| 299 | + if (blockloop) |
---|
| 300 | + return false; |
---|
| 301 | + |
---|
| 302 | + blockloop = true; |
---|
| 303 | + |
---|
| 304 | + boolean hasTags = false; |
---|
| 305 | + |
---|
| 306 | + for (int i=0; i<Size(); i++) |
---|
| 307 | + { |
---|
| 308 | + hasTags |= get(i).tag || get(i).HasTags(); |
---|
| 309 | + |
---|
| 310 | + if (hasTags) |
---|
| 311 | + break; |
---|
| 312 | + } |
---|
| 313 | + |
---|
| 314 | + blockloop = false; |
---|
| 315 | + |
---|
| 316 | + return hasTags; |
---|
| 317 | + } |
---|
272 | 318 | |
---|
273 | 319 | void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) |
---|
274 | 320 | { |
---|
.. | .. |
---|
641 | 687 | { |
---|
642 | 688 | if (maxcount != 1) |
---|
643 | 689 | { |
---|
644 | | - new Exception().printStackTrace(); |
---|
| 690 | + //new Exception().printStackTrace(); |
---|
645 | 691 | } |
---|
646 | 692 | |
---|
647 | 693 | toParentMarked = LA.newMatrix(); |
---|
.. | .. |
---|
2323 | 2369 | |
---|
2324 | 2370 | InitOthers(); |
---|
2325 | 2371 | |
---|
2326 | | - if (this instanceof Camera) |
---|
2327 | | - { |
---|
2328 | | - material.shift = 90; |
---|
2329 | | - } |
---|
2330 | | - |
---|
2331 | 2372 | material.multiply = multiply; |
---|
2332 | 2373 | |
---|
2333 | 2374 | if (multiply) |
---|
.. | .. |
---|
3576 | 3617 | |
---|
3577 | 3618 | void ClearMaterials() |
---|
3578 | 3619 | { |
---|
| 3620 | + if (blockloop) |
---|
| 3621 | + return; |
---|
| 3622 | + |
---|
| 3623 | + blockloop = true; |
---|
| 3624 | + |
---|
3579 | 3625 | ClearMaterial(); |
---|
3580 | | - for (int i = 0; i < size(); i++) |
---|
| 3626 | + for (int i = 0; i < Size(); i++) |
---|
3581 | 3627 | { |
---|
3582 | | - Object3D child = (Object3D) reserve(i); |
---|
| 3628 | + Object3D child = (Object3D) get(i); |
---|
3583 | 3629 | if (child == null) |
---|
3584 | 3630 | continue; |
---|
3585 | 3631 | child.ClearMaterials(); |
---|
3586 | | - release(i); |
---|
3587 | 3632 | } |
---|
| 3633 | + |
---|
| 3634 | + blockloop = false; |
---|
| 3635 | + } |
---|
| 3636 | + |
---|
| 3637 | + void ClearVersionList() |
---|
| 3638 | + { |
---|
| 3639 | + this.versionlist = null; |
---|
| 3640 | + this.versionindex = -1; |
---|
| 3641 | + this.versiontable = null; |
---|
| 3642 | + } |
---|
| 3643 | + |
---|
| 3644 | + void ClearVersions() |
---|
| 3645 | + { |
---|
| 3646 | + if (blockloop) |
---|
| 3647 | + return; |
---|
| 3648 | + |
---|
| 3649 | + blockloop = true; |
---|
| 3650 | + |
---|
| 3651 | + ClearVersionList(); |
---|
| 3652 | + for (int i = 0; i < Size(); i++) |
---|
| 3653 | + { |
---|
| 3654 | + Object3D child = (Object3D) get(i); |
---|
| 3655 | + if (child == null) |
---|
| 3656 | + continue; |
---|
| 3657 | + child.ClearVersions(); |
---|
| 3658 | + } |
---|
| 3659 | + |
---|
| 3660 | + blockloop = false; |
---|
3588 | 3661 | } |
---|
3589 | 3662 | |
---|
3590 | 3663 | void FlipV(boolean flip) |
---|
.. | .. |
---|
7638 | 7711 | |
---|
7639 | 7712 | scale *= 0.05f * Globals.theRenderer.RenderCamera().Distance(); |
---|
7640 | 7713 | |
---|
7641 | | - if (modified || opposite) |
---|
| 7714 | + // Modified could snap |
---|
| 7715 | + if (//modified || |
---|
| 7716 | + opposite) |
---|
7642 | 7717 | { |
---|
7643 | 7718 | //assert(false); |
---|
7644 | 7719 | /* |
---|
.. | .. |
---|
7732 | 7807 | |
---|
7733 | 7808 | if (modified) |
---|
7734 | 7809 | { |
---|
7735 | | - // Rotate 90 degrees |
---|
| 7810 | + // Rotate 45 degrees |
---|
7736 | 7811 | angle /= (Math.PI / 4); |
---|
7737 | 7812 | angle = Math.floor(angle + 0.5); |
---|
7738 | 7813 | angle *= (Math.PI / 4); |
---|
.. | .. |
---|
7818 | 7893 | case 3: // '\001' |
---|
7819 | 7894 | if (modified || opposite) |
---|
7820 | 7895 | { |
---|
7821 | | - if (modified && opposite) |
---|
| 7896 | + if (modified) // && opposite) |
---|
7822 | 7897 | LA.matScale(toParent, totalScale, totalScale, totalScale); |
---|
7823 | 7898 | else |
---|
7824 | 7899 | //LA.matScale(toParent, 1, hScale, vScale); |
---|
.. | .. |
---|
7834 | 7909 | case 2: // '\002' |
---|
7835 | 7910 | if (modified || opposite) |
---|
7836 | 7911 | { |
---|
7837 | | - if (modified && opposite) |
---|
| 7912 | + if (modified) // && opposite) |
---|
7838 | 7913 | LA.matScale(toParent, totalScale, totalScale, totalScale); |
---|
7839 | 7914 | else |
---|
7840 | 7915 | //LA.matScale(toParent, hScale, 1, vScale); |
---|
.. | .. |
---|
7848 | 7923 | case 1: // '\003' |
---|
7849 | 7924 | if (modified || opposite) |
---|
7850 | 7925 | { |
---|
7851 | | - if (modified && opposite) |
---|
| 7926 | + if (modified) // && opposite) |
---|
7852 | 7927 | LA.matScale(toParent, totalScale, totalScale, totalScale); |
---|
7853 | 7928 | else |
---|
7854 | 7929 | //LA.matScale(toParent, hScale, vScale, 1); |
---|