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.

---
 ObjEditor.java   |   22 ++++------
 CameraPane.java  |    2 
 Globals.java     |    3 +
 GroupEditor.java |   47 +++++++++++++++--------
 Object3D.java    |   38 +++++++++++++++++-
 5 files changed, 78 insertions(+), 34 deletions(-)

diff --git a/CameraPane.java b/CameraPane.java
index f2785e4..c9b2423 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -15504,7 +15504,7 @@
                 repaint();
                 break;
             case 'O':
-                Globals.drawMode = OCCLUSION; // WARNING
+                // Too dangerous. Use menu. Globals.drawMode = OCCLUSION; // WARNING
                 repaint();
                 break;
             case 'o':
diff --git a/Globals.java b/Globals.java
index ab47916..7832547 100644
--- a/Globals.java
+++ b/Globals.java
@@ -1,10 +1,11 @@
 
 public class Globals
 {
+        static boolean ADVANCED = false;   // false;
+        
         static boolean NIMBUSLAF = false; // false;
         
         static boolean TOOLTIPS = true;   // true;
-        static boolean ADVANCED = false;   // false;
         static boolean DEBUG = false;     // false
         
     static iCameraPane theRenderer;
diff --git a/GroupEditor.java b/GroupEditor.java
index 0ac356b..8d5ddbb 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -417,13 +417,13 @@
 		
                 assert(false);
                 
-        if (copy.versionlist == null)
-        {
-            copy.versionlist = new Object3D[100];
-            copy.versionindex = -1;
-            
-            //Save(true);
-        }
+//        if (copy.versionlist == null)
+//        {
+//            copy.versionlist = new Object3D[100];
+//            copy.versionindex = -1;
+//            
+//            //Save(true);
+//        }
         
 		if(ui)
                     SetupUI(objEditor);
@@ -446,13 +446,13 @@
                 
                 ((cRadio)radioPanel.getComponent(0)).SetCamera(cameraView.renderCamera, true);
                 
-        if (copy.versionlist == null)
-        {
-            copy.versionlist = new Object3D[100];
-            copy.versionindex = -1;
-            
-            //Save(true);
-        }
+//        if (copy.versionlist == null)
+//        {
+//            copy.versionlist = new Object3D[100];
+//            copy.versionindex = -1;
+//            
+//            //Save(true);
+//        }
 	}
 
     void CloneSelection(boolean supports)
@@ -835,6 +835,8 @@
         }
 
                 oe.menuBar.add(menu = new Menu("Attributes"));
+		clearVersionsItem = menu.add(new MenuItem("Clear Versions"));
+		clearVersionsItem.addActionListener(this);
 		clearMaterialsItem = menu.add(new MenuItem("Clear Materials"));
 		clearMaterialsItem.addActionListener(this);
                 resetAllItem = menu.add(new MenuItem("Reset All"));
@@ -3466,6 +3468,10 @@
                 {
 			ClearMaterials();
 		} else
+		if (source == clearVersionsItem)
+                {
+			ClearVersions();
+		} else
 		if (source == liveleavesItem)
                 {
 			LiveLeaves(true);
@@ -4142,12 +4148,14 @@
             // and check if any of these nodes are reachable below the root.
             Grafreed.grafreed.universe.TagObjects(copy, true);
             
-            if (!copy.HasTags())
+            if (copy.versionlist == null && !copy.HasTags())
             {
                 copy.versionlist = new Object3D[100];
                 
-                Save(true);
+                //Save(true);
             }
+            else
+                copy.versionindex = -2;
             
             Grafreed.grafreed.universe.TagObjects(copy, false);
         }
@@ -5110,6 +5118,12 @@
 	void ClearMaterials()
 	{
 		group.selection.ClearMaterials();
+		refreshContents();
+	}
+	
+	void ClearVersions()
+	{
+		group.selection.ClearVersions();
 		refreshContents();
 	}
 	
@@ -6354,6 +6368,7 @@
 	private MenuItem clipMeshItem;
 	private MenuItem smoothMeshItem;
 	private MenuItem clearMaterialsItem;
+	private MenuItem clearVersionsItem;
         
 	private MenuItem liveleavesItem;
 	private MenuItem unliveleavesItem;
diff --git a/ObjEditor.java b/ObjEditor.java
index 728fabc..83bebe7 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -383,14 +383,6 @@
         client = inClient;
         copy = client;
 
-        if (copy.versionlist == null)
-        {
-            copy.versionlist = new Object3D[100];
-            copy.versionindex = -1;
-            
-//            Save(true);
-        }
-        
         SetupUI2(callee.GetEditor());
     }
 
@@ -1884,9 +1876,9 @@
         
         if (Globals.ADVANCED)
         {
-            tabbedPane.add(infoPanel);
-            tabbedPane.setIconAt(4, GetIcon("icons/info.png"));
-            tabbedPane.setToolTipTextAt(4, "Information");
+            objectPanel.add(infoPanel);
+            objectPanel.setIconAt(5, GetIcon("icons/info.png"));
+            objectPanel.setToolTipTextAt(4, "Information");
         }
 
         /*
@@ -4475,7 +4467,11 @@
         System.err.println("Save");
         Replace();
         
-        //cRadio tab = GetCurrentTab();
+        if (copy.versionlist == null)
+        {
+            copy.versionlist = new Object3D[100];
+            copy.versionindex = -1;
+        }
         
         Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"?
         
@@ -4649,7 +4645,7 @@
                     
         //cRadio tab = GetCurrentTab();
         
-        if (copy.versionlist == null)
+        if (copy.versionindex == -2)
         {
             saveVersionButton.setEnabled(false);
             restoreButton.setEnabled(false);
diff --git a/Object3D.java b/Object3D.java
index aba2406..5df575e 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -3622,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)

--
Gitblit v1.6.2