From 0c7b833be7d86598a6813cd1c6db0ca9e1b17966 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Wed, 21 Aug 2019 23:22:47 -0400 Subject: [PATCH] Clear versions. --- Object3D.java | 107 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 97 insertions(+), 10 deletions(-) diff --git a/Object3D.java b/Object3D.java index 3772174..5df575e 100644 --- a/Object3D.java +++ b/Object3D.java @@ -36,6 +36,8 @@ Object3D versionlist[]; int versionindex = -1; + java.util.Hashtable<java.util.UUID, Object3D> versiontable; // = new java.util.Hashtable<java.util.UUID, Object3D>(); + ScriptNode scriptnode; void InitOthers() @@ -269,6 +271,50 @@ // // return null; // } + + transient boolean tag; + + void TagObjects(Object3D o, boolean tag) + { + if (blockloop) + return; + + o.tag = tag; + + if (o == this) + return; + + blockloop = true; + + for (int i=0; i<Size(); i++) + { + get(i).TagObjects(o, tag); + } + + blockloop = false; + } + + boolean HasTags() + { + if (blockloop) + return false; + + blockloop = true; + + boolean hasTags = false; + + for (int i=0; i<Size(); i++) + { + hasTags |= get(i).tag || get(i).HasTags(); + + if (hasTags) + break; + } + + blockloop = false; + + return hasTags; + } void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) { @@ -3576,15 +3622,47 @@ void ClearMaterials() { + if (blockloop) + return; + + blockloop = true; + ClearMaterial(); - for (int i = 0; i < size(); i++) + for (int i = 0; i < Size(); i++) { - Object3D child = (Object3D) reserve(i); + Object3D child = (Object3D) get(i); if (child == null) continue; child.ClearMaterials(); - release(i); } + + blockloop = false; + } + + void ClearVersionList() + { + this.versionlist = null; + this.versionindex = -1; + this.versiontable = null; + } + + void ClearVersions() + { + if (blockloop) + return; + + blockloop = true; + + ClearVersionList(); + for (int i = 0; i < Size(); i++) + { + Object3D child = (Object3D) get(i); + if (child == null) + continue; + child.ClearVersions(); + } + + blockloop = false; } void FlipV(boolean flip) @@ -7417,7 +7495,7 @@ boundary.y = spot.y - 30; boundary.width = spot.width + 60; boundary.height = spot.height + 60; - clickInfo.g.setColor(Color.red); + clickInfo.g.setColor(Color.white); int spotw = spot.x + spot.width; int spoth = spot.y + spot.height; clickInfo.g.fillRect(spot.x, spot.y, spot.width, spot.height); @@ -7818,21 +7896,27 @@ case 3: // '\001' if (modified || opposite) { + if (modified && opposite) + LA.matScale(toParent, totalScale, totalScale, totalScale); + else //LA.matScale(toParent, 1, hScale, vScale); - LA.matScale(toParent, totalScale, 1, 1); + LA.matScale(toParent, totalScale, 1, 1); } // vScale, 1); else { // EXCEPTION! - LA.matScale(toParent, totalScale, totalScale, totalScale); + LA.matScale(toParent, 1, totalScale, totalScale); } // vScale, 1); break; case 2: // '\002' if (modified || opposite) { - //LA.matScale(toParent, hScale, 1, vScale); - LA.matScale(toParent, 1, totalScale, 1); + if (modified && opposite) + LA.matScale(toParent, totalScale, totalScale, totalScale); + else + //LA.matScale(toParent, hScale, 1, vScale); + LA.matScale(toParent, 1, totalScale, 1); } else { LA.matScale(toParent, totalScale, 1, totalScale); @@ -7842,8 +7926,11 @@ case 1: // '\003' if (modified || opposite) { - //LA.matScale(toParent, hScale, vScale, 1); - LA.matScale(toParent, 1, 1, totalScale); + if (modified && opposite) + LA.matScale(toParent, totalScale, totalScale, totalScale); + else + //LA.matScale(toParent, hScale, vScale, 1); + LA.matScale(toParent, 1, 1, totalScale); } else { LA.matScale(toParent, totalScale, totalScale, 1); -- Gitblit v1.6.2