From b33ef80d78f01a6a61f4248b1bb7deaade42d503 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 16 Jun 2019 11:49:21 -0400 Subject: [PATCH] Attribute editor --- ObjEditor.java | 105 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 92 insertions(+), 13 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index b7c343d..747c30b 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -278,7 +278,7 @@ frame.setMenuBar(menuBar = new MenuBar()); menuBar.add(fileMenu = new Menu("File")); fileMenu.add(newItem = new MenuItem("New")); - fileMenu.add(loadItem = new MenuItem("Load...")); + fileMenu.add(loadItem = new MenuItem("Open...")); //oe.menuBar.add(menu = new Menu("Include")); Menu menu = new Menu("Import"); @@ -2072,19 +2072,19 @@ void LoadObjFile(String fullname) { - /* + System.out.println("Loading " + fullname); + /**/ //lastFilename = fullname; if(loadObjThread == null) { - loadObjThread = new LoadOBJThread(); - loadObjThread.start(); + loadObjThread = new LoadOBJThread(); + loadObjThread.start(); } loadObjThread.add(fullname); - */ + /**/ - System.out.println("Loading " + fullname); - makeSomething(new FileObject(fullname, true), true); + //makeSomething(new FileObject(fullname, true), true); } void LoadGFDFile(String fullname) @@ -2927,7 +2927,7 @@ return; } else if (event.getSource() == toggleSwitchItem) { - cameraView.ToggleRandom(); + cameraView.ToggleSwitch(); cameraView.repaint(); return; } else if (event.getSource() == toggleHandleItem) @@ -3214,6 +3214,53 @@ objEditor.refreshContents(); } + static public byte[] Compress(Object3D o) + { + try + { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + java.util.zip.GZIPOutputStream zstream = new java.util.zip.GZIPOutputStream(baos); + ObjectOutputStream out = new ObjectOutputStream(zstream); + + Object3D parent = o.parent; + o.parent = null; + + out.writeObject(o); + + o.parent = parent; + + out.flush(); + + zstream.close(); + out.close(); + + return baos.toByteArray(); + } catch (Exception e) + { + System.err.println(e); + return null; + } + } + + static public Object Uncompress(byte[] bytes) + { + System.out.println("#bytes = " + bytes.length); + try + { + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + java.util.zip.GZIPInputStream istream = new java.util.zip.GZIPInputStream(bais); + ObjectInputStream in = new ObjectInputStream(istream); + Object obj = in.readObject(); + in.close(); + + return obj; + } catch (Exception e) + { + System.err.println(e); + return null; + } + } + static public Object clone(Object o) { try @@ -3222,12 +3269,19 @@ ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(o); + + out.flush(); + out.close(); + + byte[] bytes = baos.toByteArray(); + + System.out.println("clone = " + bytes.length); - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); ObjectInputStream in = new ObjectInputStream(bais); Object obj = in.readObject(); in.close(); - out.close(); + return obj; } catch (Exception e) { @@ -3251,13 +3305,26 @@ return null; } + java.util.Hashtable<java.util.UUID, Object3D> hashtable = new java.util.Hashtable<java.util.UUID, Object3D>(); + public void Save() { cRadio tab = GetCurrentTab(); + boolean temp = CameraPane.SWITCH; + CameraPane.SWITCH = false; + + copy.ExtractBigData(hashtable); + //EditorFrame.m_MainFrame.requestFocusInWindow(); - tab.graphs[tab.undoindex++] = (Object3D)clone(copy); + tab.graphs[tab.undoindex++] = Compress(copy); + copy.RestoreBigData(hashtable); + + CameraPane.SWITCH = temp; + + //assert(hashtable.isEmpty()); + for (int i = tab.undoindex; i < tab.graphs.length; i++) { tab.graphs[i] = null; @@ -3285,12 +3352,23 @@ void CopyChanged(Object3D obj) { + boolean temp = CameraPane.SWITCH; + CameraPane.SWITCH = false; + + copy.ExtractBigData(hashtable); + copy.clear(); for (int i=0; i<obj.Size(); i++) { copy.add(obj.get(i)); } + + copy.RestoreBigData(hashtable); + + CameraPane.SWITCH = temp; + + //assert(hashtable.isEmpty()); copy.Touch(); @@ -3331,7 +3409,7 @@ tab.undoindex -= 1; - CopyChanged(tab.graphs[tab.undoindex]); + CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex])); } public void Redo() @@ -3346,7 +3424,7 @@ tab.undoindex += 1; - CopyChanged(tab.graphs[tab.undoindex]); + CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex])); } void ImportGFD() @@ -4295,6 +4373,7 @@ if (readobj != null) { + Save(); try { //readobj.deepCopySelf(copy); -- Gitblit v1.6.2