From c67da2e5d8655704601d6d06e8bc60aabe212253 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 23 Jun 2019 21:49:12 -0400 Subject: [PATCH] Compute shadow when live option. --- Object3D.java | 74 +++++++++++++++++++++++++++++++++---- 1 files changed, 66 insertions(+), 8 deletions(-) diff --git a/Object3D.java b/Object3D.java index d6e0e59..45bb2a6 100644 --- a/Object3D.java +++ b/Object3D.java @@ -881,7 +881,7 @@ if (marked && Globals.isLIVE() && live && //TEMP21aug2018 - (Globals.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW) && + (Globals.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW || !Globals.COMPUTESHADOWWHENLIVE) && currentframe != Globals.framecount) { currentframe = Globals.framecount; @@ -893,7 +893,8 @@ boolean changedir = random && Math.random() < 0.01; // && !link2master; - if (transformcount*factor > maxcount || (step == 1 && changedir)) + if (transformcount*factor >= maxcount && (rewind || random) || + (step == 1 && changedir)) { countdown = 1; delay = speedup?8:1; @@ -965,6 +966,7 @@ if (material == null || material.multiply) return true; + // Transparent objects are dynamic because we have to sort the triangles. return material.opacity > 0.99; } @@ -2386,6 +2388,10 @@ } */ } + else + { + //((ObjEditor)editWindow).SetupUI2(null); + } } void createEditWindow(GroupEditor callee, boolean newWindow) //, boolean root) @@ -3503,7 +3509,8 @@ if (blockloop) return; - if (marked || (bRep != null && material != null)) // borderline... + if (//marked || // does not make sense + (bRep != null || material != null)) // borderline... live = h; for (int i = 0; i < Size(); i++) @@ -3524,7 +3531,8 @@ return; //if (bRep != null) - if (marked || (bRep != null && material != null)) // borderline... + if (//marked || // does not make sense + (bRep != null || material != null)) // borderline... link2master = h; for (int i = 0; i < Size(); i++) @@ -3544,7 +3552,8 @@ if (blockloop) return; - if (marked || (bRep != null && material != null)) // borderline... + if (//marked || // does not make sense + (bRep != null || material != null)) // borderline... hide = h; for (int i = 0; i < Size(); i++) @@ -3564,7 +3573,7 @@ if (blockloop) return; - if (bRep != null && material != null) // borderline... + if (bRep != null || material != null) // borderline... marked = h; for (int i = 0; i < Size(); i++) @@ -3574,6 +3583,46 @@ continue; blockloop = true; child.MarkLeaves(h); + blockloop = false; + // release(i); + } + } + + void RewindLeaves(boolean h) + { + if (blockloop) + return; + + if (bRep != null || material != null) // borderline... + rewind = h; + + for (int i = 0; i < Size(); i++) + { + Object3D child = (Object3D) get(i); // reserve(i); + if (child == null) + continue; + blockloop = true; + child.RewindLeaves(h); + blockloop = false; + // release(i); + } + } + + void RandomLeaves(boolean h) + { + if (blockloop) + return; + + if (bRep != null || material != null) // borderline... + random = h; + + for (int i = 0; i < Size(); i++) + { + Object3D child = (Object3D) get(i); // reserve(i); + if (child == null) + continue; + blockloop = true; + child.RandomLeaves(h); blockloop = false; // release(i); } @@ -5702,7 +5751,7 @@ support = support; //boolean usecalllists = IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null || !link2master); // !(this instanceof cSpring) && !(this instanceof BezierPatch); - boolean usecalllists = IsLive(); // IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null) && !link2master; // !(this instanceof cSpring) && !(this instanceof BezierPatch); + boolean usecalllists = !IsLive(); // IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null) && !link2master; // !(this instanceof cSpring) && !(this instanceof BezierPatch); if (!usecalllists && bRep != null && bRep.displaylist > 0) { @@ -5723,7 +5772,7 @@ if (!selectmode && //display.DrawMode() != display.SELECTION && //(touched || (bRep != null && bRep.displaylist <= 0))) - (Globals.isLIVE() || touched && (bRep != null && bRep.displaylist <= 0))) + (Globals.isLIVE() && Globals.COMPUTESHADOWWHENLIVE || touched && (bRep != null && bRep.displaylist <= 0))) { Globals.lighttouched = true; } // all panes... @@ -6315,6 +6364,11 @@ // dec 2012 new Exception().printStackTrace(); return; + } + + if (dontselect) + { + //bRep.GenerateNormalsMINE(); } display.DrawGeometry(bRep, flipV, selectmode); @@ -7752,6 +7806,10 @@ editWindow = null; } // ? } + else + { + //editWindow.closeUI(); + } } boolean root; // patch for edit windows -- Gitblit v1.6.2