/* * Copyright (c) 2009-2010 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; import com.jme3.asset.AssetManager; import com.jme3.audio.AudioRenderer; import com.jme3.input.SoftTextDialogInput; import java.io.File; import java.io.InputStream; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; public class JmeSystem { private static JmeSystemDelegate systemDelegate; public static void setSystemDelegate(JmeSystemDelegate systemDelegate) { JmeSystem.systemDelegate = systemDelegate; } public static synchronized File getStorageFolder() { checkDelegate(); return systemDelegate.getStorageFolder(); } public static String getFullName() { checkDelegate(); return systemDelegate.getFullName(); } public static InputStream getResourceAsStream(String name) { checkDelegate(); return systemDelegate.getResourceAsStream(name); } public static URL getResource(String name) { checkDelegate(); return systemDelegate.getResource(name); } public static boolean trackDirectMemory() { checkDelegate(); return systemDelegate.trackDirectMemory(); } public static void setLowPermissions(boolean lowPerm) { checkDelegate(); systemDelegate.setLowPermissions(lowPerm); } public static boolean isLowPermissions() { checkDelegate(); return systemDelegate.isLowPermissions(); } public static void setSoftTextDialogInput(SoftTextDialogInput input) { checkDelegate(); systemDelegate.setSoftTextDialogInput(input); } public static SoftTextDialogInput getSoftTextDialogInput() { checkDelegate(); return systemDelegate.getSoftTextDialogInput(); } public static AssetManager newAssetManager(URL configFile) { checkDelegate(); return systemDelegate.newAssetManager(configFile); } public static AssetManager newAssetManager() { checkDelegate(); return systemDelegate.newAssetManager(); } public static boolean showSettingsDialog(AppSettings sourceSettings, final boolean loadFromRegistry) { checkDelegate(); return systemDelegate.showSettingsDialog(sourceSettings, loadFromRegistry); } public static Platform getPlatform() { checkDelegate(); return systemDelegate.getPlatform(); } public static JmeContext newContext(AppSettings settings, JmeContext.Type contextType) { checkDelegate(); return systemDelegate.newContext(settings, contextType); } public static AudioRenderer newAudioRenderer(AppSettings settings) { checkDelegate(); return systemDelegate.newAudioRenderer(settings); } public static void initialize(AppSettings settings) { checkDelegate(); systemDelegate.initialize(settings); } @SuppressWarnings("unchecked") private static void checkDelegate() { if (systemDelegate == null) { Class systemDelegateClass; try { systemDelegateClass = (Class) Class.forName("com.jme3.system.JmeDesktopSystem"); systemDelegate = systemDelegateClass.newInstance(); } catch (InstantiationException ex) { Logger.getLogger(JmeSystem.class.getName()).log(Level.SEVERE, "No JmeSystemDelegate specified, cannot instantiate default JmeDesktopSystem:\n{0}", ex); } catch (IllegalAccessException ex) { Logger.getLogger(JmeSystem.class.getName()).log(Level.SEVERE, "No JmeSystemDelegate specified, cannot instantiate default JmeDesktopSystem:\n{0}", ex); } catch (ClassNotFoundException ex) { Logger.getLogger(JmeSystem.class.getName()).log(Level.SEVERE, "No JmeSystemDelegate specified, cannot instantiate default JmeDesktopSystem:\n{0}", ex); } } } }