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 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.");
- }
-
-}
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 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.");
- }
-}
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.");