Source is in: jme3test.android, only java classes and the android manifest.xml, not buildable without your own android project git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8239 75d07b2b-3a1a-0410-a2c5-0572b91ccdca3.0
parent
3402f51824
commit
7d315f04d9
@ -1,65 +0,0 @@ |
|||||||
package jme3test.android; |
|
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
import android.app.Activity; |
|
||||||
import android.os.Bundle; |
|
||||||
|
|
||||||
import android.content.Intent; |
|
||||||
|
|
||||||
import android.view.View; |
|
||||||
import android.view.MenuInflater; |
|
||||||
import android.view.Menu; |
|
||||||
import android.view.MenuItem; |
|
||||||
import android.view.MotionEvent; |
|
||||||
|
|
||||||
import android.widget.TextView; |
|
||||||
import android.widget.Button; |
|
||||||
import android.widget.EditText; |
|
||||||
import android.widget.CheckBox; |
|
||||||
import android.widget.TableLayout; |
|
||||||
import android.widget.LinearLayout; |
|
||||||
import android.widget.TableRow; |
|
||||||
|
|
||||||
import android.hardware.SensorManager; |
|
||||||
//import android.hardware.SensorListener;
|
|
||||||
|
|
||||||
import jme3test.android.AndroidActivity; |
|
||||||
|
|
||||||
import java.net.URI; |
|
||||||
|
|
||||||
public class AboutActivity extends Activity { |
|
||||||
|
|
||||||
private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(AboutActivity.class.getName()); |
|
||||||
|
|
||||||
@Override |
|
||||||
public void onCreate(Bundle savedInstanceState) { |
|
||||||
logger.info("onCreate(" + savedInstanceState + ")"); |
|
||||||
|
|
||||||
super.onCreate(savedInstanceState); |
|
||||||
|
|
||||||
//setContentView(R.layout.about);
|
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void onDestroy() { |
|
||||||
logger.info("onDestroy()"); |
|
||||||
super.onDestroy(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onResume() { |
|
||||||
super.onResume(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onStart() { |
|
||||||
super.onStart(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onStop() { |
|
||||||
super.onStop(); |
|
||||||
} |
|
||||||
} |
|
@ -1,149 +0,0 @@ |
|||||||
|
|
||||||
/* |
|
||||||
* |
|
||||||
* Android Activity for OpenGL ES2 based tests |
|
||||||
* requires Android 2.2+ |
|
||||||
* |
|
||||||
* created: Mon Nov 8 00:08:07 EST 2010 |
|
||||||
*/ |
|
||||||
package jme3test.android; |
|
||||||
|
|
||||||
import android.app.Activity; |
|
||||||
import android.content.res.Resources; |
|
||||||
import android.opengl.GLSurfaceView; |
|
||||||
import android.os.Bundle; |
|
||||||
import android.view.Window; |
|
||||||
import android.view.WindowManager; |
|
||||||
|
|
||||||
import com.jme3.system.AppSettings; |
|
||||||
import com.jme3.system.JmeSystem; |
|
||||||
import com.jme3.system.android.OGLESContext; |
|
||||||
|
|
||||||
import com.jme3.app.Application; |
|
||||||
import com.jme3.app.SimpleApplication; |
|
||||||
|
|
||||||
public class AndroidActivity extends Activity { |
|
||||||
|
|
||||||
private final static java.util.logging.Logger logger = java.util.logging.Logger.getLogger(AndroidActivity.class.getName()); |
|
||||||
private OGLESContext ctx; |
|
||||||
private GLSurfaceView view; |
|
||||||
private boolean useVA = false; |
|
||||||
private boolean verboseLogging = false; |
|
||||||
|
|
||||||
@Override |
|
||||||
public void onCreate(Bundle savedInstanceState) { |
|
||||||
|
|
||||||
super.onCreate(savedInstanceState); |
|
||||||
|
|
||||||
JmeSystem.setResources(getResources()); |
|
||||||
|
|
||||||
requestWindowFeature(Window.FEATURE_NO_TITLE); |
|
||||||
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, |
|
||||||
WindowManager.LayoutParams.FLAG_FULLSCREEN); |
|
||||||
|
|
||||||
AppSettings settings = new AppSettings(true); |
|
||||||
|
|
||||||
String testClassName = getIntent().getStringExtra(AndroidActivity.class.getName() + ".TEST_CLASS_NAME"); |
|
||||||
|
|
||||||
logger.info("test class name: [" + testClassName + "]"); |
|
||||||
|
|
||||||
String appClass = (testClassName != null ? testClassName : "jme3test.android.SimpleTexturedTest"); |
|
||||||
|
|
||||||
useVA = getIntent().getBooleanExtra(AndroidActivity.class.getName() + ".USE_VA", false); |
|
||||||
|
|
||||||
logger.info("USE_VA -> [" + useVA + "]"); |
|
||||||
|
|
||||||
settings.putBoolean("USE_VA", useVA); |
|
||||||
|
|
||||||
verboseLogging = getIntent().getBooleanExtra(AndroidActivity.class.getName() + ".VERBOSE_LOGGING", false); |
|
||||||
|
|
||||||
settings.putBoolean("VERBOSE_LOGGING", verboseLogging); |
|
||||||
|
|
||||||
Application app = null; |
|
||||||
|
|
||||||
try { |
|
||||||
Class<? extends Application> clazz = (Class<? extends Application>) Class.forName( |
|
||||||
appClass); |
|
||||||
|
|
||||||
app = clazz.newInstance(); |
|
||||||
/* |
|
||||||
app = (Application) java.lang.reflect.Proxy.newProxyInstance( |
|
||||||
this.getClass().getClassLoader(), |
|
||||||
new Class[] {Class.forName(appClass)}, |
|
||||||
|
|
||||||
new java.lang.reflect.InvocationHandler() { |
|
||||||
public Object invoke(Object proxy, java.lang.reflect.Method method, Object[] args) throws Throwable { |
|
||||||
if ( |
|
||||||
method.getName().equals("loadFPSText") || |
|
||||||
method.getName().equals("loadStatsView") |
|
||||||
) { |
|
||||||
logger.info("ignoring method: [" + method + "]"); |
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
return method.invoke(proxy, args); |
|
||||||
} |
|
||||||
} |
|
||||||
); |
|
||||||
*/ |
|
||||||
|
|
||||||
|
|
||||||
if (app instanceof SimpleApplication) { |
|
||||||
((SimpleApplication) app).setShowSettings(false); |
|
||||||
} |
|
||||||
|
|
||||||
logger.info("setting settings ..."); |
|
||||||
app.setSettings(settings); |
|
||||||
logger.info("setting settings ... done."); |
|
||||||
|
|
||||||
logger.info("starting app ..."); |
|
||||||
app.start(); |
|
||||||
logger.info("starting app ... done."); |
|
||||||
|
|
||||||
if (app instanceof SimpleApplication) { |
|
||||||
((SimpleApplication) app).getGuiNode().detachAllChildren(); |
|
||||||
} |
|
||||||
|
|
||||||
logger.info("creating context ..."); |
|
||||||
ctx = (OGLESContext) app.getContext(); |
|
||||||
logger.info("creating context ... done."); |
|
||||||
|
|
||||||
ctx.setSettings(settings); |
|
||||||
|
|
||||||
logger.info("creating view ..."); |
|
||||||
view = ctx.createView(this); |
|
||||||
logger.info("creating view ... done."); |
|
||||||
|
|
||||||
logger.info("setting content view ..."); |
|
||||||
setContentView(view); |
|
||||||
logger.info("setting content done ..."); |
|
||||||
|
|
||||||
} catch (Throwable exception) { |
|
||||||
logger.warning("exception: " + exception); |
|
||||||
exception.printStackTrace(System.err); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onResume() { |
|
||||||
logger.info("onResume ..."); |
|
||||||
super.onResume(); |
|
||||||
logger.info("view.onResume ..."); |
|
||||||
|
|
||||||
view.onResume(); |
|
||||||
|
|
||||||
logger.info("view.onResume ... done."); |
|
||||||
logger.info("onResume ... done."); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onPause() { |
|
||||||
super.onPause(); |
|
||||||
view.onPause(); |
|
||||||
} |
|
||||||
// @Override
|
|
||||||
// protected void onDestroy(){
|
|
||||||
// super.onDestroy();
|
|
||||||
// Debug.stopMethodTracing();
|
|
||||||
// }
|
|
||||||
} |
|
@ -0,0 +1,29 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
package="com.jme3.androiddemo" |
||||||
|
android:versionCode="6" |
||||||
|
android:versionName="1.2.2"> |
||||||
|
|
||||||
|
<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8" /> |
||||||
|
|
||||||
|
<!-- Tell the system that you need ES 2.0. --> |
||||||
|
<uses-feature android:glEsVersion="0x00020000" android:required="true" /> |
||||||
|
|
||||||
|
<!-- Tell the system that you need distinct touches (for the zoom gesture). --> |
||||||
|
<uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="true" /> |
||||||
|
|
||||||
|
<application android:icon="@drawable/icon" android:label="@string/app_name"> |
||||||
|
<activity android:name=".DemoMainActivity" |
||||||
|
android:label="@string/app_name"> |
||||||
|
<intent-filter> |
||||||
|
<action android:name="android.intent.action.MAIN" /> |
||||||
|
<category android:name="android.intent.category.LAUNCHER" /> |
||||||
|
</intent-filter> |
||||||
|
</activity> |
||||||
|
|
||||||
|
<activity android:name=".DemoAndroidHarness" |
||||||
|
android:label="@string/app_name"> |
||||||
|
</activity> |
||||||
|
|
||||||
|
</application> |
||||||
|
</manifest> |
@ -0,0 +1,55 @@ |
|||||||
|
package jme3test.android; |
||||||
|
|
||||||
|
import android.content.pm.ActivityInfo; |
||||||
|
import android.os.Bundle; |
||||||
|
|
||||||
|
import com.jme3.app.AndroidHarness; |
||||||
|
import com.jme3.system.android.AndroidConfigChooser.ConfigType; |
||||||
|
|
||||||
|
public class DemoAndroidHarness extends AndroidHarness |
||||||
|
{ |
||||||
|
@Override |
||||||
|
public void onCreate(Bundle savedInstanceState) |
||||||
|
{ |
||||||
|
// Set the application class to run
|
||||||
|
// First Extract the bundle from intent
|
||||||
|
Bundle bundle = getIntent().getExtras(); |
||||||
|
|
||||||
|
//Next extract the values using the key as
|
||||||
|
appClass = bundle.getString("APPCLASSNAME"); |
||||||
|
|
||||||
|
|
||||||
|
String eglConfig = bundle.getString("EGLCONFIG"); |
||||||
|
if (eglConfig.equals("Best")) |
||||||
|
{ |
||||||
|
eglConfigType = ConfigType.BEST; |
||||||
|
} |
||||||
|
else if (eglConfig.equals("Legacy")) |
||||||
|
{ |
||||||
|
eglConfigType = ConfigType.LEGACY; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
eglConfigType = ConfigType.FASTEST; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
if (bundle.getBoolean("VERBOSE")) |
||||||
|
{ |
||||||
|
eglConfigVerboseLogging = true; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
eglConfigVerboseLogging = false; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
exitDialogTitle = "Close Demo?"; |
||||||
|
exitDialogMessage = "Press Yes"; |
||||||
|
|
||||||
|
screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; |
||||||
|
|
||||||
|
super.onCreate(savedInstanceState); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,73 @@ |
|||||||
|
package jme3test.android; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import android.content.Context; |
||||||
|
import android.view.LayoutInflater; |
||||||
|
import android.view.View; |
||||||
|
import android.view.ViewGroup; |
||||||
|
import android.view.View.OnClickListener; |
||||||
|
import android.widget.BaseAdapter; |
||||||
|
import android.widget.TextView; |
||||||
|
|
||||||
|
/** |
||||||
|
* The view adapter which gets a list of LaunchEntries and displaqs them |
||||||
|
* @author larynx |
||||||
|
* |
||||||
|
*/ |
||||||
|
public class DemoLaunchAdapter extends BaseAdapter implements OnClickListener |
||||||
|
{ |
||||||
|
|
||||||
|
private Context context; |
||||||
|
|
||||||
|
private List<DemoLaunchEntry> listDemos; |
||||||
|
|
||||||
|
public DemoLaunchAdapter(Context context, List<DemoLaunchEntry> listDemos) { |
||||||
|
this.context = context; |
||||||
|
this.listDemos = listDemos; |
||||||
|
} |
||||||
|
|
||||||
|
public int getCount() { |
||||||
|
return listDemos.size(); |
||||||
|
} |
||||||
|
|
||||||
|
public Object getItem(int position) { |
||||||
|
return listDemos.get(position); |
||||||
|
} |
||||||
|
|
||||||
|
public long getItemId(int position) { |
||||||
|
return position; |
||||||
|
} |
||||||
|
|
||||||
|
public View getView(int position, View convertView, ViewGroup viewGroup) { |
||||||
|
DemoLaunchEntry entry = listDemos.get(position); |
||||||
|
if (convertView == null) { |
||||||
|
LayoutInflater inflater = (LayoutInflater) context |
||||||
|
.getSystemService(Context.LAYOUT_INFLATER_SERVICE); |
||||||
|
convertView = inflater.inflate(R.layout.demo_row, null); |
||||||
|
} |
||||||
|
TextView tvDemoName = (TextView) convertView.findViewById(R.id.tvDemoName); |
||||||
|
tvDemoName.setText(entry.getName()); |
||||||
|
|
||||||
|
TextView tvDescription = (TextView) convertView.findViewById(R.id.tvDescription); |
||||||
|
tvDescription.setText(entry.getDescription()); |
||||||
|
|
||||||
|
return convertView; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onClick(View view) { |
||||||
|
DemoLaunchEntry entry = (DemoLaunchEntry) view.getTag(); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private void showDialog(DemoLaunchEntry entry) { |
||||||
|
// Create and show your dialog
|
||||||
|
// Depending on the Dialogs button clicks delete it or do nothing
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
@ -0,0 +1,38 @@ |
|||||||
|
package jme3test.android; |
||||||
|
|
||||||
|
/** |
||||||
|
* Name (=appClass) and Description of one demo launch inside the main apk |
||||||
|
* @author larynx |
||||||
|
* |
||||||
|
*/ |
||||||
|
public class DemoLaunchEntry |
||||||
|
{ |
||||||
|
private String name; |
||||||
|
private String description; |
||||||
|
|
||||||
|
/** |
||||||
|
* @param name |
||||||
|
* @param description |
||||||
|
*/ |
||||||
|
public DemoLaunchEntry(String name, String description) { |
||||||
|
super(); |
||||||
|
this.name = name; |
||||||
|
this.description = description; |
||||||
|
} |
||||||
|
|
||||||
|
public String getName() { |
||||||
|
return name; |
||||||
|
} |
||||||
|
public void setName(String name) { |
||||||
|
this.name = name; |
||||||
|
} |
||||||
|
public String getDescription() { |
||||||
|
return description; |
||||||
|
} |
||||||
|
public void setDescription(String description) { |
||||||
|
this.description = description; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,136 @@ |
|||||||
|
package jme3test.android; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import android.app.Activity; |
||||||
|
import android.content.Intent; |
||||||
|
import android.content.pm.ActivityInfo; |
||||||
|
import android.os.Bundle; |
||||||
|
import android.view.View; |
||||||
|
import android.widget.AdapterView; |
||||||
|
import android.widget.AdapterView.OnItemSelectedListener; |
||||||
|
import android.widget.ArrayAdapter; |
||||||
|
import android.widget.ListView; |
||||||
|
import android.widget.Spinner; |
||||||
|
import android.widget.Toast; |
||||||
|
import android.widget.AdapterView.OnItemClickListener; |
||||||
|
|
||||||
|
public class DemoMainActivity extends Activity { |
||||||
|
|
||||||
|
/** Called when the activity is first created. */ |
||||||
|
@Override |
||||||
|
public void onCreate(Bundle savedInstanceState) { |
||||||
|
super.onCreate(savedInstanceState); |
||||||
|
setContentView(R.layout.main); |
||||||
|
|
||||||
|
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
||||||
|
|
||||||
|
final Intent myIntent = new Intent(DemoMainActivity.this, DemoAndroidHarness.class); |
||||||
|
|
||||||
|
//Next create the bundle and initialize it
|
||||||
|
final Bundle bundle = new Bundle(); |
||||||
|
|
||||||
|
|
||||||
|
final Spinner spinnerConfig = (Spinner) findViewById(R.id.spinnerConfig); |
||||||
|
ArrayAdapter<CharSequence> adapterDropDownConfig = ArrayAdapter.createFromResource( |
||||||
|
this, R.array.eglconfig_array, android.R.layout.simple_spinner_item); |
||||||
|
adapterDropDownConfig.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
||||||
|
spinnerConfig.setAdapter(adapterDropDownConfig); |
||||||
|
|
||||||
|
|
||||||
|
spinnerConfig.setOnItemSelectedListener(new OnItemSelectedListener() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onItemSelected(AdapterView<?> parent, |
||||||
|
View view, int pos, long id) { |
||||||
|
Toast.makeText(parent.getContext(), "Set EGLConfig " + |
||||||
|
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); |
||||||
|
//Add the parameters to bundle as
|
||||||
|
bundle.putString("EGLCONFIG", parent.getItemAtPosition(pos).toString()); |
||||||
|
} |
||||||
|
|
||||||
|
public void onNothingSelected(AdapterView parent) { |
||||||
|
// Do nothing.
|
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
final Spinner spinnerLogging = (Spinner) findViewById(R.id.spinnerLogging); |
||||||
|
ArrayAdapter<CharSequence> adapterDropDownLogging = ArrayAdapter.createFromResource( |
||||||
|
this, R.array.logging_array, android.R.layout.simple_spinner_item); |
||||||
|
adapterDropDownLogging.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
||||||
|
spinnerLogging.setAdapter(adapterDropDownLogging); |
||||||
|
|
||||||
|
|
||||||
|
spinnerLogging.setOnItemSelectedListener(new OnItemSelectedListener() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onItemSelected(AdapterView<?> parent, |
||||||
|
View view, int pos, long id) { |
||||||
|
Toast.makeText(parent.getContext(), "Set Logging " + |
||||||
|
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); |
||||||
|
|
||||||
|
//Add the parameters to bundle as
|
||||||
|
bundle.putBoolean("VERBOSE", parent.getItemAtPosition(pos).toString().equals("Verbose")); |
||||||
|
} |
||||||
|
|
||||||
|
public void onNothingSelected(AdapterView parent) { |
||||||
|
// Do nothing.
|
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
ListView list = (ListView) findViewById(R.id.ListView01); |
||||||
|
list.setClickable(true); |
||||||
|
|
||||||
|
final List<DemoLaunchEntry> listDemos = new ArrayList<DemoLaunchEntry>(); |
||||||
|
|
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.SimpleTexturedTest", "An field of textured boxes rotating")); |
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestSkyLoadingLagoon", "Sky box demonstration with jpg")); |
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestSkyLoadingPrimitives", "Sky box demonstration with png")); |
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestBumpModel", "Shows a bump mapped well with a moving light")); |
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestNormalMapping", "Shows a normal mapped sphere")); |
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestUnshadedModel", "Shows an unshaded model of the sphere")); |
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestMovingParticle", "Demonstrates particle effects")); |
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestAmbient", "Positional sound - You sit in a dark cave under a waterfall")); |
||||||
|
|
||||||
|
//listDemos.add(new DemoLaunchEntry("jme3test.effect.TestParticleEmitter", ""));
|
||||||
|
//listDemos.add(new DemoLaunchEntry("jme3test.effect.TestPointSprite", ""));
|
||||||
|
//listDemos.add(new DemoLaunchEntry("jme3test.light.TestLightRadius", ""));
|
||||||
|
listDemos.add(new DemoLaunchEntry("jme3test.android.TestMotionPath", "Shows cinematics - see a teapot on its journey - model loading needs a long time - just let it load, looks like freezed")); |
||||||
|
//listDemos.add(new DemoLaunchEntry("com.jme3.androiddemo.TestSimpleWater", "Post processors - not working correctly due to missing framebuffer support, looks interresting :)"));
|
||||||
|
//listDemos.add(new DemoLaunchEntry("jme3test.model.TestHoverTank", ""));
|
||||||
|
//listDemos.add(new DemoLaunchEntry("jme3test.niftygui.TestNiftyGui", ""));
|
||||||
|
//listDemos.add(new DemoLaunchEntry("com.jme3.androiddemo.TestNiftyGui", ""));
|
||||||
|
|
||||||
|
|
||||||
|
DemoLaunchAdapter adapterList = new DemoLaunchAdapter(this, listDemos); |
||||||
|
|
||||||
|
list.setOnItemClickListener(new OnItemClickListener() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void onItemClick(AdapterView<?> arg0, View view, int position, long index) { |
||||||
|
System.out.println("onItemClick"); |
||||||
|
showToast(listDemos.get(position).getName()); |
||||||
|
|
||||||
|
|
||||||
|
//Add the parameters to bundle as
|
||||||
|
bundle.putString("APPCLASSNAME", listDemos.get(position).getName()); |
||||||
|
|
||||||
|
//Add this bundle to the intent
|
||||||
|
myIntent.putExtras(bundle); |
||||||
|
|
||||||
|
//Start the JME3 app harness activity
|
||||||
|
DemoMainActivity.this.startActivity(myIntent); |
||||||
|
|
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
list.setAdapter(adapterList); |
||||||
|
} |
||||||
|
|
||||||
|
private void showToast(String message) { |
||||||
|
Toast.makeText(this, message, Toast.LENGTH_LONG).show(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,46 @@ |
|||||||
|
/* AUTO-GENERATED FILE. DO NOT MODIFY. |
||||||
|
* |
||||||
|
* This class was automatically generated by the |
||||||
|
* aapt tool from the resource data it found. It |
||||||
|
* should not be modified by hand. |
||||||
|
*/ |
||||||
|
|
||||||
|
package jme3test.android; |
||||||
|
|
||||||
|
public final class R { |
||||||
|
public static final class array { |
||||||
|
public static final int eglconfig_array=0x7f060000; |
||||||
|
public static final int logging_array=0x7f060001; |
||||||
|
} |
||||||
|
public static final class attr { |
||||||
|
} |
||||||
|
public static final class drawable { |
||||||
|
public static final int icon=0x7f020000; |
||||||
|
} |
||||||
|
public static final class id { |
||||||
|
public static final int LinearLayout01=0x7f070000; |
||||||
|
public static final int LinearLayout02=0x7f070002; |
||||||
|
public static final int ListView01=0x7f070009; |
||||||
|
public static final int TextView01=0x7f070003; |
||||||
|
public static final int spinnerConfig=0x7f070006; |
||||||
|
public static final int spinnerLogging=0x7f070008; |
||||||
|
public static final int tvConfig=0x7f070005; |
||||||
|
public static final int tvDemoName=0x7f070001; |
||||||
|
public static final int tvDescription=0x7f070004; |
||||||
|
public static final int tvLogging=0x7f070007; |
||||||
|
} |
||||||
|
public static final class layout { |
||||||
|
public static final int demo_row=0x7f030000; |
||||||
|
public static final int main=0x7f030001; |
||||||
|
} |
||||||
|
public static final class raw { |
||||||
|
public static final int oddbounce=0x7f040000; |
||||||
|
} |
||||||
|
public static final class string { |
||||||
|
public static final int app_name=0x7f050000; |
||||||
|
public static final int eglconfig_prompt=0x7f050001; |
||||||
|
public static final int eglconfig_text=0x7f050002; |
||||||
|
public static final int logging_prompt=0x7f050003; |
||||||
|
public static final int logging_text=0x7f050004; |
||||||
|
} |
||||||
|
} |
@ -1,40 +0,0 @@ |
|||||||
package jme3test.android; |
|
||||||
|
|
||||||
import com.jme3.app.SimpleApplication; |
|
||||||
import com.jme3.asset.TextureKey; |
|
||||||
import com.jme3.material.Material; |
|
||||||
import com.jme3.math.Transform; |
|
||||||
import com.jme3.scene.Geometry; |
|
||||||
import com.jme3.scene.shape.Sphere; |
|
||||||
import com.jme3.texture.Texture; |
|
||||||
import jme3tools.converters.model.ModelConverter; |
|
||||||
|
|
||||||
public class Test extends SimpleApplication { |
|
||||||
|
|
||||||
@Override |
|
||||||
public void simpleInitApp() { |
|
||||||
Sphere s = new Sphere(8, 8, .5f); |
|
||||||
Geometry geom = new Geometry("sphere", s); |
|
||||||
// ModelConverter.optimize(geom);
|
|
||||||
|
|
||||||
Material mat = new Material(assetManager, "plain_texture.j3md"); |
|
||||||
Texture tex = assetManager.loadTexture(new TextureKey("monkey.j3i")); |
|
||||||
mat.setTexture("ColorMap", tex); |
|
||||||
// geom.setMaterial(mat);
|
|
||||||
|
|
||||||
for (int y = -1; y < 2; y++) { |
|
||||||
for (int x = -1; x < 2; x++) { |
|
||||||
Geometry geomClone = new Geometry("geom", s); |
|
||||||
geomClone.setMaterial(mat); |
|
||||||
geomClone.setLocalTranslation(x, y, 0); |
|
||||||
|
|
||||||
Transform t = geom.getLocalTransform().clone(); |
|
||||||
Transform t2 = geomClone.getLocalTransform().clone(); |
|
||||||
t.combineWithParent(t2); |
|
||||||
geomClone.setLocalTransform(t); |
|
||||||
|
|
||||||
rootNode.attachChild(geomClone); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,106 @@ |
|||||||
|
/* |
||||||
|
* 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 jme3test.android; |
||||||
|
|
||||||
|
import android.app.Activity; |
||||||
|
import android.media.AudioManager; |
||||||
|
import android.media.SoundPool; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.asset.DesktopAssetManager; |
||||||
|
import com.jme3.audio.AudioNode; |
||||||
|
import com.jme3.audio.Listener; |
||||||
|
//import com.jme3.audio.PointAudioSource;
|
||||||
|
import com.jme3.math.FastMath; |
||||||
|
import com.jme3.math.Vector3f; |
||||||
|
import com.jme3.system.AppSettings; |
||||||
|
import com.jme3.system.JmeSystem; |
||||||
|
|
||||||
|
public class TestAmbient extends SimpleApplication { |
||||||
|
|
||||||
|
private AudioNode footsteps, beep; |
||||||
|
private AudioNode nature, waves; |
||||||
|
|
||||||
|
SoundPool soundPool; |
||||||
|
|
||||||
|
// private PointAudioSource waves;
|
||||||
|
private float time = 0; |
||||||
|
private float nextTime = 1; |
||||||
|
|
||||||
|
public static void main(String[] args){ |
||||||
|
TestAmbient test = new TestAmbient(); |
||||||
|
test.start(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleInitApp() |
||||||
|
{ |
||||||
|
/* |
||||||
|
footsteps = new AudioNode(audioRenderer, assetManager, "Sound/Effects/Foot steps.ogg", true); |
||||||
|
|
||||||
|
footsteps.setPositional(true); |
||||||
|
footsteps.setLocalTranslation(new Vector3f(4, -1, 30)); |
||||||
|
footsteps.setMaxDistance(5); |
||||||
|
footsteps.setRefDistance(1); |
||||||
|
footsteps.setLooping(true); |
||||||
|
|
||||||
|
beep = new AudioNode(audioRenderer, assetManager, "Sound/Effects/Beep.ogg", true); |
||||||
|
beep.setVolume(3); |
||||||
|
beep.setLooping(true); |
||||||
|
|
||||||
|
audioRenderer.playSourceInstance(footsteps); |
||||||
|
audioRenderer.playSource(beep); |
||||||
|
*/ |
||||||
|
|
||||||
|
waves = new AudioNode(audioRenderer, assetManager, "Sound/Environment/Ocean Waves.ogg", true); |
||||||
|
waves.setPositional(true); |
||||||
|
|
||||||
|
nature = new AudioNode(audioRenderer, assetManager, "Sound/Environment/Nature.ogg", true); |
||||||
|
|
||||||
|
waves.setLocalTranslation(new Vector3f(4, -1, 30)); |
||||||
|
waves.setMaxDistance(5); |
||||||
|
waves.setRefDistance(1); |
||||||
|
|
||||||
|
nature.setVolume(3); |
||||||
|
audioRenderer.playSourceInstance(waves); |
||||||
|
audioRenderer.playSource(nature); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleUpdate(float tpf) |
||||||
|
{ |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,96 @@ |
|||||||
|
/* |
||||||
|
* 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 jme3test.android; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.asset.AssetKey; |
||||||
|
import com.jme3.light.AmbientLight; |
||||||
|
import com.jme3.light.DirectionalLight; |
||||||
|
import com.jme3.light.PointLight; |
||||||
|
import com.jme3.material.Material; |
||||||
|
import com.jme3.math.ColorRGBA; |
||||||
|
import com.jme3.math.FastMath; |
||||||
|
import com.jme3.math.Vector3f; |
||||||
|
import com.jme3.scene.Geometry; |
||||||
|
import com.jme3.scene.Spatial; |
||||||
|
import com.jme3.scene.plugins.ogre.OgreMeshKey; |
||||||
|
import com.jme3.scene.shape.Sphere; |
||||||
|
import com.jme3.util.TangentBinormalGenerator; |
||||||
|
|
||||||
|
public class TestBumpModel extends SimpleApplication { |
||||||
|
|
||||||
|
float angle; |
||||||
|
PointLight pl; |
||||||
|
Spatial lightMdl; |
||||||
|
|
||||||
|
public static void main(String[] args){ |
||||||
|
TestBumpModel app = new TestBumpModel(); |
||||||
|
app.start(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleInitApp() { |
||||||
|
Spatial signpost = (Spatial) assetManager.loadAsset(new OgreMeshKey("Models/Sign Post/Sign Post.mesh.xml")); |
||||||
|
signpost.setMaterial( (Material) assetManager.loadMaterial("Models/Sign Post/Sign Post.j3m")); |
||||||
|
TangentBinormalGenerator.generate(signpost); |
||||||
|
rootNode.attachChild(signpost); |
||||||
|
|
||||||
|
lightMdl = new Geometry("Light", new Sphere(10, 10, 0.1f)); |
||||||
|
lightMdl.setMaterial( (Material) assetManager.loadMaterial("Common/Materials/RedColor.j3m")); |
||||||
|
rootNode.attachChild(lightMdl); |
||||||
|
|
||||||
|
// flourescent main light
|
||||||
|
pl = new PointLight(); |
||||||
|
pl.setColor(new ColorRGBA(0.88f, 0.92f, 0.95f, 1.0f)); |
||||||
|
rootNode.addLight(pl); |
||||||
|
|
||||||
|
AmbientLight al = new AmbientLight(); |
||||||
|
al.setColor(new ColorRGBA(0.44f, 0.40f, 0.20f, 1.0f)); |
||||||
|
rootNode.addLight(al); |
||||||
|
|
||||||
|
DirectionalLight dl = new DirectionalLight(); |
||||||
|
dl.setDirection(new Vector3f(1,-1,-1).normalizeLocal()); |
||||||
|
dl.setColor(new ColorRGBA(0.92f, 0.85f, 0.8f, 1.0f)); |
||||||
|
rootNode.addLight(dl); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleUpdate(float tpf){ |
||||||
|
angle += tpf * 0.25f; |
||||||
|
angle %= FastMath.TWO_PI; |
||||||
|
|
||||||
|
pl.setPosition(new Vector3f(FastMath.cos(angle) * 6f, 3f, FastMath.sin(angle) * 6f)); |
||||||
|
lightMdl.setLocalTranslation(pl.getPosition()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,104 @@ |
|||||||
|
/* |
||||||
|
* 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 jme3test.android; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.effect.ParticleEmitter; |
||||||
|
import com.jme3.effect.ParticleMesh.Type; |
||||||
|
import com.jme3.effect.shapes.EmitterSphereShape; |
||||||
|
import com.jme3.input.KeyInput; |
||||||
|
import com.jme3.input.controls.ActionListener; |
||||||
|
import com.jme3.input.controls.InputListener; |
||||||
|
import com.jme3.input.controls.KeyTrigger; |
||||||
|
import com.jme3.light.AmbientLight; |
||||||
|
import com.jme3.material.Material; |
||||||
|
import com.jme3.math.ColorRGBA; |
||||||
|
import com.jme3.math.FastMath; |
||||||
|
import com.jme3.math.Vector3f; |
||||||
|
|
||||||
|
/** |
||||||
|
* Particle that moves in a circle. |
||||||
|
* |
||||||
|
* @author Kirill Vainer |
||||||
|
*/ |
||||||
|
public class TestMovingParticle extends SimpleApplication { |
||||||
|
|
||||||
|
private ParticleEmitter emit; |
||||||
|
private float angle = 0; |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
TestMovingParticle app = new TestMovingParticle(); |
||||||
|
app.start(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleInitApp() { |
||||||
|
emit = new ParticleEmitter("Emitter", Type.Triangle, 300); |
||||||
|
emit.setGravity(0, 0, 0); |
||||||
|
emit.setVelocityVariation(1); |
||||||
|
emit.setLowLife(1); |
||||||
|
emit.setHighLife(1); |
||||||
|
emit.setInitialVelocity(new Vector3f(0, .5f, 0)); |
||||||
|
emit.setImagesX(15); |
||||||
|
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Particle.j3md"); |
||||||
|
mat.setTexture("Texture", assetManager.loadTexture("Effects/Smoke/Smoke.png")); |
||||||
|
emit.setMaterial(mat); |
||||||
|
|
||||||
|
rootNode.attachChild(emit); |
||||||
|
|
||||||
|
AmbientLight al = new AmbientLight(); |
||||||
|
al.setColor(new ColorRGBA(0.84f, 0.80f, 0.80f, 1.0f)); |
||||||
|
rootNode.addLight(al); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
inputManager.addListener(new ActionListener() { |
||||||
|
|
||||||
|
public void onAction(String name, boolean isPressed, float tpf) { |
||||||
|
if ("setNum".equals(name) && isPressed) { |
||||||
|
emit.setNumParticles(1000); |
||||||
|
} |
||||||
|
} |
||||||
|
}, "setNum"); |
||||||
|
|
||||||
|
inputManager.addMapping("setNum", new KeyTrigger(KeyInput.KEY_SPACE)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleUpdate(float tpf) { |
||||||
|
angle += tpf; |
||||||
|
angle %= FastMath.TWO_PI; |
||||||
|
float x = FastMath.cos(angle) * 2; |
||||||
|
float y = FastMath.sin(angle) * 2; |
||||||
|
emit.setLocalTranslation(x, 0, y); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,99 @@ |
|||||||
|
/* |
||||||
|
* 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 jme3test.android; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.light.AmbientLight; |
||||||
|
import com.jme3.light.DirectionalLight; |
||||||
|
import com.jme3.light.PointLight; |
||||||
|
import com.jme3.material.Material; |
||||||
|
import com.jme3.math.ColorRGBA; |
||||||
|
import com.jme3.math.FastMath; |
||||||
|
import com.jme3.math.Vector3f; |
||||||
|
import com.jme3.scene.Geometry; |
||||||
|
import com.jme3.scene.Spatial; |
||||||
|
import com.jme3.scene.shape.Sphere; |
||||||
|
import com.jme3.util.TangentBinormalGenerator; |
||||||
|
|
||||||
|
public class TestNormalMapping extends SimpleApplication { |
||||||
|
|
||||||
|
float angle; |
||||||
|
PointLight pl; |
||||||
|
Spatial lightMdl; |
||||||
|
|
||||||
|
public static void main(String[] args){ |
||||||
|
TestNormalMapping app = new TestNormalMapping(); |
||||||
|
app.start(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleInitApp() { |
||||||
|
Sphere sphMesh = new Sphere(32, 32, 1); |
||||||
|
sphMesh.setTextureMode(Sphere.TextureMode.Projected); |
||||||
|
sphMesh.updateGeometry(32, 32, 1, false, false); |
||||||
|
TangentBinormalGenerator.generate(sphMesh); |
||||||
|
|
||||||
|
Geometry sphere = new Geometry("Rock Ball", sphMesh); |
||||||
|
Material mat = assetManager.loadMaterial("Textures/Terrain/Pond/Pond.j3m"); |
||||||
|
sphere.setMaterial(mat); |
||||||
|
rootNode.attachChild(sphere); |
||||||
|
|
||||||
|
lightMdl = new Geometry("Light", new Sphere(10, 10, 0.1f)); |
||||||
|
lightMdl.setMaterial(assetManager.loadMaterial("Common/Materials/RedColor.j3m")); |
||||||
|
rootNode.attachChild(lightMdl); |
||||||
|
|
||||||
|
pl = new PointLight(); |
||||||
|
pl.setColor(ColorRGBA.White); |
||||||
|
pl.setPosition(new Vector3f(0f, 0f, 4f)); |
||||||
|
rootNode.addLight(pl); |
||||||
|
|
||||||
|
AmbientLight al = new AmbientLight(); |
||||||
|
al.setColor(new ColorRGBA(0.44f, 0.40f, 0.20f, 1.0f)); |
||||||
|
rootNode.addLight(al); |
||||||
|
|
||||||
|
DirectionalLight dl = new DirectionalLight(); |
||||||
|
dl.setDirection(new Vector3f(1,-1,-1).normalizeLocal()); |
||||||
|
dl.setColor(new ColorRGBA(0.92f, 0.85f, 0.8f, 1.0f)); |
||||||
|
rootNode.addLight(dl); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleUpdate(float tpf){ |
||||||
|
angle += tpf * 0.25f; |
||||||
|
angle %= FastMath.TWO_PI; |
||||||
|
|
||||||
|
pl.setPosition(new Vector3f(FastMath.cos(angle) * 4f, 0.5f, FastMath.sin(angle) * 4f)); |
||||||
|
lightMdl.setLocalTranslation(pl.getPosition()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,35 +0,0 @@ |
|||||||
package jme3test.android; |
|
||||||
|
|
||||||
import com.jme3.app.SimpleApplication; |
|
||||||
import com.jme3.math.Quaternion; |
|
||||||
import com.jme3.math.Vector3f; |
|
||||||
import com.jme3.scene.Node; |
|
||||||
import com.jme3.scene.Spatial; |
|
||||||
import com.jme3.scene.Spatial.CullHint; |
|
||||||
|
|
||||||
public class TestSceneLoading extends SimpleApplication { |
|
||||||
|
|
||||||
private void setState(Spatial s) { |
|
||||||
s.setCullHint(CullHint.Never); |
|
||||||
if (s instanceof Node) { |
|
||||||
Node n = (Node) s; |
|
||||||
for (int i = 0; i < n.getQuantity(); i++) { |
|
||||||
Spatial s2 = n.getChild(i); |
|
||||||
setState(s2); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public void simpleInitApp() { |
|
||||||
/* XXX: does not compile */ |
|
||||||
|
|
||||||
/* Spatial scene = inputManager.loadModel("FINAL_LEVEL2.j3o"); |
|
||||||
// setState(scene);
|
|
||||||
rootNode.attachChild(scene); |
|
||||||
|
|
||||||
cam.setLocation(new Vector3f(-18.059685f, 34.64228f, 4.5048084f)); |
|
||||||
cam.setRotation(new Quaternion(0.22396432f, 0.5235024f, -0.1448922f, 0.8091919f)); |
|
||||||
cam.update(); |
|
||||||
*/ |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,71 @@ |
|||||||
|
/* |
||||||
|
* 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 jme3test.android; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.scene.Spatial; |
||||||
|
import com.jme3.texture.Texture; |
||||||
|
import com.jme3.util.SkyFactory; |
||||||
|
import com.jme3.util.android.AndroidSkyFactory; |
||||||
|
|
||||||
|
public class TestSkyLoadingLagoon extends SimpleApplication { |
||||||
|
|
||||||
|
public static void main(String[] args){ |
||||||
|
TestSkyLoadingLagoon app = new TestSkyLoadingLagoon(); |
||||||
|
app.start(); |
||||||
|
} |
||||||
|
|
||||||
|
public void simpleInitApp() { |
||||||
|
|
||||||
|
Texture west = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_west.jpg"); |
||||||
|
Texture east = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_east.jpg"); |
||||||
|
Texture north = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_north.jpg"); |
||||||
|
Texture south = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_south.jpg"); |
||||||
|
Texture up = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_up.jpg"); |
||||||
|
Texture down = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_down.jpg"); |
||||||
|
|
||||||
|
|
||||||
|
/* |
||||||
|
Texture west = assetManager.loadTexture("Textures/Sky/Primitives/primitives_positive_x.png"); |
||||||
|
Texture east = assetManager.loadTexture("Textures/Sky/Primitives/primitives_negative_x.png"); |
||||||
|
Texture north = assetManager.loadTexture("Textures/Sky/Primitives/primitives_negative_z.png"); |
||||||
|
Texture south = assetManager.loadTexture("Textures/Sky/Primitives/primitives_positive_z.png"); |
||||||
|
Texture up = assetManager.loadTexture("Textures/Sky/Primitives/primitives_positive_y.png"); |
||||||
|
Texture down = assetManager.loadTexture("Textures/Sky/Primitives/primitives_negative_y.png"); |
||||||
|
*/ |
||||||
|
|
||||||
|
Spatial sky = AndroidSkyFactory.createSky(assetManager, west, east, north, south, up, down); |
||||||
|
rootNode.attachChild(sky); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,69 @@ |
|||||||
|
/* |
||||||
|
* 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 jme3test.android; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.scene.Spatial; |
||||||
|
import com.jme3.texture.Texture; |
||||||
|
import com.jme3.util.SkyFactory; |
||||||
|
import com.jme3.util.android.AndroidSkyFactory; |
||||||
|
|
||||||
|
public class TestSkyLoadingPrimitives extends SimpleApplication { |
||||||
|
|
||||||
|
public static void main(String[] args){ |
||||||
|
TestSkyLoadingPrimitives app = new TestSkyLoadingPrimitives(); |
||||||
|
app.start(); |
||||||
|
} |
||||||
|
|
||||||
|
public void simpleInitApp() { |
||||||
|
/* |
||||||
|
Texture west = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_west.jpg"); |
||||||
|
Texture east = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_east.jpg"); |
||||||
|
Texture north = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_north.jpg"); |
||||||
|
Texture south = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_south.jpg"); |
||||||
|
Texture up = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_up.jpg"); |
||||||
|
Texture down = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_down.jpg"); |
||||||
|
*/ |
||||||
|
|
||||||
|
Texture west = assetManager.loadTexture("Textures/Sky/Primitives/primitives_positive_x.png"); |
||||||
|
Texture east = assetManager.loadTexture("Textures/Sky/Primitives/primitives_negative_x.png"); |
||||||
|
Texture north = assetManager.loadTexture("Textures/Sky/Primitives/primitives_negative_z.png"); |
||||||
|
Texture south = assetManager.loadTexture("Textures/Sky/Primitives/primitives_positive_z.png"); |
||||||
|
Texture up = assetManager.loadTexture("Textures/Sky/Primitives/primitives_positive_y.png"); |
||||||
|
Texture down = assetManager.loadTexture("Textures/Sky/Primitives/primitives_negative_y.png"); |
||||||
|
|
||||||
|
Spatial sky = AndroidSkyFactory.createSky(assetManager, west, east, north, south, up, down); |
||||||
|
rootNode.attachChild(sky); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,44 @@ |
|||||||
|
package jme3test.android; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.light.AmbientLight; |
||||||
|
import com.jme3.light.PointLight; |
||||||
|
import com.jme3.material.Material; |
||||||
|
import com.jme3.math.ColorRGBA; |
||||||
|
import com.jme3.math.Vector3f; |
||||||
|
import com.jme3.scene.Geometry; |
||||||
|
import com.jme3.scene.shape.Sphere; |
||||||
|
import com.jme3.util.TangentBinormalGenerator; |
||||||
|
|
||||||
|
public class TestUnshadedModel extends SimpleApplication { |
||||||
|
|
||||||
|
public static void main(String[] args){ |
||||||
|
TestUnshadedModel app = new TestUnshadedModel(); |
||||||
|
app.start(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleInitApp() { |
||||||
|
Sphere sphMesh = new Sphere(32, 32, 1); |
||||||
|
sphMesh.setTextureMode(Sphere.TextureMode.Projected); |
||||||
|
sphMesh.updateGeometry(32, 32, 1, false, false); |
||||||
|
TangentBinormalGenerator.generate(sphMesh); |
||||||
|
|
||||||
|
Geometry sphere = new Geometry("Rock Ball", sphMesh); |
||||||
|
Material mat = assetManager.loadMaterial("Textures/Terrain/Pond/Pond.j3m"); |
||||||
|
mat.setColor("Ambient", ColorRGBA.DarkGray); |
||||||
|
mat.setColor("Diffuse", ColorRGBA.White); |
||||||
|
mat.setBoolean("UseMaterialColors", true); |
||||||
|
sphere.setMaterial(mat); |
||||||
|
rootNode.attachChild(sphere); |
||||||
|
|
||||||
|
PointLight pl = new PointLight(); |
||||||
|
pl.setColor(ColorRGBA.White); |
||||||
|
pl.setPosition(new Vector3f(4f, 0f, 0f)); |
||||||
|
rootNode.addLight(pl); |
||||||
|
|
||||||
|
AmbientLight al = new AmbientLight(); |
||||||
|
al.setColor(ColorRGBA.White); |
||||||
|
rootNode.addLight(al); |
||||||
|
} |
||||||
|
} |
@ -1,171 +0,0 @@ |
|||||||
package jme3test.android; |
|
||||||
|
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.List; |
|
||||||
|
|
||||||
import android.app.Activity; |
|
||||||
import android.os.Bundle; |
|
||||||
|
|
||||||
import android.content.Intent; |
|
||||||
|
|
||||||
import android.view.View; |
|
||||||
import android.view.MenuInflater; |
|
||||||
import android.view.Menu; |
|
||||||
import android.view.MenuItem; |
|
||||||
import android.view.MotionEvent; |
|
||||||
|
|
||||||
import android.widget.TextView; |
|
||||||
import android.widget.Button; |
|
||||||
import android.widget.EditText; |
|
||||||
import android.widget.CheckBox; |
|
||||||
import android.widget.TableLayout; |
|
||||||
import android.widget.LinearLayout; |
|
||||||
import android.widget.TableRow; |
|
||||||
|
|
||||||
import android.hardware.SensorManager; |
|
||||||
//import android.hardware.SensorListener;
|
|
||||||
|
|
||||||
import jme3test.android.AndroidActivity; |
|
||||||
|
|
||||||
import java.net.URI; |
|
||||||
|
|
||||||
public class TestsActivity extends Activity { |
|
||||||
|
|
||||||
private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(TestsActivity.class.getName()); |
|
||||||
|
|
||||||
public static class Test { |
|
||||||
|
|
||||||
private String name = null; |
|
||||||
private String className = null; |
|
||||||
|
|
||||||
public Test(String name, String className) { |
|
||||||
this.name = name; |
|
||||||
this.className = className; |
|
||||||
} |
|
||||||
|
|
||||||
public String getName() { |
|
||||||
return name; |
|
||||||
} |
|
||||||
|
|
||||||
public String getClassName() { |
|
||||||
return className; |
|
||||||
} |
|
||||||
} |
|
||||||
private final static Test[] tests = { |
|
||||||
new Test("SimpleTextured", "jme3test.android.SimpleTexturedTest"), |
|
||||||
new Test("light.TestLightRadius", "jme3test.light.TestLightRadius"), |
|
||||||
new Test("bullet.TestSimplePhysics", "jme3test.bullet.TestSimplePhysics"), |
|
||||||
new Test("helloworld.HelloJME3", "jme3test.helloworld.HelloJME3"), |
|
||||||
new Test("helloworld.HelloLoop", "jme3test.helloworld.HelloLoop"), |
|
||||||
new Test("helloworld.HelloNode", "jme3test.helloworld.HelloNode"), |
|
||||||
new Test("helloworld.HelloEffects", "jme3test.helloworld.HelloEffects"), |
|
||||||
new Test("helloworld.HelloTerrain", "jme3test.helloworld.HelloTerrain") |
|
||||||
}; |
|
||||||
private boolean useVA; |
|
||||||
|
|
||||||
@Override |
|
||||||
public void onCreate(Bundle savedInstanceState) { |
|
||||||
logger.info("onCreate(" + savedInstanceState + ")"); |
|
||||||
|
|
||||||
super.onCreate(savedInstanceState); |
|
||||||
|
|
||||||
//setContentView(R.layout.tests);
|
|
||||||
|
|
||||||
try { |
|
||||||
|
|
||||||
useVA = true; |
|
||||||
|
|
||||||
//LinearLayout buttonsContainer = (LinearLayout) findViewById(R.id.buttonsContainer);
|
|
||||||
|
|
||||||
|
|
||||||
for (Test test : tests) { |
|
||||||
final Button button = new Button(this); |
|
||||||
final String finalName = test.getName(); |
|
||||||
final String finalClassName = test.getClassName(); |
|
||||||
|
|
||||||
button.setText(test.getName()); |
|
||||||
// button.setTextSize(10.0f);
|
|
||||||
// button.setTextColor(Color.rgb(100, 200, 200));
|
|
||||||
//buttonsContainer.addView(button);
|
|
||||||
|
|
||||||
button.setOnClickListener( |
|
||||||
new View.OnClickListener() { |
|
||||||
|
|
||||||
@Override |
|
||||||
public void onClick(View view) { |
|
||||||
Intent intent = new Intent(view.getContext(), AndroidActivity.class); |
|
||||||
intent.putExtra(AndroidActivity.class.getName() + ".TEST_CLASS_NAME", finalClassName); |
|
||||||
intent.putExtra(AndroidActivity.class.getName() + ".USE_VA", useVA); |
|
||||||
startActivityForResult(intent, 0); |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
} catch (Exception exception) { |
|
||||||
logger.warning("exception: " + exception); |
|
||||||
exception.printStackTrace(System.err); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void onDestroy() { |
|
||||||
logger.info("onDestroy()"); |
|
||||||
super.onDestroy(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onResume() { |
|
||||||
super.onResume(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onStart() { |
|
||||||
super.onStart(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
protected void onStop() { |
|
||||||
super.onStop(); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public boolean onCreateOptionsMenu(Menu menu) { |
|
||||||
MenuInflater inflater = getMenuInflater(); |
|
||||||
//inflater.inflate(R.menu.options, menu);
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public boolean onOptionsItemSelected(MenuItem item) { |
|
||||||
/* |
|
||||||
switch (item.getItemId()) { |
|
||||||
case R.id.about_button: |
|
||||||
about(); |
|
||||||
return true; |
|
||||||
case R.id.quit_button: |
|
||||||
quit(); |
|
||||||
return true; |
|
||||||
default: |
|
||||||
return super.onOptionsItemSelected(item); |
|
||||||
} |
|
||||||
*/ |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
private void quit() { |
|
||||||
finish(); |
|
||||||
} |
|
||||||
|
|
||||||
private void about() { |
|
||||||
// Intent intent = new Intent(getView().getContext(), AboutActivity.class);
|
|
||||||
try { |
|
||||||
Intent intent = new Intent(); |
|
||||||
intent.setClassName( |
|
||||||
"jme3test.android", |
|
||||||
"jme3test.android.AboutActivity"); |
|
||||||
startActivity(intent); |
|
||||||
} catch (Exception exception) { |
|
||||||
logger.warning("exception: " + exception); |
|
||||||
exception.printStackTrace(System.err); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue