.. | .. |
---|
40 | 40 | |
---|
41 | 41 | ScriptNode scriptnode; |
---|
42 | 42 | |
---|
| 43 | + int VersionCount() |
---|
| 44 | + { |
---|
| 45 | + int count = 0; |
---|
| 46 | + |
---|
| 47 | + for (int i = versionlist.length; --i >= 0;) |
---|
| 48 | + { |
---|
| 49 | + if (versionlist[i] != null) |
---|
| 50 | + count++; |
---|
| 51 | + } |
---|
| 52 | + |
---|
| 53 | + return count; |
---|
| 54 | + } |
---|
| 55 | + |
---|
43 | 56 | void InitOthers() |
---|
44 | 57 | { |
---|
45 | 58 | if (projectedVertices == null || projectedVertices.length <= 2) |
---|
.. | .. |
---|
568 | 581 | } |
---|
569 | 582 | } |
---|
570 | 583 | |
---|
571 | | - int memorysize; |
---|
| 584 | + transient int memorysize; // needs to be transient, dunno why |
---|
572 | 585 | |
---|
573 | 586 | int MemorySize() |
---|
574 | 587 | { |
---|
575 | | - if (true) // memorysize == 0) |
---|
| 588 | + if (memorysize == 0) |
---|
576 | 589 | { |
---|
577 | 590 | try |
---|
578 | 591 | { |
---|
.. | .. |
---|
687 | 700 | { |
---|
688 | 701 | if (maxcount != 1) |
---|
689 | 702 | { |
---|
690 | | - new Exception().printStackTrace(); |
---|
| 703 | + //new Exception().printStackTrace(); |
---|
691 | 704 | } |
---|
692 | 705 | |
---|
693 | 706 | toParentMarked = LA.newMatrix(); |
---|
.. | .. |
---|
2369 | 2382 | |
---|
2370 | 2383 | InitOthers(); |
---|
2371 | 2384 | |
---|
2372 | | - if (this instanceof Camera) |
---|
2373 | | - { |
---|
2374 | | - material.shift = 90; |
---|
2375 | | - } |
---|
2376 | | - |
---|
2377 | 2385 | material.multiply = multiply; |
---|
2378 | 2386 | |
---|
2379 | 2387 | if (multiply) |
---|
.. | .. |
---|
3269 | 3277 | blockloop = false; |
---|
3270 | 3278 | } |
---|
3271 | 3279 | |
---|
| 3280 | + public void ResetTransform(int mask) |
---|
| 3281 | + { |
---|
| 3282 | + Object3D obj = this; |
---|
| 3283 | + |
---|
| 3284 | + if (mask == -1) |
---|
| 3285 | + { |
---|
| 3286 | + if (obj instanceof Camera) // jan 2014 |
---|
| 3287 | + { |
---|
| 3288 | + LA.matIdentity(obj.toParent); |
---|
| 3289 | + LA.matIdentity(obj.fromParent); |
---|
| 3290 | + } |
---|
| 3291 | + else |
---|
| 3292 | + { |
---|
| 3293 | + obj.toParent = null; // jan 2014 LA.matIdentity(obj.toParent); |
---|
| 3294 | + obj.fromParent = null; // LA.matIdentity(obj.fromParent); |
---|
| 3295 | + } |
---|
| 3296 | + return; |
---|
| 3297 | + } |
---|
| 3298 | + |
---|
| 3299 | + if ((mask&2) != 0) // Scale/rotation |
---|
| 3300 | + { |
---|
| 3301 | + obj.toParent[0][0] = obj.toParent[1][1] = obj.toParent[2][2] = 1; |
---|
| 3302 | + obj.toParent[0][1] = obj.toParent[1][0] = obj.toParent[2][0] = 0; |
---|
| 3303 | + obj.toParent[0][2] = obj.toParent[1][2] = obj.toParent[2][1] = 0; |
---|
| 3304 | + obj.fromParent[0][0] = obj.fromParent[1][1] = obj.fromParent[2][2] = 1; |
---|
| 3305 | + obj.fromParent[0][1] = obj.fromParent[1][0] = obj.fromParent[2][0] = 0; |
---|
| 3306 | + obj.fromParent[0][2] = obj.fromParent[1][2] = obj.fromParent[2][1] = 0; |
---|
| 3307 | + } |
---|
| 3308 | + if ((mask&1) != 0) // Translation |
---|
| 3309 | + { |
---|
| 3310 | + if (obj.toParent != null) |
---|
| 3311 | + { |
---|
| 3312 | + obj.toParent[3][0] = obj.toParent[3][1] = obj.toParent[3][2] = 0; |
---|
| 3313 | + obj.fromParent[3][0] = obj.fromParent[3][1] = obj.fromParent[3][2] = 0; |
---|
| 3314 | + } |
---|
| 3315 | + } |
---|
| 3316 | + } |
---|
| 3317 | + |
---|
| 3318 | + public void TextureRatioTransform(int axis) |
---|
| 3319 | + { |
---|
| 3320 | + cTexture tex = GetTextures(); |
---|
| 3321 | + |
---|
| 3322 | + com.sun.opengl.util.texture.TextureData texturedata = null; |
---|
| 3323 | + |
---|
| 3324 | + try |
---|
| 3325 | + { |
---|
| 3326 | + texturedata = Globals.theRenderer.GetTextureData(tex, false, texres); |
---|
| 3327 | + } |
---|
| 3328 | + catch (Exception e) |
---|
| 3329 | + { |
---|
| 3330 | + System.err.println("FAIL TextureRatio: " + this); |
---|
| 3331 | + } |
---|
| 3332 | + |
---|
| 3333 | + LA.matIdentity(Object3D.mat); |
---|
| 3334 | + Object3D.mat[axis][axis] = (double)texturedata.getWidth() / texturedata.getHeight(); |
---|
| 3335 | + |
---|
| 3336 | + if (toParent == null) |
---|
| 3337 | + { |
---|
| 3338 | + toParent = LA.newMatrix(); |
---|
| 3339 | + fromParent = LA.newMatrix(); |
---|
| 3340 | + } |
---|
| 3341 | + |
---|
| 3342 | + ResetTransform(2); |
---|
| 3343 | + |
---|
| 3344 | + LA.matConcat(Object3D.mat, fromParent, fromParent); |
---|
| 3345 | + LA.matInvert(fromParent, toParent); |
---|
| 3346 | + } |
---|
| 3347 | + |
---|
| 3348 | + void TextureRatio(int axis) |
---|
| 3349 | + { |
---|
| 3350 | + if (blockloop) |
---|
| 3351 | + return; |
---|
| 3352 | + |
---|
| 3353 | + blockloop = true; |
---|
| 3354 | + |
---|
| 3355 | + TextureRatioTransform(axis); |
---|
| 3356 | + |
---|
| 3357 | + for (int i=Size(); --i>=0;) |
---|
| 3358 | + { |
---|
| 3359 | + Object3D v = get(i); |
---|
| 3360 | + |
---|
| 3361 | + v.TextureRatio(axis); |
---|
| 3362 | + } |
---|
| 3363 | + |
---|
| 3364 | + blockloop = false; |
---|
| 3365 | + } |
---|
| 3366 | + |
---|
3272 | 3367 | void TransformChildren() |
---|
3273 | 3368 | { |
---|
3274 | 3369 | if (toParent != null) |
---|
.. | .. |
---|
3622 | 3717 | |
---|
3623 | 3718 | void ClearMaterials() |
---|
3624 | 3719 | { |
---|
| 3720 | + if (blockloop) |
---|
| 3721 | + return; |
---|
| 3722 | + |
---|
| 3723 | + blockloop = true; |
---|
| 3724 | + |
---|
3625 | 3725 | ClearMaterial(); |
---|
3626 | | - for (int i = 0; i < size(); i++) |
---|
| 3726 | + for (int i = 0; i < Size(); i++) |
---|
3627 | 3727 | { |
---|
3628 | | - Object3D child = (Object3D) reserve(i); |
---|
| 3728 | + Object3D child = (Object3D) get(i); |
---|
3629 | 3729 | if (child == null) |
---|
3630 | 3730 | continue; |
---|
3631 | 3731 | child.ClearMaterials(); |
---|
3632 | | - release(i); |
---|
3633 | 3732 | } |
---|
| 3733 | + |
---|
| 3734 | + blockloop = false; |
---|
| 3735 | + } |
---|
| 3736 | + |
---|
| 3737 | + void ClearVersionList() |
---|
| 3738 | + { |
---|
| 3739 | + this.versionlist = null; |
---|
| 3740 | + this.versionindex = -1; |
---|
| 3741 | + this.versiontable = null; |
---|
| 3742 | + } |
---|
| 3743 | + |
---|
| 3744 | + void ClearVersions() |
---|
| 3745 | + { |
---|
| 3746 | + if (blockloop) |
---|
| 3747 | + return; |
---|
| 3748 | + |
---|
| 3749 | + blockloop = true; |
---|
| 3750 | + |
---|
| 3751 | + ClearVersionList(); |
---|
| 3752 | + for (int i = 0; i < Size(); i++) |
---|
| 3753 | + { |
---|
| 3754 | + Object3D child = (Object3D) get(i); |
---|
| 3755 | + if (child == null) |
---|
| 3756 | + continue; |
---|
| 3757 | + child.ClearVersions(); |
---|
| 3758 | + } |
---|
| 3759 | + |
---|
| 3760 | + blockloop = false; |
---|
3634 | 3761 | } |
---|
3635 | 3762 | |
---|
3636 | 3763 | void FlipV(boolean flip) |
---|
.. | .. |
---|
5942 | 6069 | return parent.IsLive(); |
---|
5943 | 6070 | } |
---|
5944 | 6071 | |
---|
| 6072 | + boolean IsDynamic() |
---|
| 6073 | + { |
---|
| 6074 | + return live && bRep != null; |
---|
| 6075 | + } |
---|
| 6076 | + |
---|
5945 | 6077 | void Draw(iCameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked) |
---|
5946 | 6078 | { |
---|
5947 | 6079 | Invariants(); // june 2013 |
---|
.. | .. |
---|
6002 | 6134 | if (support != null) |
---|
6003 | 6135 | support = support; |
---|
6004 | 6136 | |
---|
6005 | | - boolean usecalllists = !IsLive() && IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null || !link2master); // !(this instanceof cSpring) && !(this instanceof BezierPatch); |
---|
| 6137 | + boolean usecalllists = !IsDynamic() && |
---|
| 6138 | + IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null || !link2master); // !(this instanceof cSpring) && !(this instanceof BezierPatch); |
---|
6006 | 6139 | //boolean usecalllists = false; //!IsLive(); // IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null) && !link2master; // !(this instanceof cSpring) && !(this instanceof BezierPatch); |
---|
6007 | 6140 | |
---|
6008 | 6141 | //usecalllists &= display.DrawMode() == display.DEFAULT; // Don't compute list in shadow pass. |
---|
.. | .. |
---|
7684 | 7817 | |
---|
7685 | 7818 | scale *= 0.05f * Globals.theRenderer.RenderCamera().Distance(); |
---|
7686 | 7819 | |
---|
7687 | | - if (modified || opposite) |
---|
| 7820 | + // Modified could snap |
---|
| 7821 | + if (//modified || |
---|
| 7822 | + opposite) |
---|
7688 | 7823 | { |
---|
7689 | 7824 | //assert(false); |
---|
7690 | 7825 | /* |
---|
.. | .. |
---|
7778 | 7913 | |
---|
7779 | 7914 | if (modified) |
---|
7780 | 7915 | { |
---|
7781 | | - // Rotate 90 degrees |
---|
| 7916 | + // Rotate 45 degrees |
---|
7782 | 7917 | angle /= (Math.PI / 4); |
---|
7783 | 7918 | angle = Math.floor(angle + 0.5); |
---|
7784 | 7919 | angle *= (Math.PI / 4); |
---|
.. | .. |
---|
7864 | 7999 | case 3: // '\001' |
---|
7865 | 8000 | if (modified || opposite) |
---|
7866 | 8001 | { |
---|
7867 | | - if (modified && opposite) |
---|
| 8002 | + if (modified) // && opposite) |
---|
7868 | 8003 | LA.matScale(toParent, totalScale, totalScale, totalScale); |
---|
7869 | 8004 | else |
---|
7870 | 8005 | //LA.matScale(toParent, 1, hScale, vScale); |
---|
.. | .. |
---|
7880 | 8015 | case 2: // '\002' |
---|
7881 | 8016 | if (modified || opposite) |
---|
7882 | 8017 | { |
---|
7883 | | - if (modified && opposite) |
---|
| 8018 | + if (modified) // && opposite) |
---|
7884 | 8019 | LA.matScale(toParent, totalScale, totalScale, totalScale); |
---|
7885 | 8020 | else |
---|
7886 | 8021 | //LA.matScale(toParent, hScale, 1, vScale); |
---|
.. | .. |
---|
7894 | 8029 | case 1: // '\003' |
---|
7895 | 8030 | if (modified || opposite) |
---|
7896 | 8031 | { |
---|
7897 | | - if (modified && opposite) |
---|
| 8032 | + if (modified) // && opposite) |
---|
7898 | 8033 | LA.matScale(toParent, totalScale, totalScale, totalScale); |
---|
7899 | 8034 | else |
---|
7900 | 8035 | //LA.matScale(toParent, hScale, vScale, 1); |
---|
.. | .. |
---|
8046 | 8181 | } // + super.toString(); |
---|
8047 | 8182 | //return name + " (" + (SizeOf.deepSizeOf(this)/1024) + "K) " + this.getClass().getName(); |
---|
8048 | 8183 | |
---|
8049 | | - if (!Globals.ADVANCED) |
---|
8050 | | - return objname; |
---|
| 8184 | +// if (!Globals.ADVANCED) |
---|
| 8185 | +// return objname; |
---|
8051 | 8186 | |
---|
8052 | | - return objname + " " + System.identityHashCode(this); |
---|
| 8187 | + return objname + " " + System.identityHashCode(this); // + GetUUID() |
---|
8053 | 8188 | } |
---|
8054 | 8189 | |
---|
8055 | 8190 | public int hashCode() |
---|