From 25b1780e09194899aab515f885550e1779b9519b Mon Sep 17 00:00:00 2001 From: shadowislord Date: Sat, 28 Feb 2015 18:32:38 -0500 Subject: [PATCH] AssetManager: remove useless subclasses * All platforms now use asset configuration files. Subclasses of DesktopAssetManager no longer required. * Added general asset config file which is included by all * JmeSystemDelegate now always returns DesktopAssetManager * JmeSystem is now responsible for providing the platform-specific asset config path * Deprecate JmeSystem.createImageRaster(), it is simpler to create a DefaultImageRaster --- .../com/jme3/asset/AndroidAssetManager.java | 111 -------------- .../jme3/system/android/JmeAndroidSystem.java | 49 +------ .../main/resources/com/jme3/asset/Android.cfg | 8 + .../main/java/com/jme3/asset/AssetConfig.java | 137 ++++++++---------- .../com/jme3/asset/DesktopAssetManager.java | 22 +-- .../main/java/com/jme3/system/JmeSystem.java | 10 ++ .../com/jme3/system/JmeSystemDelegate.java | 24 ++- .../main/resources/com/jme3/asset/Desktop.cfg | 27 +--- .../main/resources/com/jme3/asset/General.cfg | 26 ++++ .../com/jme3/system/JmeDesktopSystem.java | 17 +-- jme3-ios/src/main/java/com/jme3/asset/IOS.cfg | 4 + .../com/jme3/system/ios/IosAssetManager.java | 109 -------------- .../com/jme3/system/ios/JmeIosSystem.java | 24 +-- 13 files changed, 147 insertions(+), 421 deletions(-) delete mode 100644 jme3-android/src/main/java/com/jme3/asset/AndroidAssetManager.java create mode 100644 jme3-android/src/main/resources/com/jme3/asset/Android.cfg create mode 100644 jme3-core/src/main/resources/com/jme3/asset/General.cfg create mode 100644 jme3-ios/src/main/java/com/jme3/asset/IOS.cfg delete mode 100644 jme3-ios/src/main/java/com/jme3/system/ios/IosAssetManager.java diff --git a/jme3-android/src/main/java/com/jme3/asset/AndroidAssetManager.java b/jme3-android/src/main/java/com/jme3/asset/AndroidAssetManager.java deleted file mode 100644 index 9873a8476..000000000 --- a/jme3-android/src/main/java/com/jme3/asset/AndroidAssetManager.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2009-2012 jMonkeyEngine - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of 'jMonkeyEngine' nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package com.jme3.asset; - -import com.jme3.asset.plugins.AndroidLocator; -import com.jme3.asset.plugins.ClasspathLocator; -import com.jme3.audio.plugins.AndroidAudioLoader; -import com.jme3.audio.plugins.NativeVorbisLoader; -import com.jme3.audio.plugins.WAVLoader; -import com.jme3.system.AppSettings; -import com.jme3.system.android.JmeAndroidSystem; -import com.jme3.texture.plugins.AndroidBufferImageLoader; -import com.jme3.texture.plugins.AndroidNativeImageLoader; -import java.net.URL; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * AndroidAssetManager is an implementation of DesktopAssetManager for Android - * - * @author larynx - */ -public class AndroidAssetManager extends DesktopAssetManager { - - private static final Logger logger = Logger.getLogger(AndroidAssetManager.class.getName()); - - private void registerLoaderSafe(String loaderClass, String ... extensions) { - try { - Class loader = (Class) Class.forName(loaderClass); - registerLoader(loader, extensions); - } catch (Exception e){ - logger.log(Level.WARNING, "Failed to load AssetLoader", e); - } - } - - /** - * AndroidAssetManager constructor - * If URL == null then a default list of locators and loaders for android is set - * @param configFile - */ - public AndroidAssetManager(URL configFile) { - System.setProperty("org.xml.sax.driver", "org.xmlpull.v1.sax2.Driver"); - - // Set Default Android config - registerLocator("", AndroidLocator.class); - registerLocator("", ClasspathLocator.class); - - registerLoader(AndroidNativeImageLoader.class, "jpg", "jpeg", "bmp", "gif", "png"); - - if (JmeAndroidSystem.getAudioRendererType().equals(AppSettings.ANDROID_MEDIAPLAYER)) { - registerLoader(AndroidAudioLoader.class, "ogg", "mp3", "wav"); - } else if (JmeAndroidSystem.getAudioRendererType().equals(AppSettings.ANDROID_OPENAL_SOFT)) { - registerLoader(WAVLoader.class, "wav"); - registerLoader(NativeVorbisLoader.class, "ogg"); - } else { - throw new IllegalStateException("No Audio Renderer Type defined!"); - } - - registerLoader(com.jme3.material.plugins.J3MLoader.class, "j3m"); - registerLoader(com.jme3.material.plugins.J3MLoader.class, "j3md"); - registerLoader(com.jme3.material.plugins.ShaderNodeDefinitionLoader.class, "j3sn"); - registerLoader(com.jme3.shader.plugins.GLSLLoader.class, "vert", "frag", "glsl", "glsllib"); - registerLoader(com.jme3.export.binary.BinaryImporter.class, "j3o"); - registerLoader(com.jme3.font.plugins.BitmapFontLoader.class, "fnt"); - - // Less common loaders (especially on Android) - registerLoaderSafe("com.jme3.texture.plugins.DDSLoader", "dds"); - registerLoaderSafe("com.jme3.texture.plugins.PFMLoader", "pfm"); - registerLoaderSafe("com.jme3.texture.plugins.HDRLoader", "hdr"); - registerLoaderSafe("com.jme3.texture.plugins.TGALoader", "tga"); - registerLoaderSafe("com.jme3.scene.plugins.OBJLoader", "obj"); - registerLoaderSafe("com.jme3.scene.plugins.MTLLoader", "mtl"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.MeshLoader", "mesh.xml"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.SkeletonLoader", "skeleton.xml"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.MaterialLoader", "material"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.SceneLoader", "scene"); - - - logger.fine("AndroidAssetManager created."); - } - -} diff --git a/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java b/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java index c2dfa7b17..fc6ef7683 100644 --- a/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java +++ b/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java @@ -6,9 +6,6 @@ import android.graphics.Bitmap; import android.os.Environment; import android.view.View; import android.view.inputmethod.InputMethodManager; -import com.jme3.asset.AndroidAssetManager; -import com.jme3.asset.AndroidImageInfo; -import com.jme3.asset.AssetManager; import com.jme3.audio.AudioRenderer; import com.jme3.audio.android.AndroidAL; import com.jme3.audio.android.AndroidALC; @@ -19,14 +16,10 @@ import com.jme3.audio.openal.ALC; import com.jme3.audio.openal.EFX; import com.jme3.system.*; import com.jme3.system.JmeContext.Type; -import com.jme3.texture.Image; -import com.jme3.texture.image.DefaultImageRaster; -import com.jme3.texture.image.ImageRaster; import com.jme3.util.AndroidScreenshots; import java.io.File; import java.io.IOException; import java.io.OutputStream; -import java.net.URL; import java.nio.ByteBuffer; import java.util.logging.Level; @@ -41,6 +34,11 @@ public class JmeAndroidSystem extends JmeSystemDelegate { } catch (UnsatisfiedLinkError e) { } } + + @Override + public String getPlatformAssetConfigPath() { + return "com/jme3/asset/Android.cfg"; + } @Override public void writeImageFile(OutputStream outStream, String format, ByteBuffer imageData, int width, int height) throws IOException { @@ -58,27 +56,6 @@ public class JmeAndroidSystem extends JmeSystemDelegate { bitmapImage.recycle(); } - @Override - public ImageRaster createImageRaster(Image image, int slice) { - if (image.getEfficentData() != null) { - return (AndroidImageInfo) image.getEfficentData(); - } else { - return new DefaultImageRaster(image, slice); - } - } - - @Override - public AssetManager newAssetManager(URL configFile) { - logger.log(Level.FINE, "Creating asset manager with config {0}", configFile); - return new AndroidAssetManager(configFile); - } - - @Override - public AssetManager newAssetManager() { - logger.log(Level.FINE, "Creating asset manager with default config"); - return new AndroidAssetManager(null); - } - @Override public void showErrorDialog(String message) { final String finalMsg = message; @@ -122,21 +99,6 @@ public class JmeAndroidSystem extends JmeSystemDelegate { AL al = new AndroidAL(); EFX efx = new AndroidEFX(); return new ALAudioRenderer(al, alc, efx); -/* - if (settings.getAudioRenderer().equals(AppSettings.ANDROID_MEDIAPLAYER)) { - logger.log(Level.INFO, "newAudioRenderer settings set to Android MediaPlayer / SoundPool"); - audioRendererType = AppSettings.ANDROID_MEDIAPLAYER; - return new AndroidMediaPlayerAudioRenderer(activity); - } else if (settings.getAudioRenderer().equals(AppSettings.ANDROID_OPENAL_SOFT)) { - logger.log(Level.INFO, "newAudioRenderer settings set to Android OpenAL Soft"); - audioRendererType = AppSettings.ANDROID_OPENAL_SOFT; - return new AndroidMediaPlayerAudioRenderer(activity); - } else { - logger.log(Level.INFO, "AudioRenderer not set. Defaulting to Android MediaPlayer / SoundPool"); - audioRendererType = AppSettings.ANDROID_MEDIAPLAYER; - return new AndroidMediaPlayerAudioRenderer(activity); - } -*/ } @Override @@ -145,6 +107,7 @@ public class JmeAndroidSystem extends JmeSystemDelegate { return; } initialized = true; + System.setProperty("org.xml.sax.driver", "org.xmlpull.v1.sax2.Driver"); logger.log(Level.INFO, getBuildInfo()); } diff --git a/jme3-android/src/main/resources/com/jme3/asset/Android.cfg b/jme3-android/src/main/resources/com/jme3/asset/Android.cfg new file mode 100644 index 000000000..b793e9f0f --- /dev/null +++ b/jme3-android/src/main/resources/com/jme3/asset/Android.cfg @@ -0,0 +1,8 @@ +INCLUDE com/jme3/asset/General.cfg + +# Android specific locators +LOCATOR / com.jme3.asset.plugins.AndroidLocator + +# Android specific loaders +LOADER com.jme3.texture.plugins.AndroidNativeImageLoader : jpg, bmp, gif, png, jpeg +LOADER com.jme3.audio.plugins.NativeVorbisLoader : ogg diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetConfig.java b/jme3-core/src/main/java/com/jme3/asset/AssetConfig.java index 735a57be8..50b6e38af 100644 --- a/jme3-core/src/main/java/com/jme3/asset/AssetConfig.java +++ b/jme3-core/src/main/java/com/jme3/asset/AssetConfig.java @@ -33,6 +33,9 @@ package com.jme3.asset; import java.io.IOException; import java.io.InputStream; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Locale; import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; @@ -42,97 +45,77 @@ import java.util.logging.Logger; *

* The config file is specified with the following format: * + * "INCLUDE" * "LOADER" : ( ",")* - * "LOCATOR" : ( ",")* + * "LOCATOR" * * * @author Kirill Vainer */ -public class AssetConfig { +public final class AssetConfig { - private AssetManager manager; - - public AssetConfig(AssetManager manager){ - this.manager = manager; - } - - public void loadText(InputStream in) throws IOException{ - Scanner scan = new Scanner(in); - while (scan.hasNext()){ - String cmd = scan.next(); - if (cmd.equals("LOADER")){ - String loaderClass = scan.next(); - String colon = scan.next(); - if (!colon.equals(":")){ - throw new IOException("Expected ':', got '"+colon+"'"); - } - String extensionsList = scan.nextLine(); - String[] extensions = extensionsList.split(","); - for (int i = 0; i < extensions.length; i++){ - extensions[i] = extensions[i].trim(); - } - Class clazz = acquireClass(loaderClass); - if (clazz != null) { - manager.registerLoader(clazz, extensions); - } else { - Logger.getLogger(this.getClass().getName()).log(Level.WARNING, "Cannot find loader {0}", loaderClass); - } - } else if (cmd.equals("LOCATOR")) { - String rootPath = scan.next(); - String locatorClass = scan.nextLine().trim(); - Class clazz = acquireClass(locatorClass); - if (clazz != null) { - manager.registerLocator(rootPath, clazz); - } else { - Logger.getLogger(this.getClass().getName()).log(Level.WARNING, "Cannot find locator {0}", locatorClass); - } - } else { - throw new IOException("Expected command, got '" + cmd + "'"); - } - } - } + private static final Logger logger = Logger.getLogger(AssetConfig.class.getName()); - private Class acquireClass(String name) { + private AssetConfig() { } + + private static Class acquireClass(String name) { try { - Class clazz = Class.forName(name); - return clazz; + return Class.forName(name); } catch (ClassNotFoundException ex) { return null; } } - /* - private static String readString(DataInput dataIn) throws IOException{ - int length = dataIn.readUnsignedShort(); - char[] chrs = new char[length]; - for (int i = 0; i < length; i++){ - chrs[i] = (char) dataIn.readUnsignedByte(); - } - return String.valueOf(chrs); - } - - public void loadBinary(DataInput dataIn) throws IOException{ - // read signature and version - - // how many locator entries? - int locatorEntries = dataIn.readUnsignedShort(); - for (int i = 0; i < locatorEntries; i++){ - String locatorClazz = readString(dataIn); - String rootPath = readString(dataIn); - manager.registerLocator(rootPath, locatorClazz); - } - - int loaderEntries = dataIn.readUnsignedShort(); - for (int i = 0; i < loaderEntries; i++){ - String loaderClazz = readString(dataIn); - int numExtensions = dataIn.readUnsignedByte(); - String[] extensions = new String[numExtensions]; - for (int j = 0; j < numExtensions; j++){ - extensions[j] = readString(dataIn); + public static void loadText(AssetManager assetManager, URL configUrl) throws IOException{ + InputStream in = configUrl.openStream(); + try { + Scanner scan = new Scanner(in); + scan.useLocale(Locale.US); // Fix commas / periods ?? + while (scan.hasNext()){ + String cmd = scan.next(); + if (cmd.equals("LOADER")){ + String loaderClass = scan.next(); + String colon = scan.next(); + if (!colon.equals(":")){ + throw new IOException("Expected ':', got '"+colon+"'"); + } + String extensionsList = scan.nextLine(); + String[] extensions = extensionsList.split(","); + for (int i = 0; i < extensions.length; i++){ + extensions[i] = extensions[i].trim(); + } + Class clazz = acquireClass(loaderClass); + if (clazz != null) { + assetManager.registerLoader(clazz, extensions); + } else { + logger.log(Level.WARNING, "Cannot find loader {0}", loaderClass); + } + } else if (cmd.equals("LOCATOR")) { + String rootPath = scan.next(); + String locatorClass = scan.nextLine().trim(); + Class clazz = acquireClass(locatorClass); + if (clazz != null) { + assetManager.registerLocator(rootPath, clazz); + } else { + logger.log(Level.WARNING, "Cannot find locator {0}", locatorClass); + } + } else if (cmd.equals("INCLUDE")) { + String includedCfg = scan.nextLine().trim(); + URL includedCfgUrl = Thread.currentThread().getContextClassLoader().getResource(includedCfg); + if (includedCfgUrl != null) { + loadText(assetManager, includedCfgUrl); + } else { + logger.log(Level.WARNING, "Cannot find config include {0}", includedCfg); + } + } else if (cmd.trim().startsWith("#")) { + scan.nextLine(); + continue; + } else { + throw new IOException("Expected command, got '" + cmd + "'"); + } } - - manager.registerLoader(loaderClazz, extensions); + } finally { + if (in != null) in.close(); } } - */ } diff --git a/jme3-core/src/main/java/com/jme3/asset/DesktopAssetManager.java b/jme3-core/src/main/java/com/jme3/asset/DesktopAssetManager.java index df7f21810..21b9808d8 100644 --- a/jme3-core/src/main/java/com/jme3/asset/DesktopAssetManager.java +++ b/jme3-core/src/main/java/com/jme3/asset/DesktopAssetManager.java @@ -81,11 +81,6 @@ public class DesktopAssetManager implements AssetManager { this(null); } - @Deprecated - public DesktopAssetManager(boolean loadDefaults){ - this(Thread.currentThread().getContextClassLoader().getResource("com/jme3/asset/Desktop.cfg")); - } - public DesktopAssetManager(URL configFile){ if (configFile != null){ loadConfigFile(configFile); @@ -93,20 +88,11 @@ public class DesktopAssetManager implements AssetManager { logger.fine("DesktopAssetManager created."); } - private void loadConfigFile(URL configFile){ - InputStream stream = null; - try{ - AssetConfig cfg = new AssetConfig(this); - stream = configFile.openStream(); - cfg.loadText(stream); - }catch (IOException ex){ + private void loadConfigFile(URL configFile) { + try { + AssetConfig.loadText(this, configFile); + } catch (IOException ex) { logger.log(Level.SEVERE, "Failed to load asset config", ex); - }finally{ - if (stream != null) - try{ - stream.close(); - }catch (IOException ex){ - } } } diff --git a/jme3-core/src/main/java/com/jme3/system/JmeSystem.java b/jme3-core/src/main/java/com/jme3/system/JmeSystem.java index 637b24304..a29262726 100644 --- a/jme3-core/src/main/java/com/jme3/system/JmeSystem.java +++ b/jme3-core/src/main/java/com/jme3/system/JmeSystem.java @@ -35,6 +35,7 @@ import com.jme3.asset.AssetManager; import com.jme3.audio.AudioRenderer; import com.jme3.input.SoftTextDialogInput; import com.jme3.texture.Image; +import com.jme3.texture.image.DefaultImageRaster; import com.jme3.texture.image.ImageRaster; import java.io.File; import java.io.IOException; @@ -166,6 +167,15 @@ public class JmeSystem { return systemDelegate.newAudioRenderer(settings); } + public static String getPlatformAssetConfigPath() { + checkDelegate(); + return systemDelegate.getPlatformAssetConfigPath(); + } + + /** + * @deprecated Directly create an image raster via {@link DefaultImageRaster}. + */ + @Deprecated public static ImageRaster createImageRaster(Image image, int slice) { checkDelegate(); return systemDelegate.createImageRaster(image, slice); diff --git a/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java b/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java index 6b204456b..a129f6423 100644 --- a/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java +++ b/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java @@ -32,9 +32,11 @@ package com.jme3.system; import com.jme3.asset.AssetManager; +import com.jme3.asset.DesktopAssetManager; import com.jme3.audio.AudioRenderer; import com.jme3.input.SoftTextDialogInput; import com.jme3.texture.Image; +import com.jme3.texture.image.DefaultImageRaster; import com.jme3.texture.image.ImageRaster; import java.io.File; import java.io.IOException; @@ -117,15 +119,25 @@ public abstract class JmeSystemDelegate { public void setSoftTextDialogInput(SoftTextDialogInput input) { softTextDialogInput = input; } + public SoftTextDialogInput getSoftTextDialogInput() { return softTextDialogInput; } - public abstract void writeImageFile(OutputStream outStream, String format, ByteBuffer imageData, int width, int height) throws IOException; - - public abstract AssetManager newAssetManager(URL configFile); + public final AssetManager newAssetManager(URL configFile) { + return new DesktopAssetManager(configFile); + } - public abstract AssetManager newAssetManager(); + public final AssetManager newAssetManager() { + return new DesktopAssetManager(null); + } + + @Deprecated + public final ImageRaster createImageRaster(Image image, int slice) { + return new DefaultImageRaster(image, slice); + } + + public abstract void writeImageFile(OutputStream outStream, String format, ByteBuffer imageData, int width, int height) throws IOException; public abstract void showErrorDialog(String message); @@ -181,13 +193,13 @@ public abstract class JmeSystemDelegate { return sb.toString(); } + public abstract String getPlatformAssetConfigPath(); + public abstract JmeContext newContext(AppSettings settings, JmeContext.Type contextType); public abstract AudioRenderer newAudioRenderer(AppSettings settings); public abstract void initialize(AppSettings settings); - public abstract ImageRaster createImageRaster(Image image, int slice); - public abstract void showSoftKeyboard(boolean show); } diff --git a/jme3-core/src/main/resources/com/jme3/asset/Desktop.cfg b/jme3-core/src/main/resources/com/jme3/asset/Desktop.cfg index 60b86fbc1..e64570831 100644 --- a/jme3-core/src/main/resources/com/jme3/asset/Desktop.cfg +++ b/jme3-core/src/main/resources/com/jme3/asset/Desktop.cfg @@ -1,26 +1,5 @@ -LOCATOR / com.jme3.asset.plugins.ClasspathLocator +INCLUDE com/jme3/asset/General.cfg +# Desktop-specific loaders LOADER com.jme3.texture.plugins.AWTLoader : jpg, bmp, gif, png, jpeg -LOADER com.jme3.audio.plugins.WAVLoader : wav -LOADER com.jme3.audio.plugins.OGGLoader : ogg -LOADER com.jme3.cursors.plugins.CursorLoader : ani, cur, ico -LOADER com.jme3.material.plugins.J3MLoader : j3m -LOADER com.jme3.material.plugins.J3MLoader : j3md -LOADER com.jme3.material.plugins.ShaderNodeDefinitionLoader : j3sn -LOADER com.jme3.font.plugins.BitmapFontLoader : fnt -LOADER com.jme3.texture.plugins.DDSLoader : dds -LOADER com.jme3.texture.plugins.PFMLoader : pfm -LOADER com.jme3.texture.plugins.HDRLoader : hdr -LOADER com.jme3.texture.plugins.TGALoader : tga -LOADER com.jme3.export.binary.BinaryImporter : j3o -LOADER com.jme3.export.binary.BinaryImporter : j3f -LOADER com.jme3.scene.plugins.OBJLoader : obj -LOADER com.jme3.scene.plugins.MTLLoader : mtl -LOADER com.jme3.scene.plugins.ogre.MeshLoader : meshxml, mesh.xml -LOADER com.jme3.scene.plugins.ogre.SkeletonLoader : skeletonxml, skeleton.xml -LOADER com.jme3.scene.plugins.ogre.MaterialLoader : material -LOADER com.jme3.scene.plugins.ogre.SceneLoader : scene -LOADER com.jme3.scene.plugins.blender.BlenderModelLoader : blend -LOADER com.jme3.shader.plugins.GLSLLoader : vert, frag, glsl, glsllib -LOADER com.jme3.scene.plugins.fbx.SceneLoader : fbx -LOADER com.jme3.scene.plugins.fbx.SceneWithAnimationLoader : fba +LOADER com.jme3.audio.plugins.OGGLoader : ogg \ No newline at end of file diff --git a/jme3-core/src/main/resources/com/jme3/asset/General.cfg b/jme3-core/src/main/resources/com/jme3/asset/General.cfg new file mode 100644 index 000000000..c0098ffe5 --- /dev/null +++ b/jme3-core/src/main/resources/com/jme3/asset/General.cfg @@ -0,0 +1,26 @@ +# Generic locators that should be supported on all platforms. +LOCATOR / com.jme3.asset.plugins.ClasspathLocator + +# Generic loaders that should be supported on all platforms. +LOADER com.jme3.audio.plugins.WAVLoader : wav +LOADER com.jme3.cursors.plugins.CursorLoader : ani, cur, ico +LOADER com.jme3.material.plugins.J3MLoader : j3m +LOADER com.jme3.material.plugins.J3MLoader : j3md +LOADER com.jme3.material.plugins.ShaderNodeDefinitionLoader : j3sn +LOADER com.jme3.font.plugins.BitmapFontLoader : fnt +LOADER com.jme3.texture.plugins.DDSLoader : dds +LOADER com.jme3.texture.plugins.PFMLoader : pfm +LOADER com.jme3.texture.plugins.HDRLoader : hdr +LOADER com.jme3.texture.plugins.TGALoader : tga +LOADER com.jme3.export.binary.BinaryImporter : j3o +LOADER com.jme3.export.binary.BinaryImporter : j3f +LOADER com.jme3.scene.plugins.OBJLoader : obj +LOADER com.jme3.scene.plugins.MTLLoader : mtl +LOADER com.jme3.scene.plugins.ogre.MeshLoader : meshxml, mesh.xml +LOADER com.jme3.scene.plugins.ogre.SkeletonLoader : skeletonxml, skeleton.xml +LOADER com.jme3.scene.plugins.ogre.MaterialLoader : material +LOADER com.jme3.scene.plugins.ogre.SceneLoader : scene +LOADER com.jme3.scene.plugins.blender.BlenderModelLoader : blend +LOADER com.jme3.shader.plugins.GLSLLoader : vert, frag, glsl, glsllib +LOADER com.jme3.scene.plugins.fbx.SceneLoader : fbx +LOADER com.jme3.scene.plugins.fbx.SceneWithAnimationLoader : fba diff --git a/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java b/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java index 5697b713b..f719a04ef 100644 --- a/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java +++ b/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java @@ -75,10 +75,10 @@ import javax.swing.SwingUtilities; public class JmeDesktopSystem extends JmeSystemDelegate { @Override - public AssetManager newAssetManager(URL configFile) { - return new DesktopAssetManager(configFile); + public String getPlatformAssetConfigPath() { + return "com/jme3/asset/Desktop.cfg"; } - + private static BufferedImage verticalFlip(BufferedImage original) { AffineTransform tx = AffineTransform.getScaleInstance(1, -1); tx.translate(0, -original.getHeight()); @@ -119,17 +119,6 @@ public class JmeDesktopSystem extends JmeSystemDelegate { } } - @Override - public ImageRaster createImageRaster(Image image, int slice) { - assert image.getEfficentData() == null; - return new DefaultImageRaster(image, slice); - } - - @Override - public AssetManager newAssetManager() { - return new DesktopAssetManager(null); - } - @Override public void showErrorDialog(String message) { final String msg = message; diff --git a/jme3-ios/src/main/java/com/jme3/asset/IOS.cfg b/jme3-ios/src/main/java/com/jme3/asset/IOS.cfg new file mode 100644 index 000000000..715eab985 --- /dev/null +++ b/jme3-ios/src/main/java/com/jme3/asset/IOS.cfg @@ -0,0 +1,4 @@ +INCLUDE com/jme3/asset/General.cfg + +# IOS specific loaders +LOADER com.jme3.system.ios.IosImageLoader : jpg, bmp, gif, png, jpeg diff --git a/jme3-ios/src/main/java/com/jme3/system/ios/IosAssetManager.java b/jme3-ios/src/main/java/com/jme3/system/ios/IosAssetManager.java deleted file mode 100644 index 7a8b22067..000000000 --- a/jme3-ios/src/main/java/com/jme3/system/ios/IosAssetManager.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2009-2012 jMonkeyEngine - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of 'jMonkeyEngine' nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package com.jme3.system.ios; - -import com.jme3.asset.AssetLoader; -import com.jme3.asset.DesktopAssetManager; -import com.jme3.asset.TextureKey; -import com.jme3.asset.plugins.ClasspathLocator; -import com.jme3.audio.plugins.WAVLoader; -import com.jme3.texture.Texture; -import java.io.InputStream; -import java.net.URL; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * - * @author normenhansen - */ -public class IosAssetManager extends DesktopAssetManager { - - private static final Logger logger = Logger.getLogger(IosAssetManager.class.getName()); - - public IosAssetManager() { - this(null); - } - - @Deprecated - public IosAssetManager(boolean loadDefaults) { - //this(Thread.currentThread().getContextClassLoader().getResource("com/jme3/asset/Android.cfg")); - this(null); - } - - private void registerLoaderSafe(String loaderClass, String ... extensions) { - try { - Class loader = (Class) Class.forName(loaderClass); - registerLoader(loader, extensions); - } catch (Exception e){ - logger.log(Level.WARNING, "Failed to load AssetLoader", e); - } - } - - /** - * AndroidAssetManager constructor - * If URL == null then a default list of locators and loaders for android is set - * @param configFile - */ - public IosAssetManager(URL configFile) { - System.setProperty("org.xml.sax.driver", "org.xmlpull.v1.sax2.Driver"); - - // Set Default iOS config - registerLocator("", ClasspathLocator.class); - - registerLoader(IosImageLoader.class, "jpg", "bmp", "gif", "png", "jpeg"); - //registerLoader(AndroidImageLoader.class, "jpg", "bmp", "gif", "png", "jpeg"); - //registerLoader(AndroidAudioLoader.class, "ogg", "mp3", "wav"); - registerLoader(com.jme3.material.plugins.J3MLoader.class, "j3m"); - registerLoader(com.jme3.material.plugins.J3MLoader.class, "j3md"); - registerLoader(com.jme3.shader.plugins.GLSLLoader.class, "vert", "frag", "glsl", "glsllib"); - registerLoader(com.jme3.export.binary.BinaryImporter.class, "j3o"); - registerLoader(com.jme3.font.plugins.BitmapFontLoader.class, "fnt"); - registerLoader(WAVLoader.class, "wav"); - - // Less common loaders (especially on iOS) - registerLoaderSafe("com.jme3.audio.plugins.OGGLoader", "ogg"); - registerLoaderSafe("com.jme3.texture.plugins.DDSLoader", "dds"); - registerLoaderSafe("com.jme3.texture.plugins.PFMLoader", "pfm"); - registerLoaderSafe("com.jme3.texture.plugins.HDRLoader", "hdr"); - registerLoaderSafe("com.jme3.texture.plugins.TGALoader", "tga"); - registerLoaderSafe("com.jme3.scene.plugins.OBJLoader", "obj"); - registerLoaderSafe("com.jme3.scene.plugins.MTLLoader", "mtl"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.MeshLoader", "mesh.xml"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.SkeletonLoader", "skeleton.xml"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.MaterialLoader", "material"); - registerLoaderSafe("com.jme3.scene.plugins.ogre.SceneLoader", "scene"); - - - logger.fine("IosAssetManager created."); - } -} diff --git a/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java b/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java index b4b7906e1..1ffb097f7 100644 --- a/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java +++ b/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java @@ -31,17 +31,13 @@ */ package com.jme3.system.ios; -import com.jme3.asset.AssetManager; import com.jme3.audio.AudioRenderer; import com.jme3.system.AppSettings; import com.jme3.system.JmeContext; import com.jme3.system.JmeSystemDelegate; import com.jme3.system.NullContext; -import com.jme3.texture.Image; -import com.jme3.texture.image.ImageRaster; import java.io.IOException; import java.io.OutputStream; -import java.net.URL; import java.nio.ByteBuffer; import java.util.logging.Logger; @@ -52,18 +48,13 @@ import java.util.logging.Logger; public class JmeIosSystem extends JmeSystemDelegate { @Override - public void writeImageFile(OutputStream outStream, String format, ByteBuffer imageData, int width, int height) throws IOException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public AssetManager newAssetManager(URL configFile) { - return new IosAssetManager(configFile); + public String getPlatformAssetConfigPath() { + return "com/jme3/asset/IOS.cfg"; } - + @Override - public AssetManager newAssetManager() { - return new IosAssetManager(); + public void writeImageFile(OutputStream outStream, String format, ByteBuffer imageData, int width, int height) throws IOException { + throw new UnsupportedOperationException("Not supported yet."); } @Override @@ -106,11 +97,6 @@ public class JmeIosSystem extends JmeSystemDelegate { // throw new UnsupportedOperationException("Not supported yet."); } - @Override - public ImageRaster createImageRaster(Image image, int slice) { - throw new UnsupportedOperationException("Not supported yet."); - } - @Override public void showSoftKeyboard(boolean show) { throw new UnsupportedOperationException("Not supported yet.");