From 7b6b5ba546450e71ecc812356952b594acc5add5 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 16 Jun 2019 12:44:54 -0400 Subject: [PATCH] Fix shadow touched. --- ObjEditor.java | 249 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 237 insertions(+), 12 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index 1edfe37..9cf4839 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"); @@ -419,10 +419,10 @@ e.printStackTrace(); } - String selection = infoarea.getText(); - java.awt.datatransfer.StringSelection data = new java.awt.datatransfer.StringSelection(selection); - java.awt.datatransfer.Clipboard clipboard = - Toolkit.getDefaultToolkit().getSystemClipboard(); +// String selection = infoarea.getText(); +// java.awt.datatransfer.StringSelection data = new java.awt.datatransfer.StringSelection(selection); +// java.awt.datatransfer.Clipboard clipboard = +// Toolkit.getDefaultToolkit().getSystemClipboard(); //clipboard.setContents(data, data); } @@ -1935,6 +1935,7 @@ e2.printStackTrace(); } } + LoadJMEThread loadThread; class LoadJMEThread extends Thread @@ -1992,6 +1993,7 @@ //LoadFile0(filename, converter); } } + LoadOBJThread loadObjThread; class LoadOBJThread extends Thread @@ -2070,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) @@ -2925,7 +2927,7 @@ return; } else if (event.getSource() == toggleSwitchItem) { - cameraView.ToggleRandom(); + cameraView.ToggleSwitch(); cameraView.repaint(); return; } else if (event.getSource() == toggleHandleItem) @@ -3207,10 +3209,224 @@ { copy.remove(1); } + ResetModel(); 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 + { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + 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(bytes); + ObjectInputStream in = new ObjectInputStream(bais); + Object obj = in.readObject(); + in.close(); + + return obj; + } catch (Exception e) + { + System.err.println(e); + return null; + } + } + + cRadio GetCurrentTab() + { + cRadio ab; + for (java.util.Enumeration e = buttonGroup.getElements(); e.hasMoreElements();) + { + ab = (cRadio)e.nextElement(); + if(ab.GetObject() == copy) + { + return ab; + } + } + + 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++] = 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; + } + + // test save + if (false) + { + try + { + FileOutputStream ostream = new FileOutputStream("save" + tab.undoindex); + ObjectOutputStream p = new ObjectOutputStream(ostream); + + p.writeObject(copy); + + p.flush(); + + ostream.close(); + } catch (Exception e) + { + e.printStackTrace(); + } + } + } + + 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(); + + ResetModel(); + copy.HardTouch(); // recompile? + + cRadio ab; + for (java.util.Enumeration e = buttonGroup.getElements(); e.hasMoreElements();) + { + ab = (cRadio)e.nextElement(); + Object3D test = copy.GetObject(ab.object.GetUUID()); + //ab.camera = (Camera)copy.GetObject(ab.camera.GetUUID()); + if (test != null) + { + test.editWindow = ab.object.editWindow; + ab.object = test; + } + } + + refreshContents(); + } + + public void Undo() + { + cRadio tab = GetCurrentTab(); + + if (tab.undoindex == 0) + { + java.awt.Toolkit.getDefaultToolkit().beep(); + return; + } + + if (tab.graphs[tab.undoindex] == null) + { + Save(); + tab.undoindex -= 1; + } + + tab.undoindex -= 1; + + CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex])); + } + + public void Redo() + { + cRadio tab = GetCurrentTab(); + + if (tab.graphs[tab.undoindex + 1] == null) + { + java.awt.Toolkit.getDefaultToolkit().beep(); + return; + } + + tab.undoindex += 1; + + CopyChanged((Object3D)Uncompress(tab.graphs[tab.undoindex])); + } + void ImportGFD() { FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD); @@ -3855,6 +4071,7 @@ void makeSomething(Object3D thing, boolean resetmodel) // deselect) { + Save(); //Tween.set(thing, 0).target(1).start(tweenManager); //Tween.to(thing, 0, 0.5f).target(0).start(tweenManager); // if (thing instanceof GenericJointDemo) @@ -4078,6 +4295,7 @@ try { + // Try compressed version first. java.io.FileInputStream istream = new java.io.FileInputStream(fullname); java.util.zip.GZIPInputStream zstream = new java.util.zip.GZIPInputStream(istream); java.io.ObjectInputStream p = new java.io.ObjectInputStream(zstream); @@ -4147,6 +4365,12 @@ void LoadIt(Object obj) { + if (obj == null) + { + // Invalid file + return; + } + System.out.println("Loaded " + obj); //new Exception().printStackTrace(); Object3D readobj = (Object3D) obj; @@ -4156,6 +4380,7 @@ if (readobj != null) { + Save(); try { //readobj.deepCopySelf(copy); -- Gitblit v1.6.2