Browse Source

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

shadowislord 10 years ago
parent
commit
25b1780e09

+ 0 - 111
jme3-android/src/main/java/com/jme3/asset/AndroidAssetManager.java

@@ -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;
-
-/**
- * <code>AndroidAssetManager</code> 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<? extends AssetLoader> loader = (Class<? extends AssetLoader>) 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.");
-    }
-
-}

+ 6 - 43
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());
     }
 

+ 8 - 0
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

+ 60 - 77
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;
  * <br/><br/>
  * The config file is specified with the following format:
  * <code>
+ * "INCLUDE" <path>
  * "LOADER" <class> : (<extension> ",")* <extension>
- * "LOCATOR" <path> <class> : (<extension> ",")* <extension>
+ * "LOCATOR" <path> <class>
  * </code>
  *
  * @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();
         }
     }
-    */
 }

+ 4 - 18
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){
-                }
         }
     }
     

+ 10 - 0
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);

+ 18 - 6
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);
 }

+ 3 - 24
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

+ 26 - 0
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

+ 3 - 14
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;

+ 4 - 0
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

+ 0 - 109
jme3-ios/src/main/java/com/jme3/system/ios/IosAssetManager.java

@@ -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<? extends AssetLoader> loader = (Class<? extends AssetLoader>) 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.");
-    }
-}

+ 5 - 19
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.");