From 4113164b3be1e50251ac40d6fd65660f0a6c2e63 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Tue, 11 Jun 2019 18:46:21 -0400 Subject: [PATCH] Compressed undo stack. --- ObjEditor.java | 9 +++++---- CameraPane.java | 2 +- cRadio.java | 2 +- Object3D.java | 8 ++++++++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CameraPane.java b/CameraPane.java index 337c107..16d28d9 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -2265,7 +2265,7 @@ LOOKAT ^= true; } - void ToggleRandom() + void ToggleSwitch() { SWITCH ^= true; } diff --git a/ObjEditor.java b/ObjEditor.java index 2cb5163..13331f4 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -2927,7 +2927,7 @@ return; } else if (event.getSource() == toggleSwitchItem) { - cameraView.ToggleRandom(); + cameraView.ToggleSwitch(); cameraView.repaint(); return; } else if (event.getSource() == toggleHandleItem) @@ -3239,6 +3239,7 @@ static public Object Uncompress(byte[] bytes) { + System.out.println("#bytes = " + bytes.length); try { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); @@ -3308,7 +3309,7 @@ copy.ExtractBigData(hashtable); //EditorFrame.m_MainFrame.requestFocusInWindow(); - tab.graphs[tab.undoindex++] = (Object3D)clone(copy); + tab.graphs[tab.undoindex++] = Compress(copy); copy.RestoreBigData(hashtable); @@ -3393,7 +3394,7 @@ tab.undoindex -= 1; - CopyChanged(tab.graphs[tab.undoindex]); + CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex])); } public void Redo() @@ -3408,7 +3409,7 @@ tab.undoindex += 1; - CopyChanged(tab.graphs[tab.undoindex]); + CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex])); } void ImportGFD() diff --git a/Object3D.java b/Object3D.java index af581bd..5c5d71f 100644 --- a/Object3D.java +++ b/Object3D.java @@ -166,7 +166,15 @@ void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) { if (hashtable.containsKey(GetUUID())) + { + Object3D o = hashtable.get(GetUUID()); + + assert(this.bRep == o.bRep); + if (this.bRep != null) + assert(this.bRep.support == o.transientrep); + return; + } Object3D o = new Object3D(); o.bRep = this.bRep; diff --git a/cRadio.java b/cRadio.java index 54e8a60..83d4fc2 100644 --- a/cRadio.java +++ b/cRadio.java @@ -35,7 +35,7 @@ camera = (Camera)Grafreed.clone(c); } - Object3D graphs[] = new Object3D[10000]; + byte[] graphs[] = new byte[10000][]; int undoindex = 0; Object3D object; -- Gitblit v1.6.2