From ae8dc339f59e972a932b9097d47271e245e4ca9a Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 06 Aug 2019 19:35:43 -0400
Subject: [PATCH] Proto textures parsing.
---
GroupEditor.java | 17 +++++++-
Grafreed.java | 73 ++++++++++++++++++++++++++++++++++++
2 files changed, 88 insertions(+), 2 deletions(-)
diff --git a/Grafreed.java b/Grafreed.java
index a463511..ed3e880 100644
--- a/Grafreed.java
+++ b/Grafreed.java
@@ -49,6 +49,79 @@
}
}
+
+ public static String RemovePrefix(String s, String prefix)
+ {
+ if (s != null && prefix != null && s.startsWith(prefix))
+ {
+ return s.substring(prefix.length());
+ }
+
+ return s;
+ }
+
+ static void ParseFileSystem(java.io.File dir, iResourceCallBack callback, String prefix)
+ {
+ callback.CallBack(RemovePrefix(dir.toString(),prefix).split("/"));
+ File[] listFiles = dir.listFiles();
+ if (listFiles != null)
+ {
+ for (java.io.File file : listFiles)
+ {
+ ParseFileSystem(file, callback, prefix);
+ }
+ }
+ }
+
+ static interface iResourceCallBack
+ {
+ void CallBack(String[] path);
+ }
+
+ static void ParseResources(String path, iResourceCallBack callback)
+ {
+ java.io.File jarFile = new java.io.File(Grafreed.class.getProtectionDomain().getCodeSource().getLocation().getPath());
+
+ if (jarFile.isFile())
+ {
+ // Run with JAR file
+ try
+ {
+ java.util.jar.JarFile jar = new java.util.jar.JarFile(jarFile);
+ java.util.Enumeration<java.util.jar.JarEntry> entries = jar.entries(); //gives ALL entries in jar
+ while (entries.hasMoreElements())
+ {
+ String name = entries.nextElement().getName();
+
+ if (name.startsWith(path + "/"))
+ callback.CallBack(RemovePrefix(name, path).split("/"));
+ }
+ jar.close();
+ } catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ } else
+ {
+ // Run with IDE
+ final java.net.URL url = Object3D.class.getResource("/" + path);
+ if (url != null)
+ {
+ try
+ {
+ java.io.File apps = new java.io.File(url.toURI());
+ ParseFileSystem(apps, callback, RemovePrefix(url.toString(), "file:"));
+// for (java.io.File app : apps.listFiles())
+// {
+// //System.out.println(RemovePrefix(app.toString(), RemovePrefix(url.toString(), "file:") + "/"));
+// }
+ } catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
public void init()
{
diff --git a/GroupEditor.java b/GroupEditor.java
index 5698ae1..ed46f77 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -16,6 +16,7 @@
//import buoy.widget.BFileChooser;
class GroupEditor extends ObjEditor implements //iParse, //iCallBack,
+ Grafreed.iResourceCallBack,
ObjectUI,
Runnable,
ActionListener,
@@ -311,12 +312,24 @@
}
}
- public void ChangeSkybox(String name)
+ public void CallBack(String[] path)
+ {
+ for (int i = 0; i < path.length; i++)
+ {
+ System.out.print(path[i] + "/");
+ }
+
+ System.out.println();
+ }
+
+ public void ChangeSkybox(String skybox)
{
//cameraView.envyoff = false;
- group.skyboxname = name;
+ group.skyboxname = skybox;
group.skyboxext = "jpg";
cameraView.repaint();
+
+ Grafreed.ParseResources("textures", this);
}
//ObjEditor objEditor;
--
Gitblit v1.6.2