diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 50365e8b0..000000000 --- a/build.gradle +++ /dev/null @@ -1,89 +0,0 @@ -import org.gradle.api.artifacts.* - -apply plugin: 'base' // To add "clean" task to the root project. -//apply plugin: 'java-library-distribution' - -// This is applied to all sub projects -subprojects { - // Don't add to native builds - // if(!project.name.endsWith('native')){ - apply from: rootProject.file('common.gradle') - // } -} - -task(run, dependsOn: ':jme3-examples:build', type: JavaExec) { - main = 'jme3test.TestChooser' - classpath = files(subprojects.collect {project -> - project.sourceSets*.compileClasspath}) -// classpath = sourceSets.main.runtimeClasspath -// args 'mrhaki' -// systemProperty 'simple.message', 'Hello ' -} - -defaultTasks 'run' - -task libDist(dependsOn: subprojects.build) << { -// description 'Builds and copies the engine binaries, sources and javadoc to build/libDist' - File libFolder = mkdir("$buildDir/libDist/lib") - File sourceFolder = mkdir("$buildDir/libDist/sources") - File javadocFolder = mkdir("$buildDir/libDist/javadoc") - subprojects.each {project -> - if(project.ext.mainClass == ''){ - project.tasks.withType(Jar).each {archiveTask -> - if(archiveTask.classifier == "sources"){ - copy { - from archiveTask.archivePath - into sourceFolder - } - } else if(archiveTask.classifier == "javadoc"){ - copy { - from archiveTask.archivePath - into javadocFolder - } - } else{ - copy { - from archiveTask.archivePath - into libFolder - } - } - } - } - } -} - -task copyLibs(type: Copy){ -// description 'Copies the engine dependencies to build/libDist' - from { - subprojects*.configurations*.compile*.copyRecursive({ !(it instanceof ProjectDependency); })*.resolve() - } - - into "$buildDir/libDist/lib-ext" //buildDir.path + '/' + libsDirName + '/lib' -} - -task dist{ - description 'Creates a distribution of all jme3 binaries, sources, javadoc and external libraries under build/libDist' -} -dist.dependsOn libDist -dist.dependsOn copyLibs - -task mergedJavadoc(type: Javadoc, description: 'Creates Javadoc from all the projects.') { - title = 'All modules' - destinationDir = new File(project.buildDir, 'merged-javadoc') - - // Note: The closures below are executed lazily. - source subprojects.collect {project -> - project.sourceSets*.allJava - } - classpath = files(subprojects.collect {project -> - project.sourceSets*.compileClasspath}) - // source { - // subprojects*.sourceSets*.main*.allSource - // } - // classpath.from { - // subprojects*.configurations*.compile*.copyRecursive({ !(it instanceof ProjectDependency); })*.resolve() - // } -} - -task wrapper(type: Wrapper, description: 'Creates and deploys the Gradle wrapper to the current directory.') { - gradleVersion = '1.10' -} diff --git a/build.xml b/build.xml new file mode 100644 index 000000000..fa027898c --- /dev/null +++ b/build.xml @@ -0,0 +1,147 @@ + + + + Builds, tests, and runs the jMonkeyEngine3 SDK. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common.gradle b/common.gradle deleted file mode 100644 index 2f1a81247..000000000 --- a/common.gradle +++ /dev/null @@ -1,84 +0,0 @@ -// -// This file is to be applied to every subproject. -// - -apply plugin: 'java' -apply plugin: 'maven' - -//String jmeVersion = '3.0.10' -//String jmeVersion = rootProject.version; - -String mavenGroupId = 'com.jme3' -String mavenVersion = jmeVersion + '-SNAPSHOT' - -sourceCompatibility = '1.5' -[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' - -repositories { - mavenCentral(); - maven{ - url "http://nifty-gui.sourceforge.net/nifty-maven-repo" - } - // You may define additional repositories, or even remove "mavenCentral()". - // Read more about repositories here: - // http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories -} - -dependencies { - // Adding dependencies here will add the dependencies to each subproject. - testCompile group: 'junit', name: 'junit', version: '4.10' -} - -String mavenArtifactId = name - -group = mavenGroupId -version = mavenVersion - -//jar.doFirst{ -// manifest { -// attributes('Manifest-Version' : '1.0', -// 'Created-By' : vendor, -// 'Specification-Title' : appName, -// 'Specification-Version' : version, -// 'Specification-Vendor' : vendor, -// 'Implementation-Title' : appName, -// 'Implementation-Version' : version, -// 'Implementation-Vendor' : vendor, -// 'Main-Class' : getProperty('mainClass'), -// 'Class-Path' : configurations.compile.collect { 'lib/' + it.getName() }.join(' ') -// ) -// } -//} - -task sourcesJar(type: Jar, dependsOn: classes, description: 'Creates a jar from the source files.') { - classifier = 'sources' - from sourceSets*.allSource -} - -task javadocJar(type: Jar, dependsOn: javadoc, description: 'Creates a jar from the javadoc files.') { - classifier = 'javadoc' - from javadoc.destinationDir -} - -artifacts { - archives jar - archives sourcesJar -// archives javadocJar -} - -configure(install.repositories.mavenInstaller) { - pom.project { - groupId = mavenGroupId - artifactId = mavenArtifactId - version = mavenVersion - } -} - -task createFolders(description: 'Creates the source folders if they do not exist.') doLast { -// sourceSets*.allSource*.srcDirs*.each { File srcDir -> -// if (!srcDir.isDirectory()) { -// println "Creating source folder: ${srcDir}" -// srcDir.mkdirs() -// } -// } -} diff --git a/engine/MANIFEST.MF b/engine/MANIFEST.MF new file mode 100644 index 000000000..f6d6f5653 --- /dev/null +++ b/engine/MANIFEST.MF @@ -0,0 +1 @@ +X-Comment: jMonkeyEngine 3.0 \ No newline at end of file diff --git a/engine/TestChooser.exe b/engine/TestChooser.exe new file mode 100644 index 000000000..00f0161d1 Binary files /dev/null and b/engine/TestChooser.exe differ diff --git a/engine/build.xml b/engine/build.xml new file mode 100644 index 000000000..ca0388c8b --- /dev/null +++ b/engine/build.xml @@ -0,0 +1,669 @@ + + + + Builds, tests, and runs the jMonkeyEngine3 core engine. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compile Core + + + + + + + + + Compile Effects + + + + + + Compile Networking + + + + + + Compile Plugins + + + + + + + Compile Jogg + + + + + + Compile Desktop + + + + + + Compile Blender Loader + + + + + + Compile Terrain + + + + + + Compile jBullet + + + + + + + Compile Bullet + + + + + + + Compile Nifty + + + + + + Compile Lwjgl + + + + + + Compile JOGL + + + + + + Compile Android + + + + + + Compile iOS + + + + + + Compile Tests + + + + + + + + Building Engine JAR files.. + + + + + + + + + + + + + + + + + Building TestData JAR file.. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moving optional packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Clearing old files + + + + + + + + Copying jMonkeyPlatform jME3 libs + + + + + + + Copying jMonkeyPlatform external libraries + + + + + Copying Project jME3 libs + + + + + + Copying Project external libraries + + + + + + + Copying Test Project Data + + + + + Copying Javadoc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copying Test Examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine/bullet-native-build.txt b/engine/bullet-native-build.txt new file mode 100644 index 000000000..2112ec36f --- /dev/null +++ b/engine/bullet-native-build.txt @@ -0,0 +1,180 @@ +*********************************** +* Build info for bulletjme * +* (c) 2011 Normen Hansen * +*********************************** + +This document outlines the process of building bullet-jme on different platforms. +Since bulletjme is a native java library and bullet gets included statically, +building requires downloading and building the bullet sources. + +Note that you do need to have CMake and a GCC compiler installed as well as +the Android NDK in case you want to build for android too. + +----------------------------------- +Requirements +----------------------------------- +ALL PLATFORMS +- Java SDK 1.5+: http://java.sun.com +- Apache ANT: http://ant.apache.org (included in most Java IDEs) +- Android NDK (optional): http://developer.android.com/sdk/ndk/index.html + +WINDOWS +- Install mingw-w64 GNU C++ Compiler: http://mingw-w64.sourceforge.net/ +- Install CMake: http://www.cmake.org/ + +Mac OSX +- Install XCode: http://developer.apple.com/ (or via the App Store) +- Install the "Command Line Tools" from inside XCode +- Install http://www.macports.org +- Install cmake via macports, in the Terminal type: +> sudo port install cmake + +LINUX +- Install cmake (and gcc if not available) via your package manager of choice, e.g. +> sudo apt-get install cmake + +----------------------------------- +Building +----------------------------------- +The build script in this directory does everything needed to download and compile +bullet and the jme-bullet library, you only need to call the appropriate ant target, +via your IDE or command line: + +> ant build-bullet-natives + +..and all of the steps below are executed automatically, including the download. + +You can alter options in the "nbproject/bullet.properties" file, such as the used +bullet version, native compilation options (see below), path to Android NDK etc. + +----------------------------------- +Running +----------------------------------- +The resulting jMonkeyEngine3.jar containing the tests will automatically use the +jME3-jbullet.jar or jME3-bullet.jar, depending on which is available in the libs directory. + +A convenience target exists to run the engine tests using the native bullet library: + +> ant run-bullet-native + +----------------------------------- +Altering the native build process +----------------------------------- +bullet-jme uses cpptasks to compile native code as well as the Android NDK. + +If you get compilation errors, try setting "native.java.include" in the build.properties file to your +JDK include directory, e.g. /opt/java/include or "c:\Program Files\Java\jdk1.6.0_20\include". + +To change the used compiler, edit the "native.platform.compiler" entry in the +"build.properties" file. The following c++ compilers work with cpptasks: + +gcc GCC C++ compiler +g++ GCC C++ compiler +c++ GCC C++ compiler +msvc Microsoft Visual C++ +bcc Borland C++ Compiler +icl Intel C++ compiler for Windows (IA-32) +ecl Intel C++ compiler for Windows (IA-64) +icc Intel C++ compiler for Linux (IA-32) +ecc Intel C++ compiler for Linux (IA-64) +CC Sun ONE C++ compiler +aCC HP aC++ C++ Compiler +wcl OpenWatcom C/C++ compiler + +In the "nbproject" folder you can find "build-native-platform.xml" files containing the commands +to compile bullet-jme on different platforms. If you want to alter the process, +you can copy and modify one of the files and import it in the "build.xml" file instead +of the old one. + +----------------------------------- +Netbeans Project +----------------------------------- +The engine NetBeans project also includes the native sources and a build configuration +entry to build the binary and run the tests with it. + +To have correct syntax highlighting in .cpp/.h files: + +- in Netbeans Settings -> C/C++ -> Code Assistance -> C++ + - add bullet-2.79/src as include directories for C++ + - add JAVA_HOME/include as include directories for C + + + +*********************************** +* Building bullet (optional) * +*********************************** + +----------------------------------- +General info +----------------------------------- +Note that the compilation of bullet should not produce dll / so / dylib files +but static *.a libraries which can later be compiled into the binary of bullet-jme. + +----------------------------------- +Downloading and extracting bullet +----------------------------------- +Requirements: +- Bullet source: http://bullet.googlecode.com/ + +Extract bullet source and build bullet (see below) + +----------------------------------- +Building on Mac OSX +----------------------------------- +Requirements: +- Apple Developer tools: http://developer.apple.com/ +- CMake: http://www.cmake.org/ (or via http://www.macports.org) + +Commands: +> cd bullet-trunk +> cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON \ + -DCMAKE_OSX_ARCHITECTURES='ppc;i386;x86_64' \ + -DBUILD_EXTRAS=off -DBUILD_DEMOS=off -DCMAKE_BUILD_TYPE=Release +> make + +----------------------------------- +Building on WINDOWS (MinGW/GCC, Recommended) +----------------------------------- +Requirements: +- GNU C++ Compiler: http://mingw-w64.sourceforge.net/ + http://sourceforge.net/projects/mingwbuilds/ +- CMake: http://www.cmake.org/ + +NOTE: At this time compiling with GCC 4.8.1 fails with a segmentation fault. +You must use an older GCC version like 4.7.3. +The second link above (mingwbuilds) offers snapshots of MinGW for GCC 4.7.3. + +Commands: +> cd bullet-trunk +> cmake . -DBUILD_SHARED_LIBS=OFF -DBUILD_DEMOS:BOOL=OFF -DBUILD_EXTRAS:BOOL=OFF -DCMAKE_BUILD_TYPE=Release . -G "MinGW Makefiles" +> mingw32-make + +----------------------------------- +Building on WINDOWS (VisualStudio, untested) +----------------------------------- +Requirements: +- Microsoft Visual Studio http://msdn.microsoft.com/ + +Bullet comes with autogenerated Project Files for Microsoft Visual Studio 6, 7, 7.1 and 8. +The main Workspace/Solution is located in Bullet/msvc/8/wksbullet.sln (replace 8 with your version). + +Build the project to create static libraries. + + +----------------------------------- +Building bullet on LINUX +----------------------------------- +Requirements: +- Gnu C++ Compiler: http://gcc.gnu.org/ +- CMake: http://www.cmake.org/ (or via your package manager of choice) + +Commands: +> cd bullet-trunk +> cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC"\ + -DBUILD_EXTRAS=off -DBUILD_DEMOS=off -DCMAKE_BUILD_TYPE=Release +> make + +----------------------------------- +More info on building bullet +----------------------------------- +http://www.bulletphysics.org/mediawiki-1.5.8/index.php?title=Installation diff --git a/engine/lib/CopyLibs-2/org-netbeans-modules-java-j2seproject-copylibstask.jar b/engine/lib/CopyLibs-2/org-netbeans-modules-java-j2seproject-copylibstask.jar new file mode 100644 index 000000000..38246fd27 Binary files /dev/null and b/engine/lib/CopyLibs-2/org-netbeans-modules-java-j2seproject-copylibstask.jar differ diff --git a/engine/lib/EasyMock/cglib-docs-2.2.3.jar b/engine/lib/EasyMock/cglib-docs-2.2.3.jar new file mode 100644 index 000000000..a5925b4b5 Binary files /dev/null and b/engine/lib/EasyMock/cglib-docs-2.2.3.jar differ diff --git a/engine/lib/EasyMock/cglib-nodep-2.2.3.jar b/engine/lib/EasyMock/cglib-nodep-2.2.3.jar new file mode 100644 index 000000000..35d6d7c3a Binary files /dev/null and b/engine/lib/EasyMock/cglib-nodep-2.2.3.jar differ diff --git a/engine/lib/EasyMock/cglib-src-2.2.3.jar b/engine/lib/EasyMock/cglib-src-2.2.3.jar new file mode 100644 index 000000000..4c5e62ac2 Binary files /dev/null and b/engine/lib/EasyMock/cglib-src-2.2.3.jar differ diff --git a/engine/lib/EasyMock/easymock-3.1-javadoc.jar b/engine/lib/EasyMock/easymock-3.1-javadoc.jar new file mode 100644 index 000000000..c0df6e164 Binary files /dev/null and b/engine/lib/EasyMock/easymock-3.1-javadoc.jar differ diff --git a/engine/lib/EasyMock/easymock-3.1-sources.jar b/engine/lib/EasyMock/easymock-3.1-sources.jar new file mode 100644 index 000000000..002b20c78 Binary files /dev/null and b/engine/lib/EasyMock/easymock-3.1-sources.jar differ diff --git a/engine/lib/EasyMock/easymock-3.1.jar b/engine/lib/EasyMock/easymock-3.1.jar new file mode 100644 index 000000000..f56f07ace Binary files /dev/null and b/engine/lib/EasyMock/easymock-3.1.jar differ diff --git a/engine/lib/EasyMock/objenesis-1.3-javadoc.jar b/engine/lib/EasyMock/objenesis-1.3-javadoc.jar new file mode 100644 index 000000000..66d661e7f Binary files /dev/null and b/engine/lib/EasyMock/objenesis-1.3-javadoc.jar differ diff --git a/engine/lib/EasyMock/objenesis-1.3-sources.jar b/engine/lib/EasyMock/objenesis-1.3-sources.jar new file mode 100644 index 000000000..5b9414c7c Binary files /dev/null and b/engine/lib/EasyMock/objenesis-1.3-sources.jar differ diff --git a/engine/lib/EasyMock/objenesis-1.3.jar b/engine/lib/EasyMock/objenesis-1.3.jar new file mode 100644 index 000000000..d56dc2b5c Binary files /dev/null and b/engine/lib/EasyMock/objenesis-1.3.jar differ diff --git a/engine/lib/JWSAntTasks/org-netbeans-modules-javawebstart-anttasks.jar b/engine/lib/JWSAntTasks/org-netbeans-modules-javawebstart-anttasks.jar new file mode 100644 index 000000000..292c9ed28 Binary files /dev/null and b/engine/lib/JWSAntTasks/org-netbeans-modules-javawebstart-anttasks.jar differ diff --git a/engine/lib/android/android.jar b/engine/lib/android/android.jar new file mode 100644 index 000000000..b9d655e8e Binary files /dev/null and b/engine/lib/android/android.jar differ diff --git a/engine/lib/antlibs/cpptasks.jar b/engine/lib/antlibs/cpptasks.jar new file mode 100644 index 000000000..537a9f323 Binary files /dev/null and b/engine/lib/antlibs/cpptasks.jar differ diff --git a/engine/lib/antlibs/depfinder/classes/dependencyfindertasks.properties b/engine/lib/antlibs/depfinder/classes/dependencyfindertasks.properties new file mode 100644 index 000000000..cc9f2d17d --- /dev/null +++ b/engine/lib/antlibs/depfinder/classes/dependencyfindertasks.properties @@ -0,0 +1,11 @@ +classmetrics=com.jeantessier.dependencyfinder.ant.ClassMetrics +dependencycycles=com.jeantessier.dependencyfinder.ant.DependencyCycles +dependencyclosure=com.jeantessier.dependencyfinder.ant.DependencyClosure +dependencyextractor=com.jeantessier.dependencyfinder.ant.DependencyExtractor +dependencymetrics=com.jeantessier.dependencyfinder.ant.DependencyMetrics +dependencyreporter=com.jeantessier.dependencyfinder.ant.DependencyReporter +jarjardiff=com.jeantessier.dependencyfinder.ant.JarJarDiff +listdeprecatedelements=com.jeantessier.dependencyfinder.ant.ListDeprecatedElements +listdiff=com.jeantessier.dependencyfinder.ant.ListDiff +listsymbols=com.jeantessier.dependencyfinder.ant.ListSymbols +oometrics=com.jeantessier.dependencyfinder.ant.OOMetrics diff --git a/engine/lib/antlibs/depfinder/classes/log4j.properties b/engine/lib/antlibs/depfinder/classes/log4j.properties new file mode 100644 index 000000000..b7973b968 --- /dev/null +++ b/engine/lib/antlibs/depfinder/classes/log4j.properties @@ -0,0 +1,20 @@ +# Default logging settings for Dependency Finder applications +log4j.rootLogger=ERROR, CONSOLE + +# log4j.logger.com.jeantessier.dependency=DEBUG, CHAINSAW +# log4j.logger.com.jeantessier.dependency.PackageNode=DEBUG, CHAINSAW +# log4j.logger.com.jeantessier.metrics.MetricsGatherer=DEBUG, CHAINSAW + +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss.SSS}] %c{2} %m%n + +log4j.appender.FILE=org.apache.log4j.FileAppender +log4j.appender.FILE.File=C:\\language\\Java\\myprojects\\DependencyFinder\\logs\\default.log +log4j.appender.FILE.layout=org.apache.log4j.PatternLayout +log4j.appender.FILE.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss.SSS}] %c{2} %m%n + +log4j.appender.CHAINSAW=org.apache.log4j.net.SocketAppender +log4j.appender.CHAINSAW.RemoteHost=localhost +log4j.appender.CHAINSAW.Port=4445 +log4j.appender.CHAINSAW.LocationInfo=true diff --git a/engine/lib/antlibs/depfinder/etc/DiffToHTML.xsl b/engine/lib/antlibs/depfinder/etc/DiffToHTML.xsl new file mode 100644 index 000000000..092361c46 --- /dev/null +++ b/engine/lib/antlibs/depfinder/etc/DiffToHTML.xsl @@ -0,0 +1,304 @@ + + + + + + + + + + + + + <xsl:if test="name/text()"><xsl:value-of select="name"/> - </xsl:if>API Change History + + + + +

- API Change History

+ + + +
+ + +

to

+ + + +
+ + + + +
+ + + + +

Removed Packages:

+
    + +
+
+ + +

Removed Interfaces:

+
    + +
+
+ + +

Removed Classes:

+
    + +
+
+ + +

Newly Deprecated Interfaces:

+
    + +
+
+ + +

Newly Deprecated Classes:

+
    + +
+
+ + +

Modified Interfaces:

+
+ +
+
+ + +

Modified Classes:

+
+ +
+
+ + +

Formerly Deprecated Interfaces:

+
    + +
+
+ + +

Formerly Deprecated Classes:

+
    + +
+
+ + +

New Packages:

+
    + +
+
+ + +

New Interfaces:

+
    + +
+
+ + +

New Classes:

+
    + +
+
+ + +

+
+ +
+
+ + +
Removed Fields:
+
    + +
+
+ + +
Removed Constructors:
+
    + +
+
+ + +
Removed Methods:
+
    + +
+
+ + +
Newly Deprecated Fields:
+
    + +
+
+ + +
Newly Deprecated Constructors:
+
    + +
+
+ + +
Newly Deprecated Methods:
+
    + +
+
+ + +
Field Declaration Changes:
+ +
+ + +
Constructor Changes:
+ +
+ + +
Method Changes:
+ +
+ + +
+

+ +

+
+
+ + + code: + + + + old: + [deprecated] +
+ new: + [deprecated] +
+
+ + +
Formerly Deprecated Fields:
+
    + +
+
+ + +
Formerly Deprecated Constructors:
+
    + +
+
+ + +
Formerly Deprecated Methods:
+
    + +
+
+ + +
New Fields:
+
    + +
+
+ + +
New Constructors:
+
    + +
+
+ + +
New Methods:
+
    + +
+
+ + + + +
Declaration Changes:
+
+

+ old: + [deprecated] +
+ new: + [deprecated] +

+
+
+ + +
  • [deprecated]
  • +
    + + +
  • +
    + +
    diff --git a/engine/lib/antlibs/depfinder/lib/DependencyFinder.jar b/engine/lib/antlibs/depfinder/lib/DependencyFinder.jar new file mode 100644 index 000000000..33b3c5d83 Binary files /dev/null and b/engine/lib/antlibs/depfinder/lib/DependencyFinder.jar differ diff --git a/engine/lib/antlibs/depfinder/lib/guava.jar b/engine/lib/antlibs/depfinder/lib/guava.jar new file mode 100644 index 000000000..8ff3a8174 Binary files /dev/null and b/engine/lib/antlibs/depfinder/lib/guava.jar differ diff --git a/engine/lib/antlibs/depfinder/lib/guava.lic b/engine/lib/antlibs/depfinder/lib/guava.lic new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/engine/lib/antlibs/depfinder/lib/guava.lic @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/engine/lib/antlibs/depfinder/lib/jakarta-oro.jar b/engine/lib/antlibs/depfinder/lib/jakarta-oro.jar new file mode 100644 index 000000000..23488d260 Binary files /dev/null and b/engine/lib/antlibs/depfinder/lib/jakarta-oro.jar differ diff --git a/engine/lib/antlibs/depfinder/lib/jakarta-oro.lic b/engine/lib/antlibs/depfinder/lib/jakarta-oro.lic new file mode 100644 index 000000000..f571b1b6d --- /dev/null +++ b/engine/lib/antlibs/depfinder/lib/jakarta-oro.lic @@ -0,0 +1,53 @@ +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2000-2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation", "Jakarta-Oro" + * must not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * or "Jakarta-Oro", nor may "Apache" or "Jakarta-Oro" appear in their + * name, without prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR + * ITS 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. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ diff --git a/engine/lib/antlibs/depfinder/lib/log4j.jar b/engine/lib/antlibs/depfinder/lib/log4j.jar new file mode 100644 index 000000000..c930a6ab4 Binary files /dev/null and b/engine/lib/antlibs/depfinder/lib/log4j.jar differ diff --git a/engine/lib/antlibs/depfinder/lib/log4j.lic b/engine/lib/antlibs/depfinder/lib/log4j.lic new file mode 100644 index 000000000..6279e5206 --- /dev/null +++ b/engine/lib/antlibs/depfinder/lib/log4j.lic @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 1999-2005 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/engine/lib/antlibs/depfinder/license.txt b/engine/lib/antlibs/depfinder/license.txt new file mode 100644 index 000000000..e2a47d5da --- /dev/null +++ b/engine/lib/antlibs/depfinder/license.txt @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2001-2009, Jean Tessier + * 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 Jean Tessier nor the names of his 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 REGENTS 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. + */ diff --git a/engine/lib/antlibs/depfinder/readme.txt b/engine/lib/antlibs/depfinder/readme.txt new file mode 100644 index 000000000..6164b3ca0 --- /dev/null +++ b/engine/lib/antlibs/depfinder/readme.txt @@ -0,0 +1,28 @@ +Content +------- + +This is the Dependency Finder toolkit. It contains a number of +tools for exploring relationships in (compiled) Java code. + +Licensing +--------- + +This software is licensed under the terms of BSD-like license. +A copy of the licensing terms is in the file license.txt. You +can get the original BSD License template at opensource.org. + +This product includes software developed by the Apache Software +Foundation (http://www.apache.org/). The terms of the Apache +Software License are reproduced in the lib/ directory next to +the relevant binary .jar files. + +Installation and Tools +---------------------- + +Installation instructions are included in docs/Manual.html. + +A list of the tools and their usage is in docs/Tools.html. + +These documents are also available online at: + + http://depfind.sourceforge.net/ diff --git a/engine/lib/antlibs/jsch-0.1.42.jar b/engine/lib/antlibs/jsch-0.1.42.jar new file mode 100644 index 000000000..c65eff095 Binary files /dev/null and b/engine/lib/antlibs/jsch-0.1.42.jar differ diff --git a/engine/lib/bullet/android/armeabi-v7a/libbulletjme.so b/engine/lib/bullet/android/armeabi-v7a/libbulletjme.so new file mode 100644 index 000000000..c439df81b Binary files /dev/null and b/engine/lib/bullet/android/armeabi-v7a/libbulletjme.so differ diff --git a/engine/lib/bullet/android/armeabi/libbulletjme.so b/engine/lib/bullet/android/armeabi/libbulletjme.so new file mode 100644 index 000000000..beac5352d Binary files /dev/null and b/engine/lib/bullet/android/armeabi/libbulletjme.so differ diff --git a/engine/lib/bullet/android/mips/libbulletjme.so b/engine/lib/bullet/android/mips/libbulletjme.so new file mode 100644 index 000000000..6bccfee63 Binary files /dev/null and b/engine/lib/bullet/android/mips/libbulletjme.so differ diff --git a/engine/lib/bullet/android/x86/libbulletjme.so b/engine/lib/bullet/android/x86/libbulletjme.so new file mode 100644 index 000000000..ff61f31ee Binary files /dev/null and b/engine/lib/bullet/android/x86/libbulletjme.so differ diff --git a/engine/lib/bullet/jME3-bullet-natives-android.jar b/engine/lib/bullet/jME3-bullet-natives-android.jar new file mode 100644 index 000000000..9017630a7 Binary files /dev/null and b/engine/lib/bullet/jME3-bullet-natives-android.jar differ diff --git a/engine/lib/bullet/jME3-bullet-natives.jar b/engine/lib/bullet/jME3-bullet-natives.jar new file mode 100644 index 000000000..920bb9339 Binary files /dev/null and b/engine/lib/bullet/jME3-bullet-natives.jar differ diff --git a/engine/lib/bullet/jarcontent/native/linux/libbulletjme.so b/engine/lib/bullet/jarcontent/native/linux/libbulletjme.so new file mode 100755 index 000000000..7c6cbb49e Binary files /dev/null and b/engine/lib/bullet/jarcontent/native/linux/libbulletjme.so differ diff --git a/engine/lib/bullet/jarcontent/native/linux/libbulletjme64.so b/engine/lib/bullet/jarcontent/native/linux/libbulletjme64.so new file mode 100755 index 000000000..e85db9728 Binary files /dev/null and b/engine/lib/bullet/jarcontent/native/linux/libbulletjme64.so differ diff --git a/engine/lib/bullet/jarcontent/native/macosx/libbulletjme.jnilib b/engine/lib/bullet/jarcontent/native/macosx/libbulletjme.jnilib new file mode 100755 index 000000000..7eaba6767 Binary files /dev/null and b/engine/lib/bullet/jarcontent/native/macosx/libbulletjme.jnilib differ diff --git a/engine/lib/bullet/jarcontent/native/windows/bulletjme.dll b/engine/lib/bullet/jarcontent/native/windows/bulletjme.dll new file mode 100644 index 000000000..281ecfeb8 Binary files /dev/null and b/engine/lib/bullet/jarcontent/native/windows/bulletjme.dll differ diff --git a/engine/lib/bullet/jarcontent/native/windows/bulletjme64.dll b/engine/lib/bullet/jarcontent/native/windows/bulletjme64.dll new file mode 100755 index 000000000..abfdd0353 Binary files /dev/null and b/engine/lib/bullet/jarcontent/native/windows/bulletjme64.dll differ diff --git a/engine/lib/jbullet/asm-all-3.1.jar b/engine/lib/jbullet/asm-all-3.1.jar new file mode 100644 index 000000000..5f37af522 Binary files /dev/null and b/engine/lib/jbullet/asm-all-3.1.jar differ diff --git a/lib/jbullet.jar b/engine/lib/jbullet/jbullet.jar similarity index 100% rename from lib/jbullet.jar rename to engine/lib/jbullet/jbullet.jar diff --git a/lib/stack-alloc.jar b/engine/lib/jbullet/stack-alloc.jar similarity index 100% rename from lib/stack-alloc.jar rename to engine/lib/jbullet/stack-alloc.jar diff --git a/engine/lib/jbullet/vecmath.jar b/engine/lib/jbullet/vecmath.jar new file mode 100644 index 000000000..ddfd73bdb Binary files /dev/null and b/engine/lib/jbullet/vecmath.jar differ diff --git a/lib/j-ogg-oggd.jar b/engine/lib/jogg/j-ogg-oggd.jar similarity index 100% rename from lib/j-ogg-oggd.jar rename to engine/lib/jogg/j-ogg-oggd.jar diff --git a/lib/j-ogg-vorbisd.jar b/engine/lib/jogg/j-ogg-vorbisd.jar similarity index 100% rename from lib/j-ogg-vorbisd.jar rename to engine/lib/jogg/j-ogg-vorbisd.jar diff --git a/engine/lib/jogl/gluegen-rt-natives-linux-amd64.jar b/engine/lib/jogl/gluegen-rt-natives-linux-amd64.jar new file mode 100644 index 000000000..19aeac86c Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-linux-amd64.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-linux-armv6.jar b/engine/lib/jogl/gluegen-rt-natives-linux-armv6.jar new file mode 100644 index 000000000..8ecfc2221 Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-linux-armv6.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-linux-armv6hf.jar b/engine/lib/jogl/gluegen-rt-natives-linux-armv6hf.jar new file mode 100644 index 000000000..7008d487c Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-linux-armv6hf.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-linux-i586.jar b/engine/lib/jogl/gluegen-rt-natives-linux-i586.jar new file mode 100644 index 000000000..17a4ed4ed Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-linux-i586.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-macosx-universal.jar b/engine/lib/jogl/gluegen-rt-natives-macosx-universal.jar new file mode 100644 index 000000000..e173a81a0 Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-macosx-universal.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-solaris-amd64.jar b/engine/lib/jogl/gluegen-rt-natives-solaris-amd64.jar new file mode 100644 index 000000000..3782a84c8 Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-solaris-amd64.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-solaris-i586.jar b/engine/lib/jogl/gluegen-rt-natives-solaris-i586.jar new file mode 100644 index 000000000..ddfc27586 Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-solaris-i586.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-windows-amd64.jar b/engine/lib/jogl/gluegen-rt-natives-windows-amd64.jar new file mode 100644 index 000000000..97c9f7508 Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-windows-amd64.jar differ diff --git a/engine/lib/jogl/gluegen-rt-natives-windows-i586.jar b/engine/lib/jogl/gluegen-rt-natives-windows-i586.jar new file mode 100644 index 000000000..ce80bd1f3 Binary files /dev/null and b/engine/lib/jogl/gluegen-rt-natives-windows-i586.jar differ diff --git a/engine/lib/jogl/gluegen-rt.jar b/engine/lib/jogl/gluegen-rt.jar new file mode 100644 index 000000000..9e93106df Binary files /dev/null and b/engine/lib/jogl/gluegen-rt.jar differ diff --git a/engine/lib/jogl/joal-natives-linux-amd64.jar b/engine/lib/jogl/joal-natives-linux-amd64.jar new file mode 100644 index 000000000..210a936a7 Binary files /dev/null and b/engine/lib/jogl/joal-natives-linux-amd64.jar differ diff --git a/engine/lib/jogl/joal-natives-linux-armv6.jar b/engine/lib/jogl/joal-natives-linux-armv6.jar new file mode 100644 index 000000000..ba7d9c7fd Binary files /dev/null and b/engine/lib/jogl/joal-natives-linux-armv6.jar differ diff --git a/engine/lib/jogl/joal-natives-linux-armv6hf.jar b/engine/lib/jogl/joal-natives-linux-armv6hf.jar new file mode 100644 index 000000000..b47616896 Binary files /dev/null and b/engine/lib/jogl/joal-natives-linux-armv6hf.jar differ diff --git a/engine/lib/jogl/joal-natives-linux-i586.jar b/engine/lib/jogl/joal-natives-linux-i586.jar new file mode 100644 index 000000000..d40f92c43 Binary files /dev/null and b/engine/lib/jogl/joal-natives-linux-i586.jar differ diff --git a/engine/lib/jogl/joal-natives-macosx-universal.jar b/engine/lib/jogl/joal-natives-macosx-universal.jar new file mode 100644 index 000000000..b07b62b70 Binary files /dev/null and b/engine/lib/jogl/joal-natives-macosx-universal.jar differ diff --git a/engine/lib/jogl/joal-natives-solaris-amd64.jar b/engine/lib/jogl/joal-natives-solaris-amd64.jar new file mode 100644 index 000000000..ead86840d Binary files /dev/null and b/engine/lib/jogl/joal-natives-solaris-amd64.jar differ diff --git a/engine/lib/jogl/joal-natives-solaris-i586.jar b/engine/lib/jogl/joal-natives-solaris-i586.jar new file mode 100644 index 000000000..ed03f9bb3 Binary files /dev/null and b/engine/lib/jogl/joal-natives-solaris-i586.jar differ diff --git a/engine/lib/jogl/joal-natives-windows-amd64.jar b/engine/lib/jogl/joal-natives-windows-amd64.jar new file mode 100644 index 000000000..660b388f9 Binary files /dev/null and b/engine/lib/jogl/joal-natives-windows-amd64.jar differ diff --git a/engine/lib/jogl/joal-natives-windows-i586.jar b/engine/lib/jogl/joal-natives-windows-i586.jar new file mode 100644 index 000000000..8a0843c6e Binary files /dev/null and b/engine/lib/jogl/joal-natives-windows-i586.jar differ diff --git a/engine/lib/jogl/joal.jar b/engine/lib/jogl/joal.jar new file mode 100644 index 000000000..f73fa6320 Binary files /dev/null and b/engine/lib/jogl/joal.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-linux-amd64.jar b/engine/lib/jogl/jogl-all-natives-linux-amd64.jar new file mode 100644 index 000000000..50e1ad87a Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-linux-amd64.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-linux-armv6.jar b/engine/lib/jogl/jogl-all-natives-linux-armv6.jar new file mode 100644 index 000000000..cd33591e1 Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-linux-armv6.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-linux-armv6hf.jar b/engine/lib/jogl/jogl-all-natives-linux-armv6hf.jar new file mode 100644 index 000000000..8e44a5c5a Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-linux-armv6hf.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-linux-i586.jar b/engine/lib/jogl/jogl-all-natives-linux-i586.jar new file mode 100644 index 000000000..92427a384 Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-linux-i586.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-macosx-universal.jar b/engine/lib/jogl/jogl-all-natives-macosx-universal.jar new file mode 100644 index 000000000..d5e90f3a6 Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-macosx-universal.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-solaris-amd64.jar b/engine/lib/jogl/jogl-all-natives-solaris-amd64.jar new file mode 100644 index 000000000..b05341bac Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-solaris-amd64.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-solaris-i586.jar b/engine/lib/jogl/jogl-all-natives-solaris-i586.jar new file mode 100644 index 000000000..35b95bf2a Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-solaris-i586.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-windows-amd64.jar b/engine/lib/jogl/jogl-all-natives-windows-amd64.jar new file mode 100644 index 000000000..6dc444850 Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-windows-amd64.jar differ diff --git a/engine/lib/jogl/jogl-all-natives-windows-i586.jar b/engine/lib/jogl/jogl-all-natives-windows-i586.jar new file mode 100644 index 000000000..6f0103efa Binary files /dev/null and b/engine/lib/jogl/jogl-all-natives-windows-i586.jar differ diff --git a/engine/lib/jogl/jogl-all.jar b/engine/lib/jogl/jogl-all.jar new file mode 100644 index 000000000..922fe3f5f Binary files /dev/null and b/engine/lib/jogl/jogl-all.jar differ diff --git a/engine/lib/junit_4/junit-4.5-api.zip b/engine/lib/junit_4/junit-4.5-api.zip new file mode 100644 index 000000000..5748c444d Binary files /dev/null and b/engine/lib/junit_4/junit-4.5-api.zip differ diff --git a/engine/lib/junit_4/junit-4.5-src.jar b/engine/lib/junit_4/junit-4.5-src.jar new file mode 100644 index 000000000..18774a573 Binary files /dev/null and b/engine/lib/junit_4/junit-4.5-src.jar differ diff --git a/engine/lib/junit_4/junit-4.5.jar b/engine/lib/junit_4/junit-4.5.jar new file mode 100644 index 000000000..83f8bc793 Binary files /dev/null and b/engine/lib/junit_4/junit-4.5.jar differ diff --git a/engine/lib/lwjgl/3rdparty/jinput_license.txt b/engine/lib/lwjgl/3rdparty/jinput_license.txt new file mode 100644 index 000000000..cee4669ba --- /dev/null +++ b/engine/lib/lwjgl/3rdparty/jinput_license.txt @@ -0,0 +1,32 @@ +/***************************************************************************** + * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistribution of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistribution in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materails provided with the distribution. + * + * Neither the name Sun Microsystems, Inc. or the names of the contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * This software is provided "AS IS," without a warranty of any kind. + * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING + * ANY IMPLIED WARRANT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR + * NON-INFRINGEMEN, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND + * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS + * A RESULT OF USING, MODIFYING OR DESTRIBUTING THIS SOFTWARE OR ITS + * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST + * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, + * INCIDENTAL OR PUNITIVE DAMAGES. HOWEVER CAUSED AND REGARDLESS OF THE THEORY + * OF LIABILITY, ARISING OUT OF THE USE OF OUR INABILITY TO USE THIS SOFTWARE, + * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * You acknowledge that this software is not designed or intended for us in + * the design, construction, operation or maintenance of any nuclear facility + * + *****************************************************************************/ \ No newline at end of file diff --git a/engine/lib/lwjgl/3rdparty/jogl_license.txt b/engine/lib/lwjgl/3rdparty/jogl_license.txt new file mode 100644 index 000000000..db9b93374 --- /dev/null +++ b/engine/lib/lwjgl/3rdparty/jogl_license.txt @@ -0,0 +1,152 @@ +JOGL is released under the BSD license. The full license terms follow: + + Copyright (c) 2003-2009 Sun Microsystems, Inc. All Rights Reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + - Redistribution of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistribution 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 Sun Microsystems, Inc. or the names of + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + This software is provided "AS IS," without a warranty of any kind. ALL + EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, + INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN + MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR + ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR + DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR + ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR + DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE + DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, + ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF + SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + You acknowledge that this software is not designed or intended for use + in the design, construction, operation or maintenance of any nuclear + facility. + +The JOGL source tree contains code ported from the OpenGL sample +implementation by Silicon Graphics, Inc. This code is licensed under +the SGI Free Software License B (Sun is redistributing the modified code +under a slightly modified, alternative license, which is described two +paragraphs below after "NOTE:"): + + License Applicability. Except to the extent portions of this file are + made subject to an alternative license as permitted in the SGI Free + Software License B, Version 1.1 (the "License"), the contents of this + file are subject only to the provisions of the License. You may not use + this file except in compliance with the License. You may obtain a copy + of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 + Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: + + http://oss.sgi.com/projects/FreeB + + Note that, as provided in the License, the Software is distributed on an + "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS + DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND + CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A + PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + + NOTE: The Original Code (as defined below) has been licensed to Sun + Microsystems, Inc. ("Sun") under the SGI Free Software License B + (Version 1.1), shown above ("SGI License"). Pursuant to Section + 3.2(3) of the SGI License, Sun is distributing the Covered Code to + you under an alternative license ("Alternative License"). This + Alternative License includes all of the provisions of the SGI License + except that Section 2.2 and 11 are omitted. Any differences between + the Alternative License and the SGI License are offered solely by Sun + and not by SGI. + + Original Code. The Original Code is: OpenGL Sample Implementation, + Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, + Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. + Copyright in any portions created by third parties is as indicated + elsewhere herein. All Rights Reserved. + + Additional Notice Provisions: The application programming interfaces + established by SGI in conjunction with the Original Code are The + OpenGL(R) Graphics System: A Specification (Version 1.2.1), released + April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version + 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X + Window System(R) (Version 1.3), released October 19, 1998. This software + was created using the OpenGL(R) version 1.2.1 Sample Implementation + published by SGI, but has not been independently verified as being + compliant with the OpenGL(R) version 1.2.1 Specification. + + +The JOGL source tree contains code from the LWJGL project which is +similarly covered by the BSD license: + + Copyright (c) 2002-2004 LWJGL Project + 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 'LWJGL' 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. + +The JOGL source tree also contains a Java port of Brian Paul's Tile +Rendering library, used with permission of the author under the BSD +license instead of the original LGPL: + + Copyright (c) 1997-2005 Brian Paul. All Rights Reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + - Redistribution of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistribution 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 Brian Paul or the names of contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + + This software is provided "AS IS," without a warranty of any + kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND + WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY + EXCLUDED. THE COPYRIGHT HOLDERS AND CONTRIBUTORS SHALL NOT BE + LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, + MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO + EVENT WILL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY + LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, + CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND + REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR + INABILITY TO USE THIS SOFTWARE, EVEN IF THE COPYRIGHT HOLDERS OR + CONTRIBUTORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. diff --git a/engine/lib/lwjgl/3rdparty/lzma_license.txt b/engine/lib/lwjgl/3rdparty/lzma_license.txt new file mode 100644 index 000000000..d82521961 --- /dev/null +++ b/engine/lib/lwjgl/3rdparty/lzma_license.txt @@ -0,0 +1,15 @@ +LZMA# SDK is licensed under two licenses: + +1) GNU Lesser General Public License (GNU LGPL) +2) Common Public License (CPL) + +It means that you can select one of these two licenses and +follow rules of that license. + +SPECIAL EXCEPTION +Igor Pavlov, as the author of this code, expressly permits you +to statically or dynamically link your code (or bind by name) +to the files from LZMA# SDK without subjecting your linked +code to the terms of the CPL or GNU LGPL. +Any modifications or additions to files from LZMA# SDK, however, +are subject to the GNU LGPL or CPL terms. \ No newline at end of file diff --git a/engine/lib/lwjgl/3rdparty/openal_license.txt b/engine/lib/lwjgl/3rdparty/openal_license.txt new file mode 100644 index 000000000..339560d0d --- /dev/null +++ b/engine/lib/lwjgl/3rdparty/openal_license.txt @@ -0,0 +1,437 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/engine/lib/lwjgl/CREDITS b/engine/lib/lwjgl/CREDITS new file mode 100644 index 000000000..d03bbf510 --- /dev/null +++ b/engine/lib/lwjgl/CREDITS @@ -0,0 +1,38 @@ +The following people have helped to make this project what it is today: + - Caspian Rychlik-Prince + - Brian Matzon + - Elias Naur + - Ioannis Tsakpinis + - Niels J�rgensen + - Tristan Campbell + - Gregory Pierce + - Luke Holden + - Mark Bernard + - Erik Duijs + - Jos Hirth + - Kevin Glass + - Atsuya Takagi + - kappaOne + - Simon Felix + - Ryan McNally + - Ciardhubh + - Jens von Pilgrim + - Ruben Garat + - Pelle Johnsen + - Jae Kwon + +additional credits goes to: + - Joseph I. Valenzuela [OpenAL stuff] + - Lev Povalahev [OpenGL Extensions] + - Endolf [Nightly builds and JInput] + +The LWJGL project includes files from or depends on the following projects: + - OpenGL, SGI - http://opengl.org/ + - OpenAL, Creative Labs - http://openal.org/ + - jinput, Sun - https://jinput.dev.java.net/ + - lzma, p7zip - http://p7zip.sourceforge.net/ + - JOGL, Sun - http://kenai.com/projects/jogl/pages/Home + +Please see the /doc/3rdparty/ directory for licenses. + +All trademarks and registered trademarks are the property of their respective owners. diff --git a/engine/lib/lwjgl/LICENSE b/engine/lib/lwjgl/LICENSE new file mode 100644 index 000000000..d277220e1 --- /dev/null +++ b/engine/lib/lwjgl/LICENSE @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2002-2008 Lightweight Java Game Library Project + * 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 'Light Weight Java Game Library' 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. + */ \ No newline at end of file diff --git a/engine/lib/lwjgl/README b/engine/lib/lwjgl/README new file mode 100644 index 000000000..977ae0214 --- /dev/null +++ b/engine/lib/lwjgl/README @@ -0,0 +1,50 @@ +This is the official readme file for lwjgl. + +Unless otherwise stated, all files distributed or in SVN are covered by +the license as stated in the LICENSE file. If you have not received this +file, please download it from the cvs server. + +To run some of the included tests: + Extract the archive, and cd into directory + (please substitute ; and \ according to platform) + + java -cp .;res;jar\lwjgl.jar;jar\lwjgl_test.jar;jar\lwjgl_util.jar;jar\jinput.jar; -Djava.library.path=native\ TEST + (this specifies that the jvm should locate the lwjgl native libs in 'native' directory) + + where TEST is some of the following: + + org.lwjgl.test.WindowCreationTest + org.lwjgl.test.SysTest + org.lwjgl.test.DisplayTest + + org.lwjgl.test.input.MouseCreationTest + org.lwjgl.test.input.MouseTest + org.lwjgl.test.input.HWCursorTest + org.lwjgl.test.input.KeyboardTest + org.lwjgl.test.input.TestControllers + + org.lwjgl.test.openal.ALCTest + org.lwjgl.test.openal.OpenALCreationTest + org.lwjgl.test.openal.MovingSoundTest + org.lwjgl.test.openal.PlayTest + org.lwjgl.test.openal.PlayTestMemory + org.lwjgl.test.openal.SourceLimitTest + org.lwjgl.test.openal.PositionTest + org.lwjgl.test.openal.StressTest + org.lwjgl.test.openal.SourceLimitTest + + org.lwjgl.test.opengl.FullScreenWindowedTest + org.lwjgl.test.opengl.PbufferTest + org.lwjgl.test.opengl.VBOIndexTest + org.lwjgl.test.opengl.VBOTest + + org.lwjgl.test.opengl.pbuffers.PbufferTest + + org.lwjgl.test.opengl.shaders.ShadersTest + +You may also run the Space invaders demo by executing: + java -cp .;res;jar\lwjgl.jar;jar\lwjgl_test.jar;jar\lwjgl_util.jar; -Djava.library.path=native\ org.lwjgl.examples.spaceinvaders.Game + +Project Webpage: www.lwjgl.org +Project Forum: forum.lwjgl.org +Project SVN: https://java-game-lib.svn.sourceforge.net/svnroot/java-game-lib diff --git a/engine/lib/lwjgl/jME3-lwjgl-natives.jar b/engine/lib/lwjgl/jME3-lwjgl-natives.jar new file mode 100644 index 000000000..6a60c7256 Binary files /dev/null and b/engine/lib/lwjgl/jME3-lwjgl-natives.jar differ diff --git a/engine/lib/lwjgl/jinput.jar b/engine/lib/lwjgl/jinput.jar new file mode 100644 index 000000000..7c2b6b06f Binary files /dev/null and b/engine/lib/lwjgl/jinput.jar differ diff --git a/engine/lib/lwjgl/lwjgl-debug.jar b/engine/lib/lwjgl/lwjgl-debug.jar new file mode 100644 index 000000000..4625bffd0 Binary files /dev/null and b/engine/lib/lwjgl/lwjgl-debug.jar differ diff --git a/engine/lib/lwjgl/lwjgl.jar b/engine/lib/lwjgl/lwjgl.jar new file mode 100644 index 000000000..4cb7cda86 Binary files /dev/null and b/engine/lib/lwjgl/lwjgl.jar differ diff --git a/engine/lib/lwjgl/lwjgl_hidden_switches.text b/engine/lib/lwjgl/lwjgl_hidden_switches.text new file mode 100644 index 000000000..6efed5e7b --- /dev/null +++ b/engine/lib/lwjgl/lwjgl_hidden_switches.text @@ -0,0 +1,25 @@ +LWJGL "Hidden" switches: + +org.lwjgl.opengl.Display.noinput +Do not initialize any controls when creating the display + +org.lwjgl.opengl.Display.nomouse +Do not create the mouse when creating the display + +org.lwjgl.opengl.Display.nokeyboard +Do not create the keyboard when creating the display + +org.lwjgl.util.Debug +Whether to output debug info + +org.lwjgl.util.NoChecks +Whether to disable runtime function/buffer checks and state tracking. + +org.lwjgl.opengl.Display.allowSoftwareOpenGL +Whether to allow creation of a software only opengl context + +org.lwjgl.opengl.Window.undecorated +Whether to create an undecorated window (no title bar) + +org.lwjgl.input.Mouse.allowNegativeMouseCoords +Usually mouse is clamped to 0,0 - setting this to true will cause you to get negative values if dragging outside and below or left of window \ No newline at end of file diff --git a/engine/lib/nblibraries.properties b/engine/lib/nblibraries.properties new file mode 100644 index 000000000..a05b75cbf --- /dev/null +++ b/engine/lib/nblibraries.properties @@ -0,0 +1,75 @@ +libs.android.classpath=\ + ${base}/android/android.jar +libs.bullet.classpath=\ + ${base}/bullet/jME3-bullet-natives.jar +libs.CopyLibs.classpath=\ + ${base}/CopyLibs-2/org-netbeans-modules-java-j2seproject-copylibstask.jar +libs.CopyLibs.displayName=CopyLibs Task +libs.CopyLibs.prop-version=1.0 +libs.EasyMock.classpath=\ + ${base}/EasyMock/easymock-3.1.jar:\ + ${base}/EasyMock/objenesis-1.3.jar:\ + ${base}/EasyMock/cglib-nodep-2.2.3.jar +libs.EasyMock.displayName=EasyMock +libs.EasyMock.javadoc=\ + ${base}/EasyMock/easymock-3.1-javadoc.jar!//:\ + ${base}/EasyMock/objenesis-1.3-javadoc.jar!// +libs.EasyMock.src=\ + ${base}/EasyMock/easymock-3.1-sources.jar!//:\ + ${base}/EasyMock/objenesis-1.3-sources.jar!//:\ + ${base}/EasyMock/cglib-src-2.2.3.jar!/src/test/ +libs.jbullet.classpath=\ + ${base}/jbullet/jbullet.jar:\ + ${base}/jbullet/stack-alloc.jar:\ + ${base}/jbullet/vecmath.jar +libs.jheora.classpath=\ + ${base}/jheora/jheora-jst-debug-0.6.0.jar +libs.jme3-test-data.classpath=\ + ${base}/../test-data/ +libs.jogg.classpath=\ + ${base}/jogg/j-ogg-oggd.jar:\ + ${base}/jogg/j-ogg-vorbisd.jar +libs.jogl.classpath=\ + ${base}/jogl/gluegen-rt.jar:\ + ${base}/jogl/jME3-jogl-natives.jar:\ + ${base}/jogl/jogl.jar +libs.jogl2.classpath=\ + ${base}/jogl/gluegen-rt.jar:\ + ${base}/jogl/joal.jar:\ + ${base}/jogl/jogl-all.jar +libs.junit_4.classpath=\ + ${base}/junit_4/junit-4.5.jar +libs.junit_4.javadoc=\ + ${base}/junit_4/junit-4.5-api.zip +libs.junit_4.src=\ + ${base}/junit_4/junit-4.5-src.jar +libs.JWSAntTasks.classpath=\ + ${base}/JWSAntTasks/org-netbeans-modules-javawebstart-anttasks.jar +libs.lwjgl.classpath=\ + ${base}/lwjgl/lwjgl.jar;\ + ${base}/lwjgl/jME3-lwjgl-natives.jar;\ + ${base}/lwjgl/jinput.jar +libs.lwjgl.src=\ + ${base}/../../Libraries/LWJGL2.7.1/src/ +libs.niftygui1.3.classpath=\ + ${base}/niftygui/eventbus.jar;\ + ${base}/niftygui/nifty-default-controls.jar;\ + ${base}/niftygui/nifty-examples.jar;\ + ${base}/niftygui/nifty-style-black.jar;\ + ${base}/niftygui/nifty.jar;\ + ${base}/niftygui/jglfont-core.jar;\ + ${base}/niftygui/xmlpull-xpp3.jar +libs.niftygui1.3.javadoc=\ + ${base}/niftygui/nifty-default-controls-javadoc.jar!//;\ + ${base}/niftygui/nifty-examples-javadoc.jar!// +libs.openalsoft.classpath=\ + ${base}/openal-soft/jME3-openal-soft-natives-android.jar +libs.swing-layout.classpath=\ + ${base}/swing-layout/swing-layout-1.0.4.jar +libs.swing-layout.javadoc=\ + ${base}/swing-layout/swing-layout-1.0.4-doc.zip +libs.swing-layout.src=\ + ${base}/swing-layout/swing-layout-1.0.4-src.zip +libs.noise.classpath=\ + ${base}/noise/noise-0.0.1-SNAPSHOT.jar + diff --git a/engine/lib/niftygui/VERSION.txt b/engine/lib/niftygui/VERSION.txt new file mode 100644 index 000000000..5c5df1cd2 --- /dev/null +++ b/engine/lib/niftygui/VERSION.txt @@ -0,0 +1,9 @@ +Last Updated 22/6/2013 + +Component Version +--------------------------------------------------------------------- +nifty 1.3.3 (2013-06-20 23:54:54) +nifty-default-controls 1.3.3 (2013-06-20 23:54:54) +nifty-style-black 1.3.3 (2013-06-20 23:54:54) +nifty-examples 1.3.3 (2013-06-20 23:54:54) +jglfont-core 1.3 diff --git a/engine/lib/niftygui/eventbus.jar b/engine/lib/niftygui/eventbus.jar new file mode 100644 index 000000000..a02006f95 Binary files /dev/null and b/engine/lib/niftygui/eventbus.jar differ diff --git a/engine/lib/niftygui/jglfont-core-javadoc.jar b/engine/lib/niftygui/jglfont-core-javadoc.jar new file mode 100644 index 000000000..9d0bd705f Binary files /dev/null and b/engine/lib/niftygui/jglfont-core-javadoc.jar differ diff --git a/engine/lib/niftygui/jglfont-core.jar b/engine/lib/niftygui/jglfont-core.jar new file mode 100644 index 000000000..66e3f984d Binary files /dev/null and b/engine/lib/niftygui/jglfont-core.jar differ diff --git a/engine/lib/niftygui/nifty-default-controls-javadoc.jar b/engine/lib/niftygui/nifty-default-controls-javadoc.jar new file mode 100644 index 000000000..9351afcf9 Binary files /dev/null and b/engine/lib/niftygui/nifty-default-controls-javadoc.jar differ diff --git a/engine/lib/niftygui/nifty-default-controls.jar b/engine/lib/niftygui/nifty-default-controls.jar new file mode 100644 index 000000000..868028349 Binary files /dev/null and b/engine/lib/niftygui/nifty-default-controls.jar differ diff --git a/engine/lib/niftygui/nifty-examples-javadoc.jar b/engine/lib/niftygui/nifty-examples-javadoc.jar new file mode 100644 index 000000000..821abf7db Binary files /dev/null and b/engine/lib/niftygui/nifty-examples-javadoc.jar differ diff --git a/engine/lib/niftygui/nifty-examples.jar b/engine/lib/niftygui/nifty-examples.jar new file mode 100644 index 000000000..5e1052beb Binary files /dev/null and b/engine/lib/niftygui/nifty-examples.jar differ diff --git a/engine/lib/niftygui/nifty-javadoc.jar b/engine/lib/niftygui/nifty-javadoc.jar new file mode 100644 index 000000000..b972da8a4 Binary files /dev/null and b/engine/lib/niftygui/nifty-javadoc.jar differ diff --git a/engine/lib/niftygui/nifty-style-black.jar b/engine/lib/niftygui/nifty-style-black.jar new file mode 100644 index 000000000..31e9b7305 Binary files /dev/null and b/engine/lib/niftygui/nifty-style-black.jar differ diff --git a/engine/lib/niftygui/nifty.jar b/engine/lib/niftygui/nifty.jar new file mode 100644 index 000000000..5c9a83a67 Binary files /dev/null and b/engine/lib/niftygui/nifty.jar differ diff --git a/engine/lib/niftygui/xmlpull-xpp3.jar b/engine/lib/niftygui/xmlpull-xpp3.jar new file mode 100644 index 000000000..99b7aeabb Binary files /dev/null and b/engine/lib/niftygui/xmlpull-xpp3.jar differ diff --git a/engine/lib/noise/noise-0.0.1-SNAPSHOT.jar b/engine/lib/noise/noise-0.0.1-SNAPSHOT.jar new file mode 100644 index 000000000..62dc1f17d Binary files /dev/null and b/engine/lib/noise/noise-0.0.1-SNAPSHOT.jar differ diff --git a/engine/lib/openal-soft/jME3-openal-soft-natives-android.jar b/engine/lib/openal-soft/jME3-openal-soft-natives-android.jar new file mode 100644 index 000000000..ee4dec907 Binary files /dev/null and b/engine/lib/openal-soft/jME3-openal-soft-natives-android.jar differ diff --git a/engine/lib/openal-soft/jarcontent/armeabi-v7a/libopenalsoftjme.so b/engine/lib/openal-soft/jarcontent/armeabi-v7a/libopenalsoftjme.so new file mode 100644 index 000000000..431d53ed0 Binary files /dev/null and b/engine/lib/openal-soft/jarcontent/armeabi-v7a/libopenalsoftjme.so differ diff --git a/engine/lib/openal-soft/jarcontent/armeabi/libopenalsoftjme.so b/engine/lib/openal-soft/jarcontent/armeabi/libopenalsoftjme.so new file mode 100644 index 000000000..498e6c2b2 Binary files /dev/null and b/engine/lib/openal-soft/jarcontent/armeabi/libopenalsoftjme.so differ diff --git a/engine/lib/openal-soft/jarcontent/x86/libopenalsoftjme.so b/engine/lib/openal-soft/jarcontent/x86/libopenalsoftjme.so new file mode 100644 index 000000000..5dfdba193 Binary files /dev/null and b/engine/lib/openal-soft/jarcontent/x86/libopenalsoftjme.so differ diff --git a/engine/lib/swing-layout/swing-layout-1.0.4-doc.zip b/engine/lib/swing-layout/swing-layout-1.0.4-doc.zip new file mode 100644 index 000000000..6ea4f2b37 Binary files /dev/null and b/engine/lib/swing-layout/swing-layout-1.0.4-doc.zip differ diff --git a/engine/lib/swing-layout/swing-layout-1.0.4-src.zip b/engine/lib/swing-layout/swing-layout-1.0.4-src.zip new file mode 100644 index 000000000..ec9836ee0 Binary files /dev/null and b/engine/lib/swing-layout/swing-layout-1.0.4-src.zip differ diff --git a/engine/lib/swing-layout/swing-layout-1.0.4.jar b/engine/lib/swing-layout/swing-layout-1.0.4.jar new file mode 100644 index 000000000..46fe3a2ee Binary files /dev/null and b/engine/lib/swing-layout/swing-layout-1.0.4.jar differ diff --git a/engine/lib/swingext/swing-layout-1.0.3.jar b/engine/lib/swingext/swing-layout-1.0.3.jar new file mode 100644 index 000000000..6e1b43b36 Binary files /dev/null and b/engine/lib/swingext/swing-layout-1.0.3.jar differ diff --git a/engine/master-application.jnlp b/engine/master-application.jnlp new file mode 100644 index 000000000..8316c8763 --- /dev/null +++ b/engine/master-application.jnlp @@ -0,0 +1,27 @@ + + + ${APPLICATION.TITLE} + ${APPLICATION.VENDOR} + + ${APPLICATION.DESC} + ${APPLICATION.DESC.SHORT} + + + + + + + + + + + + + + + + + + + + diff --git a/engine/mountains.zip b/engine/mountains.zip new file mode 100644 index 000000000..59b7ce0a3 Binary files /dev/null and b/engine/mountains.zip differ diff --git a/engine/nbproject/build-bullet-natives.xml b/engine/nbproject/build-bullet-natives.xml new file mode 100644 index 000000000..ae0af118a --- /dev/null +++ b/engine/nbproject/build-bullet-natives.xml @@ -0,0 +1,745 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Downloading bullet source.. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine/nbproject/build-impl.xml b/engine/nbproject/build-impl.xml new file mode 100644 index 000000000..563bd4dde --- /dev/null +++ b/engine/nbproject/build-impl.xml @@ -0,0 +1,1624 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.core.dir + Must set src.core-data.dir + Must set src.core-effects.dir + Must set src.core-plugins.dir + Must set src.desktop.dir + Must set src.terrain.dir + Must set src.jbullet.dir + Must set src.bullet.dir + Must set src.bullet-native.dir + Must set src.bullet-common.dir + Must set src.networking.dir + Must set src.niftygui.dir + Must set src.jogg.dir + Must set src.ogre.dir + Must set src.blender.dir + Must set src.xml.dir + Must set src.tools.dir + Must set src.test.dir + Must set src.lwjgl.dir + Must set src.jogl.dir + Must set src.android.dir + Must set src.openal-soft-native.dir + Must set src.ios.dir + Must set test.test.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + + + + + + java -cp "${run.classpath.with.dist.jar}" ${main.class} + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine/nbproject/build-openal-soft-natives.xml b/engine/nbproject/build-openal-soft-natives.xml new file mode 100644 index 000000000..573e6057c --- /dev/null +++ b/engine/nbproject/build-openal-soft-natives.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copying OpenAL Soft source files to build directory from ${openal-soft.include} + + + + + + + + + + + + Copying Android Make and JNI files for OpenAL Soft to build directory from ${openal-soft.source.dir} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine/nbproject/bullet-native.properties b/engine/nbproject/bullet-native.properties new file mode 100644 index 000000000..d5220a06d --- /dev/null +++ b/engine/nbproject/bullet-native.properties @@ -0,0 +1,52 @@ +##################################################### +# these are the ant build properties for bullet-jme # +##################################################### +bullet.library.name=bulletjme +bullet.library.version=0.9 + +# location of Android NDK if available +ndk.dir=/Users/normenhansen/Documents/Code-Import/android-ndk-r7 + +# change if bullet version changes +bullet.folder=../bullet-2.82-r2704 +bullet.download=http://bullet.googlecode.com/files/bullet-2.82-r2704.zip + +# compile options +bullet.compile.debug=false +# native library compilation options +bullet.osx.compiler=g++ +bullet.osx.syslibroot=/Applications/XCode/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk +#/Developer/SDKs/MacOSX10.6.sdk +# change this to msvc for MS Visual Studio compiler +bullet.windows.compiler=g++ +bullet.linux.compiler=g++ +bullet.solaris.compiler=g++ + +#cross compilation options, disable if just developing / testing on linux +cross.compile=true +cross.compile.target=i686-w64-mingw32 +cross.compile.target64=x86_64-w64-mingw32 +bullet.linux.crosscompiler=g++-cross + +# exec command for cmake and make for different platforms, +# needed to compile bullet before compiling the jme bullet libraries +cmake.windows=cmake +make.windows=mingw32-make +cmake.linux=cmake +make.linux=make +cmake.osx=/opt/local/bin/cmake +make.osx=make + +# native header include directories +bullet.java.include=${java.home}/../include +# OSX has no JRE, only JDK +bullet.osx.java.include=/System/Library/Frameworks/JavaVM.framework/Headers + +# dont change these.. +bullet.bullet.include=${bullet.folder}/src +bullet.build.dir=build/bullet/ +bullet.source.dir=src/bullet-native +bullet.output.base=lib/bullet +bullet.output.dir=${bullet.output.base}/jarcontent/native +bullet.jme.dir=dist +bullet.lib.dir=dist/lib diff --git a/engine/nbproject/configs/JWS_generated.properties b/engine/nbproject/configs/JWS_generated.properties new file mode 100644 index 000000000..7a873bf68 --- /dev/null +++ b/engine/nbproject/configs/JWS_generated.properties @@ -0,0 +1,4 @@ +$label=Web Start +$target.debug=jws-debug +$target.run=jws-run +compile.on.save.unsupported.javawebstart=true diff --git a/engine/nbproject/configs/Native_Bullet.properties b/engine/nbproject/configs/Native_Bullet.properties new file mode 100644 index 000000000..0f00a5c33 --- /dev/null +++ b/engine/nbproject/configs/Native_Bullet.properties @@ -0,0 +1,3 @@ +$label=Native Bullet +$target.run=run-bullet-native +$target.build=build-bullet-natives diff --git a/engine/nbproject/configs/Native_OpenAL_Soft.properties b/engine/nbproject/configs/Native_OpenAL_Soft.properties new file mode 100644 index 000000000..30a49da59 --- /dev/null +++ b/engine/nbproject/configs/Native_OpenAL_Soft.properties @@ -0,0 +1,2 @@ +$label=Native OpenAL Soft +$target.build=build-openal-soft-natives diff --git a/engine/nbproject/genfiles.properties b/engine/nbproject/genfiles.properties new file mode 100644 index 000000000..0e2da7367 --- /dev/null +++ b/engine/nbproject/genfiles.properties @@ -0,0 +1,11 @@ +build.xml.data.CRC32=52f8cb9e +build.xml.script.CRC32=34d4c2f2 +build.xml.stylesheet.CRC32=958a1d3e +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=4445e182 +nbproject/build-impl.xml.script.CRC32=9284d9f7 +nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46 +nbproject/profiler-build-impl.xml.data.CRC32=aff514c1 +nbproject/profiler-build-impl.xml.script.CRC32=abda56ed +nbproject/profiler-build-impl.xml.stylesheet.CRC32=f10cf54c@1.11.1 diff --git a/engine/nbproject/jnlp-impl.xml b/engine/nbproject/jnlp-impl.xml new file mode 100644 index 000000000..f180fdd71 --- /dev/null +++ b/engine/nbproject/jnlp-impl.xml @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + javaws "${jnlp.file.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/engine/nbproject/openal-soft-native.properties b/engine/nbproject/openal-soft-native.properties new file mode 100644 index 000000000..7d26e36d1 --- /dev/null +++ b/engine/nbproject/openal-soft-native.properties @@ -0,0 +1,23 @@ +########################################################## +# these are the ant build properties for openal-soft-jme # +########################################################## +# location of Android NDK if available +ndk.dir=D:/android/android-ndk-r7 + +# directory of OpenAL Soft download +openal-soft.folder=../openalsoft_1_15_1/openal-soft + +# compile options +openal-soft.compile.debug=false + +# native header include directories +openal-soft.java.include=${java.home}/../include + +# dont change these.. +openal-soft.include=${openal-soft.folder} +openal-soft.source.dir=src/openal-soft-native/android +openal-soft.build.dir=build/openal-soft/ +openal-soft.output.base=lib/openal-soft +openal-soft.output.dir=${openal-soft.output.base}/jarcontent +openal-soft.jme.dir=dist +openal-soft.lib.dir=dist/lib diff --git a/engine/nbproject/project.properties b/engine/nbproject/project.properties new file mode 100644 index 000000000..2064c9974 --- /dev/null +++ b/engine/nbproject/project.properties @@ -0,0 +1,169 @@ +annotation.processing.enabled=false +annotation.processing.enabled.in.editor=false +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +ant.customtasks.libs=JWSAntTasks +application.homepage=http://www.jmonkeyengine.com/ +application.title=jMonkeyEngine 3.0 +application.vendor=jMonkeyEngine +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form,**/*.m +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/jMonkeyEngine3.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes= +file.reference.build-android=build/android +file.reference.build-blender=build/blender +file.reference.build-bullet=build/bullet +file.reference.build-classes=build/classes +file.reference.build-core=build/core +file.reference.build-desktop=build/desktop +file.reference.build-effects=build/effects +file.reference.build-empty=build/empty +file.reference.build-ios=build/ios +file.reference.build-jbullet=build/jbullet +file.reference.build-jogg=build/jogg +file.reference.build-jogl=build/jogl +file.reference.build-lwjgl=build/lwjgl +file.reference.build-networking=build/networking +file.reference.build-niftygui=build/niftygui +file.reference.build-plugins=build/plugins +file.reference.build-terrain=build/terrain +file.reference.src-test-data=src/test-data +includes=** +jar.archive.disabled=${jnlp.enabled} +jar.compress=true +jar.index=${jnlp.enabled} +javac.classpath=\ + ${libs.jogg.classpath}:\ + ${libs.jbullet.classpath}:\ + ${libs.lwjgl.classpath}:\ + ${libs.niftygui1.3.classpath}:\ + ${libs.jme3-test-data.classpath}:\ + ${libs.android.classpath}:\ + ${libs.bullet.classpath}:\ + ${libs.jogl2.classpath}:\ + ${libs.openalsoft.classpath} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=1.5 +javac.target=1.5 +javac.test.classpath=\ + ${libs.junit_4.classpath}:\ + ${libs.EasyMock.classpath}:\ + ${javac.classpath}:\ + ${file.reference.build-android}:\ + ${file.reference.build-blender}:\ + ${file.reference.build-bullet}:\ + ${file.reference.build-classes}:\ + ${file.reference.build-core}:\ + ${file.reference.build-desktop}:\ + ${file.reference.build-effects}:\ + ${file.reference.build-empty}:\ + ${file.reference.build-ios}:\ + ${file.reference.build-jbullet}:\ + ${file.reference.build-jogg}:\ + ${file.reference.build-jogl}:\ + ${file.reference.build-lwjgl}:\ + ${file.reference.build-networking}:\ + ${file.reference.build-niftygui}:\ + ${file.reference.build-plugins}:\ + ${file.reference.build-terrain}:\ + ${build.classes.dir} +javadoc.additionalparam=-protected +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle=jMonkeyEngine3 +jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api" +jnlp.applet.class=jme3test.awt.AppHarness +jnlp.applet.height=300 +jnlp.applet.width=300 +jnlp.codebase.type=user +jnlp.codebase.user=http://jmonkeyengine.com/javawebstart/ +jnlp.descriptor=application +jnlp.enabled=false +jnlp.icon=/Users/normenhansen/Pictures/jme/icons/jme-logo48.png +jnlp.mixed.code=default +jnlp.offline-allowed=true +jnlp.signed=true +jnlp.signing=generated +jnlp.signing.alias=engine +jnlp.signing.keystore= +main.class=jme3test.TestChooser +manifest.file=MANIFEST.MF +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${build.dir}/core:\ + ${build.dir}/effects:\ + ${build.dir}/networking:\ + ${build.dir}/plugins:\ + ${build.dir}/jogg:\ + ${build.dir}/desktop:\ + ${build.dir}/blender:\ + ${build.dir}/terrain:\ + ${build.dir}/jbullet:\ + ${build.dir}/bullet:\ + ${build.dir}/niftygui:\ + ${build.dir}/lwjgl:\ + ${build.dir}/jogl:\ + ${build.dir}/android:\ + ${build.dir}/ios +run.jvmargs=-Xms128m -Xmx128m -XX:MaxDirectMemorySize=256M +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +src.android.dir=src/android +src.blender.dir=src/blender +src.bullet-common.dir=src/bullet-common +src.bullet-native.dir=src/bullet-native +src.bullet.dir=src/bullet +src.core-data.dir=src/core-data +src.core-effects.dir=src/core-effects +src.core-plugins.dir=src/core-plugins +src.core.dir=src/core +src.desktop.dir=src/desktop +src.ios.dir=src/ios +src.jbullet.dir=src/jbullet +src.jogg.dir=src/jogg +src.jogl.dir=src/jogl +src.lwjgl.dir=src/lwjgl +src.networking.dir=src/networking +src.niftygui.dir=src/niftygui +src.ogre.dir=src/ogre +src.openal-soft-native.dir=src\\openal-soft-native +src.terrain.dir=src/terrain +src.test.dir=src/test +src.tools.dir=src/tools +src.xml.dir=src/xml +test.test.dir=test diff --git a/engine/nbproject/project.xml b/engine/nbproject/project.xml new file mode 100644 index 000000000..ec06dd238 --- /dev/null +++ b/engine/nbproject/project.xml @@ -0,0 +1,46 @@ + + + org.netbeans.modules.java.j2seproject + + + + + + + + jMonkeyEngine3 + 1.6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ./lib/nblibraries.properties + + + diff --git a/engine/preview-application.html b/engine/preview-application.html new file mode 100644 index 000000000..4834dd87b --- /dev/null +++ b/engine/preview-application.html @@ -0,0 +1,17 @@ + + + + Test page for launching the application via JNLP + + +

    Test page for launching the application via JNLP

    + + + + + + diff --git a/engine/quake3level.zip b/engine/quake3level.zip new file mode 100644 index 000000000..291ff1182 Binary files /dev/null and b/engine/quake3level.zip differ diff --git a/jme3-android/src/main/java/com/jme3/app/AndroidHarness.java b/engine/src/android/com/jme3/app/AndroidHarness.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/app/AndroidHarness.java rename to engine/src/android/com/jme3/app/AndroidHarness.java diff --git a/jme3-android/src/main/java/com/jme3/app/R.java b/engine/src/android/com/jme3/app/R.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/app/R.java rename to engine/src/android/com/jme3/app/R.java diff --git a/jme3-android/src/main/java/com/jme3/asset/AndroidAssetManager.java b/engine/src/android/com/jme3/asset/AndroidAssetManager.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/asset/AndroidAssetManager.java rename to engine/src/android/com/jme3/asset/AndroidAssetManager.java diff --git a/jme3-android/src/main/java/com/jme3/asset/AndroidImageInfo.java b/engine/src/android/com/jme3/asset/AndroidImageInfo.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/asset/AndroidImageInfo.java rename to engine/src/android/com/jme3/asset/AndroidImageInfo.java diff --git a/jme3-android/src/main/java/com/jme3/asset/plugins/AndroidLocator.java b/engine/src/android/com/jme3/asset/plugins/AndroidLocator.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/asset/plugins/AndroidLocator.java rename to engine/src/android/com/jme3/asset/plugins/AndroidLocator.java diff --git a/jme3-android/src/main/java/com/jme3/audio/android/AL.java b/engine/src/android/com/jme3/audio/android/AL.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/audio/android/AL.java rename to engine/src/android/com/jme3/audio/android/AL.java diff --git a/jme3-android/src/main/java/com/jme3/audio/android/AndroidAudioData.java b/engine/src/android/com/jme3/audio/android/AndroidAudioData.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/audio/android/AndroidAudioData.java rename to engine/src/android/com/jme3/audio/android/AndroidAudioData.java diff --git a/jme3-android/src/main/java/com/jme3/audio/android/AndroidAudioRenderer.java b/engine/src/android/com/jme3/audio/android/AndroidAudioRenderer.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/audio/android/AndroidAudioRenderer.java rename to engine/src/android/com/jme3/audio/android/AndroidAudioRenderer.java diff --git a/jme3-android/src/main/java/com/jme3/audio/android/AndroidMediaPlayerAudioRenderer.java b/engine/src/android/com/jme3/audio/android/AndroidMediaPlayerAudioRenderer.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/audio/android/AndroidMediaPlayerAudioRenderer.java rename to engine/src/android/com/jme3/audio/android/AndroidMediaPlayerAudioRenderer.java diff --git a/jme3-android/src/main/java/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java b/engine/src/android/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java rename to engine/src/android/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java diff --git a/jme3-android/src/main/java/com/jme3/audio/plugins/AndroidAudioLoader.java b/engine/src/android/com/jme3/audio/plugins/AndroidAudioLoader.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/audio/plugins/AndroidAudioLoader.java rename to engine/src/android/com/jme3/audio/plugins/AndroidAudioLoader.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidGestureHandler.java b/engine/src/android/com/jme3/input/android/AndroidGestureHandler.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidGestureHandler.java rename to engine/src/android/com/jme3/input/android/AndroidGestureHandler.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidInput.java b/engine/src/android/com/jme3/input/android/AndroidInput.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidInput.java rename to engine/src/android/com/jme3/input/android/AndroidInput.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidInputHandler.java b/engine/src/android/com/jme3/input/android/AndroidInputHandler.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidInputHandler.java rename to engine/src/android/com/jme3/input/android/AndroidInputHandler.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidKeyHandler.java b/engine/src/android/com/jme3/input/android/AndroidKeyHandler.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidKeyHandler.java rename to engine/src/android/com/jme3/input/android/AndroidKeyHandler.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidKeyMapping.java b/engine/src/android/com/jme3/input/android/AndroidKeyMapping.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidKeyMapping.java rename to engine/src/android/com/jme3/input/android/AndroidKeyMapping.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidSensorJoyInput.java b/engine/src/android/com/jme3/input/android/AndroidSensorJoyInput.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidSensorJoyInput.java rename to engine/src/android/com/jme3/input/android/AndroidSensorJoyInput.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidTouchHandler.java b/engine/src/android/com/jme3/input/android/AndroidTouchHandler.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidTouchHandler.java rename to engine/src/android/com/jme3/input/android/AndroidTouchHandler.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/AndroidTouchHandler14.java b/engine/src/android/com/jme3/input/android/AndroidTouchHandler14.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/AndroidTouchHandler14.java rename to engine/src/android/com/jme3/input/android/AndroidTouchHandler14.java diff --git a/jme3-android/src/main/java/com/jme3/input/android/TouchEventPool.java b/engine/src/android/com/jme3/input/android/TouchEventPool.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/input/android/TouchEventPool.java rename to engine/src/android/com/jme3/input/android/TouchEventPool.java diff --git a/jme3-android/src/main/java/com/jme3/renderer/android/Android22Workaround.java b/engine/src/android/com/jme3/renderer/android/Android22Workaround.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/renderer/android/Android22Workaround.java rename to engine/src/android/com/jme3/renderer/android/Android22Workaround.java diff --git a/jme3-android/src/main/java/com/jme3/renderer/android/AndroidGLSurfaceView.java b/engine/src/android/com/jme3/renderer/android/AndroidGLSurfaceView.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/renderer/android/AndroidGLSurfaceView.java rename to engine/src/android/com/jme3/renderer/android/AndroidGLSurfaceView.java diff --git a/jme3-android/src/main/java/com/jme3/renderer/android/OGLESShaderRenderer.java b/engine/src/android/com/jme3/renderer/android/OGLESShaderRenderer.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/renderer/android/OGLESShaderRenderer.java rename to engine/src/android/com/jme3/renderer/android/OGLESShaderRenderer.java diff --git a/jme3-android/src/main/java/com/jme3/renderer/android/RendererUtil.java b/engine/src/android/com/jme3/renderer/android/RendererUtil.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/renderer/android/RendererUtil.java rename to engine/src/android/com/jme3/renderer/android/RendererUtil.java diff --git a/jme3-android/src/main/java/com/jme3/renderer/android/TextureUtil.java b/engine/src/android/com/jme3/renderer/android/TextureUtil.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/renderer/android/TextureUtil.java rename to engine/src/android/com/jme3/renderer/android/TextureUtil.java diff --git a/jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java b/engine/src/android/com/jme3/system/android/AndroidConfigChooser.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/system/android/AndroidConfigChooser.java rename to engine/src/android/com/jme3/system/android/AndroidConfigChooser.java diff --git a/jme3-android/src/main/java/com/jme3/system/android/AndroidTimer.java b/engine/src/android/com/jme3/system/android/AndroidTimer.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/system/android/AndroidTimer.java rename to engine/src/android/com/jme3/system/android/AndroidTimer.java diff --git a/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java b/engine/src/android/com/jme3/system/android/JmeAndroidSystem.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java rename to engine/src/android/com/jme3/system/android/JmeAndroidSystem.java diff --git a/jme3-android/src/main/java/com/jme3/system/android/OGLESContext.java b/engine/src/android/com/jme3/system/android/OGLESContext.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/system/android/OGLESContext.java rename to engine/src/android/com/jme3/system/android/OGLESContext.java diff --git a/jme3-android/src/main/java/com/jme3/texture/plugins/AndroidImageLoader.java b/engine/src/android/com/jme3/texture/plugins/AndroidImageLoader.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/texture/plugins/AndroidImageLoader.java rename to engine/src/android/com/jme3/texture/plugins/AndroidImageLoader.java diff --git a/jme3-android/src/main/java/com/jme3/util/AndroidLogHandler.java b/engine/src/android/com/jme3/util/AndroidLogHandler.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/util/AndroidLogHandler.java rename to engine/src/android/com/jme3/util/AndroidLogHandler.java diff --git a/jme3-android/src/main/java/com/jme3/util/AndroidScreenshots.java b/engine/src/android/com/jme3/util/AndroidScreenshots.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/util/AndroidScreenshots.java rename to engine/src/android/com/jme3/util/AndroidScreenshots.java diff --git a/jme3-android/src/main/java/com/jme3/util/RingBuffer.java b/engine/src/android/com/jme3/util/RingBuffer.java similarity index 100% rename from jme3-android/src/main/java/com/jme3/util/RingBuffer.java rename to engine/src/android/com/jme3/util/RingBuffer.java diff --git a/jme3-android/src/main/java/jme3test/android/AndroidManifest.xml b/engine/src/android/jme3test/android/AndroidManifest.xml similarity index 100% rename from jme3-android/src/main/java/jme3test/android/AndroidManifest.xml rename to engine/src/android/jme3test/android/AndroidManifest.xml diff --git a/jme3-android/src/main/java/jme3test/android/DemoAndroidHarness.java b/engine/src/android/jme3test/android/DemoAndroidHarness.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/DemoAndroidHarness.java rename to engine/src/android/jme3test/android/DemoAndroidHarness.java diff --git a/jme3-android/src/main/java/jme3test/android/DemoLaunchAdapter.java b/engine/src/android/jme3test/android/DemoLaunchAdapter.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/DemoLaunchAdapter.java rename to engine/src/android/jme3test/android/DemoLaunchAdapter.java diff --git a/jme3-android/src/main/java/jme3test/android/DemoLaunchEntry.java b/engine/src/android/jme3test/android/DemoLaunchEntry.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/DemoLaunchEntry.java rename to engine/src/android/jme3test/android/DemoLaunchEntry.java diff --git a/jme3-android/src/main/java/jme3test/android/DemoMainActivity.java b/engine/src/android/jme3test/android/DemoMainActivity.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/DemoMainActivity.java rename to engine/src/android/jme3test/android/DemoMainActivity.java diff --git a/jme3-android/src/main/java/jme3test/android/R.java b/engine/src/android/jme3test/android/R.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/R.java rename to engine/src/android/jme3test/android/R.java diff --git a/jme3-android/src/main/java/jme3test/android/SimpleSoundTest.java b/engine/src/android/jme3test/android/SimpleSoundTest.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/SimpleSoundTest.java rename to engine/src/android/jme3test/android/SimpleSoundTest.java diff --git a/jme3-android/src/main/java/jme3test/android/SimpleTexturedTest.java b/engine/src/android/jme3test/android/SimpleTexturedTest.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/SimpleTexturedTest.java rename to engine/src/android/jme3test/android/SimpleTexturedTest.java diff --git a/jme3-android/src/main/java/jme3test/android/TestAmbient.java b/engine/src/android/jme3test/android/TestAmbient.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/TestAmbient.java rename to engine/src/android/jme3test/android/TestAmbient.java diff --git a/jme3-android/src/main/java/jme3test/android/TestBumpModel.java b/engine/src/android/jme3test/android/TestBumpModel.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/TestBumpModel.java rename to engine/src/android/jme3test/android/TestBumpModel.java diff --git a/jme3-android/src/main/java/jme3test/android/TestMovingParticle.java b/engine/src/android/jme3test/android/TestMovingParticle.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/TestMovingParticle.java rename to engine/src/android/jme3test/android/TestMovingParticle.java diff --git a/jme3-android/src/main/java/jme3test/android/TestNormalMapping.java b/engine/src/android/jme3test/android/TestNormalMapping.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/TestNormalMapping.java rename to engine/src/android/jme3test/android/TestNormalMapping.java diff --git a/jme3-android/src/main/java/jme3test/android/TestSkyLoadingLagoon.java b/engine/src/android/jme3test/android/TestSkyLoadingLagoon.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/TestSkyLoadingLagoon.java rename to engine/src/android/jme3test/android/TestSkyLoadingLagoon.java diff --git a/jme3-android/src/main/java/jme3test/android/TestSkyLoadingPrimitives.java b/engine/src/android/jme3test/android/TestSkyLoadingPrimitives.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/TestSkyLoadingPrimitives.java rename to engine/src/android/jme3test/android/TestSkyLoadingPrimitives.java diff --git a/jme3-android/src/main/java/jme3test/android/TestUnshadedModel.java b/engine/src/android/jme3test/android/TestUnshadedModel.java similarity index 100% rename from jme3-android/src/main/java/jme3test/android/TestUnshadedModel.java rename to engine/src/android/jme3test/android/TestUnshadedModel.java diff --git a/jme3-android/src/main/resources/res/layout/about.xml b/engine/src/android/res/layout/about.xml similarity index 100% rename from jme3-android/src/main/resources/res/layout/about.xml rename to engine/src/android/res/layout/about.xml diff --git a/jme3-android/src/main/resources/res/layout/tests.xml b/engine/src/android/res/layout/tests.xml similarity index 100% rename from jme3-android/src/main/resources/res/layout/tests.xml rename to engine/src/android/res/layout/tests.xml diff --git a/jme3-android/src/main/resources/res/menu/options.xml b/engine/src/android/res/menu/options.xml similarity index 100% rename from jme3-android/src/main/resources/res/menu/options.xml rename to engine/src/android/res/menu/options.xml diff --git a/jme3-android/src/main/resources/res/values/strings.xml b/engine/src/android/res/values/strings.xml similarity index 100% rename from jme3-android/src/main/resources/res/values/strings.xml rename to engine/src/android/res/values/strings.xml diff --git a/jme3-blender/src/main/java/com/jme3/asset/BlenderKey.java b/engine/src/blender/com/jme3/asset/BlenderKey.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/asset/BlenderKey.java rename to engine/src/blender/com/jme3/asset/BlenderKey.java diff --git a/jme3-blender/src/main/java/com/jme3/asset/GeneratedTextureKey.java b/engine/src/blender/com/jme3/asset/GeneratedTextureKey.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/asset/GeneratedTextureKey.java rename to engine/src/blender/com/jme3/asset/GeneratedTextureKey.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/AbstractBlenderHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/AbstractBlenderHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/AbstractBlenderHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/AbstractBlenderHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/BlenderContext.java b/engine/src/blender/com/jme3/scene/plugins/blender/BlenderContext.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/BlenderContext.java rename to engine/src/blender/com/jme3/scene/plugins/blender/BlenderContext.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/BlenderLoader.java b/engine/src/blender/com/jme3/scene/plugins/blender/BlenderLoader.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/BlenderLoader.java rename to engine/src/blender/com/jme3/scene/plugins/blender/BlenderLoader.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/BlenderModelLoader.java b/engine/src/blender/com/jme3/scene/plugins/blender/BlenderModelLoader.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/BlenderModelLoader.java rename to engine/src/blender/com/jme3/scene/plugins/blender/BlenderModelLoader.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/AnimationHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/animations/AnimationHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/AnimationHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/animations/AnimationHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/BoneContext.java b/engine/src/blender/com/jme3/scene/plugins/blender/animations/BoneContext.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/BoneContext.java rename to engine/src/blender/com/jme3/scene/plugins/blender/animations/BoneContext.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/Ipo.java b/engine/src/blender/com/jme3/scene/plugins/blender/animations/Ipo.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/Ipo.java rename to engine/src/blender/com/jme3/scene/plugins/blender/animations/Ipo.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/cameras/CameraHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/cameras/CameraHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/cameras/CameraHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/cameras/CameraHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/BoneConstraint.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/BoneConstraint.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/BoneConstraint.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/BoneConstraint.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/Constraint.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/Constraint.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/Constraint.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/Constraint.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/ConstraintHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/ConstraintHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/ConstraintHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/ConstraintHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/SimulationNode.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/SimulationNode.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/SimulationNode.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/SimulationNode.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/SkeletonConstraint.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/SkeletonConstraint.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/SkeletonConstraint.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/SkeletonConstraint.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/SpatialConstraint.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/SpatialConstraint.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/SpatialConstraint.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/SpatialConstraint.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/VirtualTrack.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/VirtualTrack.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/VirtualTrack.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/VirtualTrack.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinition.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinition.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinition.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinition.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionDistLimit.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionDistLimit.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionDistLimit.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionDistLimit.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionFactory.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionFactory.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionFactory.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionFactory.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionIK.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionIK.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionIK.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionIK.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLike.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLike.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLike.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLike.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLimit.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLimit.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLimit.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionLocLimit.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionMaintainVolume.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionMaintainVolume.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionMaintainVolume.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionMaintainVolume.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionNull.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionNull.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionNull.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionNull.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLike.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLike.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLike.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLike.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLimit.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLimit.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLimit.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionRotLimit.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLike.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLike.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLike.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLike.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLimit.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLimit.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLimit.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionSizeLimit.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionTransLike.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionTransLike.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionTransLike.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/ConstraintDefinitionTransLike.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/UnsupportedConstraintDefinition.java b/engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/UnsupportedConstraintDefinition.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/definitions/UnsupportedConstraintDefinition.java rename to engine/src/blender/com/jme3/scene/plugins/blender/constraints/definitions/UnsupportedConstraintDefinition.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/BezierCurve.java b/engine/src/blender/com/jme3/scene/plugins/blender/curves/BezierCurve.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/BezierCurve.java rename to engine/src/blender/com/jme3/scene/plugins/blender/curves/BezierCurve.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/CurvesHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/curves/CurvesHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/CurvesHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/curves/CurvesHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/BlenderFileException.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/BlenderFileException.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/BlenderFileException.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/BlenderFileException.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/BlenderInputStream.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/BlenderInputStream.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/BlenderInputStream.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/BlenderInputStream.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/DnaBlockData.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/DnaBlockData.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/DnaBlockData.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/DnaBlockData.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/DynamicArray.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/DynamicArray.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/DynamicArray.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/DynamicArray.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/Field.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/Field.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/Field.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/Field.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/FileBlockHeader.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/FileBlockHeader.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/FileBlockHeader.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/FileBlockHeader.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/Pointer.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/Pointer.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/Pointer.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/Pointer.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/Structure.java b/engine/src/blender/com/jme3/scene/plugins/blender/file/Structure.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/file/Structure.java rename to engine/src/blender/com/jme3/scene/plugins/blender/file/Structure.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/landscape/LandscapeHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/landscape/LandscapeHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/landscape/LandscapeHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/landscape/LandscapeHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/lights/LightHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/lights/LightHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/lights/LightHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/lights/LightHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/materials/IAlphaMask.java b/engine/src/blender/com/jme3/scene/plugins/blender/materials/IAlphaMask.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/materials/IAlphaMask.java rename to engine/src/blender/com/jme3/scene/plugins/blender/materials/IAlphaMask.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/materials/MaterialContext.java b/engine/src/blender/com/jme3/scene/plugins/blender/materials/MaterialContext.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/materials/MaterialContext.java rename to engine/src/blender/com/jme3/scene/plugins/blender/materials/MaterialContext.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/materials/MaterialHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/materials/MaterialHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/materials/MaterialHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/materials/MaterialHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/MeshContext.java b/engine/src/blender/com/jme3/scene/plugins/blender/meshes/MeshContext.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/MeshContext.java rename to engine/src/blender/com/jme3/scene/plugins/blender/meshes/MeshContext.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/MeshHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/meshes/MeshHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/MeshHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/meshes/MeshHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/FaceMeshBuilder.java b/engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/FaceMeshBuilder.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/FaceMeshBuilder.java rename to engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/FaceMeshBuilder.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/LineMeshBuilder.java b/engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/LineMeshBuilder.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/LineMeshBuilder.java rename to engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/LineMeshBuilder.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/MeshBuilder.java b/engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/MeshBuilder.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/MeshBuilder.java rename to engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/MeshBuilder.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/PointMeshBuilder.java b/engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/PointMeshBuilder.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/meshes/builders/PointMeshBuilder.java rename to engine/src/blender/com/jme3/scene/plugins/blender/meshes/builders/PointMeshBuilder.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ArmatureModifier.java b/engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ArmatureModifier.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ArmatureModifier.java rename to engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ArmatureModifier.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ArrayModifier.java b/engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ArrayModifier.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ArrayModifier.java rename to engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ArrayModifier.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/MirrorModifier.java b/engine/src/blender/com/jme3/scene/plugins/blender/modifiers/MirrorModifier.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/MirrorModifier.java rename to engine/src/blender/com/jme3/scene/plugins/blender/modifiers/MirrorModifier.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/Modifier.java b/engine/src/blender/com/jme3/scene/plugins/blender/modifiers/Modifier.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/Modifier.java rename to engine/src/blender/com/jme3/scene/plugins/blender/modifiers/Modifier.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ModifierHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ModifierHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ModifierHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ModifierHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ParticlesModifier.java b/engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ParticlesModifier.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/modifiers/ParticlesModifier.java rename to engine/src/blender/com/jme3/scene/plugins/blender/modifiers/ParticlesModifier.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/objects/ObjectHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/objects/ObjectHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/objects/ObjectHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/objects/ObjectHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/objects/Properties.java b/engine/src/blender/com/jme3/scene/plugins/blender/objects/Properties.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/objects/Properties.java rename to engine/src/blender/com/jme3/scene/plugins/blender/objects/Properties.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/particles/ParticlesHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/particles/ParticlesHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/particles/ParticlesHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/particles/ParticlesHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/ColorBand.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/ColorBand.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/ColorBand.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/ColorBand.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/CombinedTexture.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/CombinedTexture.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/CombinedTexture.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/CombinedTexture.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/DDSTexelData.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/DDSTexelData.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/DDSTexelData.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/DDSTexelData.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/GeneratedTexture.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/GeneratedTexture.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/GeneratedTexture.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/GeneratedTexture.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/ImageLoader.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/ImageLoader.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/ImageLoader.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/ImageLoader.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/ImageUtils.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/ImageUtils.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/ImageUtils.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/ImageUtils.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/TextureHelper.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/TextureHelper.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/TextureHelper.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/TextureHelper.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/TexturePixel.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/TexturePixel.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/TexturePixel.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/TexturePixel.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/TriangulatedTexture.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/TriangulatedTexture.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/TriangulatedTexture.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/TriangulatedTexture.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/UVCoordinatesGenerator.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/UVProjectionGenerator.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/UVProjectionGenerator.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/UVProjectionGenerator.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/UVProjectionGenerator.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/UserUVCollection.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/UserUVCollection.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/UserUVCollection.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/UserUVCollection.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/AbstractTextureBlender.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/AbstractTextureBlender.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/AbstractTextureBlender.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/AbstractTextureBlender.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlender.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlender.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlender.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlender.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderAWT.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderAWT.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderAWT.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderAWT.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderDDS.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderDDS.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderDDS.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderDDS.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderFactory.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderLuminance.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderLuminance.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderLuminance.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/blending/TextureBlenderLuminance.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/NoiseGenerator.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/NoiseGenerator.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/NoiseGenerator.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/NoiseGenerator.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGenerator.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGenerator.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGenerator.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGenerator.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorBlend.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorBlend.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorBlend.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorBlend.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorClouds.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorClouds.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorClouds.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorClouds.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorDistnoise.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorDistnoise.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorDistnoise.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorDistnoise.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorFactory.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorFactory.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorFactory.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorFactory.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMagic.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMagic.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMagic.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMagic.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMarble.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMarble.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMarble.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMarble.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMusgrave.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMusgrave.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMusgrave.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorMusgrave.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorNoise.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorNoise.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorNoise.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorNoise.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorStucci.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorStucci.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorStucci.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorStucci.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorVoronoi.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorVoronoi.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorVoronoi.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorVoronoi.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorWood.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorWood.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorWood.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/TextureGeneratorWood.java diff --git a/jme3-blender/src/main/resources/com/jme3/scene/plugins/blender/textures/generating/noiseconstants.dat b/engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/noiseconstants.dat similarity index 100% rename from jme3-blender/src/main/resources/com/jme3/scene/plugins/blender/textures/generating/noiseconstants.dat rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/generating/noiseconstants.dat diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/AWTPixelInputOutput.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/io/AWTPixelInputOutput.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/AWTPixelInputOutput.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/io/AWTPixelInputOutput.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/DDSPixelInputOutput.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/io/DDSPixelInputOutput.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/DDSPixelInputOutput.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/io/DDSPixelInputOutput.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/LuminancePixelInputOutput.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/io/LuminancePixelInputOutput.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/LuminancePixelInputOutput.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/io/LuminancePixelInputOutput.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/PixelIOFactory.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/io/PixelIOFactory.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/PixelIOFactory.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/io/PixelIOFactory.java diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/PixelInputOutput.java b/engine/src/blender/com/jme3/scene/plugins/blender/textures/io/PixelInputOutput.java similarity index 100% rename from jme3-blender/src/main/java/com/jme3/scene/plugins/blender/textures/io/PixelInputOutput.java rename to engine/src/blender/com/jme3/scene/plugins/blender/textures/io/PixelInputOutput.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/BulletAppState.java b/engine/src/bullet-common/com/jme3/bullet/BulletAppState.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/BulletAppState.java rename to engine/src/bullet-common/com/jme3/bullet/BulletAppState.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/PhysicsTickListener.java b/engine/src/bullet-common/com/jme3/bullet/PhysicsTickListener.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/PhysicsTickListener.java rename to engine/src/bullet-common/com/jme3/bullet/PhysicsTickListener.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/collision/PhysicsCollisionGroupListener.java b/engine/src/bullet-common/com/jme3/bullet/collision/PhysicsCollisionGroupListener.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/collision/PhysicsCollisionGroupListener.java rename to engine/src/bullet-common/com/jme3/bullet/collision/PhysicsCollisionGroupListener.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/collision/PhysicsCollisionListener.java b/engine/src/bullet-common/com/jme3/bullet/collision/PhysicsCollisionListener.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/collision/PhysicsCollisionListener.java rename to engine/src/bullet-common/com/jme3/bullet/collision/PhysicsCollisionListener.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/collision/RagdollCollisionListener.java b/engine/src/bullet-common/com/jme3/bullet/collision/RagdollCollisionListener.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/collision/RagdollCollisionListener.java rename to engine/src/bullet-common/com/jme3/bullet/collision/RagdollCollisionListener.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/collision/shapes/infos/ChildCollisionShape.java b/engine/src/bullet-common/com/jme3/bullet/collision/shapes/infos/ChildCollisionShape.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/collision/shapes/infos/ChildCollisionShape.java rename to engine/src/bullet-common/com/jme3/bullet/collision/shapes/infos/ChildCollisionShape.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/AbstractPhysicsControl.java b/engine/src/bullet-common/com/jme3/bullet/control/AbstractPhysicsControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/AbstractPhysicsControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/AbstractPhysicsControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/BetterCharacterControl.java b/engine/src/bullet-common/com/jme3/bullet/control/BetterCharacterControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/BetterCharacterControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/BetterCharacterControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/CharacterControl.java b/engine/src/bullet-common/com/jme3/bullet/control/CharacterControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/CharacterControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/CharacterControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/GhostControl.java b/engine/src/bullet-common/com/jme3/bullet/control/GhostControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/GhostControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/GhostControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/KinematicRagdollControl.java b/engine/src/bullet-common/com/jme3/bullet/control/KinematicRagdollControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/KinematicRagdollControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/KinematicRagdollControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/PhysicsControl.java b/engine/src/bullet-common/com/jme3/bullet/control/PhysicsControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/PhysicsControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/PhysicsControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/RigidBodyControl.java b/engine/src/bullet-common/com/jme3/bullet/control/RigidBodyControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/RigidBodyControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/RigidBodyControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/VehicleControl.java b/engine/src/bullet-common/com/jme3/bullet/control/VehicleControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/VehicleControl.java rename to engine/src/bullet-common/com/jme3/bullet/control/VehicleControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/ragdoll/HumanoidRagdollPreset.java b/engine/src/bullet-common/com/jme3/bullet/control/ragdoll/HumanoidRagdollPreset.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/ragdoll/HumanoidRagdollPreset.java rename to engine/src/bullet-common/com/jme3/bullet/control/ragdoll/HumanoidRagdollPreset.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/ragdoll/RagdollPreset.java b/engine/src/bullet-common/com/jme3/bullet/control/ragdoll/RagdollPreset.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/ragdoll/RagdollPreset.java rename to engine/src/bullet-common/com/jme3/bullet/control/ragdoll/RagdollPreset.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/control/ragdoll/RagdollUtils.java b/engine/src/bullet-common/com/jme3/bullet/control/ragdoll/RagdollUtils.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/control/ragdoll/RagdollUtils.java rename to engine/src/bullet-common/com/jme3/bullet/control/ragdoll/RagdollUtils.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/AbstractPhysicsDebugControl.java b/engine/src/bullet-common/com/jme3/bullet/debug/AbstractPhysicsDebugControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/AbstractPhysicsDebugControl.java rename to engine/src/bullet-common/com/jme3/bullet/debug/AbstractPhysicsDebugControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletCharacterDebugControl.java b/engine/src/bullet-common/com/jme3/bullet/debug/BulletCharacterDebugControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletCharacterDebugControl.java rename to engine/src/bullet-common/com/jme3/bullet/debug/BulletCharacterDebugControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletDebugAppState.java b/engine/src/bullet-common/com/jme3/bullet/debug/BulletDebugAppState.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletDebugAppState.java rename to engine/src/bullet-common/com/jme3/bullet/debug/BulletDebugAppState.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletGhostObjectDebugControl.java b/engine/src/bullet-common/com/jme3/bullet/debug/BulletGhostObjectDebugControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletGhostObjectDebugControl.java rename to engine/src/bullet-common/com/jme3/bullet/debug/BulletGhostObjectDebugControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletJointDebugControl.java b/engine/src/bullet-common/com/jme3/bullet/debug/BulletJointDebugControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletJointDebugControl.java rename to engine/src/bullet-common/com/jme3/bullet/debug/BulletJointDebugControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletRigidBodyDebugControl.java b/engine/src/bullet-common/com/jme3/bullet/debug/BulletRigidBodyDebugControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletRigidBodyDebugControl.java rename to engine/src/bullet-common/com/jme3/bullet/debug/BulletRigidBodyDebugControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletVehicleDebugControl.java b/engine/src/bullet-common/com/jme3/bullet/debug/BulletVehicleDebugControl.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/BulletVehicleDebugControl.java rename to engine/src/bullet-common/com/jme3/bullet/debug/BulletVehicleDebugControl.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/debug/DebugTools.java b/engine/src/bullet-common/com/jme3/bullet/debug/DebugTools.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/debug/DebugTools.java rename to engine/src/bullet-common/com/jme3/bullet/debug/DebugTools.java diff --git a/jme3-bullet/src/common/java/com/jme3/bullet/util/CollisionShapeFactory.java b/engine/src/bullet-common/com/jme3/bullet/util/CollisionShapeFactory.java similarity index 100% rename from jme3-bullet/src/common/java/com/jme3/bullet/util/CollisionShapeFactory.java rename to engine/src/bullet-common/com/jme3/bullet/util/CollisionShapeFactory.java diff --git a/engine/src/bullet-native/android/Android.mk b/engine/src/bullet-native/android/Android.mk new file mode 100644 index 000000000..45258d04b --- /dev/null +++ b/engine/src/bullet-native/android/Android.mk @@ -0,0 +1,260 @@ +# /* +# Bullet Continuous Collision Detection and Physics Library for Android NDK +# Copyright (c) 2006-2009 Noritsuna Imamura
    http://www.siprop.org/ +# +# This software is provided 'as-is', without any express or implied warranty. +# In no event will the authors be held liable for any damages arising from the use of this software. +# Permission is granted to anyone to use this software for any purpose, +# including commercial applications, and to alter it and redistribute it freely, +# subject to the following restrictions: +# +# 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +# 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +# 3. This notice may not be removed or altered from any source distribution. +# */ +LOCAL_PATH:= $(call my-dir) +JME3_PATH:= +BULLET_PATH:= + +include $(CLEAR_VARS) + +LOCAL_MODULE := bulletjme +LOCAL_C_INCLUDES := $(BULLET_PATH)/\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch\ + $(BULLET_PATH)/BulletCollision/CollisionShapes\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver\ + $(BULLET_PATH)/BulletDynamics/Dynamics\ + $(BULLET_PATH)/BulletDynamics/Vehicle\ + $(BULLET_PATH)/LinearMath\ + $(BULLET_PATH)/BulletCollision\ + $(BULLET_PATH)/BulletDynamics\ + $(BULLET_PATH)/BulletMultiThreaded\ + $(BULLET_PATH)/BulletSoftBody\ + $(BULLET_PATH)/ibmsdk\ + $(BULLET_PATH)/LinearMath\ + $(BULLET_PATH)/MiniCL\ + $(BULLET_PATH)/vectormath\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch\ + $(BULLET_PATH)/BulletCollision/CollisionShapes\ + $(BULLET_PATH)/BulletCollision/Gimpact\ + $(BULLET_PATH)/BulletCollision/ibmsdk\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision\ + $(BULLET_PATH)/BulletDynamics/Character\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver\ + $(BULLET_PATH)/BulletDynamics/Dynamics\ + $(BULLET_PATH)/BulletDynamics/ibmsdk\ + $(BULLET_PATH)/BulletDynamics/Vehicle\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers\ + $(BULLET_PATH)/BulletMultiThreaded/out\ + $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask\ + $(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Apple\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC\ + $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10\ + $(BULLET_PATH)/LinearMath/ibmsdk\ + $(BULLET_PATH)/MiniCL/MiniCLTask\ + $(BULLET_PATH)/vectormath/scalar\ + $(BULLET_PATH)/vectormath/sse + +LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) +LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -lm -llog + +LOCAL_SRC_FILES := $(JME3_PATH)/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_PhysicsCollisionObject.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_CollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_ConeJoint.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_HingeJoint.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_PhysicsJoint.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_Point2PointJoint.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_SixDofJoint.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_SixDofSpringJoint.cpp\ + $(JME3_PATH)/com_jme3_bullet_joints_SliderJoint.cpp\ + $(JME3_PATH)/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp\ + $(JME3_PATH)/com_jme3_bullet_objects_PhysicsCharacter.cpp\ + $(JME3_PATH)/com_jme3_bullet_objects_PhysicsGhostObject.cpp\ + $(JME3_PATH)/com_jme3_bullet_objects_PhysicsRigidBody.cpp\ + $(JME3_PATH)/com_jme3_bullet_objects_PhysicsVehicle.cpp\ + $(JME3_PATH)/com_jme3_bullet_objects_VehicleWheel.cpp\ + $(JME3_PATH)/com_jme3_bullet_PhysicsSpace.cpp\ + $(JME3_PATH)/com_jme3_bullet_util_DebugShapeFactory.cpp\ + $(JME3_PATH)/com_jme3_bullet_util_NativeMeshUtil.cpp\ + $(JME3_PATH)/jmeBulletUtil.cpp\ + $(JME3_PATH)/jmeClasses.cpp\ + $(JME3_PATH)/jmeMotionState.cpp\ + $(JME3_PATH)/jmePhysicsSpace.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDbvt.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDispatcher.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp\ + $(BULLET_PATH)/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionObject.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionWorld.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btGhostObject.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btManifoldResult.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/btUnionFind.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btBox2dShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btBoxShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btCapsuleShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btCollisionShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btCompoundShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConcaveShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConeShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConvex2dShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexHullShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexInternalShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btCylinderShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btEmptyShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btMultiSphereShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btOptimizedBvh.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btShapeHull.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btSphereShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btTetrahedronShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleBuffer.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleCallback.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleMesh.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp\ + $(BULLET_PATH)/BulletCollision/CollisionShapes/btUniformScalingShape.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/btContactProcessing.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/btGenericPoolAllocator.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/btGImpactBvh.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/btGImpactShape.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/btTriangleShapeEx.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/gim_box_set.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/gim_contact.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/gim_memory.cpp\ + $(BULLET_PATH)/BulletCollision/Gimpact/gim_tri_collision.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp\ + $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp\ + $(BULLET_PATH)/BulletDynamics/Character/btKinematicCharacterController.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btContactConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp\ + $(BULLET_PATH)/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp\ + $(BULLET_PATH)/BulletDynamics/Dynamics/btRigidBody.cpp\ + $(BULLET_PATH)/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp\ + $(BULLET_PATH)/BulletDynamics/Dynamics/Bullet-C-API.cpp\ + $(BULLET_PATH)/BulletDynamics/Vehicle/btRaycastVehicle.cpp\ + $(BULLET_PATH)/BulletDynamics/Vehicle/btWheelInfo.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/btGpu3DGridBroadphase.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/btParallelConstraintSolver.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/btThreadSupportInterface.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/PosixThreadSupport.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SequentialThreadSupport.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuCollisionTaskProcess.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuFakeDma.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuLibspe2Support.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuSampleTaskProcess.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/Win32ThreadSupport.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp\ + $(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp\ + $(BULLET_PATH)/BulletSoftBody/btDefaultSoftBodySolver.cpp\ + $(BULLET_PATH)/BulletSoftBody/btSoftBody.cpp\ + $(BULLET_PATH)/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletSoftBody/btSoftBodyHelpers.cpp\ + $(BULLET_PATH)/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp\ + $(BULLET_PATH)/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp\ + $(BULLET_PATH)/BulletSoftBody/btSoftRigidDynamicsWorld.cpp\ + $(BULLET_PATH)/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp\ + $(BULLET_PATH)/LinearMath/btAlignedAllocator.cpp\ + $(BULLET_PATH)/LinearMath/btConvexHull.cpp\ + $(BULLET_PATH)/LinearMath/btConvexHullComputer.cpp\ + $(BULLET_PATH)/LinearMath/btGeometryUtil.cpp\ + $(BULLET_PATH)/LinearMath/btQuickprof.cpp\ + $(BULLET_PATH)/LinearMath/btSerializer.cpp\ + $(BULLET_PATH)/LinearMath/btPolarDecomposition.cpp\ + $(BULLET_PATH)/MiniCL/MiniCL.cpp\ + $(BULLET_PATH)/MiniCL/MiniCLTaskScheduler.cpp\ + $(BULLET_PATH)/MiniCL/MiniCLTask/MiniCLTask.cpp +# $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.cpp\ +# $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/MiniCLTaskWrap.cpp\ + +include $(BUILD_SHARED_LIBRARY) diff --git a/jme3-bullet-native/src/native/android/Application.mk b/engine/src/bullet-native/android/Application.mk similarity index 100% rename from jme3-bullet-native/src/native/android/Application.mk rename to engine/src/bullet-native/android/Application.mk diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_PhysicsSpace.cpp b/engine/src/bullet-native/com_jme3_bullet_PhysicsSpace.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_PhysicsSpace.cpp rename to engine/src/bullet-native/com_jme3_bullet_PhysicsSpace.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_PhysicsSpace.h b/engine/src/bullet-native/com_jme3_bullet_PhysicsSpace.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_PhysicsSpace.h rename to engine/src/bullet-native/com_jme3_bullet_PhysicsSpace.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_PhysicsSpace_BroadphaseType.h b/engine/src/bullet-native/com_jme3_bullet_PhysicsSpace_BroadphaseType.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_PhysicsSpace_BroadphaseType.h rename to engine/src/bullet-native/com_jme3_bullet_PhysicsSpace_BroadphaseType.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionEvent.h b/engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionEvent.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionEvent.h rename to engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionEvent.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionObject.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionObject.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionObject.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionObject.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionObject.h b/engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionObject.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_PhysicsCollisionObject.h rename to engine/src/bullet-native/com_jme3_bullet_collision_PhysicsCollisionObject.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_BoxCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_BoxCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_BoxCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_BoxCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CompoundCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CompoundCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CompoundCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CompoundCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_ConeCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_ConeCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_ConeCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_ConeCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CylinderCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_CylinderCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CylinderCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_CylinderCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_GImpactCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_GImpactCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_GImpactCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_GImpactCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HullCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_HullCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_HullCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_HullCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_MeshCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_MeshCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_MeshCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_MeshCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_PlaneCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_PlaneCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_PlaneCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_PlaneCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SimplexCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_SimplexCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SimplexCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_SimplexCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SphereCollisionShape.h b/engine/src/bullet-native/com_jme3_bullet_collision_shapes_SphereCollisionShape.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_SphereCollisionShape.h rename to engine/src/bullet-native/com_jme3_bullet_collision_shapes_SphereCollisionShape.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_ConeJoint.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_ConeJoint.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_ConeJoint.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_ConeJoint.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_ConeJoint.h b/engine/src/bullet-native/com_jme3_bullet_joints_ConeJoint.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_ConeJoint.h rename to engine/src/bullet-native/com_jme3_bullet_joints_ConeJoint.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_HingeJoint.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_HingeJoint.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_HingeJoint.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_HingeJoint.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_HingeJoint.h b/engine/src/bullet-native/com_jme3_bullet_joints_HingeJoint.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_HingeJoint.h rename to engine/src/bullet-native/com_jme3_bullet_joints_HingeJoint.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_PhysicsJoint.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_PhysicsJoint.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_PhysicsJoint.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_PhysicsJoint.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_PhysicsJoint.h b/engine/src/bullet-native/com_jme3_bullet_joints_PhysicsJoint.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_PhysicsJoint.h rename to engine/src/bullet-native/com_jme3_bullet_joints_PhysicsJoint.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_Point2PointJoint.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_Point2PointJoint.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_Point2PointJoint.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_Point2PointJoint.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_Point2PointJoint.h b/engine/src/bullet-native/com_jme3_bullet_joints_Point2PointJoint.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_Point2PointJoint.h rename to engine/src/bullet-native/com_jme3_bullet_joints_Point2PointJoint.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofJoint.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_SixDofJoint.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofJoint.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_SixDofJoint.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofJoint.h b/engine/src/bullet-native/com_jme3_bullet_joints_SixDofJoint.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofJoint.h rename to engine/src/bullet-native/com_jme3_bullet_joints_SixDofJoint.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofSpringJoint.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_SixDofSpringJoint.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofSpringJoint.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_SixDofSpringJoint.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofSpringJoint.h b/engine/src/bullet-native/com_jme3_bullet_joints_SixDofSpringJoint.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SixDofSpringJoint.h rename to engine/src/bullet-native/com_jme3_bullet_joints_SixDofSpringJoint.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SliderJoint.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_SliderJoint.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SliderJoint.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_SliderJoint.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SliderJoint.h b/engine/src/bullet-native/com_jme3_bullet_joints_SliderJoint.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_SliderJoint.h rename to engine/src/bullet-native/com_jme3_bullet_joints_SliderJoint.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_RotationalLimitMotor.h b/engine/src/bullet-native/com_jme3_bullet_joints_motors_RotationalLimitMotor.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_RotationalLimitMotor.h rename to engine/src/bullet-native/com_jme3_bullet_joints_motors_RotationalLimitMotor.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp b/engine/src/bullet-native/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp rename to engine/src/bullet-native/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_TranslationalLimitMotor.h b/engine/src/bullet-native/com_jme3_bullet_joints_motors_TranslationalLimitMotor.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_joints_motors_TranslationalLimitMotor.h rename to engine/src/bullet-native/com_jme3_bullet_joints_motors_TranslationalLimitMotor.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsCharacter.cpp b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsCharacter.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsCharacter.cpp rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsCharacter.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsCharacter.h b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsCharacter.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsCharacter.h rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsCharacter.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsGhostObject.cpp b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsGhostObject.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsGhostObject.cpp rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsGhostObject.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsGhostObject.h b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsGhostObject.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsGhostObject.h rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsGhostObject.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsRigidBody.cpp b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsRigidBody.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsRigidBody.cpp rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsRigidBody.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsRigidBody.h b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsRigidBody.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsRigidBody.h rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsRigidBody.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsVehicle.cpp b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsVehicle.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsVehicle.cpp rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsVehicle.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsVehicle.h b/engine/src/bullet-native/com_jme3_bullet_objects_PhysicsVehicle.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_PhysicsVehicle.h rename to engine/src/bullet-native/com_jme3_bullet_objects_PhysicsVehicle.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_VehicleWheel.cpp b/engine/src/bullet-native/com_jme3_bullet_objects_VehicleWheel.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_VehicleWheel.cpp rename to engine/src/bullet-native/com_jme3_bullet_objects_VehicleWheel.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_VehicleWheel.h b/engine/src/bullet-native/com_jme3_bullet_objects_VehicleWheel.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_VehicleWheel.h rename to engine/src/bullet-native/com_jme3_bullet_objects_VehicleWheel.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp b/engine/src/bullet-native/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp rename to engine/src/bullet-native/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_infos_RigidBodyMotionState.h b/engine/src/bullet-native/com_jme3_bullet_objects_infos_RigidBodyMotionState.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_objects_infos_RigidBodyMotionState.h rename to engine/src/bullet-native/com_jme3_bullet_objects_infos_RigidBodyMotionState.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_DebugShapeFactory.cpp b/engine/src/bullet-native/com_jme3_bullet_util_DebugShapeFactory.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_DebugShapeFactory.cpp rename to engine/src/bullet-native/com_jme3_bullet_util_DebugShapeFactory.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_DebugShapeFactory.h b/engine/src/bullet-native/com_jme3_bullet_util_DebugShapeFactory.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_DebugShapeFactory.h rename to engine/src/bullet-native/com_jme3_bullet_util_DebugShapeFactory.h diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_NativeMeshUtil.cpp b/engine/src/bullet-native/com_jme3_bullet_util_NativeMeshUtil.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_NativeMeshUtil.cpp rename to engine/src/bullet-native/com_jme3_bullet_util_NativeMeshUtil.cpp diff --git a/jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_NativeMeshUtil.h b/engine/src/bullet-native/com_jme3_bullet_util_NativeMeshUtil.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/com_jme3_bullet_util_NativeMeshUtil.h rename to engine/src/bullet-native/com_jme3_bullet_util_NativeMeshUtil.h diff --git a/jme3-bullet-native/src/native/cpp/jmeBulletUtil.cpp b/engine/src/bullet-native/jmeBulletUtil.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmeBulletUtil.cpp rename to engine/src/bullet-native/jmeBulletUtil.cpp diff --git a/jme3-bullet-native/src/native/cpp/jmeBulletUtil.h b/engine/src/bullet-native/jmeBulletUtil.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmeBulletUtil.h rename to engine/src/bullet-native/jmeBulletUtil.h diff --git a/jme3-bullet-native/src/native/cpp/jmeClasses.cpp b/engine/src/bullet-native/jmeClasses.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmeClasses.cpp rename to engine/src/bullet-native/jmeClasses.cpp diff --git a/jme3-bullet-native/src/native/cpp/jmeClasses.h b/engine/src/bullet-native/jmeClasses.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmeClasses.h rename to engine/src/bullet-native/jmeClasses.h diff --git a/jme3-bullet-native/src/native/cpp/jmeMotionState.cpp b/engine/src/bullet-native/jmeMotionState.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmeMotionState.cpp rename to engine/src/bullet-native/jmeMotionState.cpp diff --git a/jme3-bullet-native/src/native/cpp/jmeMotionState.h b/engine/src/bullet-native/jmeMotionState.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmeMotionState.h rename to engine/src/bullet-native/jmeMotionState.h diff --git a/jme3-bullet-native/src/native/cpp/jmePhysicsSpace.cpp b/engine/src/bullet-native/jmePhysicsSpace.cpp similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmePhysicsSpace.cpp rename to engine/src/bullet-native/jmePhysicsSpace.cpp diff --git a/jme3-bullet-native/src/native/cpp/jmePhysicsSpace.h b/engine/src/bullet-native/jmePhysicsSpace.h similarity index 100% rename from jme3-bullet-native/src/native/cpp/jmePhysicsSpace.h rename to engine/src/bullet-native/jmePhysicsSpace.h diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/PhysicsSpace.java b/engine/src/bullet/com/jme3/bullet/PhysicsSpace.java similarity index 99% rename from jme3-bullet/src/main/java/com/jme3/bullet/PhysicsSpace.java rename to engine/src/bullet/com/jme3/bullet/PhysicsSpace.java index 34d504744..fd12dcb89 100644 --- a/jme3-bullet/src/main/java/com/jme3/bullet/PhysicsSpace.java +++ b/engine/src/bullet/com/jme3/bullet/PhysicsSpace.java @@ -190,6 +190,7 @@ public class PhysicsSpace { private void preTick_native(float f) { AppTask task = pQueue.poll(); + task = pQueue.poll(); while (task != null) { while (task.isCancelled()) { task = pQueue.poll(); diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEvent.java b/engine/src/bullet/com/jme3/bullet/collision/PhysicsCollisionEvent.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEvent.java rename to engine/src/bullet/com/jme3/bullet/collision/PhysicsCollisionEvent.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java b/engine/src/bullet/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java rename to engine/src/bullet/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionObject.java b/engine/src/bullet/com/jme3/bullet/collision/PhysicsCollisionObject.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionObject.java rename to engine/src/bullet/com/jme3/bullet/collision/PhysicsCollisionObject.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsRayTestResult.java b/engine/src/bullet/com/jme3/bullet/collision/PhysicsRayTestResult.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsRayTestResult.java rename to engine/src/bullet/com/jme3/bullet/collision/PhysicsRayTestResult.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsSweepTestResult.java b/engine/src/bullet/com/jme3/bullet/collision/PhysicsSweepTestResult.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/PhysicsSweepTestResult.java rename to engine/src/bullet/com/jme3/bullet/collision/PhysicsSweepTestResult.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/BoxCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/BoxCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/BoxCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/BoxCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/CollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/CollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/ConeCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/ConeCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/ConeCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/ConeCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/HullCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/HullCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/HullCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/HullCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/MeshCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/MeshCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/MeshCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/MeshCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/SphereCollisionShape.java b/engine/src/bullet/com/jme3/bullet/collision/shapes/SphereCollisionShape.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/SphereCollisionShape.java rename to engine/src/bullet/com/jme3/bullet/collision/shapes/SphereCollisionShape.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/ConeJoint.java b/engine/src/bullet/com/jme3/bullet/joints/ConeJoint.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/ConeJoint.java rename to engine/src/bullet/com/jme3/bullet/joints/ConeJoint.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/HingeJoint.java b/engine/src/bullet/com/jme3/bullet/joints/HingeJoint.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/HingeJoint.java rename to engine/src/bullet/com/jme3/bullet/joints/HingeJoint.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/PhysicsJoint.java b/engine/src/bullet/com/jme3/bullet/joints/PhysicsJoint.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/PhysicsJoint.java rename to engine/src/bullet/com/jme3/bullet/joints/PhysicsJoint.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/Point2PointJoint.java b/engine/src/bullet/com/jme3/bullet/joints/Point2PointJoint.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/Point2PointJoint.java rename to engine/src/bullet/com/jme3/bullet/joints/Point2PointJoint.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/SixDofJoint.java b/engine/src/bullet/com/jme3/bullet/joints/SixDofJoint.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/SixDofJoint.java rename to engine/src/bullet/com/jme3/bullet/joints/SixDofJoint.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/SixDofSpringJoint.java b/engine/src/bullet/com/jme3/bullet/joints/SixDofSpringJoint.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/SixDofSpringJoint.java rename to engine/src/bullet/com/jme3/bullet/joints/SixDofSpringJoint.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/SliderJoint.java b/engine/src/bullet/com/jme3/bullet/joints/SliderJoint.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/SliderJoint.java rename to engine/src/bullet/com/jme3/bullet/joints/SliderJoint.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/motors/RotationalLimitMotor.java b/engine/src/bullet/com/jme3/bullet/joints/motors/RotationalLimitMotor.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/motors/RotationalLimitMotor.java rename to engine/src/bullet/com/jme3/bullet/joints/motors/RotationalLimitMotor.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java b/engine/src/bullet/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java rename to engine/src/bullet/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsCharacter.java b/engine/src/bullet/com/jme3/bullet/objects/PhysicsCharacter.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsCharacter.java rename to engine/src/bullet/com/jme3/bullet/objects/PhysicsCharacter.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsGhostObject.java b/engine/src/bullet/com/jme3/bullet/objects/PhysicsGhostObject.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsGhostObject.java rename to engine/src/bullet/com/jme3/bullet/objects/PhysicsGhostObject.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsRigidBody.java b/engine/src/bullet/com/jme3/bullet/objects/PhysicsRigidBody.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsRigidBody.java rename to engine/src/bullet/com/jme3/bullet/objects/PhysicsRigidBody.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsVehicle.java b/engine/src/bullet/com/jme3/bullet/objects/PhysicsVehicle.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/objects/PhysicsVehicle.java rename to engine/src/bullet/com/jme3/bullet/objects/PhysicsVehicle.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/objects/VehicleWheel.java b/engine/src/bullet/com/jme3/bullet/objects/VehicleWheel.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/objects/VehicleWheel.java rename to engine/src/bullet/com/jme3/bullet/objects/VehicleWheel.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/objects/infos/RigidBodyMotionState.java b/engine/src/bullet/com/jme3/bullet/objects/infos/RigidBodyMotionState.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/objects/infos/RigidBodyMotionState.java rename to engine/src/bullet/com/jme3/bullet/objects/infos/RigidBodyMotionState.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/objects/infos/VehicleTuning.java b/engine/src/bullet/com/jme3/bullet/objects/infos/VehicleTuning.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/objects/infos/VehicleTuning.java rename to engine/src/bullet/com/jme3/bullet/objects/infos/VehicleTuning.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/util/DebugMeshCallback.java b/engine/src/bullet/com/jme3/bullet/util/DebugMeshCallback.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/util/DebugMeshCallback.java rename to engine/src/bullet/com/jme3/bullet/util/DebugMeshCallback.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/util/DebugShapeFactory.java b/engine/src/bullet/com/jme3/bullet/util/DebugShapeFactory.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/util/DebugShapeFactory.java rename to engine/src/bullet/com/jme3/bullet/util/DebugShapeFactory.java diff --git a/jme3-bullet/src/main/java/com/jme3/bullet/util/NativeMeshUtil.java b/engine/src/bullet/com/jme3/bullet/util/NativeMeshUtil.java similarity index 100% rename from jme3-bullet/src/main/java/com/jme3/bullet/util/NativeMeshUtil.java rename to engine/src/bullet/com/jme3/bullet/util/NativeMeshUtil.java diff --git a/jme3-core/src/main/resources/10000.monkeyz b/engine/src/core-data/10000.monkeyz similarity index 100% rename from jme3-core/src/main/resources/10000.monkeyz rename to engine/src/core-data/10000.monkeyz diff --git a/jme3-core/src/main/resources/Common/MatDefs/Blur/HGaussianBlur.frag b/engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Blur/HGaussianBlur.frag rename to engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Blur/HGaussianBlur.j3md b/engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Blur/HGaussianBlur.j3md rename to engine/src/core-data/Common/MatDefs/Blur/HGaussianBlur.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Blur/RadialBlur.frag b/engine/src/core-data/Common/MatDefs/Blur/RadialBlur.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Blur/RadialBlur.frag rename to engine/src/core-data/Common/MatDefs/Blur/RadialBlur.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Blur/RadialBlur.j3md b/engine/src/core-data/Common/MatDefs/Blur/RadialBlur.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Blur/RadialBlur.j3md rename to engine/src/core-data/Common/MatDefs/Blur/RadialBlur.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Blur/RadialBlur15.frag b/engine/src/core-data/Common/MatDefs/Blur/RadialBlur15.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Blur/RadialBlur15.frag rename to engine/src/core-data/Common/MatDefs/Blur/RadialBlur15.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Blur/VGaussianBlur.frag b/engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Blur/VGaussianBlur.frag rename to engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Blur/VGaussianBlur.j3md b/engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Blur/VGaussianBlur.j3md rename to engine/src/core-data/Common/MatDefs/Blur/VGaussianBlur.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Gui/Gui.frag b/engine/src/core-data/Common/MatDefs/Gui/Gui.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Gui/Gui.frag rename to engine/src/core-data/Common/MatDefs/Gui/Gui.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Gui/Gui.j3md b/engine/src/core-data/Common/MatDefs/Gui/Gui.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Gui/Gui.j3md rename to engine/src/core-data/Common/MatDefs/Gui/Gui.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Gui/Gui.vert b/engine/src/core-data/Common/MatDefs/Gui/Gui.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Gui/Gui.vert rename to engine/src/core-data/Common/MatDefs/Gui/Gui.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Hdr/LogLum.frag b/engine/src/core-data/Common/MatDefs/Hdr/LogLum.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Hdr/LogLum.frag rename to engine/src/core-data/Common/MatDefs/Hdr/LogLum.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Hdr/LogLum.j3md b/engine/src/core-data/Common/MatDefs/Hdr/LogLum.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Hdr/LogLum.j3md rename to engine/src/core-data/Common/MatDefs/Hdr/LogLum.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Hdr/ToneMap.frag b/engine/src/core-data/Common/MatDefs/Hdr/ToneMap.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Hdr/ToneMap.frag rename to engine/src/core-data/Common/MatDefs/Hdr/ToneMap.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Hdr/ToneMap.j3md b/engine/src/core-data/Common/MatDefs/Hdr/ToneMap.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Hdr/ToneMap.j3md rename to engine/src/core-data/Common/MatDefs/Hdr/ToneMap.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/Deferred.frag b/engine/src/core-data/Common/MatDefs/Light/Deferred.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/Deferred.frag rename to engine/src/core-data/Common/MatDefs/Light/Deferred.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/Deferred.j3md b/engine/src/core-data/Common/MatDefs/Light/Deferred.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/Deferred.j3md rename to engine/src/core-data/Common/MatDefs/Light/Deferred.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/Deferred.vert b/engine/src/core-data/Common/MatDefs/Light/Deferred.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/Deferred.vert rename to engine/src/core-data/Common/MatDefs/Light/Deferred.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/GBuf.frag b/engine/src/core-data/Common/MatDefs/Light/GBuf.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/GBuf.frag rename to engine/src/core-data/Common/MatDefs/Light/GBuf.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/GBuf.vert b/engine/src/core-data/Common/MatDefs/Light/GBuf.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/GBuf.vert rename to engine/src/core-data/Common/MatDefs/Light/GBuf.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/Glow.frag b/engine/src/core-data/Common/MatDefs/Light/Glow.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/Glow.frag rename to engine/src/core-data/Common/MatDefs/Light/Glow.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/Lighting.frag b/engine/src/core-data/Common/MatDefs/Light/Lighting.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/Lighting.frag rename to engine/src/core-data/Common/MatDefs/Light/Lighting.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/Lighting.j3md b/engine/src/core-data/Common/MatDefs/Light/Lighting.j3md similarity index 91% rename from jme3-core/src/main/resources/Common/MatDefs/Light/Lighting.j3md rename to engine/src/core-data/Common/MatDefs/Light/Lighting.j3md index daad21612..625aa9fde 100644 --- a/jme3-core/src/main/resources/Common/MatDefs/Light/Lighting.j3md +++ b/engine/src/core-data/Common/MatDefs/Light/Lighting.j3md @@ -283,6 +283,25 @@ MaterialDef Phong Lighting { } + + Technique PreNormalPassDerivative { + + VertexShader GLSL100 : Common/MatDefs/MSSAO/normal.vert + FragmentShader GLSL100 : Common/MatDefs/MSSAO/normal.frag + + WorldParameters { + WorldViewProjectionMatrix + WorldViewMatrix + NormalMatrix + } + + Defines { + DIFFUSEMAP_ALPHA : DiffuseMap + NUM_BONES : NumberOfBones + } + + } + Technique GBuf { VertexShader GLSL100: Common/MatDefs/Light/GBuf.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/Lighting.vert b/engine/src/core-data/Common/MatDefs/Light/Lighting.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Light/Lighting.vert rename to engine/src/core-data/Common/MatDefs/Light/Lighting.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/ColoredTextured.frag b/engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/ColoredTextured.frag rename to engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/ColoredTextured.j3md b/engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/ColoredTextured.j3md rename to engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/ColoredTextured.vert b/engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/ColoredTextured.vert rename to engine/src/core-data/Common/MatDefs/Misc/ColoredTextured.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Particle.frag b/engine/src/core-data/Common/MatDefs/Misc/Particle.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Particle.frag rename to engine/src/core-data/Common/MatDefs/Misc/Particle.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Particle.j3md b/engine/src/core-data/Common/MatDefs/Misc/Particle.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Particle.j3md rename to engine/src/core-data/Common/MatDefs/Misc/Particle.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Particle.vert b/engine/src/core-data/Common/MatDefs/Misc/Particle.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Particle.vert rename to engine/src/core-data/Common/MatDefs/Misc/Particle.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/ShowNormals.frag b/engine/src/core-data/Common/MatDefs/Misc/ShowNormals.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/ShowNormals.frag rename to engine/src/core-data/Common/MatDefs/Misc/ShowNormals.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/ShowNormals.j3md b/engine/src/core-data/Common/MatDefs/Misc/ShowNormals.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/ShowNormals.j3md rename to engine/src/core-data/Common/MatDefs/Misc/ShowNormals.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/ShowNormals.vert b/engine/src/core-data/Common/MatDefs/Misc/ShowNormals.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/ShowNormals.vert rename to engine/src/core-data/Common/MatDefs/Misc/ShowNormals.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Sky.frag b/engine/src/core-data/Common/MatDefs/Misc/Sky.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Sky.frag rename to engine/src/core-data/Common/MatDefs/Misc/Sky.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Sky.j3md b/engine/src/core-data/Common/MatDefs/Misc/Sky.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Sky.j3md rename to engine/src/core-data/Common/MatDefs/Misc/Sky.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Sky.vert b/engine/src/core-data/Common/MatDefs/Misc/Sky.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Sky.vert rename to engine/src/core-data/Common/MatDefs/Misc/Sky.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/SoftParticle.frag b/engine/src/core-data/Common/MatDefs/Misc/SoftParticle.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/SoftParticle.frag rename to engine/src/core-data/Common/MatDefs/Misc/SoftParticle.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/SoftParticle.vert b/engine/src/core-data/Common/MatDefs/Misc/SoftParticle.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/SoftParticle.vert rename to engine/src/core-data/Common/MatDefs/Misc/SoftParticle.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/SoftParticle15.frag b/engine/src/core-data/Common/MatDefs/Misc/SoftParticle15.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/SoftParticle15.frag rename to engine/src/core-data/Common/MatDefs/Misc/SoftParticle15.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Unshaded.frag b/engine/src/core-data/Common/MatDefs/Misc/Unshaded.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Unshaded.frag rename to engine/src/core-data/Common/MatDefs/Misc/Unshaded.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Unshaded.j3md b/engine/src/core-data/Common/MatDefs/Misc/Unshaded.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Unshaded.j3md rename to engine/src/core-data/Common/MatDefs/Misc/Unshaded.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/Unshaded.vert b/engine/src/core-data/Common/MatDefs/Misc/Unshaded.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/Unshaded.vert rename to engine/src/core-data/Common/MatDefs/Misc/Unshaded.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Misc/UnshadedNodes.j3md b/engine/src/core-data/Common/MatDefs/Misc/UnshadedNodes.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Misc/UnshadedNodes.j3md rename to engine/src/core-data/Common/MatDefs/Misc/UnshadedNodes.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/AlphaDiscard.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/AlphaDiscard.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/AlphaDiscard.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/AlphaDiscard.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/AttributeToVarying.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/AttributeToVarying.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/AttributeToVarying.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/AttributeToVarying.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/ColorMix.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/ColorMix.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/ColorMix.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/ColorMix.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/ColorMult.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/ColorMult.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/ColorMult.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/ColorMult.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/TextureFetch.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/TextureFetch.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/TextureFetch.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/TextureFetch.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/TransformPosition.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/TransformPosition.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/TransformPosition.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/TransformPosition.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/alphaDiscard.frag b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/alphaDiscard.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/alphaDiscard.frag rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/alphaDiscard.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/colorMix.frag b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/colorMix.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/colorMix.frag rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/colorMix.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/colorMult.frag b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/colorMult.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/colorMult.frag rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/colorMult.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/null.vert b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/null.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/null.vert rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/null.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/texture.frag b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/texture.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/texture.frag rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/texture.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/transformPosition.vert b/engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/transformPosition.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Basic/transformPosition.vert rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Basic/transformPosition.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/CommonVert.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Common/CommonVert.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/CommonVert.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Common/CommonVert.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/Unshaded.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Common/Unshaded.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/Unshaded.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Common/Unshaded.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/commonVert.vert b/engine/src/core-data/Common/MatDefs/ShaderNodes/Common/commonVert.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/commonVert.vert rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Common/commonVert.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/unshaded.frag b/engine/src/core-data/Common/MatDefs/ShaderNodes/Common/unshaded.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Common/unshaded.frag rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Common/unshaded.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Fog/Fog.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/Fog/Fog.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Fog/Fog.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Fog/Fog.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Fog/fogFactor.vert b/engine/src/core-data/Common/MatDefs/ShaderNodes/Fog/fogFactor.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Fog/fogFactor.vert rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Fog/fogFactor.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Fog/fogOutput.frag b/engine/src/core-data/Common/MatDefs/ShaderNodes/Fog/fogOutput.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/Fog/fogOutput.frag rename to engine/src/core-data/Common/MatDefs/ShaderNodes/Fog/fogOutput.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/HardwareSkinning/HardwareSkinning.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/HardwareSkinning/HardwareSkinning.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/HardwareSkinning/HardwareSkinning.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/HardwareSkinning/HardwareSkinning.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/HardwareSkinning/basicGpuSkinning.vert b/engine/src/core-data/Common/MatDefs/ShaderNodes/HardwareSkinning/basicGpuSkinning.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/HardwareSkinning/basicGpuSkinning.vert rename to engine/src/core-data/Common/MatDefs/ShaderNodes/HardwareSkinning/basicGpuSkinning.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/HardwareSkinning/fullGpuSkinning.vert b/engine/src/core-data/Common/MatDefs/ShaderNodes/HardwareSkinning/fullGpuSkinning.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/HardwareSkinning/fullGpuSkinning.vert rename to engine/src/core-data/Common/MatDefs/ShaderNodes/HardwareSkinning/fullGpuSkinning.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/LightMapping/LightMapping.j3sn b/engine/src/core-data/Common/MatDefs/ShaderNodes/LightMapping/LightMapping.j3sn similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/LightMapping/LightMapping.j3sn rename to engine/src/core-data/Common/MatDefs/ShaderNodes/LightMapping/LightMapping.j3sn diff --git a/jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/LightMapping/lightMap.frag b/engine/src/core-data/Common/MatDefs/ShaderNodes/LightMapping/lightMap.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/ShaderNodes/LightMapping/lightMap.frag rename to engine/src/core-data/Common/MatDefs/ShaderNodes/LightMapping/lightMap.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/BasicPostShadow.frag b/engine/src/core-data/Common/MatDefs/Shadow/BasicPostShadow.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/BasicPostShadow.frag rename to engine/src/core-data/Common/MatDefs/Shadow/BasicPostShadow.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/BasicPostShadow.j3md b/engine/src/core-data/Common/MatDefs/Shadow/BasicPostShadow.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/BasicPostShadow.j3md rename to engine/src/core-data/Common/MatDefs/Shadow/BasicPostShadow.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/BasicPostShadow.vert b/engine/src/core-data/Common/MatDefs/Shadow/BasicPostShadow.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/BasicPostShadow.vert rename to engine/src/core-data/Common/MatDefs/Shadow/BasicPostShadow.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow.frag b/engine/src/core-data/Common/MatDefs/Shadow/PostShadow.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow.frag rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadow.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow.j3md b/engine/src/core-data/Common/MatDefs/Shadow/PostShadow.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow.j3md rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadow.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow.vert b/engine/src/core-data/Common/MatDefs/Shadow/PostShadow.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow.vert rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadow.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow15.frag b/engine/src/core-data/Common/MatDefs/Shadow/PostShadow15.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow15.frag rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadow15.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow15.vert b/engine/src/core-data/Common/MatDefs/Shadow/PostShadow15.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadow15.vert rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadow15.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter.frag b/engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter.frag rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter.j3md b/engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter.j3md rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter.vert b/engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter.vert rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter15.frag b/engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter15.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter15.frag rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter15.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter15.vert b/engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter15.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PostShadowFilter15.vert rename to engine/src/core-data/Common/MatDefs/Shadow/PostShadowFilter15.vert diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PreShadow.frag b/engine/src/core-data/Common/MatDefs/Shadow/PreShadow.frag similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PreShadow.frag rename to engine/src/core-data/Common/MatDefs/Shadow/PreShadow.frag diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PreShadow.j3md b/engine/src/core-data/Common/MatDefs/Shadow/PreShadow.j3md similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PreShadow.j3md rename to engine/src/core-data/Common/MatDefs/Shadow/PreShadow.j3md diff --git a/jme3-core/src/main/resources/Common/MatDefs/Shadow/PreShadow.vert b/engine/src/core-data/Common/MatDefs/Shadow/PreShadow.vert similarity index 100% rename from jme3-core/src/main/resources/Common/MatDefs/Shadow/PreShadow.vert rename to engine/src/core-data/Common/MatDefs/Shadow/PreShadow.vert diff --git a/jme3-core/src/main/resources/Common/Materials/RedColor.j3m b/engine/src/core-data/Common/Materials/RedColor.j3m similarity index 100% rename from jme3-core/src/main/resources/Common/Materials/RedColor.j3m rename to engine/src/core-data/Common/Materials/RedColor.j3m diff --git a/jme3-core/src/main/resources/Common/Materials/VertexColor.j3m b/engine/src/core-data/Common/Materials/VertexColor.j3m similarity index 100% rename from jme3-core/src/main/resources/Common/Materials/VertexColor.j3m rename to engine/src/core-data/Common/Materials/VertexColor.j3m diff --git a/jme3-core/src/main/resources/Common/Materials/WhiteColor.j3m b/engine/src/core-data/Common/Materials/WhiteColor.j3m similarity index 100% rename from jme3-core/src/main/resources/Common/Materials/WhiteColor.j3m rename to engine/src/core-data/Common/Materials/WhiteColor.j3m diff --git a/jme3-core/src/main/resources/Common/ShaderLib/BasicShadow.glsllib b/engine/src/core-data/Common/ShaderLib/BasicShadow.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/BasicShadow.glsllib rename to engine/src/core-data/Common/ShaderLib/BasicShadow.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Bump.glsllib b/engine/src/core-data/Common/ShaderLib/Bump.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Bump.glsllib rename to engine/src/core-data/Common/ShaderLib/Bump.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Common.glsllib b/engine/src/core-data/Common/ShaderLib/Common.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Common.glsllib rename to engine/src/core-data/Common/ShaderLib/Common.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Fog.glsllib b/engine/src/core-data/Common/ShaderLib/Fog.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Fog.glsllib rename to engine/src/core-data/Common/ShaderLib/Fog.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Hdr.glsllib b/engine/src/core-data/Common/ShaderLib/Hdr.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Hdr.glsllib rename to engine/src/core-data/Common/ShaderLib/Hdr.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Lighting.glsllib b/engine/src/core-data/Common/ShaderLib/Lighting.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Lighting.glsllib rename to engine/src/core-data/Common/ShaderLib/Lighting.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Math.glsllib b/engine/src/core-data/Common/ShaderLib/Math.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Math.glsllib rename to engine/src/core-data/Common/ShaderLib/Math.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/MultiSample.glsllib b/engine/src/core-data/Common/ShaderLib/MultiSample.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/MultiSample.glsllib rename to engine/src/core-data/Common/ShaderLib/MultiSample.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Optics.glsllib b/engine/src/core-data/Common/ShaderLib/Optics.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Optics.glsllib rename to engine/src/core-data/Common/ShaderLib/Optics.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Parallax.glsllib b/engine/src/core-data/Common/ShaderLib/Parallax.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Parallax.glsllib rename to engine/src/core-data/Common/ShaderLib/Parallax.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Shadows.glsllib b/engine/src/core-data/Common/ShaderLib/Shadows.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Shadows.glsllib rename to engine/src/core-data/Common/ShaderLib/Shadows.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Shadows15.glsllib b/engine/src/core-data/Common/ShaderLib/Shadows15.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Shadows15.glsllib rename to engine/src/core-data/Common/ShaderLib/Shadows15.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Skinning.glsllib b/engine/src/core-data/Common/ShaderLib/Skinning.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Skinning.glsllib rename to engine/src/core-data/Common/ShaderLib/Skinning.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Splatting.glsllib b/engine/src/core-data/Common/ShaderLib/Splatting.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Splatting.glsllib rename to engine/src/core-data/Common/ShaderLib/Splatting.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Tangent.glsllib b/engine/src/core-data/Common/ShaderLib/Tangent.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Tangent.glsllib rename to engine/src/core-data/Common/ShaderLib/Tangent.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Texture.glsllib b/engine/src/core-data/Common/ShaderLib/Texture.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Texture.glsllib rename to engine/src/core-data/Common/ShaderLib/Texture.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/Ubo.glsllib b/engine/src/core-data/Common/ShaderLib/Ubo.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/Ubo.glsllib rename to engine/src/core-data/Common/ShaderLib/Ubo.glsllib diff --git a/jme3-core/src/main/resources/Common/ShaderLib/WaterUtil.glsllib b/engine/src/core-data/Common/ShaderLib/WaterUtil.glsllib similarity index 100% rename from jme3-core/src/main/resources/Common/ShaderLib/WaterUtil.glsllib rename to engine/src/core-data/Common/ShaderLib/WaterUtil.glsllib diff --git a/jme3-core/src/main/resources/Interface/Fonts/Console.fnt b/engine/src/core-data/Interface/Fonts/Console.fnt similarity index 100% rename from jme3-core/src/main/resources/Interface/Fonts/Console.fnt rename to engine/src/core-data/Interface/Fonts/Console.fnt diff --git a/jme3-core/src/main/resources/Interface/Fonts/Console.png b/engine/src/core-data/Interface/Fonts/Console.png similarity index 100% rename from jme3-core/src/main/resources/Interface/Fonts/Console.png rename to engine/src/core-data/Interface/Fonts/Console.png diff --git a/jme3-core/src/main/resources/Interface/Fonts/Default.fnt b/engine/src/core-data/Interface/Fonts/Default.fnt similarity index 100% rename from jme3-core/src/main/resources/Interface/Fonts/Default.fnt rename to engine/src/core-data/Interface/Fonts/Default.fnt diff --git a/jme3-core/src/main/resources/Interface/Fonts/Default.png b/engine/src/core-data/Interface/Fonts/Default.png similarity index 100% rename from jme3-core/src/main/resources/Interface/Fonts/Default.png rename to engine/src/core-data/Interface/Fonts/Default.png diff --git a/jme3-core/src/main/resources/joystick-mapping.properties b/engine/src/core-data/joystick-mapping.properties similarity index 100% rename from jme3-core/src/main/resources/joystick-mapping.properties rename to engine/src/core-data/joystick-mapping.properties diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/BloomExtract.j3md b/engine/src/core-effects/Common/MatDefs/Post/BloomExtract.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/BloomExtract.j3md rename to engine/src/core-effects/Common/MatDefs/Post/BloomExtract.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/BloomFinal.j3md b/engine/src/core-effects/Common/MatDefs/Post/BloomFinal.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/BloomFinal.j3md rename to engine/src/core-effects/Common/MatDefs/Post/BloomFinal.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/CartoonEdge.frag b/engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/CartoonEdge.frag rename to engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/CartoonEdge.j3md b/engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/CartoonEdge.j3md rename to engine/src/core-effects/Common/MatDefs/Post/CartoonEdge.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/CartoonEdge15.frag b/engine/src/core-effects/Common/MatDefs/Post/CartoonEdge15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/CartoonEdge15.frag rename to engine/src/core-effects/Common/MatDefs/Post/CartoonEdge15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Compose.frag b/engine/src/core-effects/Common/MatDefs/Post/Compose.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Compose.frag rename to engine/src/core-effects/Common/MatDefs/Post/Compose.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Compose.j3md b/engine/src/core-effects/Common/MatDefs/Post/Compose.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Compose.j3md rename to engine/src/core-effects/Common/MatDefs/Post/Compose.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Compose15.frag b/engine/src/core-effects/Common/MatDefs/Post/Compose15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Compose15.frag rename to engine/src/core-effects/Common/MatDefs/Post/Compose15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/CrossHatch.frag b/engine/src/core-effects/Common/MatDefs/Post/CrossHatch.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/CrossHatch.frag rename to engine/src/core-effects/Common/MatDefs/Post/CrossHatch.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/CrossHatch.j3md b/engine/src/core-effects/Common/MatDefs/Post/CrossHatch.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/CrossHatch.j3md rename to engine/src/core-effects/Common/MatDefs/Post/CrossHatch.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/CrossHatch15.frag b/engine/src/core-effects/Common/MatDefs/Post/CrossHatch15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/CrossHatch15.frag rename to engine/src/core-effects/Common/MatDefs/Post/CrossHatch15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/DepthOfField.frag b/engine/src/core-effects/Common/MatDefs/Post/DepthOfField.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/DepthOfField.frag rename to engine/src/core-effects/Common/MatDefs/Post/DepthOfField.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/DepthOfField.j3md b/engine/src/core-effects/Common/MatDefs/Post/DepthOfField.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/DepthOfField.j3md rename to engine/src/core-effects/Common/MatDefs/Post/DepthOfField.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/DepthOfField15.frag b/engine/src/core-effects/Common/MatDefs/Post/DepthOfField15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/DepthOfField15.frag rename to engine/src/core-effects/Common/MatDefs/Post/DepthOfField15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/FXAA.frag b/engine/src/core-effects/Common/MatDefs/Post/FXAA.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/FXAA.frag rename to engine/src/core-effects/Common/MatDefs/Post/FXAA.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/FXAA.j3md b/engine/src/core-effects/Common/MatDefs/Post/FXAA.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/FXAA.j3md rename to engine/src/core-effects/Common/MatDefs/Post/FXAA.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/FXAA.vert b/engine/src/core-effects/Common/MatDefs/Post/FXAA.vert similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/FXAA.vert rename to engine/src/core-effects/Common/MatDefs/Post/FXAA.vert diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Fade.frag b/engine/src/core-effects/Common/MatDefs/Post/Fade.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Fade.frag rename to engine/src/core-effects/Common/MatDefs/Post/Fade.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Fade.j3md b/engine/src/core-effects/Common/MatDefs/Post/Fade.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Fade.j3md rename to engine/src/core-effects/Common/MatDefs/Post/Fade.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Fade15.frag b/engine/src/core-effects/Common/MatDefs/Post/Fade15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Fade15.frag rename to engine/src/core-effects/Common/MatDefs/Post/Fade15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Fog.frag b/engine/src/core-effects/Common/MatDefs/Post/Fog.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Fog.frag rename to engine/src/core-effects/Common/MatDefs/Post/Fog.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Fog.j3md b/engine/src/core-effects/Common/MatDefs/Post/Fog.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Fog.j3md rename to engine/src/core-effects/Common/MatDefs/Post/Fog.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Fog15.frag b/engine/src/core-effects/Common/MatDefs/Post/Fog15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Fog15.frag rename to engine/src/core-effects/Common/MatDefs/Post/Fog15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/GammaCorrection.frag b/engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/GammaCorrection.frag rename to engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/GammaCorrection.j3md b/engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/GammaCorrection.j3md rename to engine/src/core-effects/Common/MatDefs/Post/GammaCorrection.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/GammaCorrection15.frag b/engine/src/core-effects/Common/MatDefs/Post/GammaCorrection15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/GammaCorrection15.frag rename to engine/src/core-effects/Common/MatDefs/Post/GammaCorrection15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering.frag b/engine/src/core-effects/Common/MatDefs/Post/LightScattering.frag similarity index 95% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering.frag rename to engine/src/core-effects/Common/MatDefs/Post/LightScattering.frag index 8f5957ca6..bc85142e0 100644 --- a/jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering.frag +++ b/engine/src/core-effects/Common/MatDefs/Post/LightScattering.frag @@ -30,7 +30,7 @@ void main(void) //Blend the original color with the averaged pixels float mean = (res.r + res.g + res.b)/3; - fragColor =mix(colorRes ,mix( colorRes, res, m_LightDensity),mean); + fragColor =mix(colorRes ,mix( colorRes, res, m_LightDensity),mean); }else{ gl_FragColor= texture2D(m_Texture,texCoord); } diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering.j3md b/engine/src/core-effects/Common/MatDefs/Post/LightScattering.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering.j3md rename to engine/src/core-effects/Common/MatDefs/Post/LightScattering.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering15.frag b/engine/src/core-effects/Common/MatDefs/Post/LightScattering15.frag similarity index 93% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering15.frag rename to engine/src/core-effects/Common/MatDefs/Post/LightScattering15.frag index 8db6d9b04..57547ea1a 100644 --- a/jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering15.frag +++ b/engine/src/core-effects/Common/MatDefs/Post/LightScattering15.frag @@ -28,13 +28,13 @@ void main(void) scaledCoord=texCoo*scale + m_LightPosition.xy; if(fetchTextureSample(m_DepthTexture, scaledCoord,0).r==1.0){ res += fetchTextureSample(m_Texture,scaledCoord,0); + } } - } res /= m_NbSamples; - + //Blend the original color with the averaged pixels float mean = (res.r + res.g + res.b)/3; - fragColor =mix(colorRes ,mix( colorRes, res, m_LightDensity),mean); + fragColor =mix(colorRes ,mix( colorRes, res, m_LightDensity),mean); }else{ fragColor = getColor(m_Texture,texCoord); } diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering15.vert b/engine/src/core-effects/Common/MatDefs/Post/LightScattering15.vert similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/LightScattering15.vert rename to engine/src/core-effects/Common/MatDefs/Post/LightScattering15.vert diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Overlay.frag b/engine/src/core-effects/Common/MatDefs/Post/Overlay.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Overlay.frag rename to engine/src/core-effects/Common/MatDefs/Post/Overlay.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Overlay.j3md b/engine/src/core-effects/Common/MatDefs/Post/Overlay.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Overlay.j3md rename to engine/src/core-effects/Common/MatDefs/Post/Overlay.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Overlay15.frag b/engine/src/core-effects/Common/MatDefs/Post/Overlay15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Overlay15.frag rename to engine/src/core-effects/Common/MatDefs/Post/Overlay15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Post.vert b/engine/src/core-effects/Common/MatDefs/Post/Post.vert similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Post.vert rename to engine/src/core-effects/Common/MatDefs/Post/Post.vert diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Post15.vert b/engine/src/core-effects/Common/MatDefs/Post/Post15.vert similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Post15.vert rename to engine/src/core-effects/Common/MatDefs/Post/Post15.vert diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Posterization.frag b/engine/src/core-effects/Common/MatDefs/Post/Posterization.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Posterization.frag rename to engine/src/core-effects/Common/MatDefs/Post/Posterization.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Posterization.j3md b/engine/src/core-effects/Common/MatDefs/Post/Posterization.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Posterization.j3md rename to engine/src/core-effects/Common/MatDefs/Post/Posterization.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/Posterization15.frag b/engine/src/core-effects/Common/MatDefs/Post/Posterization15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/Posterization15.frag rename to engine/src/core-effects/Common/MatDefs/Post/Posterization15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/bloomExtract.frag b/engine/src/core-effects/Common/MatDefs/Post/bloomExtract.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/bloomExtract.frag rename to engine/src/core-effects/Common/MatDefs/Post/bloomExtract.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/bloomExtract15.frag b/engine/src/core-effects/Common/MatDefs/Post/bloomExtract15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/bloomExtract15.frag rename to engine/src/core-effects/Common/MatDefs/Post/bloomExtract15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/bloomFinal.frag b/engine/src/core-effects/Common/MatDefs/Post/bloomFinal.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/bloomFinal.frag rename to engine/src/core-effects/Common/MatDefs/Post/bloomFinal.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Post/bloomFinal15.frag b/engine/src/core-effects/Common/MatDefs/Post/bloomFinal15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Post/bloomFinal15.frag rename to engine/src/core-effects/Common/MatDefs/Post/bloomFinal15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/Textures/random.png b/engine/src/core-effects/Common/MatDefs/SSAO/Textures/random.png similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/Textures/random.png rename to engine/src/core-effects/Common/MatDefs/SSAO/Textures/random.png diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/normal.frag b/engine/src/core-effects/Common/MatDefs/SSAO/normal.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/normal.frag rename to engine/src/core-effects/Common/MatDefs/SSAO/normal.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/normal.vert b/engine/src/core-effects/Common/MatDefs/SSAO/normal.vert similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/normal.vert rename to engine/src/core-effects/Common/MatDefs/SSAO/normal.vert diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssao.frag b/engine/src/core-effects/Common/MatDefs/SSAO/ssao.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssao.frag rename to engine/src/core-effects/Common/MatDefs/SSAO/ssao.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssao.j3md b/engine/src/core-effects/Common/MatDefs/SSAO/ssao.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssao.j3md rename to engine/src/core-effects/Common/MatDefs/SSAO/ssao.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssao15.frag b/engine/src/core-effects/Common/MatDefs/SSAO/ssao15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssao15.frag rename to engine/src/core-effects/Common/MatDefs/SSAO/ssao15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssaoBlur.frag b/engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssaoBlur.frag rename to engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssaoBlur.j3md b/engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssaoBlur.j3md rename to engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssaoBlur15.frag b/engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/SSAO/ssaoBlur15.frag rename to engine/src/core-effects/Common/MatDefs/SSAO/ssaoBlur15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/SimpleWater.j3md b/engine/src/core-effects/Common/MatDefs/Water/SimpleWater.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/SimpleWater.j3md rename to engine/src/core-effects/Common/MatDefs/Water/SimpleWater.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/caustics.jpg b/engine/src/core-effects/Common/MatDefs/Water/Textures/caustics.jpg similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/caustics.jpg rename to engine/src/core-effects/Common/MatDefs/Water/Textures/caustics.jpg diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/dudv_map.jpg b/engine/src/core-effects/Common/MatDefs/Water/Textures/dudv_map.jpg similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/dudv_map.jpg rename to engine/src/core-effects/Common/MatDefs/Water/Textures/dudv_map.jpg diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/foam.jpg b/engine/src/core-effects/Common/MatDefs/Water/Textures/foam.jpg similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/foam.jpg rename to engine/src/core-effects/Common/MatDefs/Water/Textures/foam.jpg diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/foam2.jpg b/engine/src/core-effects/Common/MatDefs/Water/Textures/foam2.jpg similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/foam2.jpg rename to engine/src/core-effects/Common/MatDefs/Water/Textures/foam2.jpg diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/foam3.jpg b/engine/src/core-effects/Common/MatDefs/Water/Textures/foam3.jpg similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/foam3.jpg rename to engine/src/core-effects/Common/MatDefs/Water/Textures/foam3.jpg diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/heightmap.jpg b/engine/src/core-effects/Common/MatDefs/Water/Textures/heightmap.jpg similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/heightmap.jpg rename to engine/src/core-effects/Common/MatDefs/Water/Textures/heightmap.jpg diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/water_normalmap.dds b/engine/src/core-effects/Common/MatDefs/Water/Textures/water_normalmap.dds similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/water_normalmap.dds rename to engine/src/core-effects/Common/MatDefs/Water/Textures/water_normalmap.dds diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/water_normalmap.png b/engine/src/core-effects/Common/MatDefs/Water/Textures/water_normalmap.png similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Textures/water_normalmap.png rename to engine/src/core-effects/Common/MatDefs/Water/Textures/water_normalmap.png diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Water.frag b/engine/src/core-effects/Common/MatDefs/Water/Water.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Water.frag rename to engine/src/core-effects/Common/MatDefs/Water/Water.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Water.j3md b/engine/src/core-effects/Common/MatDefs/Water/Water.j3md similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Water.j3md rename to engine/src/core-effects/Common/MatDefs/Water/Water.j3md diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/Water15.frag b/engine/src/core-effects/Common/MatDefs/Water/Water15.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/Water15.frag rename to engine/src/core-effects/Common/MatDefs/Water/Water15.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/simple_water.frag b/engine/src/core-effects/Common/MatDefs/Water/simple_water.frag similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/simple_water.frag rename to engine/src/core-effects/Common/MatDefs/Water/simple_water.frag diff --git a/jme3-effects/src/main/resources/Common/MatDefs/Water/simple_water.vert b/engine/src/core-effects/Common/MatDefs/Water/simple_water.vert similarity index 100% rename from jme3-effects/src/main/resources/Common/MatDefs/Water/simple_water.vert rename to engine/src/core-effects/Common/MatDefs/Water/simple_water.vert diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/BloomFilter.java b/engine/src/core-effects/com/jme3/post/filters/BloomFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/BloomFilter.java rename to engine/src/core-effects/com/jme3/post/filters/BloomFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/CartoonEdgeFilter.java b/engine/src/core-effects/com/jme3/post/filters/CartoonEdgeFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/CartoonEdgeFilter.java rename to engine/src/core-effects/com/jme3/post/filters/CartoonEdgeFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/ColorOverlayFilter.java b/engine/src/core-effects/com/jme3/post/filters/ColorOverlayFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/ColorOverlayFilter.java rename to engine/src/core-effects/com/jme3/post/filters/ColorOverlayFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/ComposeFilter.java b/engine/src/core-effects/com/jme3/post/filters/ComposeFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/ComposeFilter.java rename to engine/src/core-effects/com/jme3/post/filters/ComposeFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/CrossHatchFilter.java b/engine/src/core-effects/com/jme3/post/filters/CrossHatchFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/CrossHatchFilter.java rename to engine/src/core-effects/com/jme3/post/filters/CrossHatchFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/DepthOfFieldFilter.java b/engine/src/core-effects/com/jme3/post/filters/DepthOfFieldFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/DepthOfFieldFilter.java rename to engine/src/core-effects/com/jme3/post/filters/DepthOfFieldFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/FXAAFilter.java b/engine/src/core-effects/com/jme3/post/filters/FXAAFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/FXAAFilter.java rename to engine/src/core-effects/com/jme3/post/filters/FXAAFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/FadeFilter.java b/engine/src/core-effects/com/jme3/post/filters/FadeFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/FadeFilter.java rename to engine/src/core-effects/com/jme3/post/filters/FadeFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/FogFilter.java b/engine/src/core-effects/com/jme3/post/filters/FogFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/FogFilter.java rename to engine/src/core-effects/com/jme3/post/filters/FogFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/GammaCorrectionFilter.java b/engine/src/core-effects/com/jme3/post/filters/GammaCorrectionFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/GammaCorrectionFilter.java rename to engine/src/core-effects/com/jme3/post/filters/GammaCorrectionFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/LightScatteringFilter.java b/engine/src/core-effects/com/jme3/post/filters/LightScatteringFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/LightScatteringFilter.java rename to engine/src/core-effects/com/jme3/post/filters/LightScatteringFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/PosterizationFilter.java b/engine/src/core-effects/com/jme3/post/filters/PosterizationFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/PosterizationFilter.java rename to engine/src/core-effects/com/jme3/post/filters/PosterizationFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/RadialBlurFilter.java b/engine/src/core-effects/com/jme3/post/filters/RadialBlurFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/RadialBlurFilter.java rename to engine/src/core-effects/com/jme3/post/filters/RadialBlurFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/filters/TranslucentBucketFilter.java b/engine/src/core-effects/com/jme3/post/filters/TranslucentBucketFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/filters/TranslucentBucketFilter.java rename to engine/src/core-effects/com/jme3/post/filters/TranslucentBucketFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/post/ssao/SSAOFilter.java b/engine/src/core-effects/com/jme3/post/ssao/SSAOFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/post/ssao/SSAOFilter.java rename to engine/src/core-effects/com/jme3/post/ssao/SSAOFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/water/ReflectionProcessor.java b/engine/src/core-effects/com/jme3/water/ReflectionProcessor.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/water/ReflectionProcessor.java rename to engine/src/core-effects/com/jme3/water/ReflectionProcessor.java diff --git a/jme3-effects/src/main/java/com/jme3/water/SimpleWaterProcessor.java b/engine/src/core-effects/com/jme3/water/SimpleWaterProcessor.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/water/SimpleWaterProcessor.java rename to engine/src/core-effects/com/jme3/water/SimpleWaterProcessor.java diff --git a/jme3-effects/src/main/java/com/jme3/water/WaterFilter.java b/engine/src/core-effects/com/jme3/water/WaterFilter.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/water/WaterFilter.java rename to engine/src/core-effects/com/jme3/water/WaterFilter.java diff --git a/jme3-effects/src/main/java/com/jme3/water/WaterUtils.java b/engine/src/core-effects/com/jme3/water/WaterUtils.java similarity index 100% rename from jme3-effects/src/main/java/com/jme3/water/WaterUtils.java rename to engine/src/core-effects/com/jme3/water/WaterUtils.java diff --git a/jme3-core/src/plugins/java/com/jme3/asset/plugins/ClasspathLocator.java b/engine/src/core-plugins/com/jme3/asset/plugins/ClasspathLocator.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/asset/plugins/ClasspathLocator.java rename to engine/src/core-plugins/com/jme3/asset/plugins/ClasspathLocator.java diff --git a/jme3-core/src/plugins/java/com/jme3/asset/plugins/FileLocator.java b/engine/src/core-plugins/com/jme3/asset/plugins/FileLocator.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/asset/plugins/FileLocator.java rename to engine/src/core-plugins/com/jme3/asset/plugins/FileLocator.java diff --git a/jme3-core/src/plugins/java/com/jme3/asset/plugins/HttpZipLocator.java b/engine/src/core-plugins/com/jme3/asset/plugins/HttpZipLocator.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/asset/plugins/HttpZipLocator.java rename to engine/src/core-plugins/com/jme3/asset/plugins/HttpZipLocator.java diff --git a/jme3-core/src/plugins/java/com/jme3/asset/plugins/UrlAssetInfo.java b/engine/src/core-plugins/com/jme3/asset/plugins/UrlAssetInfo.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/asset/plugins/UrlAssetInfo.java rename to engine/src/core-plugins/com/jme3/asset/plugins/UrlAssetInfo.java diff --git a/jme3-core/src/plugins/java/com/jme3/asset/plugins/UrlLocator.java b/engine/src/core-plugins/com/jme3/asset/plugins/UrlLocator.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/asset/plugins/UrlLocator.java rename to engine/src/core-plugins/com/jme3/asset/plugins/UrlLocator.java diff --git a/jme3-core/src/plugins/java/com/jme3/asset/plugins/ZipLocator.java b/engine/src/core-plugins/com/jme3/asset/plugins/ZipLocator.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/asset/plugins/ZipLocator.java rename to engine/src/core-plugins/com/jme3/asset/plugins/ZipLocator.java diff --git a/jme3-core/src/plugins/java/com/jme3/audio/plugins/WAVLoader.java b/engine/src/core-plugins/com/jme3/audio/plugins/WAVLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/audio/plugins/WAVLoader.java rename to engine/src/core-plugins/com/jme3/audio/plugins/WAVLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/cursors/plugins/JmeCursor.java b/engine/src/core-plugins/com/jme3/cursors/plugins/JmeCursor.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/cursors/plugins/JmeCursor.java rename to engine/src/core-plugins/com/jme3/cursors/plugins/JmeCursor.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/BinaryClassField.java b/engine/src/core-plugins/com/jme3/export/binary/BinaryClassField.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/BinaryClassField.java rename to engine/src/core-plugins/com/jme3/export/binary/BinaryClassField.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/BinaryClassObject.java b/engine/src/core-plugins/com/jme3/export/binary/BinaryClassObject.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/BinaryClassObject.java rename to engine/src/core-plugins/com/jme3/export/binary/BinaryClassObject.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/BinaryExporter.java b/engine/src/core-plugins/com/jme3/export/binary/BinaryExporter.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/BinaryExporter.java rename to engine/src/core-plugins/com/jme3/export/binary/BinaryExporter.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/BinaryIdContentPair.java b/engine/src/core-plugins/com/jme3/export/binary/BinaryIdContentPair.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/BinaryIdContentPair.java rename to engine/src/core-plugins/com/jme3/export/binary/BinaryIdContentPair.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/BinaryImporter.java b/engine/src/core-plugins/com/jme3/export/binary/BinaryImporter.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/BinaryImporter.java rename to engine/src/core-plugins/com/jme3/export/binary/BinaryImporter.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/BinaryInputCapsule.java b/engine/src/core-plugins/com/jme3/export/binary/BinaryInputCapsule.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/BinaryInputCapsule.java rename to engine/src/core-plugins/com/jme3/export/binary/BinaryInputCapsule.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/BinaryOutputCapsule.java b/engine/src/core-plugins/com/jme3/export/binary/BinaryOutputCapsule.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/BinaryOutputCapsule.java rename to engine/src/core-plugins/com/jme3/export/binary/BinaryOutputCapsule.java diff --git a/jme3-core/src/plugins/java/com/jme3/export/binary/ByteUtils.java b/engine/src/core-plugins/com/jme3/export/binary/ByteUtils.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/export/binary/ByteUtils.java rename to engine/src/core-plugins/com/jme3/export/binary/ByteUtils.java diff --git a/jme3-core/src/plugins/java/com/jme3/font/plugins/BitmapFontLoader.java b/engine/src/core-plugins/com/jme3/font/plugins/BitmapFontLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/font/plugins/BitmapFontLoader.java rename to engine/src/core-plugins/com/jme3/font/plugins/BitmapFontLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/material/plugins/ConditionParser.java b/engine/src/core-plugins/com/jme3/material/plugins/ConditionParser.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/material/plugins/ConditionParser.java rename to engine/src/core-plugins/com/jme3/material/plugins/ConditionParser.java diff --git a/jme3-core/src/plugins/java/com/jme3/material/plugins/J3MLoader.java b/engine/src/core-plugins/com/jme3/material/plugins/J3MLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/material/plugins/J3MLoader.java rename to engine/src/core-plugins/com/jme3/material/plugins/J3MLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/material/plugins/MatParseException.java b/engine/src/core-plugins/com/jme3/material/plugins/MatParseException.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/material/plugins/MatParseException.java rename to engine/src/core-plugins/com/jme3/material/plugins/MatParseException.java diff --git a/jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeDefinitionLoader.java b/engine/src/core-plugins/com/jme3/material/plugins/ShaderNodeDefinitionLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeDefinitionLoader.java rename to engine/src/core-plugins/com/jme3/material/plugins/ShaderNodeDefinitionLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java b/engine/src/core-plugins/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java rename to engine/src/core-plugins/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java diff --git a/jme3-core/src/plugins/java/com/jme3/scene/plugins/MTLLoader.java b/engine/src/core-plugins/com/jme3/scene/plugins/MTLLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/scene/plugins/MTLLoader.java rename to engine/src/core-plugins/com/jme3/scene/plugins/MTLLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/scene/plugins/OBJLoader.java b/engine/src/core-plugins/com/jme3/scene/plugins/OBJLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/scene/plugins/OBJLoader.java rename to engine/src/core-plugins/com/jme3/scene/plugins/OBJLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/shader/plugins/GLSLLoader.java b/engine/src/core-plugins/com/jme3/shader/plugins/GLSLLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/shader/plugins/GLSLLoader.java rename to engine/src/core-plugins/com/jme3/shader/plugins/GLSLLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/shader/plugins/ShaderDependencyNode.java b/engine/src/core-plugins/com/jme3/shader/plugins/ShaderDependencyNode.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/shader/plugins/ShaderDependencyNode.java rename to engine/src/core-plugins/com/jme3/shader/plugins/ShaderDependencyNode.java diff --git a/jme3-core/src/plugins/java/com/jme3/texture/plugins/DDSLoader.java b/engine/src/core-plugins/com/jme3/texture/plugins/DDSLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/texture/plugins/DDSLoader.java rename to engine/src/core-plugins/com/jme3/texture/plugins/DDSLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/texture/plugins/DXTFlipper.java b/engine/src/core-plugins/com/jme3/texture/plugins/DXTFlipper.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/texture/plugins/DXTFlipper.java rename to engine/src/core-plugins/com/jme3/texture/plugins/DXTFlipper.java diff --git a/jme3-core/src/plugins/java/com/jme3/texture/plugins/HDRLoader.java b/engine/src/core-plugins/com/jme3/texture/plugins/HDRLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/texture/plugins/HDRLoader.java rename to engine/src/core-plugins/com/jme3/texture/plugins/HDRLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/texture/plugins/ImageFlipper.java b/engine/src/core-plugins/com/jme3/texture/plugins/ImageFlipper.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/texture/plugins/ImageFlipper.java rename to engine/src/core-plugins/com/jme3/texture/plugins/ImageFlipper.java diff --git a/jme3-core/src/plugins/java/com/jme3/texture/plugins/PFMLoader.java b/engine/src/core-plugins/com/jme3/texture/plugins/PFMLoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/texture/plugins/PFMLoader.java rename to engine/src/core-plugins/com/jme3/texture/plugins/PFMLoader.java diff --git a/jme3-core/src/plugins/java/com/jme3/texture/plugins/TGALoader.java b/engine/src/core-plugins/com/jme3/texture/plugins/TGALoader.java similarity index 100% rename from jme3-core/src/plugins/java/com/jme3/texture/plugins/TGALoader.java rename to engine/src/core-plugins/com/jme3/texture/plugins/TGALoader.java diff --git a/jme3-core/src/main/java/checkers/quals/DefaultLocation.java b/engine/src/core/checkers/quals/DefaultLocation.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/DefaultLocation.java rename to engine/src/core/checkers/quals/DefaultLocation.java diff --git a/jme3-core/src/main/java/checkers/quals/DefaultQualifier.java b/engine/src/core/checkers/quals/DefaultQualifier.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/DefaultQualifier.java rename to engine/src/core/checkers/quals/DefaultQualifier.java diff --git a/jme3-core/src/main/java/checkers/quals/DefaultQualifierInHierarchy.java b/engine/src/core/checkers/quals/DefaultQualifierInHierarchy.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/DefaultQualifierInHierarchy.java rename to engine/src/core/checkers/quals/DefaultQualifierInHierarchy.java diff --git a/jme3-core/src/main/java/checkers/quals/DefaultQualifiers.java b/engine/src/core/checkers/quals/DefaultQualifiers.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/DefaultQualifiers.java rename to engine/src/core/checkers/quals/DefaultQualifiers.java diff --git a/jme3-core/src/main/java/checkers/quals/Dependent.java b/engine/src/core/checkers/quals/Dependent.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/Dependent.java rename to engine/src/core/checkers/quals/Dependent.java diff --git a/jme3-core/src/main/java/checkers/quals/SubtypeOf.java b/engine/src/core/checkers/quals/SubtypeOf.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/SubtypeOf.java rename to engine/src/core/checkers/quals/SubtypeOf.java diff --git a/jme3-core/src/main/java/checkers/quals/TypeQualifier.java b/engine/src/core/checkers/quals/TypeQualifier.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/TypeQualifier.java rename to engine/src/core/checkers/quals/TypeQualifier.java diff --git a/jme3-core/src/main/java/checkers/quals/Unqualified.java b/engine/src/core/checkers/quals/Unqualified.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/Unqualified.java rename to engine/src/core/checkers/quals/Unqualified.java diff --git a/jme3-core/src/main/java/checkers/quals/Unused.java b/engine/src/core/checkers/quals/Unused.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/Unused.java rename to engine/src/core/checkers/quals/Unused.java diff --git a/jme3-core/src/main/java/checkers/quals/package-info.java b/engine/src/core/checkers/quals/package-info.java similarity index 100% rename from jme3-core/src/main/java/checkers/quals/package-info.java rename to engine/src/core/checkers/quals/package-info.java diff --git a/jme3-core/src/main/java/com/jme3/animation/AnimChannel.java b/engine/src/core/com/jme3/animation/AnimChannel.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/AnimChannel.java rename to engine/src/core/com/jme3/animation/AnimChannel.java diff --git a/jme3-core/src/main/java/com/jme3/animation/AnimControl.java b/engine/src/core/com/jme3/animation/AnimControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/AnimControl.java rename to engine/src/core/com/jme3/animation/AnimControl.java diff --git a/jme3-core/src/main/java/com/jme3/animation/AnimEventListener.java b/engine/src/core/com/jme3/animation/AnimEventListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/AnimEventListener.java rename to engine/src/core/com/jme3/animation/AnimEventListener.java diff --git a/jme3-core/src/main/java/com/jme3/animation/Animation.java b/engine/src/core/com/jme3/animation/Animation.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/Animation.java rename to engine/src/core/com/jme3/animation/Animation.java diff --git a/jme3-core/src/main/java/com/jme3/animation/AnimationFactory.java b/engine/src/core/com/jme3/animation/AnimationFactory.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/AnimationFactory.java rename to engine/src/core/com/jme3/animation/AnimationFactory.java diff --git a/jme3-core/src/main/java/com/jme3/animation/AnimationUtils.java b/engine/src/core/com/jme3/animation/AnimationUtils.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/AnimationUtils.java rename to engine/src/core/com/jme3/animation/AnimationUtils.java diff --git a/jme3-core/src/main/java/com/jme3/animation/AudioTrack.java b/engine/src/core/com/jme3/animation/AudioTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/AudioTrack.java rename to engine/src/core/com/jme3/animation/AudioTrack.java diff --git a/jme3-core/src/main/java/com/jme3/animation/Bone.java b/engine/src/core/com/jme3/animation/Bone.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/Bone.java rename to engine/src/core/com/jme3/animation/Bone.java diff --git a/jme3-core/src/main/java/com/jme3/animation/BoneAnimation.java b/engine/src/core/com/jme3/animation/BoneAnimation.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/BoneAnimation.java rename to engine/src/core/com/jme3/animation/BoneAnimation.java diff --git a/jme3-core/src/main/java/com/jme3/animation/BoneTrack.java b/engine/src/core/com/jme3/animation/BoneTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/BoneTrack.java rename to engine/src/core/com/jme3/animation/BoneTrack.java diff --git a/jme3-core/src/main/java/com/jme3/animation/ClonableTrack.java b/engine/src/core/com/jme3/animation/ClonableTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/ClonableTrack.java rename to engine/src/core/com/jme3/animation/ClonableTrack.java diff --git a/jme3-core/src/main/java/com/jme3/animation/CompactArray.java b/engine/src/core/com/jme3/animation/CompactArray.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/CompactArray.java rename to engine/src/core/com/jme3/animation/CompactArray.java diff --git a/jme3-core/src/main/java/com/jme3/animation/CompactQuaternionArray.java b/engine/src/core/com/jme3/animation/CompactQuaternionArray.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/CompactQuaternionArray.java rename to engine/src/core/com/jme3/animation/CompactQuaternionArray.java diff --git a/jme3-core/src/main/java/com/jme3/animation/CompactVector3Array.java b/engine/src/core/com/jme3/animation/CompactVector3Array.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/CompactVector3Array.java rename to engine/src/core/com/jme3/animation/CompactVector3Array.java diff --git a/jme3-core/src/main/java/com/jme3/animation/EffectTrack.java b/engine/src/core/com/jme3/animation/EffectTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/EffectTrack.java rename to engine/src/core/com/jme3/animation/EffectTrack.java diff --git a/jme3-core/src/main/java/com/jme3/animation/LoopMode.java b/engine/src/core/com/jme3/animation/LoopMode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/LoopMode.java rename to engine/src/core/com/jme3/animation/LoopMode.java diff --git a/jme3-core/src/main/java/com/jme3/animation/Pose.java b/engine/src/core/com/jme3/animation/Pose.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/Pose.java rename to engine/src/core/com/jme3/animation/Pose.java diff --git a/jme3-core/src/main/java/com/jme3/animation/PoseTrack.java b/engine/src/core/com/jme3/animation/PoseTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/PoseTrack.java rename to engine/src/core/com/jme3/animation/PoseTrack.java diff --git a/jme3-core/src/main/java/com/jme3/animation/Skeleton.java b/engine/src/core/com/jme3/animation/Skeleton.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/Skeleton.java rename to engine/src/core/com/jme3/animation/Skeleton.java diff --git a/jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java b/engine/src/core/com/jme3/animation/SkeletonControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/SkeletonControl.java rename to engine/src/core/com/jme3/animation/SkeletonControl.java diff --git a/jme3-core/src/main/java/com/jme3/animation/SpatialAnimation.java b/engine/src/core/com/jme3/animation/SpatialAnimation.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/SpatialAnimation.java rename to engine/src/core/com/jme3/animation/SpatialAnimation.java diff --git a/jme3-core/src/main/java/com/jme3/animation/SpatialTrack.java b/engine/src/core/com/jme3/animation/SpatialTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/SpatialTrack.java rename to engine/src/core/com/jme3/animation/SpatialTrack.java diff --git a/jme3-core/src/main/java/com/jme3/animation/Track.java b/engine/src/core/com/jme3/animation/Track.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/Track.java rename to engine/src/core/com/jme3/animation/Track.java diff --git a/jme3-core/src/main/java/com/jme3/animation/TrackInfo.java b/engine/src/core/com/jme3/animation/TrackInfo.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/TrackInfo.java rename to engine/src/core/com/jme3/animation/TrackInfo.java diff --git a/jme3-core/src/main/java/com/jme3/animation/package.html b/engine/src/core/com/jme3/animation/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/animation/package.html rename to engine/src/core/com/jme3/animation/package.html diff --git a/jme3-core/src/main/java/com/jme3/app/AppTask.java b/engine/src/core/com/jme3/app/AppTask.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/AppTask.java rename to engine/src/core/com/jme3/app/AppTask.java diff --git a/jme3-core/src/main/java/com/jme3/app/Application.java b/engine/src/core/com/jme3/app/Application.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/Application.java rename to engine/src/core/com/jme3/app/Application.java diff --git a/jme3-core/src/main/java/com/jme3/app/ChaseCameraAppState.java b/engine/src/core/com/jme3/app/ChaseCameraAppState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/ChaseCameraAppState.java rename to engine/src/core/com/jme3/app/ChaseCameraAppState.java diff --git a/jme3-core/src/main/java/com/jme3/app/DebugKeysAppState.java b/engine/src/core/com/jme3/app/DebugKeysAppState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/DebugKeysAppState.java rename to engine/src/core/com/jme3/app/DebugKeysAppState.java diff --git a/jme3-core/src/main/java/com/jme3/app/FlyCamAppState.java b/engine/src/core/com/jme3/app/FlyCamAppState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/FlyCamAppState.java rename to engine/src/core/com/jme3/app/FlyCamAppState.java diff --git a/jme3-core/src/main/java/com/jme3/app/ResetStatsState.java b/engine/src/core/com/jme3/app/ResetStatsState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/ResetStatsState.java rename to engine/src/core/com/jme3/app/ResetStatsState.java diff --git a/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java b/engine/src/core/com/jme3/app/SimpleApplication.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/SimpleApplication.java rename to engine/src/core/com/jme3/app/SimpleApplication.java diff --git a/jme3-core/src/main/java/com/jme3/app/StatsAppState.java b/engine/src/core/com/jme3/app/StatsAppState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/StatsAppState.java rename to engine/src/core/com/jme3/app/StatsAppState.java diff --git a/jme3-core/src/main/java/com/jme3/app/StatsView.java b/engine/src/core/com/jme3/app/StatsView.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/StatsView.java rename to engine/src/core/com/jme3/app/StatsView.java diff --git a/jme3-core/src/main/java/com/jme3/app/package.html b/engine/src/core/com/jme3/app/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/package.html rename to engine/src/core/com/jme3/app/package.html diff --git a/jme3-core/src/main/java/com/jme3/app/state/AbstractAppState.java b/engine/src/core/com/jme3/app/state/AbstractAppState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/state/AbstractAppState.java rename to engine/src/core/com/jme3/app/state/AbstractAppState.java diff --git a/jme3-core/src/main/java/com/jme3/app/state/AppState.java b/engine/src/core/com/jme3/app/state/AppState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/state/AppState.java rename to engine/src/core/com/jme3/app/state/AppState.java diff --git a/jme3-core/src/main/java/com/jme3/app/state/AppStateManager.java b/engine/src/core/com/jme3/app/state/AppStateManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/state/AppStateManager.java rename to engine/src/core/com/jme3/app/state/AppStateManager.java diff --git a/jme3-core/src/main/java/com/jme3/app/state/ScreenshotAppState.java b/engine/src/core/com/jme3/app/state/ScreenshotAppState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/state/ScreenshotAppState.java rename to engine/src/core/com/jme3/app/state/ScreenshotAppState.java diff --git a/jme3-core/src/main/java/com/jme3/app/state/package.html b/engine/src/core/com/jme3/app/state/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/app/state/package.html rename to engine/src/core/com/jme3/app/state/package.html diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetConfig.java b/engine/src/core/com/jme3/asset/AssetConfig.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetConfig.java rename to engine/src/core/com/jme3/asset/AssetConfig.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetEventListener.java b/engine/src/core/com/jme3/asset/AssetEventListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetEventListener.java rename to engine/src/core/com/jme3/asset/AssetEventListener.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetInfo.java b/engine/src/core/com/jme3/asset/AssetInfo.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetInfo.java rename to engine/src/core/com/jme3/asset/AssetInfo.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetKey.java b/engine/src/core/com/jme3/asset/AssetKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetKey.java rename to engine/src/core/com/jme3/asset/AssetKey.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetLoadException.java b/engine/src/core/com/jme3/asset/AssetLoadException.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetLoadException.java rename to engine/src/core/com/jme3/asset/AssetLoadException.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetLoader.java b/engine/src/core/com/jme3/asset/AssetLoader.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetLoader.java rename to engine/src/core/com/jme3/asset/AssetLoader.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetLocator.java b/engine/src/core/com/jme3/asset/AssetLocator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetLocator.java rename to engine/src/core/com/jme3/asset/AssetLocator.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetManager.java b/engine/src/core/com/jme3/asset/AssetManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetManager.java rename to engine/src/core/com/jme3/asset/AssetManager.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetNotFoundException.java b/engine/src/core/com/jme3/asset/AssetNotFoundException.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetNotFoundException.java rename to engine/src/core/com/jme3/asset/AssetNotFoundException.java diff --git a/jme3-core/src/main/java/com/jme3/asset/AssetProcessor.java b/engine/src/core/com/jme3/asset/AssetProcessor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/AssetProcessor.java rename to engine/src/core/com/jme3/asset/AssetProcessor.java diff --git a/jme3-core/src/main/java/com/jme3/asset/CloneableAssetProcessor.java b/engine/src/core/com/jme3/asset/CloneableAssetProcessor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/CloneableAssetProcessor.java rename to engine/src/core/com/jme3/asset/CloneableAssetProcessor.java diff --git a/jme3-core/src/main/java/com/jme3/asset/CloneableSmartAsset.java b/engine/src/core/com/jme3/asset/CloneableSmartAsset.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/CloneableSmartAsset.java rename to engine/src/core/com/jme3/asset/CloneableSmartAsset.java diff --git a/jme3-core/src/main/resources/com/jme3/asset/Desktop.cfg b/engine/src/core/com/jme3/asset/Desktop.cfg similarity index 100% rename from jme3-core/src/main/resources/com/jme3/asset/Desktop.cfg rename to engine/src/core/com/jme3/asset/Desktop.cfg diff --git a/jme3-core/src/main/java/com/jme3/asset/DesktopAssetManager.java b/engine/src/core/com/jme3/asset/DesktopAssetManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/DesktopAssetManager.java rename to engine/src/core/com/jme3/asset/DesktopAssetManager.java diff --git a/jme3-core/src/main/java/com/jme3/asset/FilterKey.java b/engine/src/core/com/jme3/asset/FilterKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/FilterKey.java rename to engine/src/core/com/jme3/asset/FilterKey.java diff --git a/jme3-core/src/main/java/com/jme3/asset/ImplHandler.java b/engine/src/core/com/jme3/asset/ImplHandler.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/ImplHandler.java rename to engine/src/core/com/jme3/asset/ImplHandler.java diff --git a/jme3-core/src/main/java/com/jme3/asset/MaterialKey.java b/engine/src/core/com/jme3/asset/MaterialKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/MaterialKey.java rename to engine/src/core/com/jme3/asset/MaterialKey.java diff --git a/jme3-core/src/main/java/com/jme3/asset/ModelKey.java b/engine/src/core/com/jme3/asset/ModelKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/ModelKey.java rename to engine/src/core/com/jme3/asset/ModelKey.java diff --git a/jme3-core/src/main/java/com/jme3/asset/ShaderNodeDefinitionKey.java b/engine/src/core/com/jme3/asset/ShaderNodeDefinitionKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/ShaderNodeDefinitionKey.java rename to engine/src/core/com/jme3/asset/ShaderNodeDefinitionKey.java diff --git a/jme3-core/src/main/java/com/jme3/asset/TextureKey.java b/engine/src/core/com/jme3/asset/TextureKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/TextureKey.java rename to engine/src/core/com/jme3/asset/TextureKey.java diff --git a/jme3-core/src/main/java/com/jme3/asset/ThreadingManager.java b/engine/src/core/com/jme3/asset/ThreadingManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/ThreadingManager.java rename to engine/src/core/com/jme3/asset/ThreadingManager.java diff --git a/jme3-core/src/main/java/com/jme3/asset/cache/AssetCache.java b/engine/src/core/com/jme3/asset/cache/AssetCache.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/cache/AssetCache.java rename to engine/src/core/com/jme3/asset/cache/AssetCache.java diff --git a/jme3-core/src/main/java/com/jme3/asset/cache/SimpleAssetCache.java b/engine/src/core/com/jme3/asset/cache/SimpleAssetCache.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/cache/SimpleAssetCache.java rename to engine/src/core/com/jme3/asset/cache/SimpleAssetCache.java diff --git a/jme3-core/src/main/java/com/jme3/asset/cache/WeakRefAssetCache.java b/engine/src/core/com/jme3/asset/cache/WeakRefAssetCache.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/cache/WeakRefAssetCache.java rename to engine/src/core/com/jme3/asset/cache/WeakRefAssetCache.java diff --git a/jme3-core/src/main/java/com/jme3/asset/cache/WeakRefCloneAssetCache.java b/engine/src/core/com/jme3/asset/cache/WeakRefCloneAssetCache.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/cache/WeakRefCloneAssetCache.java rename to engine/src/core/com/jme3/asset/cache/WeakRefCloneAssetCache.java diff --git a/jme3-core/src/main/java/com/jme3/asset/package.html b/engine/src/core/com/jme3/asset/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/asset/package.html rename to engine/src/core/com/jme3/asset/package.html diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioBuffer.java b/engine/src/core/com/jme3/audio/AudioBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioBuffer.java rename to engine/src/core/com/jme3/audio/AudioBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioContext.java b/engine/src/core/com/jme3/audio/AudioContext.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioContext.java rename to engine/src/core/com/jme3/audio/AudioContext.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioData.java b/engine/src/core/com/jme3/audio/AudioData.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioData.java rename to engine/src/core/com/jme3/audio/AudioData.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioKey.java b/engine/src/core/com/jme3/audio/AudioKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioKey.java rename to engine/src/core/com/jme3/audio/AudioKey.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioNode.java b/engine/src/core/com/jme3/audio/AudioNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioNode.java rename to engine/src/core/com/jme3/audio/AudioNode.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioParam.java b/engine/src/core/com/jme3/audio/AudioParam.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioParam.java rename to engine/src/core/com/jme3/audio/AudioParam.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioRenderer.java b/engine/src/core/com/jme3/audio/AudioRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioRenderer.java rename to engine/src/core/com/jme3/audio/AudioRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioSource.java b/engine/src/core/com/jme3/audio/AudioSource.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioSource.java rename to engine/src/core/com/jme3/audio/AudioSource.java diff --git a/jme3-core/src/main/java/com/jme3/audio/AudioStream.java b/engine/src/core/com/jme3/audio/AudioStream.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/AudioStream.java rename to engine/src/core/com/jme3/audio/AudioStream.java diff --git a/jme3-core/src/main/java/com/jme3/audio/Environment.java b/engine/src/core/com/jme3/audio/Environment.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/Environment.java rename to engine/src/core/com/jme3/audio/Environment.java diff --git a/jme3-core/src/main/java/com/jme3/audio/Filter.java b/engine/src/core/com/jme3/audio/Filter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/Filter.java rename to engine/src/core/com/jme3/audio/Filter.java diff --git a/jme3-core/src/main/java/com/jme3/audio/Listener.java b/engine/src/core/com/jme3/audio/Listener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/Listener.java rename to engine/src/core/com/jme3/audio/Listener.java diff --git a/jme3-core/src/main/java/com/jme3/audio/ListenerParam.java b/engine/src/core/com/jme3/audio/ListenerParam.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/ListenerParam.java rename to engine/src/core/com/jme3/audio/ListenerParam.java diff --git a/jme3-core/src/main/java/com/jme3/audio/LowPassFilter.java b/engine/src/core/com/jme3/audio/LowPassFilter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/LowPassFilter.java rename to engine/src/core/com/jme3/audio/LowPassFilter.java diff --git a/jme3-core/src/main/java/com/jme3/audio/SeekableStream.java b/engine/src/core/com/jme3/audio/SeekableStream.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/audio/SeekableStream.java rename to engine/src/core/com/jme3/audio/SeekableStream.java diff --git a/jme3-core/src/main/java/com/jme3/bounding/BoundingBox.java b/engine/src/core/com/jme3/bounding/BoundingBox.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/bounding/BoundingBox.java rename to engine/src/core/com/jme3/bounding/BoundingBox.java diff --git a/jme3-core/src/main/java/com/jme3/bounding/BoundingSphere.java b/engine/src/core/com/jme3/bounding/BoundingSphere.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/bounding/BoundingSphere.java rename to engine/src/core/com/jme3/bounding/BoundingSphere.java diff --git a/jme3-core/src/main/java/com/jme3/bounding/BoundingVolume.java b/engine/src/core/com/jme3/bounding/BoundingVolume.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/bounding/BoundingVolume.java rename to engine/src/core/com/jme3/bounding/BoundingVolume.java diff --git a/jme3-core/src/main/java/com/jme3/bounding/Intersection.java b/engine/src/core/com/jme3/bounding/Intersection.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/bounding/Intersection.java rename to engine/src/core/com/jme3/bounding/Intersection.java diff --git a/jme3-core/src/main/java/com/jme3/bounding/OrientedBoundingBox.java b/engine/src/core/com/jme3/bounding/OrientedBoundingBox.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/bounding/OrientedBoundingBox.java rename to engine/src/core/com/jme3/bounding/OrientedBoundingBox.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/Cinematic.java b/engine/src/core/com/jme3/cinematic/Cinematic.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/Cinematic.java rename to engine/src/core/com/jme3/cinematic/Cinematic.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/KeyFrame.java b/engine/src/core/com/jme3/cinematic/KeyFrame.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/KeyFrame.java rename to engine/src/core/com/jme3/cinematic/KeyFrame.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/MotionPath.java b/engine/src/core/com/jme3/cinematic/MotionPath.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/MotionPath.java rename to engine/src/core/com/jme3/cinematic/MotionPath.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/MotionPathListener.java b/engine/src/core/com/jme3/cinematic/MotionPathListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/MotionPathListener.java rename to engine/src/core/com/jme3/cinematic/MotionPathListener.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/PlayState.java b/engine/src/core/com/jme3/cinematic/PlayState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/PlayState.java rename to engine/src/core/com/jme3/cinematic/PlayState.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/TimeLine.java b/engine/src/core/com/jme3/cinematic/TimeLine.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/TimeLine.java rename to engine/src/core/com/jme3/cinematic/TimeLine.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/AbstractCinematicEvent.java b/engine/src/core/com/jme3/cinematic/events/AbstractCinematicEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/AbstractCinematicEvent.java rename to engine/src/core/com/jme3/cinematic/events/AbstractCinematicEvent.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/AnimationEvent.java b/engine/src/core/com/jme3/cinematic/events/AnimationEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/AnimationEvent.java rename to engine/src/core/com/jme3/cinematic/events/AnimationEvent.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/AnimationTrack.java b/engine/src/core/com/jme3/cinematic/events/AnimationTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/AnimationTrack.java rename to engine/src/core/com/jme3/cinematic/events/AnimationTrack.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/CinematicEvent.java b/engine/src/core/com/jme3/cinematic/events/CinematicEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/CinematicEvent.java rename to engine/src/core/com/jme3/cinematic/events/CinematicEvent.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/CinematicEventListener.java b/engine/src/core/com/jme3/cinematic/events/CinematicEventListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/CinematicEventListener.java rename to engine/src/core/com/jme3/cinematic/events/CinematicEventListener.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/MotionEvent.java b/engine/src/core/com/jme3/cinematic/events/MotionEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/MotionEvent.java rename to engine/src/core/com/jme3/cinematic/events/MotionEvent.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/MotionTrack.java b/engine/src/core/com/jme3/cinematic/events/MotionTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/MotionTrack.java rename to engine/src/core/com/jme3/cinematic/events/MotionTrack.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/SoundEvent.java b/engine/src/core/com/jme3/cinematic/events/SoundEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/SoundEvent.java rename to engine/src/core/com/jme3/cinematic/events/SoundEvent.java diff --git a/jme3-core/src/main/java/com/jme3/cinematic/events/SoundTrack.java b/engine/src/core/com/jme3/cinematic/events/SoundTrack.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/cinematic/events/SoundTrack.java rename to engine/src/core/com/jme3/cinematic/events/SoundTrack.java diff --git a/jme3-core/src/main/java/com/jme3/collision/Collidable.java b/engine/src/core/com/jme3/collision/Collidable.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/Collidable.java rename to engine/src/core/com/jme3/collision/Collidable.java diff --git a/jme3-core/src/main/java/com/jme3/collision/CollisionResult.java b/engine/src/core/com/jme3/collision/CollisionResult.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/CollisionResult.java rename to engine/src/core/com/jme3/collision/CollisionResult.java diff --git a/jme3-core/src/main/java/com/jme3/collision/CollisionResults.java b/engine/src/core/com/jme3/collision/CollisionResults.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/CollisionResults.java rename to engine/src/core/com/jme3/collision/CollisionResults.java diff --git a/jme3-core/src/main/java/com/jme3/collision/MotionAllowedListener.java b/engine/src/core/com/jme3/collision/MotionAllowedListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/MotionAllowedListener.java rename to engine/src/core/com/jme3/collision/MotionAllowedListener.java diff --git a/jme3-core/src/main/java/com/jme3/collision/SweepSphere.java b/engine/src/core/com/jme3/collision/SweepSphere.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/SweepSphere.java rename to engine/src/core/com/jme3/collision/SweepSphere.java diff --git a/jme3-core/src/main/java/com/jme3/collision/UnsupportedCollisionException.java b/engine/src/core/com/jme3/collision/UnsupportedCollisionException.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/UnsupportedCollisionException.java rename to engine/src/core/com/jme3/collision/UnsupportedCollisionException.java diff --git a/jme3-core/src/main/java/com/jme3/collision/bih/BIHNode.java b/engine/src/core/com/jme3/collision/bih/BIHNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/bih/BIHNode.java rename to engine/src/core/com/jme3/collision/bih/BIHNode.java diff --git a/jme3-core/src/main/java/com/jme3/collision/bih/BIHTree.java b/engine/src/core/com/jme3/collision/bih/BIHTree.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/bih/BIHTree.java rename to engine/src/core/com/jme3/collision/bih/BIHTree.java diff --git a/jme3-core/src/main/java/com/jme3/collision/bih/BIHTriangle.java b/engine/src/core/com/jme3/collision/bih/BIHTriangle.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/bih/BIHTriangle.java rename to engine/src/core/com/jme3/collision/bih/BIHTriangle.java diff --git a/jme3-core/src/main/java/com/jme3/collision/bih/TriangleAxisComparator.java b/engine/src/core/com/jme3/collision/bih/TriangleAxisComparator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/collision/bih/TriangleAxisComparator.java rename to engine/src/core/com/jme3/collision/bih/TriangleAxisComparator.java diff --git a/jme3-core/src/main/java/com/jme3/effect/Particle.java b/engine/src/core/com/jme3/effect/Particle.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/Particle.java rename to engine/src/core/com/jme3/effect/Particle.java diff --git a/jme3-core/src/main/java/com/jme3/effect/ParticleComparator.java b/engine/src/core/com/jme3/effect/ParticleComparator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/ParticleComparator.java rename to engine/src/core/com/jme3/effect/ParticleComparator.java diff --git a/jme3-core/src/main/java/com/jme3/effect/ParticleEmitter.java b/engine/src/core/com/jme3/effect/ParticleEmitter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/ParticleEmitter.java rename to engine/src/core/com/jme3/effect/ParticleEmitter.java diff --git a/jme3-core/src/main/java/com/jme3/effect/ParticleMesh.java b/engine/src/core/com/jme3/effect/ParticleMesh.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/ParticleMesh.java rename to engine/src/core/com/jme3/effect/ParticleMesh.java diff --git a/jme3-core/src/main/java/com/jme3/effect/ParticlePointMesh.java b/engine/src/core/com/jme3/effect/ParticlePointMesh.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/ParticlePointMesh.java rename to engine/src/core/com/jme3/effect/ParticlePointMesh.java diff --git a/jme3-core/src/main/java/com/jme3/effect/ParticleTriMesh.java b/engine/src/core/com/jme3/effect/ParticleTriMesh.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/ParticleTriMesh.java rename to engine/src/core/com/jme3/effect/ParticleTriMesh.java diff --git a/jme3-core/src/main/java/com/jme3/effect/influencers/DefaultParticleInfluencer.java b/engine/src/core/com/jme3/effect/influencers/DefaultParticleInfluencer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/influencers/DefaultParticleInfluencer.java rename to engine/src/core/com/jme3/effect/influencers/DefaultParticleInfluencer.java diff --git a/jme3-core/src/main/java/com/jme3/effect/influencers/EmptyParticleInfluencer.java b/engine/src/core/com/jme3/effect/influencers/EmptyParticleInfluencer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/influencers/EmptyParticleInfluencer.java rename to engine/src/core/com/jme3/effect/influencers/EmptyParticleInfluencer.java diff --git a/jme3-core/src/main/java/com/jme3/effect/influencers/NewtonianParticleInfluencer.java b/engine/src/core/com/jme3/effect/influencers/NewtonianParticleInfluencer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/influencers/NewtonianParticleInfluencer.java rename to engine/src/core/com/jme3/effect/influencers/NewtonianParticleInfluencer.java diff --git a/jme3-core/src/main/java/com/jme3/effect/influencers/ParticleInfluencer.java b/engine/src/core/com/jme3/effect/influencers/ParticleInfluencer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/influencers/ParticleInfluencer.java rename to engine/src/core/com/jme3/effect/influencers/ParticleInfluencer.java diff --git a/jme3-core/src/main/java/com/jme3/effect/influencers/RadialParticleInfluencer.java b/engine/src/core/com/jme3/effect/influencers/RadialParticleInfluencer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/influencers/RadialParticleInfluencer.java rename to engine/src/core/com/jme3/effect/influencers/RadialParticleInfluencer.java diff --git a/jme3-core/src/main/java/com/jme3/effect/package.html b/engine/src/core/com/jme3/effect/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/package.html rename to engine/src/core/com/jme3/effect/package.html diff --git a/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterBoxShape.java b/engine/src/core/com/jme3/effect/shapes/EmitterBoxShape.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/shapes/EmitterBoxShape.java rename to engine/src/core/com/jme3/effect/shapes/EmitterBoxShape.java diff --git a/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterMeshConvexHullShape.java b/engine/src/core/com/jme3/effect/shapes/EmitterMeshConvexHullShape.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/shapes/EmitterMeshConvexHullShape.java rename to engine/src/core/com/jme3/effect/shapes/EmitterMeshConvexHullShape.java diff --git a/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterMeshFaceShape.java b/engine/src/core/com/jme3/effect/shapes/EmitterMeshFaceShape.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/shapes/EmitterMeshFaceShape.java rename to engine/src/core/com/jme3/effect/shapes/EmitterMeshFaceShape.java diff --git a/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterMeshVertexShape.java b/engine/src/core/com/jme3/effect/shapes/EmitterMeshVertexShape.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/shapes/EmitterMeshVertexShape.java rename to engine/src/core/com/jme3/effect/shapes/EmitterMeshVertexShape.java diff --git a/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterPointShape.java b/engine/src/core/com/jme3/effect/shapes/EmitterPointShape.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/shapes/EmitterPointShape.java rename to engine/src/core/com/jme3/effect/shapes/EmitterPointShape.java diff --git a/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterShape.java b/engine/src/core/com/jme3/effect/shapes/EmitterShape.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/shapes/EmitterShape.java rename to engine/src/core/com/jme3/effect/shapes/EmitterShape.java diff --git a/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterSphereShape.java b/engine/src/core/com/jme3/effect/shapes/EmitterSphereShape.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/effect/shapes/EmitterSphereShape.java rename to engine/src/core/com/jme3/effect/shapes/EmitterSphereShape.java diff --git a/jme3-core/src/main/java/com/jme3/export/FormatVersion.java b/engine/src/core/com/jme3/export/FormatVersion.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/FormatVersion.java rename to engine/src/core/com/jme3/export/FormatVersion.java diff --git a/jme3-core/src/main/java/com/jme3/export/InputCapsule.java b/engine/src/core/com/jme3/export/InputCapsule.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/InputCapsule.java rename to engine/src/core/com/jme3/export/InputCapsule.java diff --git a/jme3-core/src/main/java/com/jme3/export/JmeExporter.java b/engine/src/core/com/jme3/export/JmeExporter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/JmeExporter.java rename to engine/src/core/com/jme3/export/JmeExporter.java diff --git a/jme3-core/src/main/java/com/jme3/export/JmeImporter.java b/engine/src/core/com/jme3/export/JmeImporter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/JmeImporter.java rename to engine/src/core/com/jme3/export/JmeImporter.java diff --git a/jme3-core/src/main/java/com/jme3/export/NullSavable.java b/engine/src/core/com/jme3/export/NullSavable.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/NullSavable.java rename to engine/src/core/com/jme3/export/NullSavable.java diff --git a/jme3-core/src/main/java/com/jme3/export/OutputCapsule.java b/engine/src/core/com/jme3/export/OutputCapsule.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/OutputCapsule.java rename to engine/src/core/com/jme3/export/OutputCapsule.java diff --git a/jme3-core/src/main/java/com/jme3/export/ReadListener.java b/engine/src/core/com/jme3/export/ReadListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/ReadListener.java rename to engine/src/core/com/jme3/export/ReadListener.java diff --git a/jme3-core/src/main/java/com/jme3/export/Savable.java b/engine/src/core/com/jme3/export/Savable.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/Savable.java rename to engine/src/core/com/jme3/export/Savable.java diff --git a/jme3-core/src/main/java/com/jme3/export/SavableClassUtil.java b/engine/src/core/com/jme3/export/SavableClassUtil.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/export/SavableClassUtil.java rename to engine/src/core/com/jme3/export/SavableClassUtil.java diff --git a/jme3-core/src/main/java/com/jme3/font/BitmapCharacter.java b/engine/src/core/com/jme3/font/BitmapCharacter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/BitmapCharacter.java rename to engine/src/core/com/jme3/font/BitmapCharacter.java diff --git a/jme3-core/src/main/java/com/jme3/font/BitmapCharacterSet.java b/engine/src/core/com/jme3/font/BitmapCharacterSet.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/BitmapCharacterSet.java rename to engine/src/core/com/jme3/font/BitmapCharacterSet.java diff --git a/jme3-core/src/main/java/com/jme3/font/BitmapFont.java b/engine/src/core/com/jme3/font/BitmapFont.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/BitmapFont.java rename to engine/src/core/com/jme3/font/BitmapFont.java diff --git a/jme3-core/src/main/java/com/jme3/font/BitmapText.java b/engine/src/core/com/jme3/font/BitmapText.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/BitmapText.java rename to engine/src/core/com/jme3/font/BitmapText.java diff --git a/jme3-core/src/main/java/com/jme3/font/BitmapTextPage.java b/engine/src/core/com/jme3/font/BitmapTextPage.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/BitmapTextPage.java rename to engine/src/core/com/jme3/font/BitmapTextPage.java diff --git a/jme3-core/src/main/java/com/jme3/font/ColorTags.java b/engine/src/core/com/jme3/font/ColorTags.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/ColorTags.java rename to engine/src/core/com/jme3/font/ColorTags.java diff --git a/jme3-core/src/main/java/com/jme3/font/Kerning.java b/engine/src/core/com/jme3/font/Kerning.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/Kerning.java rename to engine/src/core/com/jme3/font/Kerning.java diff --git a/jme3-core/src/main/java/com/jme3/font/LetterQuad.java b/engine/src/core/com/jme3/font/LetterQuad.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/LetterQuad.java rename to engine/src/core/com/jme3/font/LetterQuad.java diff --git a/jme3-core/src/main/java/com/jme3/font/Letters.java b/engine/src/core/com/jme3/font/Letters.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/Letters.java rename to engine/src/core/com/jme3/font/Letters.java diff --git a/jme3-core/src/main/java/com/jme3/font/LineWrapMode.java b/engine/src/core/com/jme3/font/LineWrapMode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/LineWrapMode.java rename to engine/src/core/com/jme3/font/LineWrapMode.java diff --git a/jme3-core/src/main/java/com/jme3/font/Rectangle.java b/engine/src/core/com/jme3/font/Rectangle.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/Rectangle.java rename to engine/src/core/com/jme3/font/Rectangle.java diff --git a/jme3-core/src/main/java/com/jme3/font/StringBlock.java b/engine/src/core/com/jme3/font/StringBlock.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/font/StringBlock.java rename to engine/src/core/com/jme3/font/StringBlock.java diff --git a/jme3-core/src/main/java/com/jme3/input/AbstractJoystick.java b/engine/src/core/com/jme3/input/AbstractJoystick.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/AbstractJoystick.java rename to engine/src/core/com/jme3/input/AbstractJoystick.java diff --git a/jme3-core/src/main/java/com/jme3/input/CameraInput.java b/engine/src/core/com/jme3/input/CameraInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/CameraInput.java rename to engine/src/core/com/jme3/input/CameraInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/ChaseCamera.java b/engine/src/core/com/jme3/input/ChaseCamera.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/ChaseCamera.java rename to engine/src/core/com/jme3/input/ChaseCamera.java diff --git a/jme3-core/src/main/java/com/jme3/input/DefaultJoystickAxis.java b/engine/src/core/com/jme3/input/DefaultJoystickAxis.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/DefaultJoystickAxis.java rename to engine/src/core/com/jme3/input/DefaultJoystickAxis.java diff --git a/jme3-core/src/main/java/com/jme3/input/DefaultJoystickButton.java b/engine/src/core/com/jme3/input/DefaultJoystickButton.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/DefaultJoystickButton.java rename to engine/src/core/com/jme3/input/DefaultJoystickButton.java diff --git a/jme3-core/src/main/java/com/jme3/input/FlyByCamera.java b/engine/src/core/com/jme3/input/FlyByCamera.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/FlyByCamera.java rename to engine/src/core/com/jme3/input/FlyByCamera.java diff --git a/jme3-core/src/main/java/com/jme3/input/Input.java b/engine/src/core/com/jme3/input/Input.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/Input.java rename to engine/src/core/com/jme3/input/Input.java diff --git a/jme3-core/src/main/java/com/jme3/input/InputManager.java b/engine/src/core/com/jme3/input/InputManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/InputManager.java rename to engine/src/core/com/jme3/input/InputManager.java diff --git a/jme3-core/src/main/java/com/jme3/input/JoyInput.java b/engine/src/core/com/jme3/input/JoyInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/JoyInput.java rename to engine/src/core/com/jme3/input/JoyInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/Joystick.java b/engine/src/core/com/jme3/input/Joystick.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/Joystick.java rename to engine/src/core/com/jme3/input/Joystick.java diff --git a/jme3-core/src/main/java/com/jme3/input/JoystickAxis.java b/engine/src/core/com/jme3/input/JoystickAxis.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/JoystickAxis.java rename to engine/src/core/com/jme3/input/JoystickAxis.java diff --git a/jme3-core/src/main/java/com/jme3/input/JoystickButton.java b/engine/src/core/com/jme3/input/JoystickButton.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/JoystickButton.java rename to engine/src/core/com/jme3/input/JoystickButton.java diff --git a/jme3-core/src/main/java/com/jme3/input/JoystickCompatibilityMappings.java b/engine/src/core/com/jme3/input/JoystickCompatibilityMappings.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/JoystickCompatibilityMappings.java rename to engine/src/core/com/jme3/input/JoystickCompatibilityMappings.java diff --git a/jme3-core/src/main/java/com/jme3/input/KeyInput.java b/engine/src/core/com/jme3/input/KeyInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/KeyInput.java rename to engine/src/core/com/jme3/input/KeyInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/KeyNames.java b/engine/src/core/com/jme3/input/KeyNames.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/KeyNames.java rename to engine/src/core/com/jme3/input/KeyNames.java diff --git a/jme3-core/src/main/java/com/jme3/input/MouseInput.java b/engine/src/core/com/jme3/input/MouseInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/MouseInput.java rename to engine/src/core/com/jme3/input/MouseInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/RawInputListener.java b/engine/src/core/com/jme3/input/RawInputListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/RawInputListener.java rename to engine/src/core/com/jme3/input/RawInputListener.java diff --git a/jme3-core/src/main/java/com/jme3/input/SensorJoystickAxis.java b/engine/src/core/com/jme3/input/SensorJoystickAxis.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/SensorJoystickAxis.java rename to engine/src/core/com/jme3/input/SensorJoystickAxis.java diff --git a/jme3-core/src/main/java/com/jme3/input/SoftTextDialogInput.java b/engine/src/core/com/jme3/input/SoftTextDialogInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/SoftTextDialogInput.java rename to engine/src/core/com/jme3/input/SoftTextDialogInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/TouchInput.java b/engine/src/core/com/jme3/input/TouchInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/TouchInput.java rename to engine/src/core/com/jme3/input/TouchInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/ActionListener.java b/engine/src/core/com/jme3/input/controls/ActionListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/ActionListener.java rename to engine/src/core/com/jme3/input/controls/ActionListener.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/AnalogListener.java b/engine/src/core/com/jme3/input/controls/AnalogListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/AnalogListener.java rename to engine/src/core/com/jme3/input/controls/AnalogListener.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/InputListener.java b/engine/src/core/com/jme3/input/controls/InputListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/InputListener.java rename to engine/src/core/com/jme3/input/controls/InputListener.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/JoyAxisTrigger.java b/engine/src/core/com/jme3/input/controls/JoyAxisTrigger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/JoyAxisTrigger.java rename to engine/src/core/com/jme3/input/controls/JoyAxisTrigger.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/JoyButtonTrigger.java b/engine/src/core/com/jme3/input/controls/JoyButtonTrigger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/JoyButtonTrigger.java rename to engine/src/core/com/jme3/input/controls/JoyButtonTrigger.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/KeyTrigger.java b/engine/src/core/com/jme3/input/controls/KeyTrigger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/KeyTrigger.java rename to engine/src/core/com/jme3/input/controls/KeyTrigger.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/MouseAxisTrigger.java b/engine/src/core/com/jme3/input/controls/MouseAxisTrigger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/MouseAxisTrigger.java rename to engine/src/core/com/jme3/input/controls/MouseAxisTrigger.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/MouseButtonTrigger.java b/engine/src/core/com/jme3/input/controls/MouseButtonTrigger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/MouseButtonTrigger.java rename to engine/src/core/com/jme3/input/controls/MouseButtonTrigger.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/SoftTextDialogInputListener.java b/engine/src/core/com/jme3/input/controls/SoftTextDialogInputListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/SoftTextDialogInputListener.java rename to engine/src/core/com/jme3/input/controls/SoftTextDialogInputListener.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/TouchListener.java b/engine/src/core/com/jme3/input/controls/TouchListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/TouchListener.java rename to engine/src/core/com/jme3/input/controls/TouchListener.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/TouchTrigger.java b/engine/src/core/com/jme3/input/controls/TouchTrigger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/TouchTrigger.java rename to engine/src/core/com/jme3/input/controls/TouchTrigger.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/Trigger.java b/engine/src/core/com/jme3/input/controls/Trigger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/Trigger.java rename to engine/src/core/com/jme3/input/controls/Trigger.java diff --git a/jme3-core/src/main/java/com/jme3/input/controls/package.html b/engine/src/core/com/jme3/input/controls/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/controls/package.html rename to engine/src/core/com/jme3/input/controls/package.html diff --git a/jme3-core/src/main/java/com/jme3/input/dummy/DummyInput.java b/engine/src/core/com/jme3/input/dummy/DummyInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/dummy/DummyInput.java rename to engine/src/core/com/jme3/input/dummy/DummyInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/dummy/DummyKeyInput.java b/engine/src/core/com/jme3/input/dummy/DummyKeyInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/dummy/DummyKeyInput.java rename to engine/src/core/com/jme3/input/dummy/DummyKeyInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/dummy/DummyMouseInput.java b/engine/src/core/com/jme3/input/dummy/DummyMouseInput.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/dummy/DummyMouseInput.java rename to engine/src/core/com/jme3/input/dummy/DummyMouseInput.java diff --git a/jme3-core/src/main/java/com/jme3/input/dummy/package.html b/engine/src/core/com/jme3/input/dummy/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/dummy/package.html rename to engine/src/core/com/jme3/input/dummy/package.html diff --git a/jme3-core/src/main/java/com/jme3/input/event/InputEvent.java b/engine/src/core/com/jme3/input/event/InputEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/InputEvent.java rename to engine/src/core/com/jme3/input/event/InputEvent.java diff --git a/jme3-core/src/main/java/com/jme3/input/event/JoyAxisEvent.java b/engine/src/core/com/jme3/input/event/JoyAxisEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/JoyAxisEvent.java rename to engine/src/core/com/jme3/input/event/JoyAxisEvent.java diff --git a/jme3-core/src/main/java/com/jme3/input/event/JoyButtonEvent.java b/engine/src/core/com/jme3/input/event/JoyButtonEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/JoyButtonEvent.java rename to engine/src/core/com/jme3/input/event/JoyButtonEvent.java diff --git a/jme3-core/src/main/java/com/jme3/input/event/KeyInputEvent.java b/engine/src/core/com/jme3/input/event/KeyInputEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/KeyInputEvent.java rename to engine/src/core/com/jme3/input/event/KeyInputEvent.java diff --git a/jme3-core/src/main/java/com/jme3/input/event/MouseButtonEvent.java b/engine/src/core/com/jme3/input/event/MouseButtonEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/MouseButtonEvent.java rename to engine/src/core/com/jme3/input/event/MouseButtonEvent.java diff --git a/jme3-core/src/main/java/com/jme3/input/event/MouseMotionEvent.java b/engine/src/core/com/jme3/input/event/MouseMotionEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/MouseMotionEvent.java rename to engine/src/core/com/jme3/input/event/MouseMotionEvent.java diff --git a/jme3-core/src/main/java/com/jme3/input/event/TouchEvent.java b/engine/src/core/com/jme3/input/event/TouchEvent.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/TouchEvent.java rename to engine/src/core/com/jme3/input/event/TouchEvent.java diff --git a/jme3-core/src/main/java/com/jme3/input/event/package.html b/engine/src/core/com/jme3/input/event/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/event/package.html rename to engine/src/core/com/jme3/input/event/package.html diff --git a/jme3-core/src/main/java/com/jme3/input/package.html b/engine/src/core/com/jme3/input/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/input/package.html rename to engine/src/core/com/jme3/input/package.html diff --git a/jme3-core/src/main/java/com/jme3/light/AmbientLight.java b/engine/src/core/com/jme3/light/AmbientLight.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/light/AmbientLight.java rename to engine/src/core/com/jme3/light/AmbientLight.java diff --git a/jme3-core/src/main/java/com/jme3/light/DirectionalLight.java b/engine/src/core/com/jme3/light/DirectionalLight.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/light/DirectionalLight.java rename to engine/src/core/com/jme3/light/DirectionalLight.java diff --git a/jme3-core/src/main/java/com/jme3/light/Light.java b/engine/src/core/com/jme3/light/Light.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/light/Light.java rename to engine/src/core/com/jme3/light/Light.java diff --git a/jme3-core/src/main/java/com/jme3/light/LightList.java b/engine/src/core/com/jme3/light/LightList.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/light/LightList.java rename to engine/src/core/com/jme3/light/LightList.java diff --git a/jme3-core/src/main/java/com/jme3/light/PointLight.java b/engine/src/core/com/jme3/light/PointLight.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/light/PointLight.java rename to engine/src/core/com/jme3/light/PointLight.java diff --git a/jme3-core/src/main/java/com/jme3/light/SpotLight.java b/engine/src/core/com/jme3/light/SpotLight.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/light/SpotLight.java rename to engine/src/core/com/jme3/light/SpotLight.java diff --git a/jme3-core/src/main/java/com/jme3/light/package.html b/engine/src/core/com/jme3/light/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/light/package.html rename to engine/src/core/com/jme3/light/package.html diff --git a/jme3-core/src/main/java/com/jme3/material/FixedFuncBinding.java b/engine/src/core/com/jme3/material/FixedFuncBinding.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/FixedFuncBinding.java rename to engine/src/core/com/jme3/material/FixedFuncBinding.java diff --git a/jme3-core/src/main/java/com/jme3/material/MatParam.java b/engine/src/core/com/jme3/material/MatParam.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/MatParam.java rename to engine/src/core/com/jme3/material/MatParam.java diff --git a/jme3-core/src/main/java/com/jme3/material/MatParamTexture.java b/engine/src/core/com/jme3/material/MatParamTexture.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/MatParamTexture.java rename to engine/src/core/com/jme3/material/MatParamTexture.java diff --git a/jme3-core/src/main/java/com/jme3/material/Material.java b/engine/src/core/com/jme3/material/Material.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/Material.java rename to engine/src/core/com/jme3/material/Material.java diff --git a/jme3-core/src/main/java/com/jme3/material/MaterialDef.java b/engine/src/core/com/jme3/material/MaterialDef.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/MaterialDef.java rename to engine/src/core/com/jme3/material/MaterialDef.java diff --git a/jme3-core/src/main/java/com/jme3/material/MaterialList.java b/engine/src/core/com/jme3/material/MaterialList.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/MaterialList.java rename to engine/src/core/com/jme3/material/MaterialList.java diff --git a/jme3-core/src/main/java/com/jme3/material/MaterialProcessor.java b/engine/src/core/com/jme3/material/MaterialProcessor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/MaterialProcessor.java rename to engine/src/core/com/jme3/material/MaterialProcessor.java diff --git a/jme3-core/src/main/java/com/jme3/material/RenderState.java b/engine/src/core/com/jme3/material/RenderState.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/RenderState.java rename to engine/src/core/com/jme3/material/RenderState.java diff --git a/jme3-core/src/main/java/com/jme3/material/ShaderGenerationInfo.java b/engine/src/core/com/jme3/material/ShaderGenerationInfo.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/ShaderGenerationInfo.java rename to engine/src/core/com/jme3/material/ShaderGenerationInfo.java diff --git a/jme3-core/src/main/java/com/jme3/material/Technique.java b/engine/src/core/com/jme3/material/Technique.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/Technique.java rename to engine/src/core/com/jme3/material/Technique.java diff --git a/jme3-core/src/main/java/com/jme3/material/TechniqueDef.java b/engine/src/core/com/jme3/material/TechniqueDef.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/TechniqueDef.java rename to engine/src/core/com/jme3/material/TechniqueDef.java diff --git a/jme3-core/src/main/java/com/jme3/material/package.html b/engine/src/core/com/jme3/material/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/material/package.html rename to engine/src/core/com/jme3/material/package.html diff --git a/jme3-core/src/main/java/com/jme3/math/AbstractTriangle.java b/engine/src/core/com/jme3/math/AbstractTriangle.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/AbstractTriangle.java rename to engine/src/core/com/jme3/math/AbstractTriangle.java diff --git a/jme3-core/src/main/java/com/jme3/math/ColorRGBA.java b/engine/src/core/com/jme3/math/ColorRGBA.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/ColorRGBA.java rename to engine/src/core/com/jme3/math/ColorRGBA.java diff --git a/jme3-core/src/main/java/com/jme3/math/CurveAndSurfaceMath.java b/engine/src/core/com/jme3/math/CurveAndSurfaceMath.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/CurveAndSurfaceMath.java rename to engine/src/core/com/jme3/math/CurveAndSurfaceMath.java diff --git a/jme3-core/src/main/java/com/jme3/math/Eigen3f.java b/engine/src/core/com/jme3/math/Eigen3f.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Eigen3f.java rename to engine/src/core/com/jme3/math/Eigen3f.java diff --git a/jme3-core/src/main/java/com/jme3/math/FastMath.java b/engine/src/core/com/jme3/math/FastMath.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/FastMath.java rename to engine/src/core/com/jme3/math/FastMath.java diff --git a/jme3-core/src/main/java/com/jme3/math/Line.java b/engine/src/core/com/jme3/math/Line.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Line.java rename to engine/src/core/com/jme3/math/Line.java diff --git a/jme3-core/src/main/java/com/jme3/math/LineSegment.java b/engine/src/core/com/jme3/math/LineSegment.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/LineSegment.java rename to engine/src/core/com/jme3/math/LineSegment.java diff --git a/jme3-core/src/main/java/com/jme3/math/Matrix3f.java b/engine/src/core/com/jme3/math/Matrix3f.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Matrix3f.java rename to engine/src/core/com/jme3/math/Matrix3f.java diff --git a/jme3-core/src/main/java/com/jme3/math/Matrix4f.java b/engine/src/core/com/jme3/math/Matrix4f.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Matrix4f.java rename to engine/src/core/com/jme3/math/Matrix4f.java diff --git a/jme3-core/src/main/java/com/jme3/math/Plane.java b/engine/src/core/com/jme3/math/Plane.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Plane.java rename to engine/src/core/com/jme3/math/Plane.java diff --git a/jme3-core/src/main/java/com/jme3/math/Quaternion.java b/engine/src/core/com/jme3/math/Quaternion.java similarity index 96% rename from jme3-core/src/main/java/com/jme3/math/Quaternion.java rename to engine/src/core/com/jme3/math/Quaternion.java index 1591a13a0..1ee1305d2 100644 --- a/jme3-core/src/main/java/com/jme3/math/Quaternion.java +++ b/engine/src/core/com/jme3/math/Quaternion.java @@ -462,7 +462,10 @@ public final class Quaternion implements Savable, Cloneable, java.io.Serializabl * @return the rotation matrix representation of this quaternion. */ public Matrix4f toRotationMatrix(Matrix4f result) { - Vector3f originalScale = result.toScaleVector(); + TempVars tempv = TempVars.get(); + Vector3f originalScale = tempv.vect1; + + result.toScaleVector(originalScale); result.setScale(1, 1, 1); float norm = norm(); // we explicitly test norm against one here, saving a division @@ -496,6 +499,9 @@ public final class Quaternion implements Savable, Cloneable, java.io.Serializabl result.m22 = 1 - (xx + yy); result.setScale(originalScale); + + tempv.release(); + return result; } diff --git a/jme3-core/src/main/java/com/jme3/math/Ray.java b/engine/src/core/com/jme3/math/Ray.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Ray.java rename to engine/src/core/com/jme3/math/Ray.java diff --git a/jme3-core/src/main/java/com/jme3/math/Rectangle.java b/engine/src/core/com/jme3/math/Rectangle.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Rectangle.java rename to engine/src/core/com/jme3/math/Rectangle.java diff --git a/jme3-core/src/main/java/com/jme3/math/Ring.java b/engine/src/core/com/jme3/math/Ring.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Ring.java rename to engine/src/core/com/jme3/math/Ring.java diff --git a/jme3-core/src/main/java/com/jme3/math/Spline.java b/engine/src/core/com/jme3/math/Spline.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Spline.java rename to engine/src/core/com/jme3/math/Spline.java diff --git a/jme3-core/src/main/java/com/jme3/math/Transform.java b/engine/src/core/com/jme3/math/Transform.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Transform.java rename to engine/src/core/com/jme3/math/Transform.java diff --git a/jme3-core/src/main/java/com/jme3/math/Triangle.java b/engine/src/core/com/jme3/math/Triangle.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Triangle.java rename to engine/src/core/com/jme3/math/Triangle.java diff --git a/jme3-core/src/main/java/com/jme3/math/Vector2f.java b/engine/src/core/com/jme3/math/Vector2f.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Vector2f.java rename to engine/src/core/com/jme3/math/Vector2f.java diff --git a/jme3-core/src/main/java/com/jme3/math/Vector3f.java b/engine/src/core/com/jme3/math/Vector3f.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Vector3f.java rename to engine/src/core/com/jme3/math/Vector3f.java diff --git a/jme3-core/src/main/java/com/jme3/math/Vector4f.java b/engine/src/core/com/jme3/math/Vector4f.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/Vector4f.java rename to engine/src/core/com/jme3/math/Vector4f.java diff --git a/jme3-core/src/main/java/com/jme3/math/package.html b/engine/src/core/com/jme3/math/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/math/package.html rename to engine/src/core/com/jme3/math/package.html diff --git a/jme3-core/src/main/java/com/jme3/post/Filter.java b/engine/src/core/com/jme3/post/Filter.java similarity index 94% rename from jme3-core/src/main/java/com/jme3/post/Filter.java rename to engine/src/core/com/jme3/post/Filter.java index c6b35d85f..a7cb93d37 100644 --- a/jme3-core/src/main/java/com/jme3/post/Filter.java +++ b/engine/src/core/com/jme3/post/Filter.java @@ -64,8 +64,8 @@ public abstract class Filter implements Savable { private String name; - protected Filter.Pass defaultPass; - protected List postRenderPasses; + protected Pass defaultPass; + protected List postRenderPasses; protected Material material; protected boolean enabled = true; protected FilterPostProcessor processor; @@ -234,7 +234,7 @@ public abstract class Filter implements Savable { */ protected final void init(AssetManager manager, RenderManager renderManager, ViewPort vp, int w, int h) { // cleanup(renderManager.getRenderer()); - defaultPass = new Filter.Pass(); + defaultPass = new Pass(); defaultPass.init(renderManager.getRenderer(), w, h, getDefaultPassTextureFormat(), getDefaultPassDepthFormat()); initFilter(manager, renderManager, vp, w, h); } @@ -249,8 +249,8 @@ public abstract class Filter implements Savable { defaultPass.cleanup(r); } if (postRenderPasses != null) { - for (Iterator it = postRenderPasses.iterator(); it.hasNext();) { - Filter.Pass pass = it.next(); + for (Iterator it = postRenderPasses.iterator(); it.hasNext();) { + Pass pass = it.next(); pass.cleanup(r); } } @@ -411,7 +411,7 @@ public abstract class Filter implements Savable { * returns the list of the postRender passes * @return */ - protected List getPostRenderPasses() { + protected List getPostRenderPasses() { return postRenderPasses; } diff --git a/jme3-core/src/main/java/com/jme3/post/FilterPostProcessor.java b/engine/src/core/com/jme3/post/FilterPostProcessor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/post/FilterPostProcessor.java rename to engine/src/core/com/jme3/post/FilterPostProcessor.java diff --git a/jme3-core/src/main/java/com/jme3/post/HDRRenderer.java b/engine/src/core/com/jme3/post/HDRRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/post/HDRRenderer.java rename to engine/src/core/com/jme3/post/HDRRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/post/PreDepthProcessor.java b/engine/src/core/com/jme3/post/PreDepthProcessor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/post/PreDepthProcessor.java rename to engine/src/core/com/jme3/post/PreDepthProcessor.java diff --git a/jme3-core/src/main/java/com/jme3/post/SceneProcessor.java b/engine/src/core/com/jme3/post/SceneProcessor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/post/SceneProcessor.java rename to engine/src/core/com/jme3/post/SceneProcessor.java diff --git a/jme3-core/src/main/java/com/jme3/post/package.html b/engine/src/core/com/jme3/post/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/post/package.html rename to engine/src/core/com/jme3/post/package.html diff --git a/jme3-core/src/main/java/com/jme3/renderer/Camera.java b/engine/src/core/com/jme3/renderer/Camera.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/Camera.java rename to engine/src/core/com/jme3/renderer/Camera.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/Caps.java b/engine/src/core/com/jme3/renderer/Caps.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/Caps.java rename to engine/src/core/com/jme3/renderer/Caps.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/GL1Renderer.java b/engine/src/core/com/jme3/renderer/GL1Renderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/GL1Renderer.java rename to engine/src/core/com/jme3/renderer/GL1Renderer.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/IDList.java b/engine/src/core/com/jme3/renderer/IDList.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/IDList.java rename to engine/src/core/com/jme3/renderer/IDList.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/RenderContext.java b/engine/src/core/com/jme3/renderer/RenderContext.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/RenderContext.java rename to engine/src/core/com/jme3/renderer/RenderContext.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java b/engine/src/core/com/jme3/renderer/RenderManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/RenderManager.java rename to engine/src/core/com/jme3/renderer/RenderManager.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/Renderer.java b/engine/src/core/com/jme3/renderer/Renderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/Renderer.java rename to engine/src/core/com/jme3/renderer/Renderer.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/RendererException.java b/engine/src/core/com/jme3/renderer/RendererException.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/RendererException.java rename to engine/src/core/com/jme3/renderer/RendererException.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/Statistics.java b/engine/src/core/com/jme3/renderer/Statistics.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/Statistics.java rename to engine/src/core/com/jme3/renderer/Statistics.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/ViewPort.java b/engine/src/core/com/jme3/renderer/ViewPort.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/ViewPort.java rename to engine/src/core/com/jme3/renderer/ViewPort.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/package.html b/engine/src/core/com/jme3/renderer/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/package.html rename to engine/src/core/com/jme3/renderer/package.html diff --git a/jme3-core/src/main/java/com/jme3/renderer/queue/GeometryComparator.java b/engine/src/core/com/jme3/renderer/queue/GeometryComparator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/queue/GeometryComparator.java rename to engine/src/core/com/jme3/renderer/queue/GeometryComparator.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/queue/GeometryList.java b/engine/src/core/com/jme3/renderer/queue/GeometryList.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/queue/GeometryList.java rename to engine/src/core/com/jme3/renderer/queue/GeometryList.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/queue/GuiComparator.java b/engine/src/core/com/jme3/renderer/queue/GuiComparator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/queue/GuiComparator.java rename to engine/src/core/com/jme3/renderer/queue/GuiComparator.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/queue/NullComparator.java b/engine/src/core/com/jme3/renderer/queue/NullComparator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/queue/NullComparator.java rename to engine/src/core/com/jme3/renderer/queue/NullComparator.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/queue/OpaqueComparator.java b/engine/src/core/com/jme3/renderer/queue/OpaqueComparator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/queue/OpaqueComparator.java rename to engine/src/core/com/jme3/renderer/queue/OpaqueComparator.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/queue/RenderQueue.java b/engine/src/core/com/jme3/renderer/queue/RenderQueue.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/queue/RenderQueue.java rename to engine/src/core/com/jme3/renderer/queue/RenderQueue.java diff --git a/jme3-core/src/main/java/com/jme3/renderer/queue/TransparentComparator.java b/engine/src/core/com/jme3/renderer/queue/TransparentComparator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/renderer/queue/TransparentComparator.java rename to engine/src/core/com/jme3/renderer/queue/TransparentComparator.java diff --git a/jme3-core/src/main/java/com/jme3/scene/AssetLinkNode.java b/engine/src/core/com/jme3/scene/AssetLinkNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/AssetLinkNode.java rename to engine/src/core/com/jme3/scene/AssetLinkNode.java diff --git a/jme3-core/src/main/java/com/jme3/scene/BatchNode.java b/engine/src/core/com/jme3/scene/BatchNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/BatchNode.java rename to engine/src/core/com/jme3/scene/BatchNode.java diff --git a/jme3-core/src/main/java/com/jme3/scene/CameraNode.java b/engine/src/core/com/jme3/scene/CameraNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/CameraNode.java rename to engine/src/core/com/jme3/scene/CameraNode.java diff --git a/jme3-core/src/main/java/com/jme3/scene/CollisionData.java b/engine/src/core/com/jme3/scene/CollisionData.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/CollisionData.java rename to engine/src/core/com/jme3/scene/CollisionData.java diff --git a/jme3-core/src/main/java/com/jme3/scene/Geometry.java b/engine/src/core/com/jme3/scene/Geometry.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/Geometry.java rename to engine/src/core/com/jme3/scene/Geometry.java diff --git a/jme3-core/src/main/java/com/jme3/scene/LightNode.java b/engine/src/core/com/jme3/scene/LightNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/LightNode.java rename to engine/src/core/com/jme3/scene/LightNode.java diff --git a/jme3-core/src/main/java/com/jme3/scene/Mesh.java b/engine/src/core/com/jme3/scene/Mesh.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/Mesh.java rename to engine/src/core/com/jme3/scene/Mesh.java diff --git a/jme3-core/src/main/java/com/jme3/scene/Node.java b/engine/src/core/com/jme3/scene/Node.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/Node.java rename to engine/src/core/com/jme3/scene/Node.java diff --git a/jme3-core/src/main/java/com/jme3/scene/SceneGraphVisitor.java b/engine/src/core/com/jme3/scene/SceneGraphVisitor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/SceneGraphVisitor.java rename to engine/src/core/com/jme3/scene/SceneGraphVisitor.java diff --git a/jme3-core/src/main/java/com/jme3/scene/SceneGraphVisitorAdapter.java b/engine/src/core/com/jme3/scene/SceneGraphVisitorAdapter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/SceneGraphVisitorAdapter.java rename to engine/src/core/com/jme3/scene/SceneGraphVisitorAdapter.java diff --git a/jme3-core/src/main/java/com/jme3/scene/SimpleBatchNode.java b/engine/src/core/com/jme3/scene/SimpleBatchNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/SimpleBatchNode.java rename to engine/src/core/com/jme3/scene/SimpleBatchNode.java diff --git a/jme3-core/src/main/java/com/jme3/scene/Spatial.java b/engine/src/core/com/jme3/scene/Spatial.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/Spatial.java rename to engine/src/core/com/jme3/scene/Spatial.java diff --git a/jme3-core/src/main/java/com/jme3/scene/UserData.java b/engine/src/core/com/jme3/scene/UserData.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/UserData.java rename to engine/src/core/com/jme3/scene/UserData.java diff --git a/jme3-core/src/main/java/com/jme3/scene/VertexBuffer.java b/engine/src/core/com/jme3/scene/VertexBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/VertexBuffer.java rename to engine/src/core/com/jme3/scene/VertexBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/AbstractControl.java b/engine/src/core/com/jme3/scene/control/AbstractControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/AbstractControl.java rename to engine/src/core/com/jme3/scene/control/AbstractControl.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/AreaUtils.java b/engine/src/core/com/jme3/scene/control/AreaUtils.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/AreaUtils.java rename to engine/src/core/com/jme3/scene/control/AreaUtils.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/BillboardControl.java b/engine/src/core/com/jme3/scene/control/BillboardControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/BillboardControl.java rename to engine/src/core/com/jme3/scene/control/BillboardControl.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/CameraControl.java b/engine/src/core/com/jme3/scene/control/CameraControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/CameraControl.java rename to engine/src/core/com/jme3/scene/control/CameraControl.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/Control.java b/engine/src/core/com/jme3/scene/control/Control.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/Control.java rename to engine/src/core/com/jme3/scene/control/Control.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/LightControl.java b/engine/src/core/com/jme3/scene/control/LightControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/LightControl.java rename to engine/src/core/com/jme3/scene/control/LightControl.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/LodControl.java b/engine/src/core/com/jme3/scene/control/LodControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/LodControl.java rename to engine/src/core/com/jme3/scene/control/LodControl.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/UpdateControl.java b/engine/src/core/com/jme3/scene/control/UpdateControl.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/UpdateControl.java rename to engine/src/core/com/jme3/scene/control/UpdateControl.java diff --git a/jme3-core/src/main/java/com/jme3/scene/control/package.html b/engine/src/core/com/jme3/scene/control/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/control/package.html rename to engine/src/core/com/jme3/scene/control/package.html diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/Arrow.java b/engine/src/core/com/jme3/scene/debug/Arrow.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/Arrow.java rename to engine/src/core/com/jme3/scene/debug/Arrow.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/Grid.java b/engine/src/core/com/jme3/scene/debug/Grid.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/Grid.java rename to engine/src/core/com/jme3/scene/debug/Grid.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/SkeletonDebugger.java b/engine/src/core/com/jme3/scene/debug/SkeletonDebugger.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/SkeletonDebugger.java rename to engine/src/core/com/jme3/scene/debug/SkeletonDebugger.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/SkeletonInterBoneWire.java b/engine/src/core/com/jme3/scene/debug/SkeletonInterBoneWire.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/SkeletonInterBoneWire.java rename to engine/src/core/com/jme3/scene/debug/SkeletonInterBoneWire.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/SkeletonPoints.java b/engine/src/core/com/jme3/scene/debug/SkeletonPoints.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/SkeletonPoints.java rename to engine/src/core/com/jme3/scene/debug/SkeletonPoints.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/SkeletonWire.java b/engine/src/core/com/jme3/scene/debug/SkeletonWire.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/SkeletonWire.java rename to engine/src/core/com/jme3/scene/debug/SkeletonWire.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/WireBox.java b/engine/src/core/com/jme3/scene/debug/WireBox.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/WireBox.java rename to engine/src/core/com/jme3/scene/debug/WireBox.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/WireFrustum.java b/engine/src/core/com/jme3/scene/debug/WireFrustum.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/WireFrustum.java rename to engine/src/core/com/jme3/scene/debug/WireFrustum.java diff --git a/jme3-core/src/main/java/com/jme3/scene/debug/WireSphere.java b/engine/src/core/com/jme3/scene/debug/WireSphere.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/debug/WireSphere.java rename to engine/src/core/com/jme3/scene/debug/WireSphere.java diff --git a/jme3-core/src/main/java/com/jme3/scene/mesh/IndexBuffer.java b/engine/src/core/com/jme3/scene/mesh/IndexBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/mesh/IndexBuffer.java rename to engine/src/core/com/jme3/scene/mesh/IndexBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/scene/mesh/IndexByteBuffer.java b/engine/src/core/com/jme3/scene/mesh/IndexByteBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/mesh/IndexByteBuffer.java rename to engine/src/core/com/jme3/scene/mesh/IndexByteBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/scene/mesh/IndexIntBuffer.java b/engine/src/core/com/jme3/scene/mesh/IndexIntBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/mesh/IndexIntBuffer.java rename to engine/src/core/com/jme3/scene/mesh/IndexIntBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/scene/mesh/IndexShortBuffer.java b/engine/src/core/com/jme3/scene/mesh/IndexShortBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/mesh/IndexShortBuffer.java rename to engine/src/core/com/jme3/scene/mesh/IndexShortBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/scene/mesh/VirtualIndexBuffer.java b/engine/src/core/com/jme3/scene/mesh/VirtualIndexBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/mesh/VirtualIndexBuffer.java rename to engine/src/core/com/jme3/scene/mesh/VirtualIndexBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/scene/mesh/WrappedIndexBuffer.java b/engine/src/core/com/jme3/scene/mesh/WrappedIndexBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/mesh/WrappedIndexBuffer.java rename to engine/src/core/com/jme3/scene/mesh/WrappedIndexBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/scene/mesh/package.html b/engine/src/core/com/jme3/scene/mesh/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/mesh/package.html rename to engine/src/core/com/jme3/scene/mesh/package.html diff --git a/jme3-core/src/main/java/com/jme3/scene/package.html b/engine/src/core/com/jme3/scene/package.html similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/package.html rename to engine/src/core/com/jme3/scene/package.html diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/AbstractBox.java b/engine/src/core/com/jme3/scene/shape/AbstractBox.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/AbstractBox.java rename to engine/src/core/com/jme3/scene/shape/AbstractBox.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Box.java b/engine/src/core/com/jme3/scene/shape/Box.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Box.java rename to engine/src/core/com/jme3/scene/shape/Box.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Curve.java b/engine/src/core/com/jme3/scene/shape/Curve.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Curve.java rename to engine/src/core/com/jme3/scene/shape/Curve.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Cylinder.java b/engine/src/core/com/jme3/scene/shape/Cylinder.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Cylinder.java rename to engine/src/core/com/jme3/scene/shape/Cylinder.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Dome.java b/engine/src/core/com/jme3/scene/shape/Dome.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Dome.java rename to engine/src/core/com/jme3/scene/shape/Dome.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Line.java b/engine/src/core/com/jme3/scene/shape/Line.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Line.java rename to engine/src/core/com/jme3/scene/shape/Line.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/PQTorus.java b/engine/src/core/com/jme3/scene/shape/PQTorus.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/PQTorus.java rename to engine/src/core/com/jme3/scene/shape/PQTorus.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Quad.java b/engine/src/core/com/jme3/scene/shape/Quad.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Quad.java rename to engine/src/core/com/jme3/scene/shape/Quad.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Sphere.java b/engine/src/core/com/jme3/scene/shape/Sphere.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Sphere.java rename to engine/src/core/com/jme3/scene/shape/Sphere.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/StripBox.java b/engine/src/core/com/jme3/scene/shape/StripBox.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/StripBox.java rename to engine/src/core/com/jme3/scene/shape/StripBox.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Surface.java b/engine/src/core/com/jme3/scene/shape/Surface.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Surface.java rename to engine/src/core/com/jme3/scene/shape/Surface.java diff --git a/jme3-core/src/main/java/com/jme3/scene/shape/Torus.java b/engine/src/core/com/jme3/scene/shape/Torus.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/scene/shape/Torus.java rename to engine/src/core/com/jme3/scene/shape/Torus.java diff --git a/jme3-core/src/main/java/com/jme3/shader/Attribute.java b/engine/src/core/com/jme3/shader/Attribute.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/Attribute.java rename to engine/src/core/com/jme3/shader/Attribute.java diff --git a/jme3-core/src/main/java/com/jme3/shader/DefineList.java b/engine/src/core/com/jme3/shader/DefineList.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/DefineList.java rename to engine/src/core/com/jme3/shader/DefineList.java diff --git a/jme3-core/src/main/java/com/jme3/shader/Glsl100ShaderGenerator.java b/engine/src/core/com/jme3/shader/Glsl100ShaderGenerator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/Glsl100ShaderGenerator.java rename to engine/src/core/com/jme3/shader/Glsl100ShaderGenerator.java diff --git a/jme3-core/src/main/java/com/jme3/shader/Glsl150ShaderGenerator.java b/engine/src/core/com/jme3/shader/Glsl150ShaderGenerator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/Glsl150ShaderGenerator.java rename to engine/src/core/com/jme3/shader/Glsl150ShaderGenerator.java diff --git a/jme3-core/src/main/java/com/jme3/shader/Shader.java b/engine/src/core/com/jme3/shader/Shader.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/Shader.java rename to engine/src/core/com/jme3/shader/Shader.java diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderGenerator.java b/engine/src/core/com/jme3/shader/ShaderGenerator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/ShaderGenerator.java rename to engine/src/core/com/jme3/shader/ShaderGenerator.java diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderKey.java b/engine/src/core/com/jme3/shader/ShaderKey.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/ShaderKey.java rename to engine/src/core/com/jme3/shader/ShaderKey.java diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderNode.java b/engine/src/core/com/jme3/shader/ShaderNode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/ShaderNode.java rename to engine/src/core/com/jme3/shader/ShaderNode.java diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderNodeDefinition.java b/engine/src/core/com/jme3/shader/ShaderNodeDefinition.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/ShaderNodeDefinition.java rename to engine/src/core/com/jme3/shader/ShaderNodeDefinition.java diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderNodeVariable.java b/engine/src/core/com/jme3/shader/ShaderNodeVariable.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/ShaderNodeVariable.java rename to engine/src/core/com/jme3/shader/ShaderNodeVariable.java diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderUtils.java b/engine/src/core/com/jme3/shader/ShaderUtils.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/ShaderUtils.java rename to engine/src/core/com/jme3/shader/ShaderUtils.java diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderVariable.java b/engine/src/core/com/jme3/shader/ShaderVariable.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/ShaderVariable.java rename to engine/src/core/com/jme3/shader/ShaderVariable.java diff --git a/jme3-core/src/main/java/com/jme3/shader/Uniform.java b/engine/src/core/com/jme3/shader/Uniform.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/Uniform.java rename to engine/src/core/com/jme3/shader/Uniform.java diff --git a/jme3-core/src/main/java/com/jme3/shader/UniformBinding.java b/engine/src/core/com/jme3/shader/UniformBinding.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/UniformBinding.java rename to engine/src/core/com/jme3/shader/UniformBinding.java diff --git a/jme3-core/src/main/java/com/jme3/shader/UniformBindingManager.java b/engine/src/core/com/jme3/shader/UniformBindingManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/UniformBindingManager.java rename to engine/src/core/com/jme3/shader/UniformBindingManager.java diff --git a/jme3-core/src/main/java/com/jme3/shader/VarType.java b/engine/src/core/com/jme3/shader/VarType.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/VarType.java rename to engine/src/core/com/jme3/shader/VarType.java diff --git a/jme3-core/src/main/java/com/jme3/shader/VariableMapping.java b/engine/src/core/com/jme3/shader/VariableMapping.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shader/VariableMapping.java rename to engine/src/core/com/jme3/shader/VariableMapping.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/AbstractShadowFilter.java b/engine/src/core/com/jme3/shadow/AbstractShadowFilter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/AbstractShadowFilter.java rename to engine/src/core/com/jme3/shadow/AbstractShadowFilter.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/AbstractShadowRenderer.java b/engine/src/core/com/jme3/shadow/AbstractShadowRenderer.java similarity index 97% rename from jme3-core/src/main/java/com/jme3/shadow/AbstractShadowRenderer.java rename to engine/src/core/com/jme3/shadow/AbstractShadowRenderer.java index 76f27db0d..c81fab22a 100644 --- a/jme3-core/src/main/java/com/jme3/shadow/AbstractShadowRenderer.java +++ b/engine/src/core/com/jme3/shadow/AbstractShadowRenderer.java @@ -608,7 +608,7 @@ public abstract class AbstractShadowRenderer implements SceneProcessor, Savable } /** - * returns true if the shadow renderer flushes the shadow queues + * Returns true if this shadow renderer flushes the shadow queues. * * @return flushQueues */ diff --git a/jme3-core/src/main/java/com/jme3/shadow/BasicShadowRenderer.java b/engine/src/core/com/jme3/shadow/BasicShadowRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/BasicShadowRenderer.java rename to engine/src/core/com/jme3/shadow/BasicShadowRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/CompareMode.java b/engine/src/core/com/jme3/shadow/CompareMode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/CompareMode.java rename to engine/src/core/com/jme3/shadow/CompareMode.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/DirectionalLightShadowFilter.java b/engine/src/core/com/jme3/shadow/DirectionalLightShadowFilter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/DirectionalLightShadowFilter.java rename to engine/src/core/com/jme3/shadow/DirectionalLightShadowFilter.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/DirectionalLightShadowRenderer.java b/engine/src/core/com/jme3/shadow/DirectionalLightShadowRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/DirectionalLightShadowRenderer.java rename to engine/src/core/com/jme3/shadow/DirectionalLightShadowRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/EdgeFilteringMode.java b/engine/src/core/com/jme3/shadow/EdgeFilteringMode.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/EdgeFilteringMode.java rename to engine/src/core/com/jme3/shadow/EdgeFilteringMode.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/PointLightShadowFilter.java b/engine/src/core/com/jme3/shadow/PointLightShadowFilter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/PointLightShadowFilter.java rename to engine/src/core/com/jme3/shadow/PointLightShadowFilter.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/PointLightShadowRenderer.java b/engine/src/core/com/jme3/shadow/PointLightShadowRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/PointLightShadowRenderer.java rename to engine/src/core/com/jme3/shadow/PointLightShadowRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/PssmShadowFilter.java b/engine/src/core/com/jme3/shadow/PssmShadowFilter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/PssmShadowFilter.java rename to engine/src/core/com/jme3/shadow/PssmShadowFilter.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/PssmShadowRenderer.java b/engine/src/core/com/jme3/shadow/PssmShadowRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/PssmShadowRenderer.java rename to engine/src/core/com/jme3/shadow/PssmShadowRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/PssmShadowUtil.java b/engine/src/core/com/jme3/shadow/PssmShadowUtil.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/PssmShadowUtil.java rename to engine/src/core/com/jme3/shadow/PssmShadowUtil.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/ShadowUtil.java b/engine/src/core/com/jme3/shadow/ShadowUtil.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/ShadowUtil.java rename to engine/src/core/com/jme3/shadow/ShadowUtil.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/SpotLightShadowFilter.java b/engine/src/core/com/jme3/shadow/SpotLightShadowFilter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/SpotLightShadowFilter.java rename to engine/src/core/com/jme3/shadow/SpotLightShadowFilter.java diff --git a/jme3-core/src/main/java/com/jme3/shadow/SpotLightShadowRenderer.java b/engine/src/core/com/jme3/shadow/SpotLightShadowRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/shadow/SpotLightShadowRenderer.java rename to engine/src/core/com/jme3/shadow/SpotLightShadowRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/system/Annotations.java b/engine/src/core/com/jme3/system/Annotations.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/Annotations.java rename to engine/src/core/com/jme3/system/Annotations.java diff --git a/jme3-core/src/main/java/com/jme3/system/AppSettings.java b/engine/src/core/com/jme3/system/AppSettings.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/AppSettings.java rename to engine/src/core/com/jme3/system/AppSettings.java diff --git a/jme3-core/src/main/java/com/jme3/system/JmeContext.java b/engine/src/core/com/jme3/system/JmeContext.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/JmeContext.java rename to engine/src/core/com/jme3/system/JmeContext.java diff --git a/jme3-core/src/main/java/com/jme3/system/JmeSystem.java b/engine/src/core/com/jme3/system/JmeSystem.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/JmeSystem.java rename to engine/src/core/com/jme3/system/JmeSystem.java diff --git a/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java b/engine/src/core/com/jme3/system/JmeSystemDelegate.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java rename to engine/src/core/com/jme3/system/JmeSystemDelegate.java diff --git a/jme3-core/src/main/java/com/jme3/system/JmeVersion.java b/engine/src/core/com/jme3/system/JmeVersion.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/JmeVersion.java rename to engine/src/core/com/jme3/system/JmeVersion.java diff --git a/jme3-core/src/main/java/com/jme3/system/NanoTimer.java b/engine/src/core/com/jme3/system/NanoTimer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/NanoTimer.java rename to engine/src/core/com/jme3/system/NanoTimer.java diff --git a/jme3-core/src/main/java/com/jme3/system/NullContext.java b/engine/src/core/com/jme3/system/NullContext.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/NullContext.java rename to engine/src/core/com/jme3/system/NullContext.java diff --git a/jme3-core/src/main/java/com/jme3/system/NullRenderer.java b/engine/src/core/com/jme3/system/NullRenderer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/NullRenderer.java rename to engine/src/core/com/jme3/system/NullRenderer.java diff --git a/jme3-core/src/main/java/com/jme3/system/Platform.java b/engine/src/core/com/jme3/system/Platform.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/Platform.java rename to engine/src/core/com/jme3/system/Platform.java diff --git a/jme3-core/src/main/java/com/jme3/system/SystemListener.java b/engine/src/core/com/jme3/system/SystemListener.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/SystemListener.java rename to engine/src/core/com/jme3/system/SystemListener.java diff --git a/jme3-core/src/main/java/com/jme3/system/Timer.java b/engine/src/core/com/jme3/system/Timer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/system/Timer.java rename to engine/src/core/com/jme3/system/Timer.java diff --git a/jme3-core/src/main/java/com/jme3/texture/FrameBuffer.java b/engine/src/core/com/jme3/texture/FrameBuffer.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/FrameBuffer.java rename to engine/src/core/com/jme3/texture/FrameBuffer.java diff --git a/jme3-core/src/main/java/com/jme3/texture/Image.java b/engine/src/core/com/jme3/texture/Image.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/Image.java rename to engine/src/core/com/jme3/texture/Image.java diff --git a/jme3-core/src/main/java/com/jme3/texture/Texture.java b/engine/src/core/com/jme3/texture/Texture.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/Texture.java rename to engine/src/core/com/jme3/texture/Texture.java diff --git a/jme3-core/src/main/java/com/jme3/texture/Texture2D.java b/engine/src/core/com/jme3/texture/Texture2D.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/Texture2D.java rename to engine/src/core/com/jme3/texture/Texture2D.java diff --git a/jme3-core/src/main/java/com/jme3/texture/Texture3D.java b/engine/src/core/com/jme3/texture/Texture3D.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/Texture3D.java rename to engine/src/core/com/jme3/texture/Texture3D.java diff --git a/jme3-core/src/main/java/com/jme3/texture/TextureArray.java b/engine/src/core/com/jme3/texture/TextureArray.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/TextureArray.java rename to engine/src/core/com/jme3/texture/TextureArray.java diff --git a/jme3-core/src/main/java/com/jme3/texture/TextureCubeMap.java b/engine/src/core/com/jme3/texture/TextureCubeMap.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/TextureCubeMap.java rename to engine/src/core/com/jme3/texture/TextureCubeMap.java diff --git a/jme3-core/src/main/java/com/jme3/texture/TextureProcessor.java b/engine/src/core/com/jme3/texture/TextureProcessor.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/TextureProcessor.java rename to engine/src/core/com/jme3/texture/TextureProcessor.java diff --git a/jme3-core/src/main/java/com/jme3/texture/image/BitMaskImageCodec.java b/engine/src/core/com/jme3/texture/image/BitMaskImageCodec.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/image/BitMaskImageCodec.java rename to engine/src/core/com/jme3/texture/image/BitMaskImageCodec.java diff --git a/jme3-core/src/main/java/com/jme3/texture/image/ByteAlignedImageCodec.java b/engine/src/core/com/jme3/texture/image/ByteAlignedImageCodec.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/image/ByteAlignedImageCodec.java rename to engine/src/core/com/jme3/texture/image/ByteAlignedImageCodec.java diff --git a/jme3-core/src/main/java/com/jme3/texture/image/ByteOffsetImageCodec.java b/engine/src/core/com/jme3/texture/image/ByteOffsetImageCodec.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/image/ByteOffsetImageCodec.java rename to engine/src/core/com/jme3/texture/image/ByteOffsetImageCodec.java diff --git a/jme3-core/src/main/java/com/jme3/texture/image/DefaultImageRaster.java b/engine/src/core/com/jme3/texture/image/DefaultImageRaster.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/image/DefaultImageRaster.java rename to engine/src/core/com/jme3/texture/image/DefaultImageRaster.java diff --git a/jme3-core/src/main/java/com/jme3/texture/image/ImageCodec.java b/engine/src/core/com/jme3/texture/image/ImageCodec.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/image/ImageCodec.java rename to engine/src/core/com/jme3/texture/image/ImageCodec.java diff --git a/jme3-core/src/main/java/com/jme3/texture/image/ImageRaster.java b/engine/src/core/com/jme3/texture/image/ImageRaster.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/texture/image/ImageRaster.java rename to engine/src/core/com/jme3/texture/image/ImageRaster.java diff --git a/jme3-core/src/main/java/com/jme3/ui/Picture.java b/engine/src/core/com/jme3/ui/Picture.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/ui/Picture.java rename to engine/src/core/com/jme3/ui/Picture.java diff --git a/jme3-core/src/main/java/com/jme3/util/BufferUtils.java b/engine/src/core/com/jme3/util/BufferUtils.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/BufferUtils.java rename to engine/src/core/com/jme3/util/BufferUtils.java diff --git a/jme3-core/src/main/java/com/jme3/util/IntMap.java b/engine/src/core/com/jme3/util/IntMap.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/IntMap.java rename to engine/src/core/com/jme3/util/IntMap.java diff --git a/jme3-core/src/main/java/com/jme3/util/JmeFormatter.java b/engine/src/core/com/jme3/util/JmeFormatter.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/JmeFormatter.java rename to engine/src/core/com/jme3/util/JmeFormatter.java diff --git a/jme3-core/src/main/java/com/jme3/util/ListMap.java b/engine/src/core/com/jme3/util/ListMap.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/ListMap.java rename to engine/src/core/com/jme3/util/ListMap.java diff --git a/jme3-core/src/main/java/com/jme3/util/ListSort.java b/engine/src/core/com/jme3/util/ListSort.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/ListSort.java rename to engine/src/core/com/jme3/util/ListSort.java diff --git a/jme3-core/src/main/java/com/jme3/util/LittleEndien.java b/engine/src/core/com/jme3/util/LittleEndien.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/LittleEndien.java rename to engine/src/core/com/jme3/util/LittleEndien.java diff --git a/jme3-core/src/main/java/com/jme3/util/MemoryUtils.java b/engine/src/core/com/jme3/util/MemoryUtils.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/MemoryUtils.java rename to engine/src/core/com/jme3/util/MemoryUtils.java diff --git a/jme3-core/src/main/java/com/jme3/util/NativeObject.java b/engine/src/core/com/jme3/util/NativeObject.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/NativeObject.java rename to engine/src/core/com/jme3/util/NativeObject.java diff --git a/jme3-core/src/main/java/com/jme3/util/NativeObjectManager.java b/engine/src/core/com/jme3/util/NativeObjectManager.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/NativeObjectManager.java rename to engine/src/core/com/jme3/util/NativeObjectManager.java diff --git a/jme3-core/src/main/java/com/jme3/util/PlaceholderAssets.java b/engine/src/core/com/jme3/util/PlaceholderAssets.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/PlaceholderAssets.java rename to engine/src/core/com/jme3/util/PlaceholderAssets.java diff --git a/jme3-core/src/main/java/com/jme3/util/SafeArrayList.java b/engine/src/core/com/jme3/util/SafeArrayList.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/SafeArrayList.java rename to engine/src/core/com/jme3/util/SafeArrayList.java diff --git a/jme3-core/src/main/java/com/jme3/util/SkyFactory.java b/engine/src/core/com/jme3/util/SkyFactory.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/SkyFactory.java rename to engine/src/core/com/jme3/util/SkyFactory.java diff --git a/jme3-core/src/main/java/com/jme3/util/SortUtil.java b/engine/src/core/com/jme3/util/SortUtil.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/SortUtil.java rename to engine/src/core/com/jme3/util/SortUtil.java diff --git a/jme3-core/src/main/java/com/jme3/util/TangentBinormalGenerator.java b/engine/src/core/com/jme3/util/TangentBinormalGenerator.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/TangentBinormalGenerator.java rename to engine/src/core/com/jme3/util/TangentBinormalGenerator.java diff --git a/jme3-core/src/main/java/com/jme3/util/TempVars.java b/engine/src/core/com/jme3/util/TempVars.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/TempVars.java rename to engine/src/core/com/jme3/util/TempVars.java diff --git a/jme3-core/src/main/java/com/jme3/util/blockparser/BlockLanguageParser.java b/engine/src/core/com/jme3/util/blockparser/BlockLanguageParser.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/blockparser/BlockLanguageParser.java rename to engine/src/core/com/jme3/util/blockparser/BlockLanguageParser.java diff --git a/jme3-core/src/main/java/com/jme3/util/blockparser/Statement.java b/engine/src/core/com/jme3/util/blockparser/Statement.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/blockparser/Statement.java rename to engine/src/core/com/jme3/util/blockparser/Statement.java diff --git a/jme3-core/src/main/java/com/jme3/util/xml/SAXUtil.java b/engine/src/core/com/jme3/util/xml/SAXUtil.java similarity index 100% rename from jme3-core/src/main/java/com/jme3/util/xml/SAXUtil.java rename to engine/src/core/com/jme3/util/xml/SAXUtil.java diff --git a/jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java b/engine/src/desktop/com/jme3/app/AppletHarness.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/app/AppletHarness.java rename to engine/src/desktop/com/jme3/app/AppletHarness.java diff --git a/jme3-desktop/src/main/resources/com/jme3/app/Monkey.png b/engine/src/desktop/com/jme3/app/Monkey.png similarity index 100% rename from jme3-desktop/src/main/resources/com/jme3/app/Monkey.png rename to engine/src/desktop/com/jme3/app/Monkey.png diff --git a/jme3-desktop/src/main/java/com/jme3/app/SettingsDialog.java b/engine/src/desktop/com/jme3/app/SettingsDialog.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/app/SettingsDialog.java rename to engine/src/desktop/com/jme3/app/SettingsDialog.java diff --git a/jme3-desktop/src/main/resources/com/jme3/app/SettingsDialog.properties b/engine/src/desktop/com/jme3/app/SettingsDialog.properties similarity index 100% rename from jme3-desktop/src/main/resources/com/jme3/app/SettingsDialog.properties rename to engine/src/desktop/com/jme3/app/SettingsDialog.properties diff --git a/jme3-desktop/src/main/java/com/jme3/app/state/MjpegFileWriter.java b/engine/src/desktop/com/jme3/app/state/MjpegFileWriter.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/app/state/MjpegFileWriter.java rename to engine/src/desktop/com/jme3/app/state/MjpegFileWriter.java diff --git a/jme3-desktop/src/main/java/com/jme3/app/state/VideoRecorderAppState.java b/engine/src/desktop/com/jme3/app/state/VideoRecorderAppState.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/app/state/VideoRecorderAppState.java rename to engine/src/desktop/com/jme3/app/state/VideoRecorderAppState.java diff --git a/jme3-desktop/src/main/java/com/jme3/cursors/plugins/CursorLoader.java b/engine/src/desktop/com/jme3/cursors/plugins/CursorLoader.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/cursors/plugins/CursorLoader.java rename to engine/src/desktop/com/jme3/cursors/plugins/CursorLoader.java diff --git a/jme3-desktop/src/main/java/com/jme3/input/awt/AwtKeyInput.java b/engine/src/desktop/com/jme3/input/awt/AwtKeyInput.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/input/awt/AwtKeyInput.java rename to engine/src/desktop/com/jme3/input/awt/AwtKeyInput.java diff --git a/jme3-desktop/src/main/java/com/jme3/input/awt/AwtMouseInput.java b/engine/src/desktop/com/jme3/input/awt/AwtMouseInput.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/input/awt/AwtMouseInput.java rename to engine/src/desktop/com/jme3/input/awt/AwtMouseInput.java diff --git a/jme3-desktop/src/main/java/com/jme3/system/JmeCanvasContext.java b/engine/src/desktop/com/jme3/system/JmeCanvasContext.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/system/JmeCanvasContext.java rename to engine/src/desktop/com/jme3/system/JmeCanvasContext.java diff --git a/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java b/engine/src/desktop/com/jme3/system/JmeDesktopSystem.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java rename to engine/src/desktop/com/jme3/system/JmeDesktopSystem.java diff --git a/jme3-desktop/src/main/java/com/jme3/system/Natives.java b/engine/src/desktop/com/jme3/system/Natives.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/system/Natives.java rename to engine/src/desktop/com/jme3/system/Natives.java diff --git a/jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanel.java b/engine/src/desktop/com/jme3/system/awt/AwtPanel.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanel.java rename to engine/src/desktop/com/jme3/system/awt/AwtPanel.java diff --git a/jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanelsContext.java b/engine/src/desktop/com/jme3/system/awt/AwtPanelsContext.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanelsContext.java rename to engine/src/desktop/com/jme3/system/awt/AwtPanelsContext.java diff --git a/jme3-desktop/src/main/java/com/jme3/system/awt/PaintMode.java b/engine/src/desktop/com/jme3/system/awt/PaintMode.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/system/awt/PaintMode.java rename to engine/src/desktop/com/jme3/system/awt/PaintMode.java diff --git a/jme3-desktop/src/main/java/com/jme3/texture/plugins/AWTLoader.java b/engine/src/desktop/com/jme3/texture/plugins/AWTLoader.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/texture/plugins/AWTLoader.java rename to engine/src/desktop/com/jme3/texture/plugins/AWTLoader.java diff --git a/jme3-desktop/src/main/java/com/jme3/util/Screenshots.java b/engine/src/desktop/com/jme3/util/Screenshots.java similarity index 100% rename from jme3-desktop/src/main/java/com/jme3/util/Screenshots.java rename to engine/src/desktop/com/jme3/util/Screenshots.java diff --git a/jme3-desktop/src/main/java/jme3tools/converters/ImageToAwt.java b/engine/src/desktop/jme3tools/converters/ImageToAwt.java similarity index 97% rename from jme3-desktop/src/main/java/jme3tools/converters/ImageToAwt.java rename to engine/src/desktop/jme3tools/converters/ImageToAwt.java index 1006438cd..897047215 100644 --- a/jme3-desktop/src/main/java/jme3tools/converters/ImageToAwt.java +++ b/engine/src/desktop/jme3tools/converters/ImageToAwt.java @@ -1,486 +1,486 @@ -/* - * 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 jme3tools.converters; - -import com.jme3.texture.Image; -import com.jme3.texture.Image.Format; -import com.jme3.texture.plugins.AWTLoader; -import com.jme3.util.BufferUtils; -import java.awt.Transparency; -import java.awt.color.ColorSpace; -import java.awt.image.*; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.EnumMap; - -public class ImageToAwt { - - private static final EnumMap params - = new EnumMap(Format.class); - - private static class DecodeParams { - - final int bpp, am, rm, gm, bm, as, rs, gs, bs, im, is; - - public DecodeParams(int bpp, int am, int rm, int gm, int bm, int as, int rs, int gs, int bs, int im, int is) { - this.bpp = bpp; - this.am = am; - this.rm = rm; - this.gm = gm; - this.bm = bm; - this.as = as; - this.rs = rs; - this.gs = gs; - this.bs = bs; - this.im = im; - this.is = is; - } - - public DecodeParams(int bpp, int rm, int rs, int im, int is, boolean alpha){ - this.bpp = bpp; - if (alpha){ - this.am = rm; - this.as = rs; - this.rm = 0; - this.rs = 0; - }else{ - this.rm = rm; - this.rs = rs; - this.am = 0; - this.as = 0; - } - - this.gm = 0; - this.bm = 0; - this.gs = 0; - this.bs = 0; - this.im = im; - this.is = is; - } - - public DecodeParams(int bpp, int rm, int rs, int im, int is){ - this(bpp, rm, rs, im, is, false); - } - } - - static { - final int mx___ = 0xff000000; - final int m_x__ = 0x00ff0000; - final int m__x_ = 0x0000ff00; - final int m___x = 0x000000ff; - final int sx___ = 24; - final int s_x__ = 16; - final int s__x_ = 8; - final int s___x = 0; - final int mxxxx = 0xffffffff; - final int sxxxx = 0; - - final int m4x___ = 0xf000; - final int m4_x__ = 0x0f00; - final int m4__x_ = 0x00f0; - final int m4___x = 0x000f; - final int s4x___ = 12; - final int s4_x__ = 8; - final int s4__x_ = 4; - final int s4___x = 0; - - final int m5___ = 0xf800; - final int m_5__ = 0x07c0; - final int m__5_ = 0x003e; - final int m___1 = 0x0001; - - final int s5___ = 11; - final int s_5__ = 6; - final int s__5_ = 1; - final int s___1 = 0; - - final int m5__ = 0xf800; - final int m_6_ = 0x07e0; - final int m__5 = 0x001f; - - final int s5__ = 11; - final int s_6_ = 5; - final int s__5 = 0; - - final int mxx__ = 0xffff0000; - final int sxx__ = 32; - final int m__xx = 0x0000ffff; - final int s__xx = 0; - - // note: compressed, depth, or floating point formats not included here.. - - params.put(Format.ABGR8, new DecodeParams(4, mx___, m___x, m__x_, m_x__, - sx___, s___x, s__x_, s_x__, - mxxxx, sxxxx)); - params.put(Format.ARGB4444, new DecodeParams(2, m4x___, m4_x__, m4__x_, m4___x, - s4x___, s4_x__, s4__x_, s4___x, - mxxxx, sxxxx)); - params.put(Format.Alpha16, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, true)); - params.put(Format.Alpha8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, true)); - params.put(Format.BGR8, new DecodeParams(3, 0, m___x, m__x_, m_x__, - 0, s___x, s__x_, s_x__, - mxxxx, sxxxx)); - params.put(Format.Luminance16, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, false)); - params.put(Format.Luminance8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, false)); - params.put(Format.Luminance16Alpha16, new DecodeParams(4, m__xx, mxx__, 0, 0, - s__xx, sxx__, 0, 0, - mxxxx, sxxxx)); - params.put(Format.Luminance16F, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, false)); - params.put(Format.Luminance16FAlpha16F, new DecodeParams(4, m__xx, mxx__, 0, 0, - s__xx, sxx__, 0, 0, - mxxxx, sxxxx)); - params.put(Format.Luminance32F, new DecodeParams(4, mxxxx, sxxxx, mxxxx, sxxxx, false)); - params.put(Format.Luminance8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, false)); - params.put(Format.RGB5A1, new DecodeParams(2, m___1, m5___, m_5__, m__5_, - s___1, s5___, s_5__, s__5_, - mxxxx, sxxxx)); - params.put(Format.RGB565, new DecodeParams(2, 0, m5__ , m_6_ , m__5, - 0, s5__ , s_6_ , s__5, - mxxxx, sxxxx)); - params.put(Format.RGB8, new DecodeParams(3, 0, m_x__, m__x_, m___x, - 0, s_x__, s__x_, s___x, - mxxxx, sxxxx)); - params.put(Format.RGBA8, new DecodeParams(4, m___x, mx___, m_x__, m__x_, - s___x, sx___, s_x__, s__x_, - mxxxx, sxxxx)); - params.put(Format.BGRA8, new DecodeParams(4, m___x, m__x_, m_x__, mx___, - s___x, s__x_, s_x__, sx___, - mxxxx, sxxxx)); - - params.put(Format.ARGB8, new DecodeParams(4, mx___, m_x__, m__x_, m___x, - sx___, s_x__, s__x_, s___x, - mxxxx, sxxxx)); - - } - - private static int Ix(int x, int y, int w){ - return y * w + x; - } - - private static int readPixel(ByteBuffer buf, int idx, int bpp){ - buf.position(idx); - int original = buf.get() & 0xff; - while ((--bpp) > 0){ - original = (original << 8) | (buf.get() & 0xff); - } - return original; - } - - private static void writePixel(ByteBuffer buf, int idx, int pixel, int bpp){ - buf.position(idx); - while ((--bpp) >= 0){ -// pixel = pixel >> 8; - byte bt = (byte) ((pixel >> (bpp * 8)) & 0xff); -// buf.put( (byte) (pixel & 0xff) ); - buf.put(bt); - } - } - - - /** - * Convert an AWT image to jME image. - */ - public static void convert(BufferedImage image, Format format, ByteBuffer buf){ - DecodeParams p = params.get(format); - if (p == null) - throw new UnsupportedOperationException("Image format " + format + " is not supported"); - - int width = image.getWidth(); - int height = image.getHeight(); - - boolean alpha = true; - boolean luminance = false; - - int reductionA = 8 - Integer.bitCount(p.am); - int reductionR = 8 - Integer.bitCount(p.rm); - int reductionG = 8 - Integer.bitCount(p.gm); - int reductionB = 8 - Integer.bitCount(p.bm); - - int initialPos = buf.position(); - for (int y = 0; y < height; y++){ - for (int x = 0; x < width; x++){ - // Get ARGB - int argb = image.getRGB(x, y); - - // Extract color components - int a = (argb & 0xff000000) >> 24; - int r = (argb & 0x00ff0000) >> 16; - int g = (argb & 0x0000ff00) >> 8; - int b = (argb & 0x000000ff); - - // Remove anything after 8 bits - a = a & 0xff; - r = r & 0xff; - g = g & 0xff; - b = b & 0xff; - - // Set full alpha if target image has no alpha - if (!alpha) - a = 0xff; - - // Convert color to luminance if target - // image is in luminance format - if (luminance){ - // convert RGB to luminance - } - - // Do bit reduction, assumes proper rounding has already been - // done. - a = a >> reductionA; - r = r >> reductionR; - g = g >> reductionG; - b = b >> reductionB; - - // Put components into appropriate positions - a = (a << p.as) & p.am; - r = (r << p.rs) & p.rm; - g = (g << p.gs) & p.gm; - b = (b << p.bs) & p.bm; - - int outputPixel = ((a | r | g | b) << p.is) & p.im; - int i = initialPos + (Ix(x,y,width) * p.bpp); - writePixel(buf, i, outputPixel, p.bpp); - } - } - } - - private static final double LOG2 = Math.log(2); - - public static void createData(Image image, boolean mipmaps){ - int bpp = image.getFormat().getBitsPerPixel(); - int w = image.getWidth(); - int h = image.getHeight(); - if (!mipmaps){ - image.setData(BufferUtils.createByteBuffer(w*h*bpp/8)); - return; - } - int expectedMipmaps = 1 + (int) Math.ceil(Math.log(Math.max(h, w)) / LOG2); - int[] mipMapSizes = new int[expectedMipmaps]; - int total = 0; - for (int i = 0; i < mipMapSizes.length; i++){ - int size = (w * h * bpp) / 8; - total += size; - mipMapSizes[i] = size; - w /= 2; - h /= 2; - } - image.setMipMapSizes(mipMapSizes); - image.setData(BufferUtils.createByteBuffer(total)); - } - - /** - * Convert the image from the given format to the output format. - * It is assumed that both images have buffers with the appropriate - * number of elements and that both have the same dimensions. - * - * @param input - * @param output - */ - public static void convert(Image input, Image output){ - DecodeParams inParams = params.get(input.getFormat()); - DecodeParams outParams = params.get(output.getFormat()); - - if (inParams == null || outParams == null) - throw new UnsupportedOperationException(); - - int width = input.getWidth(); - int height = input.getHeight(); - - if (width != output.getWidth() || height != output.getHeight()) - throw new IllegalArgumentException(); - - ByteBuffer inData = input.getData(0); - - boolean inAlpha = false; - boolean inLum = false; - boolean inRGB = false; - if (inParams.am != 0) { - inAlpha = true; - } - - if (inParams.rm != 0 && inParams.gm == 0 && inParams.bm == 0) { - inLum = true; - } else if (inParams.rm != 0 && inParams.gm != 0 && inParams.bm != 0) { - inRGB = true; - } - - int expansionA = 8 - Integer.bitCount(inParams.am); - int expansionR = 8 - Integer.bitCount(inParams.rm); - int expansionG = 8 - Integer.bitCount(inParams.gm); - int expansionB = 8 - Integer.bitCount(inParams.bm); - - int inputPixel; - for (int y = 0; y < height; y++){ - for (int x = 0; x < width; x++){ - int i = Ix(x, y, width) * inParams.bpp; - inputPixel = (readPixel(inData, i, inParams.bpp) & inParams.im) >> inParams.is; - - int a = (inputPixel & inParams.am) >> inParams.as; - int r = (inputPixel & inParams.rm) >> inParams.rs; - int g = (inputPixel & inParams.gm) >> inParams.gs; - int b = (inputPixel & inParams.bm) >> inParams.bs; - - r = r & 0xff; - g = g & 0xff; - b = b & 0xff; - a = a & 0xff; - - a = a << expansionA; - r = r << expansionR; - g = g << expansionG; - b = b << expansionB; - - if (inLum) - b = g = r; - - if (!inAlpha) - a = 0xff; - -// int argb = (a << 24) | (r << 16) | (g << 8) | b; -// out.setRGB(x, y, argb); - } - } - } - - public static BufferedImage convert(Image image, boolean do16bit, boolean fullalpha, int mipLevel){ - Format format = image.getFormat(); - DecodeParams p = params.get(image.getFormat()); - if (p == null) - throw new UnsupportedOperationException(); - - int width = image.getWidth(); - int height = image.getHeight(); - - int level = mipLevel; - while (--level >= 0){ - width /= 2; - height /= 2; - } - - ByteBuffer buf = image.getData(0); - buf.order(ByteOrder.LITTLE_ENDIAN); - - BufferedImage out; - - boolean alpha = false; - boolean luminance = false; - boolean rgb = false; - if (p.am != 0) - alpha = true; - - if (p.rm != 0 && p.gm == 0 && p.bm == 0) - luminance = true; - else if (p.rm != 0 && p.gm != 0 && p.bm != 0) - rgb = true; - - // alpha OR luminance but not both - if ( (alpha && !rgb && !luminance) || (luminance && !alpha && !rgb) ){ - out = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); - }else if ( (rgb && alpha) || (luminance && alpha) ){ - if (do16bit){ - if (fullalpha){ - ColorModel model = AWTLoader.AWT_RGBA4444; - WritableRaster raster = model.createCompatibleWritableRaster(width, width); - out = new BufferedImage(model, raster, false, null); - }else{ - // RGB5_A1 - ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); - int[] nBits = {5, 5, 5, 1}; - int[] bOffs = {0, 1, 2, 3}; - ColorModel colorModel = new ComponentColorModel(cs, nBits, true, false, - Transparency.BITMASK, - DataBuffer.TYPE_BYTE); - WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, - width, height, - width*2, 2, - bOffs, null); - out = new BufferedImage(colorModel, raster, false, null); - } - }else{ - out = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); - } - }else{ - if (do16bit){ - out = new BufferedImage(width, height, BufferedImage.TYPE_USHORT_565_RGB); - }else{ - out = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); - } - } - - int expansionA = 8 - Integer.bitCount(p.am); - int expansionR = 8 - Integer.bitCount(p.rm); - int expansionG = 8 - Integer.bitCount(p.gm); - int expansionB = 8 - Integer.bitCount(p.bm); - - if (expansionR < 0){ - expansionR = 0; - } - - int mipPos = 0; - for (int i = 0; i < mipLevel; i++){ - mipPos += image.getMipMapSizes()[i]; - } - int inputPixel; - for (int y = 0; y < height; y++){ - for (int x = 0; x < width; x++){ - int i = mipPos + (Ix(x,y,width) * p.bpp); - inputPixel = (readPixel(buf,i,p.bpp) & p.im) >> p.is; - int a = (inputPixel & p.am) >> p.as; - int r = (inputPixel & p.rm) >> p.rs; - int g = (inputPixel & p.gm) >> p.gs; - int b = (inputPixel & p.bm) >> p.bs; - - r = r & 0xff; - g = g & 0xff; - b = b & 0xff; - a = a & 0xff; - - a = a << expansionA; - r = r << expansionR; - g = g << expansionG; - b = b << expansionB; - - if (luminance) - b = g = r; - - if (!alpha) - a = 0xff; - - int argb = (a << 24) | (r << 16) | (g << 8) | b; - out.setRGB(x, y, argb); - } - } - - return out; - } - -} +/* + * 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 jme3tools.converters; + +import com.jme3.texture.Image; +import com.jme3.texture.Image.Format; +import com.jme3.texture.plugins.AWTLoader; +import com.jme3.util.BufferUtils; +import java.awt.Transparency; +import java.awt.color.ColorSpace; +import java.awt.image.*; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.EnumMap; + +public class ImageToAwt { + + private static final EnumMap params + = new EnumMap(Format.class); + + private static class DecodeParams { + + final int bpp, am, rm, gm, bm, as, rs, gs, bs, im, is; + + public DecodeParams(int bpp, int am, int rm, int gm, int bm, int as, int rs, int gs, int bs, int im, int is) { + this.bpp = bpp; + this.am = am; + this.rm = rm; + this.gm = gm; + this.bm = bm; + this.as = as; + this.rs = rs; + this.gs = gs; + this.bs = bs; + this.im = im; + this.is = is; + } + + public DecodeParams(int bpp, int rm, int rs, int im, int is, boolean alpha){ + this.bpp = bpp; + if (alpha){ + this.am = rm; + this.as = rs; + this.rm = 0; + this.rs = 0; + }else{ + this.rm = rm; + this.rs = rs; + this.am = 0; + this.as = 0; + } + + this.gm = 0; + this.bm = 0; + this.gs = 0; + this.bs = 0; + this.im = im; + this.is = is; + } + + public DecodeParams(int bpp, int rm, int rs, int im, int is){ + this(bpp, rm, rs, im, is, false); + } + } + + static { + final int mx___ = 0xff000000; + final int m_x__ = 0x00ff0000; + final int m__x_ = 0x0000ff00; + final int m___x = 0x000000ff; + final int sx___ = 24; + final int s_x__ = 16; + final int s__x_ = 8; + final int s___x = 0; + final int mxxxx = 0xffffffff; + final int sxxxx = 0; + + final int m4x___ = 0xf000; + final int m4_x__ = 0x0f00; + final int m4__x_ = 0x00f0; + final int m4___x = 0x000f; + final int s4x___ = 12; + final int s4_x__ = 8; + final int s4__x_ = 4; + final int s4___x = 0; + + final int m5___ = 0xf800; + final int m_5__ = 0x07c0; + final int m__5_ = 0x003e; + final int m___1 = 0x0001; + + final int s5___ = 11; + final int s_5__ = 6; + final int s__5_ = 1; + final int s___1 = 0; + + final int m5__ = 0xf800; + final int m_6_ = 0x07e0; + final int m__5 = 0x001f; + + final int s5__ = 11; + final int s_6_ = 5; + final int s__5 = 0; + + final int mxx__ = 0xffff0000; + final int sxx__ = 32; + final int m__xx = 0x0000ffff; + final int s__xx = 0; + + // note: compressed, depth, or floating point formats not included here.. + + params.put(Format.ABGR8, new DecodeParams(4, mx___, m___x, m__x_, m_x__, + sx___, s___x, s__x_, s_x__, + mxxxx, sxxxx)); + params.put(Format.ARGB4444, new DecodeParams(2, m4x___, m4_x__, m4__x_, m4___x, + s4x___, s4_x__, s4__x_, s4___x, + mxxxx, sxxxx)); + params.put(Format.Alpha16, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, true)); + params.put(Format.Alpha8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, true)); + params.put(Format.BGR8, new DecodeParams(3, 0, m___x, m__x_, m_x__, + 0, s___x, s__x_, s_x__, + mxxxx, sxxxx)); + params.put(Format.Luminance16, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, false)); + params.put(Format.Luminance8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, false)); + params.put(Format.Luminance16Alpha16, new DecodeParams(4, m__xx, mxx__, 0, 0, + s__xx, sxx__, 0, 0, + mxxxx, sxxxx)); + params.put(Format.Luminance16F, new DecodeParams(2, mxxxx, sxxxx, mxxxx, sxxxx, false)); + params.put(Format.Luminance16FAlpha16F, new DecodeParams(4, m__xx, mxx__, 0, 0, + s__xx, sxx__, 0, 0, + mxxxx, sxxxx)); + params.put(Format.Luminance32F, new DecodeParams(4, mxxxx, sxxxx, mxxxx, sxxxx, false)); + params.put(Format.Luminance8, new DecodeParams(1, mxxxx, sxxxx, mxxxx, sxxxx, false)); + params.put(Format.RGB5A1, new DecodeParams(2, m___1, m5___, m_5__, m__5_, + s___1, s5___, s_5__, s__5_, + mxxxx, sxxxx)); + params.put(Format.RGB565, new DecodeParams(2, 0, m5__ , m_6_ , m__5, + 0, s5__ , s_6_ , s__5, + mxxxx, sxxxx)); + params.put(Format.RGB8, new DecodeParams(3, 0, m_x__, m__x_, m___x, + 0, s_x__, s__x_, s___x, + mxxxx, sxxxx)); + params.put(Format.RGBA8, new DecodeParams(4, m___x, mx___, m_x__, m__x_, + s___x, sx___, s_x__, s__x_, + mxxxx, sxxxx)); + params.put(Format.BGRA8, new DecodeParams(4, m___x, m__x_, m_x__, mx___, + s___x, s__x_, s_x__, sx___, + mxxxx, sxxxx)); + + params.put(Format.ARGB8, new DecodeParams(4, mx___, m_x__, m__x_, m___x, + sx___, s_x__, s__x_, s___x, + mxxxx, sxxxx)); + + } + + private static int Ix(int x, int y, int w){ + return y * w + x; + } + + private static int readPixel(ByteBuffer buf, int idx, int bpp){ + buf.position(idx); + int original = buf.get() & 0xff; + while ((--bpp) > 0){ + original = (original << 8) | (buf.get() & 0xff); + } + return original; + } + + private static void writePixel(ByteBuffer buf, int idx, int pixel, int bpp){ + buf.position(idx); + while ((--bpp) >= 0){ +// pixel = pixel >> 8; + byte bt = (byte) ((pixel >> (bpp * 8)) & 0xff); +// buf.put( (byte) (pixel & 0xff) ); + buf.put(bt); + } + } + + + /** + * Convert an AWT image to jME image. + */ + public static void convert(BufferedImage image, Format format, ByteBuffer buf){ + DecodeParams p = params.get(format); + if (p == null) + throw new UnsupportedOperationException("Image format " + format + " is not supported"); + + int width = image.getWidth(); + int height = image.getHeight(); + + boolean alpha = true; + boolean luminance = false; + + int reductionA = 8 - Integer.bitCount(p.am); + int reductionR = 8 - Integer.bitCount(p.rm); + int reductionG = 8 - Integer.bitCount(p.gm); + int reductionB = 8 - Integer.bitCount(p.bm); + + int initialPos = buf.position(); + for (int y = 0; y < height; y++){ + for (int x = 0; x < width; x++){ + // Get ARGB + int argb = image.getRGB(x, y); + + // Extract color components + int a = (argb & 0xff000000) >> 24; + int r = (argb & 0x00ff0000) >> 16; + int g = (argb & 0x0000ff00) >> 8; + int b = (argb & 0x000000ff); + + // Remove anything after 8 bits + a = a & 0xff; + r = r & 0xff; + g = g & 0xff; + b = b & 0xff; + + // Set full alpha if target image has no alpha + if (!alpha) + a = 0xff; + + // Convert color to luminance if target + // image is in luminance format + if (luminance){ + // convert RGB to luminance + } + + // Do bit reduction, assumes proper rounding has already been + // done. + a = a >> reductionA; + r = r >> reductionR; + g = g >> reductionG; + b = b >> reductionB; + + // Put components into appropriate positions + a = (a << p.as) & p.am; + r = (r << p.rs) & p.rm; + g = (g << p.gs) & p.gm; + b = (b << p.bs) & p.bm; + + int outputPixel = ((a | r | g | b) << p.is) & p.im; + int i = initialPos + (Ix(x,y,width) * p.bpp); + writePixel(buf, i, outputPixel, p.bpp); + } + } + } + + private static final double LOG2 = Math.log(2); + + public static void createData(Image image, boolean mipmaps){ + int bpp = image.getFormat().getBitsPerPixel(); + int w = image.getWidth(); + int h = image.getHeight(); + if (!mipmaps){ + image.setData(BufferUtils.createByteBuffer(w*h*bpp/8)); + return; + } + int expectedMipmaps = 1 + (int) Math.ceil(Math.log(Math.max(h, w)) / LOG2); + int[] mipMapSizes = new int[expectedMipmaps]; + int total = 0; + for (int i = 0; i < mipMapSizes.length; i++){ + int size = (w * h * bpp) / 8; + total += size; + mipMapSizes[i] = size; + w /= 2; + h /= 2; + } + image.setMipMapSizes(mipMapSizes); + image.setData(BufferUtils.createByteBuffer(total)); + } + + /** + * Convert the image from the given format to the output format. + * It is assumed that both images have buffers with the appropriate + * number of elements and that both have the same dimensions. + * + * @param input + * @param output + */ + public static void convert(Image input, Image output){ + DecodeParams inParams = params.get(input.getFormat()); + DecodeParams outParams = params.get(output.getFormat()); + + if (inParams == null || outParams == null) + throw new UnsupportedOperationException(); + + int width = input.getWidth(); + int height = input.getHeight(); + + if (width != output.getWidth() || height != output.getHeight()) + throw new IllegalArgumentException(); + + ByteBuffer inData = input.getData(0); + + boolean inAlpha = false; + boolean inLum = false; + boolean inRGB = false; + if (inParams.am != 0) { + inAlpha = true; + } + + if (inParams.rm != 0 && inParams.gm == 0 && inParams.bm == 0) { + inLum = true; + } else if (inParams.rm != 0 && inParams.gm != 0 && inParams.bm != 0) { + inRGB = true; + } + + int expansionA = 8 - Integer.bitCount(inParams.am); + int expansionR = 8 - Integer.bitCount(inParams.rm); + int expansionG = 8 - Integer.bitCount(inParams.gm); + int expansionB = 8 - Integer.bitCount(inParams.bm); + + int inputPixel; + for (int y = 0; y < height; y++){ + for (int x = 0; x < width; x++){ + int i = Ix(x, y, width) * inParams.bpp; + inputPixel = (readPixel(inData, i, inParams.bpp) & inParams.im) >> inParams.is; + + int a = (inputPixel & inParams.am) >> inParams.as; + int r = (inputPixel & inParams.rm) >> inParams.rs; + int g = (inputPixel & inParams.gm) >> inParams.gs; + int b = (inputPixel & inParams.bm) >> inParams.bs; + + r = r & 0xff; + g = g & 0xff; + b = b & 0xff; + a = a & 0xff; + + a = a << expansionA; + r = r << expansionR; + g = g << expansionG; + b = b << expansionB; + + if (inLum) + b = g = r; + + if (!inAlpha) + a = 0xff; + +// int argb = (a << 24) | (r << 16) | (g << 8) | b; +// out.setRGB(x, y, argb); + } + } + } + + public static BufferedImage convert(Image image, boolean do16bit, boolean fullalpha, int mipLevel){ + Format format = image.getFormat(); + DecodeParams p = params.get(image.getFormat()); + if (p == null) + throw new UnsupportedOperationException(); + + int width = image.getWidth(); + int height = image.getHeight(); + + int level = mipLevel; + while (--level >= 0){ + width /= 2; + height /= 2; + } + + ByteBuffer buf = image.getData(0); + buf.order(ByteOrder.LITTLE_ENDIAN); + + BufferedImage out; + + boolean alpha = false; + boolean luminance = false; + boolean rgb = false; + if (p.am != 0) + alpha = true; + + if (p.rm != 0 && p.gm == 0 && p.bm == 0) + luminance = true; + else if (p.rm != 0 && p.gm != 0 && p.bm != 0) + rgb = true; + + // alpha OR luminance but not both + if ( (alpha && !rgb && !luminance) || (luminance && !alpha && !rgb) ){ + out = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); + }else if ( (rgb && alpha) || (luminance && alpha) ){ + if (do16bit){ + if (fullalpha){ + ColorModel model = AWTLoader.AWT_RGBA4444; + WritableRaster raster = model.createCompatibleWritableRaster(width, width); + out = new BufferedImage(model, raster, false, null); + }else{ + // RGB5_A1 + ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); + int[] nBits = {5, 5, 5, 1}; + int[] bOffs = {0, 1, 2, 3}; + ColorModel colorModel = new ComponentColorModel(cs, nBits, true, false, + Transparency.BITMASK, + DataBuffer.TYPE_BYTE); + WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, + width, height, + width*2, 2, + bOffs, null); + out = new BufferedImage(colorModel, raster, false, null); + } + }else{ + out = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + } + }else{ + if (do16bit){ + out = new BufferedImage(width, height, BufferedImage.TYPE_USHORT_565_RGB); + }else{ + out = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + } + } + + int expansionA = 8 - Integer.bitCount(p.am); + int expansionR = 8 - Integer.bitCount(p.rm); + int expansionG = 8 - Integer.bitCount(p.gm); + int expansionB = 8 - Integer.bitCount(p.bm); + + if (expansionR < 0){ + expansionR = 0; + } + + int mipPos = 0; + for (int i = 0; i < mipLevel; i++){ + mipPos += image.getMipMapSizes()[i]; + } + int inputPixel; + for (int y = 0; y < height; y++){ + for (int x = 0; x < width; x++){ + int i = mipPos + (Ix(x,y,width) * p.bpp); + inputPixel = (readPixel(buf,i,p.bpp) & p.im) >> p.is; + int a = (inputPixel & p.am) >> p.as; + int r = (inputPixel & p.rm) >> p.rs; + int g = (inputPixel & p.gm) >> p.gs; + int b = (inputPixel & p.bm) >> p.bs; + + r = r & 0xff; + g = g & 0xff; + b = b & 0xff; + a = a & 0xff; + + a = a << expansionA; + r = r << expansionR; + g = g << expansionG; + b = b << expansionB; + + if (luminance) + b = g = r; + + if (!alpha) + a = 0xff; + + int argb = (a << 24) | (r << 16) | (g << 8) | b; + out.setRGB(x, y, argb); + } + } + + return out; + } + +} diff --git a/jme3-desktop/src/main/java/jme3tools/converters/MipMapGenerator.java b/engine/src/desktop/jme3tools/converters/MipMapGenerator.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/converters/MipMapGenerator.java rename to engine/src/desktop/jme3tools/converters/MipMapGenerator.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/Coordinate.java b/engine/src/desktop/jme3tools/navigation/Coordinate.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/Coordinate.java rename to engine/src/desktop/jme3tools/navigation/Coordinate.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/GCSailing.java b/engine/src/desktop/jme3tools/navigation/GCSailing.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/GCSailing.java rename to engine/src/desktop/jme3tools/navigation/GCSailing.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/InvalidPositionException.java b/engine/src/desktop/jme3tools/navigation/InvalidPositionException.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/InvalidPositionException.java rename to engine/src/desktop/jme3tools/navigation/InvalidPositionException.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/MapModel2D.java b/engine/src/desktop/jme3tools/navigation/MapModel2D.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/MapModel2D.java rename to engine/src/desktop/jme3tools/navigation/MapModel2D.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/MapModel3D.java b/engine/src/desktop/jme3tools/navigation/MapModel3D.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/MapModel3D.java rename to engine/src/desktop/jme3tools/navigation/MapModel3D.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/NavCalculator.java b/engine/src/desktop/jme3tools/navigation/NavCalculator.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/NavCalculator.java rename to engine/src/desktop/jme3tools/navigation/NavCalculator.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/NumUtil.java b/engine/src/desktop/jme3tools/navigation/NumUtil.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/NumUtil.java rename to engine/src/desktop/jme3tools/navigation/NumUtil.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/Position.java b/engine/src/desktop/jme3tools/navigation/Position.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/Position.java rename to engine/src/desktop/jme3tools/navigation/Position.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/RLSailing.java b/engine/src/desktop/jme3tools/navigation/RLSailing.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/RLSailing.java rename to engine/src/desktop/jme3tools/navigation/RLSailing.java diff --git a/jme3-desktop/src/main/java/jme3tools/navigation/StringUtil.java b/engine/src/desktop/jme3tools/navigation/StringUtil.java similarity index 100% rename from jme3-desktop/src/main/java/jme3tools/navigation/StringUtil.java rename to engine/src/desktop/jme3tools/navigation/StringUtil.java diff --git a/engine/src/ios/com/jme3/audio/android/AL.java b/engine/src/ios/com/jme3/audio/android/AL.java new file mode 100644 index 000000000..d8fea3933 --- /dev/null +++ b/engine/src/ios/com/jme3/audio/android/AL.java @@ -0,0 +1,1054 @@ +package com.jme3.audio.android; + +/** + * + * @author iwgeric + */ +public class AL { + + + + /* ********** */ + /* FROM ALC.h */ + /* ********** */ + +// typedef struct ALCdevice_struct ALCdevice; +// typedef struct ALCcontext_struct ALCcontext; + + + /** + * No error + */ + static final int ALC_NO_ERROR = 0; + + /** + * No device + */ + static final int ALC_INVALID_DEVICE = 0xA001; + + /** + * invalid context ID + */ + static final int ALC_INVALID_CONTEXT = 0xA002; + + /** + * bad enum + */ + static final int ALC_INVALID_ENUM = 0xA003; + + /** + * bad value + */ + static final int ALC_INVALID_VALUE = 0xA004; + + /** + * Out of memory. + */ + static final int ALC_OUT_OF_MEMORY = 0xA005; + + + /** + * The Specifier string for default device + */ + static final int ALC_DEFAULT_DEVICE_SPECIFIER = 0x1004; + static final int ALC_DEVICE_SPECIFIER = 0x1005; + static final int ALC_EXTENSIONS = 0x1006; + + static final int ALC_MAJOR_VERSION = 0x1000; + static final int ALC_MINOR_VERSION = 0x1001; + + static final int ALC_ATTRIBUTES_SIZE = 0x1002; + static final int ALC_ALL_ATTRIBUTES = 0x1003; + + + /** + * Capture extension + */ + static final int ALC_EXT_CAPTURE = 1; + static final int ALC_CAPTURE_DEVICE_SPECIFIER = 0x310; + static final int ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER = 0x311; + static final int ALC_CAPTURE_SAMPLES = 0x312; + + + /** + * ALC_ENUMERATE_ALL_EXT enums + */ + static final int ALC_ENUMERATE_ALL_EXT = 1; + static final int ALC_DEFAULT_ALL_DEVICES_SPECIFIER = 0x1012; + static final int ALC_ALL_DEVICES_SPECIFIER = 0x1013; + + + /* ********** */ + /* FROM AL.h */ + /* ********** */ + +/** Boolean False. */ + static final int AL_FALSE = 0; + +/** Boolean True. */ + static final int AL_TRUE = 1; + +/* "no distance model" or "no buffer" */ + static final int AL_NONE = 0; + +/** Indicate Source has relative coordinates. */ + static final int AL_SOURCE_RELATIVE = 0x202; + + + +/** + * Directional source, inner cone angle, in degrees. + * Range: [0-360] + * Default: 360 + */ + static final int AL_CONE_INNER_ANGLE = 0x1001; + +/** + * Directional source, outer cone angle, in degrees. + * Range: [0-360] + * Default: 360 + */ + static final int AL_CONE_OUTER_ANGLE = 0x1002; + +/** + * Specify the pitch to be applied at source. + * Range: [0.5-2.0] + * Default: 1.0 + */ + static final int AL_PITCH = 0x1003; + +/** + * Specify the current location in three dimensional space. + * OpenAL, like OpenGL, uses a right handed coordinate system, + * where in a frontal default view X (thumb) points right, + * Y points up (index finger), and Z points towards the + * viewer/camera (middle finger). + * To switch from a left handed coordinate system, flip the + * sign on the Z coordinate. + * Listener position is always in the world coordinate system. + */ + static final int AL_POSITION = 0x1004; + +/** Specify the current direction. */ + static final int AL_DIRECTION = 0x1005; + +/** Specify the current velocity in three dimensional space. */ + static final int AL_VELOCITY = 0x1006; + +/** + * Indicate whether source is looping. + * Type: ALboolean? + * Range: [AL_TRUE, AL_FALSE] + * Default: FALSE. + */ + static final int AL_LOOPING = 0x1007; + +/** + * Indicate the buffer to provide sound samples. + * Type: ALuint. + * Range: any valid Buffer id. + */ + static final int AL_BUFFER = 0x1009; + +/** + * Indicate the gain (volume amplification) applied. + * Type: ALfloat. + * Range: ]0.0- ] + * A value of 1.0 means un-attenuated/unchanged. + * Each division by 2 equals an attenuation of -6dB. + * Each multiplicaton with 2 equals an amplification of +6dB. + * A value of 0.0 is meaningless with respect to a logarithmic + * scale; it is interpreted as zero volume - the channel + * is effectively disabled. + */ + static final int AL_GAIN = 0x100A; + +/* + * Indicate minimum source attenuation + * Type: ALfloat + * Range: [0.0 - 1.0] + * + * Logarthmic + */ + static final int AL_MIN_GAIN = 0x100D; + +/** + * Indicate maximum source attenuation + * Type: ALfloat + * Range: [0.0 - 1.0] + * + * Logarthmic + */ + static final int AL_MAX_GAIN = 0x100E; + +/** + * Indicate listener orientation. + * + * at/up + */ + static final int AL_ORIENTATION = 0x100F; + +/** + * Source state information. + */ + static final int AL_SOURCE_STATE = 0x1010; + static final int AL_INITIAL = 0x1011; + static final int AL_PLAYING = 0x1012; + static final int AL_PAUSED = 0x1013; + static final int AL_STOPPED = 0x1014; + +/** + * Buffer Queue params + */ + static final int AL_BUFFERS_QUEUED = 0x1015; + static final int AL_BUFFERS_PROCESSED = 0x1016; + +/** + * Source buffer position information + */ + static final int AL_SEC_OFFSET = 0x1024; + static final int AL_SAMPLE_OFFSET = 0x1025; + static final int AL_BYTE_OFFSET = 0x1026; + +/* + * Source type (Static, Streaming or undetermined) + * Source is Static if a Buffer has been attached using AL_BUFFER + * Source is Streaming if one or more Buffers have been attached using alSourceQueueBuffers + * Source is undetermined when it has the NULL buffer attached + */ + static final int AL_SOURCE_TYPE = 0x1027; + static final int AL_STATIC = 0x1028; + static final int AL_STREAMING = 0x1029; + static final int AL_UNDETERMINED = 0x1030; + +/** Sound samples: format specifier. */ + static final int AL_FORMAT_MONO8 = 0x1100; + static final int AL_FORMAT_MONO16 = 0x1101; + static final int AL_FORMAT_STEREO8 = 0x1102; + static final int AL_FORMAT_STEREO16 = 0x1103; + +/** + * source specific reference distance + * Type: ALfloat + * Range: 0.0 - +inf + * + * At 0.0, no distance attenuation occurs. Default is + * 1.0. + */ + static final int AL_REFERENCE_DISTANCE = 0x1020; + +/** + * source specific rolloff factor + * Type: ALfloat + * Range: 0.0 - +inf + * + */ + static final int AL_ROLLOFF_FACTOR = 0x1021; + +/** + * Directional source, outer cone gain. + * + * Default: 0.0 + * Range: [0.0 - 1.0] + * Logarithmic + */ + static final int AL_CONE_OUTER_GAIN = 0x1022; + +/** + * Indicate distance above which sources are not + * attenuated using the inverse clamped distance model. + * + * Default: +inf + * Type: ALfloat + * Range: 0.0 - +inf + */ + static final int AL_MAX_DISTANCE = 0x1023; + +/** + * Sound samples: frequency, in units of Hertz [Hz]. + * This is the number of samples per second. Half of the + * sample frequency marks the maximum significant + * frequency component. + */ + static final int AL_FREQUENCY = 0x2001; + static final int AL_BITS = 0x2002; + static final int AL_CHANNELS = 0x2003; + static final int AL_SIZE = 0x2004; + +/** + * Buffer state. + * + * Not supported for public use (yet). + */ + static final int AL_UNUSED = 0x2010; + static final int AL_PENDING = 0x2011; + static final int AL_PROCESSED = 0x2012; + + +/** Errors: No Error. */ + static final int AL_NO_ERROR = 0; + +/** + * Invalid Name paramater passed to AL call. + */ + static final int AL_INVALID_NAME = 0xA001; + +/** + * Invalid parameter passed to AL call. + */ + static final int AL_INVALID_ENUM = 0xA002; + +/** + * Invalid enum parameter value. + */ + static final int AL_INVALID_VALUE = 0xA003; + +/** + * Illegal call. + */ + static final int AL_INVALID_OPERATION = 0xA004; + + +/** + * No mojo. + */ + static final int AL_OUT_OF_MEMORY = 0xA005; + + +/** Context strings: Vendor Name. */ + static final int AL_VENDOR = 0xB001; + static final int AL_VERSION = 0xB002; + static final int AL_RENDERER = 0xB003; + static final int AL_EXTENSIONS = 0xB004; + +/** Global tweakage. */ + +/** + * Doppler scale. Default 1.0 + */ + static final int AL_DOPPLER_FACTOR = 0xC000; + +/** + * Tweaks speed of propagation. + */ + static final int AL_DOPPLER_VELOCITY = 0xC001; + +/** + * Speed of Sound in units per second + */ + static final int AL_SPEED_OF_SOUND = 0xC003; + +/** + * Distance models + * + * used in conjunction with DistanceModel + * + * implicit: NONE, which disances distance attenuation. + */ + static final int AL_DISTANCE_MODEL = 0xD000; + static final int AL_INVERSE_DISTANCE = 0xD001; + static final int AL_INVERSE_DISTANCE_CLAMPED = 0xD002; + static final int AL_LINEAR_DISTANCE = 0xD003; + static final int AL_LINEAR_DISTANCE_CLAMPED = 0xD004; + static final int AL_EXPONENT_DISTANCE = 0xD005; + static final int AL_EXPONENT_DISTANCE_CLAMPED = 0xD006; + + /* ********** */ + /* FROM efx.h */ + /* ********** */ + + static final String ALC_EXT_EFX_NAME = "ALC_EXT_EFX"; + + static final int ALC_EFX_MAJOR_VERSION = 0x20001; + static final int ALC_EFX_MINOR_VERSION = 0x20002; + static final int ALC_MAX_AUXILIARY_SENDS = 0x20003; + + +///* Listener properties. */ +//#define AL_METERS_PER_UNIT 0x20004 +// +///* Source properties. */ + static final int AL_DIRECT_FILTER = 0x20005; + static final int AL_AUXILIARY_SEND_FILTER = 0x20006; +//#define AL_AIR_ABSORPTION_FACTOR 0x20007 +//#define AL_ROOM_ROLLOFF_FACTOR 0x20008 +//#define AL_CONE_OUTER_GAINHF 0x20009 + static final int AL_DIRECT_FILTER_GAINHF_AUTO = 0x2000A; +//#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B +//#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C +// +// +///* Effect properties. */ +// +///* Reverb effect parameters */ + static final int AL_REVERB_DENSITY = 0x0001; + static final int AL_REVERB_DIFFUSION = 0x0002; + static final int AL_REVERB_GAIN = 0x0003; + static final int AL_REVERB_GAINHF = 0x0004; + static final int AL_REVERB_DECAY_TIME = 0x0005; + static final int AL_REVERB_DECAY_HFRATIO = 0x0006; + static final int AL_REVERB_REFLECTIONS_GAIN = 0x0007; + static final int AL_REVERB_REFLECTIONS_DELAY = 0x0008; + static final int AL_REVERB_LATE_REVERB_GAIN = 0x0009; + static final int AL_REVERB_LATE_REVERB_DELAY = 0x000A; + static final int AL_REVERB_AIR_ABSORPTION_GAINHF = 0x000B; + static final int AL_REVERB_ROOM_ROLLOFF_FACTOR = 0x000C; + static final int AL_REVERB_DECAY_HFLIMIT = 0x000D; + +///* EAX Reverb effect parameters */ +//#define AL_EAXREVERB_DENSITY 0x0001 +//#define AL_EAXREVERB_DIFFUSION 0x0002 +//#define AL_EAXREVERB_GAIN 0x0003 +//#define AL_EAXREVERB_GAINHF 0x0004 +//#define AL_EAXREVERB_GAINLF 0x0005 +//#define AL_EAXREVERB_DECAY_TIME 0x0006 +//#define AL_EAXREVERB_DECAY_HFRATIO 0x0007 +//#define AL_EAXREVERB_DECAY_LFRATIO 0x0008 +//#define AL_EAXREVERB_REFLECTIONS_GAIN 0x0009 +//#define AL_EAXREVERB_REFLECTIONS_DELAY 0x000A +//#define AL_EAXREVERB_REFLECTIONS_PAN 0x000B +//#define AL_EAXREVERB_LATE_REVERB_GAIN 0x000C +//#define AL_EAXREVERB_LATE_REVERB_DELAY 0x000D +//#define AL_EAXREVERB_LATE_REVERB_PAN 0x000E +//#define AL_EAXREVERB_ECHO_TIME 0x000F +//#define AL_EAXREVERB_ECHO_DEPTH 0x0010 +//#define AL_EAXREVERB_MODULATION_TIME 0x0011 +//#define AL_EAXREVERB_MODULATION_DEPTH 0x0012 +//#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF 0x0013 +//#define AL_EAXREVERB_HFREFERENCE 0x0014 +//#define AL_EAXREVERB_LFREFERENCE 0x0015 +//#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR 0x0016 +//#define AL_EAXREVERB_DECAY_HFLIMIT 0x0017 +// +///* Chorus effect parameters */ +//#define AL_CHORUS_WAVEFORM 0x0001 +//#define AL_CHORUS_PHASE 0x0002 +//#define AL_CHORUS_RATE 0x0003 +//#define AL_CHORUS_DEPTH 0x0004 +//#define AL_CHORUS_FEEDBACK 0x0005 +//#define AL_CHORUS_DELAY 0x0006 +// +///* Distortion effect parameters */ +//#define AL_DISTORTION_EDGE 0x0001 +//#define AL_DISTORTION_GAIN 0x0002 +//#define AL_DISTORTION_LOWPASS_CUTOFF 0x0003 +//#define AL_DISTORTION_EQCENTER 0x0004 +//#define AL_DISTORTION_EQBANDWIDTH 0x0005 +// +///* Echo effect parameters */ +//#define AL_ECHO_DELAY 0x0001 +//#define AL_ECHO_LRDELAY 0x0002 +//#define AL_ECHO_DAMPING 0x0003 +//#define AL_ECHO_FEEDBACK 0x0004 +//#define AL_ECHO_SPREAD 0x0005 +// +///* Flanger effect parameters */ +//#define AL_FLANGER_WAVEFORM 0x0001 +//#define AL_FLANGER_PHASE 0x0002 +//#define AL_FLANGER_RATE 0x0003 +//#define AL_FLANGER_DEPTH 0x0004 +//#define AL_FLANGER_FEEDBACK 0x0005 +//#define AL_FLANGER_DELAY 0x0006 +// +///* Frequency shifter effect parameters */ +//#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001 +//#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002 +//#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003 +// +///* Vocal morpher effect parameters */ +//#define AL_VOCAL_MORPHER_PHONEMEA 0x0001 +//#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002 +//#define AL_VOCAL_MORPHER_PHONEMEB 0x0003 +//#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004 +//#define AL_VOCAL_MORPHER_WAVEFORM 0x0005 +//#define AL_VOCAL_MORPHER_RATE 0x0006 +// +///* Pitchshifter effect parameters */ +//#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001 +//#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002 +// +///* Ringmodulator effect parameters */ +//#define AL_RING_MODULATOR_FREQUENCY 0x0001 +//#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002 +//#define AL_RING_MODULATOR_WAVEFORM 0x0003 +// +///* Autowah effect parameters */ +//#define AL_AUTOWAH_ATTACK_TIME 0x0001 +//#define AL_AUTOWAH_RELEASE_TIME 0x0002 +//#define AL_AUTOWAH_RESONANCE 0x0003 +//#define AL_AUTOWAH_PEAK_GAIN 0x0004 +// +///* Compressor effect parameters */ +//#define AL_COMPRESSOR_ONOFF 0x0001 +// +///* Equalizer effect parameters */ +//#define AL_EQUALIZER_LOW_GAIN 0x0001 +//#define AL_EQUALIZER_LOW_CUTOFF 0x0002 +//#define AL_EQUALIZER_MID1_GAIN 0x0003 +//#define AL_EQUALIZER_MID1_CENTER 0x0004 +//#define AL_EQUALIZER_MID1_WIDTH 0x0005 +//#define AL_EQUALIZER_MID2_GAIN 0x0006 +//#define AL_EQUALIZER_MID2_CENTER 0x0007 +//#define AL_EQUALIZER_MID2_WIDTH 0x0008 +//#define AL_EQUALIZER_HIGH_GAIN 0x0009 +//#define AL_EQUALIZER_HIGH_CUTOFF 0x000A +// +///* Effect type */ +//#define AL_EFFECT_FIRST_PARAMETER 0x0000 +//#define AL_EFFECT_LAST_PARAMETER 0x8000 + static final int AL_EFFECT_TYPE = 0x8001; +// +///* Effect types, used with the AL_EFFECT_TYPE property */ +//#define AL_EFFECT_NULL 0x0000 + static final int AL_EFFECT_REVERB = 0x0001; +//#define AL_EFFECT_CHORUS 0x0002 +//#define AL_EFFECT_DISTORTION 0x0003 +//#define AL_EFFECT_ECHO 0x0004 +//#define AL_EFFECT_FLANGER 0x0005 +//#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006 +//#define AL_EFFECT_VOCAL_MORPHER 0x0007 +//#define AL_EFFECT_PITCH_SHIFTER 0x0008 +//#define AL_EFFECT_RING_MODULATOR 0x0009 +//#define AL_EFFECT_AUTOWAH 0x000A +//#define AL_EFFECT_COMPRESSOR 0x000B +//#define AL_EFFECT_EQUALIZER 0x000C +//#define AL_EFFECT_EAXREVERB 0x8000 +// +///* Auxiliary Effect Slot properties. */ + static final int AL_EFFECTSLOT_EFFECT = 0x0001; +//#define AL_EFFECTSLOT_GAIN 0x0002 +//#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003 +// +///* NULL Auxiliary Slot ID to disable a source send. */ +//#define AL_EFFECTSLOT_NULL 0x0000 +// +// +///* Filter properties. */ +// +///* Lowpass filter parameters */ + static final int AL_LOWPASS_GAIN = 0x0001; + static final int AL_LOWPASS_GAINHF = 0x0002; +// +///* Highpass filter parameters */ +//#define AL_HIGHPASS_GAIN 0x0001 +//#define AL_HIGHPASS_GAINLF 0x0002 +// +///* Bandpass filter parameters */ +//#define AL_BANDPASS_GAIN 0x0001 +//#define AL_BANDPASS_GAINLF 0x0002 +//#define AL_BANDPASS_GAINHF 0x0003 +// +///* Filter type */ +//#define AL_FILTER_FIRST_PARAMETER 0x0000 +//#define AL_FILTER_LAST_PARAMETER 0x8000 + static final int AL_FILTER_TYPE = 0x8001; +// +///* Filter types, used with the AL_FILTER_TYPE property */ + static final int AL_FILTER_NULL = 0x0000; + static final int AL_FILTER_LOWPASS = 0x0001; + static final int AL_FILTER_HIGHPASS = 0x0002; +//#define AL_FILTER_BANDPASS 0x0003 +// +///* Filter ranges and defaults. */ +// +///* Lowpass filter */ +//#define AL_LOWPASS_MIN_GAIN (0.0f) +//#define AL_LOWPASS_MAX_GAIN (1.0f) +//#define AL_LOWPASS_DEFAULT_GAIN (1.0f) +// +//#define AL_LOWPASS_MIN_GAINHF (0.0f) +//#define AL_LOWPASS_MAX_GAINHF (1.0f) +//#define AL_LOWPASS_DEFAULT_GAINHF (1.0f) +// +///* Highpass filter */ +//#define AL_HIGHPASS_MIN_GAIN (0.0f) +//#define AL_HIGHPASS_MAX_GAIN (1.0f) +//#define AL_HIGHPASS_DEFAULT_GAIN (1.0f) +// +//#define AL_HIGHPASS_MIN_GAINLF (0.0f) +//#define AL_HIGHPASS_MAX_GAINLF (1.0f) +//#define AL_HIGHPASS_DEFAULT_GAINLF (1.0f) +// +///* Bandpass filter */ +//#define AL_BANDPASS_MIN_GAIN (0.0f) +//#define AL_BANDPASS_MAX_GAIN (1.0f) +//#define AL_BANDPASS_DEFAULT_GAIN (1.0f) +// +//#define AL_BANDPASS_MIN_GAINHF (0.0f) +//#define AL_BANDPASS_MAX_GAINHF (1.0f) +//#define AL_BANDPASS_DEFAULT_GAINHF (1.0f) +// +//#define AL_BANDPASS_MIN_GAINLF (0.0f) +//#define AL_BANDPASS_MAX_GAINLF (1.0f) +//#define AL_BANDPASS_DEFAULT_GAINLF (1.0f) +// +// +///* Effect parameter ranges and defaults. */ +// +///* Standard reverb effect */ +//#define AL_REVERB_MIN_DENSITY (0.0f) +//#define AL_REVERB_MAX_DENSITY (1.0f) +//#define AL_REVERB_DEFAULT_DENSITY (1.0f) +// +//#define AL_REVERB_MIN_DIFFUSION (0.0f) +//#define AL_REVERB_MAX_DIFFUSION (1.0f) +//#define AL_REVERB_DEFAULT_DIFFUSION (1.0f) +// +//#define AL_REVERB_MIN_GAIN (0.0f) +//#define AL_REVERB_MAX_GAIN (1.0f) +//#define AL_REVERB_DEFAULT_GAIN (0.32f) +// +//#define AL_REVERB_MIN_GAINHF (0.0f) +//#define AL_REVERB_MAX_GAINHF (1.0f) +//#define AL_REVERB_DEFAULT_GAINHF (0.89f) +// +//#define AL_REVERB_MIN_DECAY_TIME (0.1f) +//#define AL_REVERB_MAX_DECAY_TIME (20.0f) +//#define AL_REVERB_DEFAULT_DECAY_TIME (1.49f) +// +//#define AL_REVERB_MIN_DECAY_HFRATIO (0.1f) +//#define AL_REVERB_MAX_DECAY_HFRATIO (2.0f) +//#define AL_REVERB_DEFAULT_DECAY_HFRATIO (0.83f) +// +//#define AL_REVERB_MIN_REFLECTIONS_GAIN (0.0f) +//#define AL_REVERB_MAX_REFLECTIONS_GAIN (3.16f) +//#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN (0.05f) +// +//#define AL_REVERB_MIN_REFLECTIONS_DELAY (0.0f) +//#define AL_REVERB_MAX_REFLECTIONS_DELAY (0.3f) +//#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY (0.007f) +// +//#define AL_REVERB_MIN_LATE_REVERB_GAIN (0.0f) +//#define AL_REVERB_MAX_LATE_REVERB_GAIN (10.0f) +//#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN (1.26f) +// +//#define AL_REVERB_MIN_LATE_REVERB_DELAY (0.0f) +//#define AL_REVERB_MAX_LATE_REVERB_DELAY (0.1f) +//#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY (0.011f) +// +//#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f) +//#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f) +//#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f) +// +//#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f) +//#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f) +//#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) +// +//#define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE +//#define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE +//#define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE +// +///* EAX reverb effect */ +//#define AL_EAXREVERB_MIN_DENSITY (0.0f) +//#define AL_EAXREVERB_MAX_DENSITY (1.0f) +//#define AL_EAXREVERB_DEFAULT_DENSITY (1.0f) +// +//#define AL_EAXREVERB_MIN_DIFFUSION (0.0f) +//#define AL_EAXREVERB_MAX_DIFFUSION (1.0f) +//#define AL_EAXREVERB_DEFAULT_DIFFUSION (1.0f) +// +//#define AL_EAXREVERB_MIN_GAIN (0.0f) +//#define AL_EAXREVERB_MAX_GAIN (1.0f) +//#define AL_EAXREVERB_DEFAULT_GAIN (0.32f) +// +//#define AL_EAXREVERB_MIN_GAINHF (0.0f) +//#define AL_EAXREVERB_MAX_GAINHF (1.0f) +//#define AL_EAXREVERB_DEFAULT_GAINHF (0.89f) +// +//#define AL_EAXREVERB_MIN_GAINLF (0.0f) +//#define AL_EAXREVERB_MAX_GAINLF (1.0f) +//#define AL_EAXREVERB_DEFAULT_GAINLF (1.0f) +// +//#define AL_EAXREVERB_MIN_DECAY_TIME (0.1f) +//#define AL_EAXREVERB_MAX_DECAY_TIME (20.0f) +//#define AL_EAXREVERB_DEFAULT_DECAY_TIME (1.49f) +// +//#define AL_EAXREVERB_MIN_DECAY_HFRATIO (0.1f) +//#define AL_EAXREVERB_MAX_DECAY_HFRATIO (2.0f) +//#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO (0.83f) +// +//#define AL_EAXREVERB_MIN_DECAY_LFRATIO (0.1f) +//#define AL_EAXREVERB_MAX_DECAY_LFRATIO (2.0f) +//#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO (1.0f) +// +//#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN (0.0f) +//#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN (3.16f) +//#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN (0.05f) +// +//#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY (0.0f) +//#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY (0.3f) +//#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY (0.007f) +// +//#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f) +// +//#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN (0.0f) +//#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN (10.0f) +//#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN (1.26f) +// +//#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY (0.0f) +//#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY (0.1f) +//#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY (0.011f) +// +//#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f) +// +//#define AL_EAXREVERB_MIN_ECHO_TIME (0.075f) +//#define AL_EAXREVERB_MAX_ECHO_TIME (0.25f) +//#define AL_EAXREVERB_DEFAULT_ECHO_TIME (0.25f) +// +//#define AL_EAXREVERB_MIN_ECHO_DEPTH (0.0f) +//#define AL_EAXREVERB_MAX_ECHO_DEPTH (1.0f) +//#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH (0.0f) +// +//#define AL_EAXREVERB_MIN_MODULATION_TIME (0.04f) +//#define AL_EAXREVERB_MAX_MODULATION_TIME (4.0f) +//#define AL_EAXREVERB_DEFAULT_MODULATION_TIME (0.25f) +// +//#define AL_EAXREVERB_MIN_MODULATION_DEPTH (0.0f) +//#define AL_EAXREVERB_MAX_MODULATION_DEPTH (1.0f) +//#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH (0.0f) +// +//#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f) +//#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f) +//#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f) +// +//#define AL_EAXREVERB_MIN_HFREFERENCE (1000.0f) +//#define AL_EAXREVERB_MAX_HFREFERENCE (20000.0f) +//#define AL_EAXREVERB_DEFAULT_HFREFERENCE (5000.0f) +// +//#define AL_EAXREVERB_MIN_LFREFERENCE (20.0f) +//#define AL_EAXREVERB_MAX_LFREFERENCE (1000.0f) +//#define AL_EAXREVERB_DEFAULT_LFREFERENCE (250.0f) +// +//#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f) +//#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f) +//#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) +// +//#define AL_EAXREVERB_MIN_DECAY_HFLIMIT AL_FALSE +//#define AL_EAXREVERB_MAX_DECAY_HFLIMIT AL_TRUE +//#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE +// +///* Chorus effect */ +//#define AL_CHORUS_WAVEFORM_SINUSOID (0) +//#define AL_CHORUS_WAVEFORM_TRIANGLE (1) +// +//#define AL_CHORUS_MIN_WAVEFORM (0) +//#define AL_CHORUS_MAX_WAVEFORM (1) +//#define AL_CHORUS_DEFAULT_WAVEFORM (1) +// +//#define AL_CHORUS_MIN_PHASE (-180) +//#define AL_CHORUS_MAX_PHASE (180) +//#define AL_CHORUS_DEFAULT_PHASE (90) +// +//#define AL_CHORUS_MIN_RATE (0.0f) +//#define AL_CHORUS_MAX_RATE (10.0f) +//#define AL_CHORUS_DEFAULT_RATE (1.1f) +// +//#define AL_CHORUS_MIN_DEPTH (0.0f) +//#define AL_CHORUS_MAX_DEPTH (1.0f) +//#define AL_CHORUS_DEFAULT_DEPTH (0.1f) +// +//#define AL_CHORUS_MIN_FEEDBACK (-1.0f) +//#define AL_CHORUS_MAX_FEEDBACK (1.0f) +//#define AL_CHORUS_DEFAULT_FEEDBACK (0.25f) +// +//#define AL_CHORUS_MIN_DELAY (0.0f) +//#define AL_CHORUS_MAX_DELAY (0.016f) +//#define AL_CHORUS_DEFAULT_DELAY (0.016f) +// +///* Distortion effect */ +//#define AL_DISTORTION_MIN_EDGE (0.0f) +//#define AL_DISTORTION_MAX_EDGE (1.0f) +//#define AL_DISTORTION_DEFAULT_EDGE (0.2f) +// +//#define AL_DISTORTION_MIN_GAIN (0.01f) +//#define AL_DISTORTION_MAX_GAIN (1.0f) +//#define AL_DISTORTION_DEFAULT_GAIN (0.05f) +// +//#define AL_DISTORTION_MIN_LOWPASS_CUTOFF (80.0f) +//#define AL_DISTORTION_MAX_LOWPASS_CUTOFF (24000.0f) +//#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF (8000.0f) +// +//#define AL_DISTORTION_MIN_EQCENTER (80.0f) +//#define AL_DISTORTION_MAX_EQCENTER (24000.0f) +//#define AL_DISTORTION_DEFAULT_EQCENTER (3600.0f) +// +//#define AL_DISTORTION_MIN_EQBANDWIDTH (80.0f) +//#define AL_DISTORTION_MAX_EQBANDWIDTH (24000.0f) +//#define AL_DISTORTION_DEFAULT_EQBANDWIDTH (3600.0f) +// +///* Echo effect */ +//#define AL_ECHO_MIN_DELAY (0.0f) +//#define AL_ECHO_MAX_DELAY (0.207f) +//#define AL_ECHO_DEFAULT_DELAY (0.1f) +// +//#define AL_ECHO_MIN_LRDELAY (0.0f) +//#define AL_ECHO_MAX_LRDELAY (0.404f) +//#define AL_ECHO_DEFAULT_LRDELAY (0.1f) +// +//#define AL_ECHO_MIN_DAMPING (0.0f) +//#define AL_ECHO_MAX_DAMPING (0.99f) +//#define AL_ECHO_DEFAULT_DAMPING (0.5f) +// +//#define AL_ECHO_MIN_FEEDBACK (0.0f) +//#define AL_ECHO_MAX_FEEDBACK (1.0f) +//#define AL_ECHO_DEFAULT_FEEDBACK (0.5f) +// +//#define AL_ECHO_MIN_SPREAD (-1.0f) +//#define AL_ECHO_MAX_SPREAD (1.0f) +//#define AL_ECHO_DEFAULT_SPREAD (-1.0f) +// +///* Flanger effect */ +//#define AL_FLANGER_WAVEFORM_SINUSOID (0) +//#define AL_FLANGER_WAVEFORM_TRIANGLE (1) +// +//#define AL_FLANGER_MIN_WAVEFORM (0) +//#define AL_FLANGER_MAX_WAVEFORM (1) +//#define AL_FLANGER_DEFAULT_WAVEFORM (1) +// +//#define AL_FLANGER_MIN_PHASE (-180) +//#define AL_FLANGER_MAX_PHASE (180) +//#define AL_FLANGER_DEFAULT_PHASE (0) +// +//#define AL_FLANGER_MIN_RATE (0.0f) +//#define AL_FLANGER_MAX_RATE (10.0f) +//#define AL_FLANGER_DEFAULT_RATE (0.27f) +// +//#define AL_FLANGER_MIN_DEPTH (0.0f) +//#define AL_FLANGER_MAX_DEPTH (1.0f) +//#define AL_FLANGER_DEFAULT_DEPTH (1.0f) +// +//#define AL_FLANGER_MIN_FEEDBACK (-1.0f) +//#define AL_FLANGER_MAX_FEEDBACK (1.0f) +//#define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f) +// +//#define AL_FLANGER_MIN_DELAY (0.0f) +//#define AL_FLANGER_MAX_DELAY (0.004f) +//#define AL_FLANGER_DEFAULT_DELAY (0.002f) +// +///* Frequency shifter effect */ +//#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY (0.0f) +//#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY (24000.0f) +//#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY (0.0f) +// +//#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION (0) +//#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION (2) +//#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0) +// +//#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN (0) +//#define AL_FREQUENCY_SHIFTER_DIRECTION_UP (1) +//#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF (2) +// +//#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0) +//#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2) +//#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0) +// +///* Vocal morpher effect */ +//#define AL_VOCAL_MORPHER_MIN_PHONEMEA (0) +//#define AL_VOCAL_MORPHER_MAX_PHONEMEA (29) +//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA (0) +// +//#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24) +//#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24) +//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0) +// +//#define AL_VOCAL_MORPHER_MIN_PHONEMEB (0) +//#define AL_VOCAL_MORPHER_MAX_PHONEMEB (29) +//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB (10) +// +//#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24) +//#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24) +//#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0) +// +//#define AL_VOCAL_MORPHER_PHONEME_A (0) +//#define AL_VOCAL_MORPHER_PHONEME_E (1) +//#define AL_VOCAL_MORPHER_PHONEME_I (2) +//#define AL_VOCAL_MORPHER_PHONEME_O (3) +//#define AL_VOCAL_MORPHER_PHONEME_U (4) +//#define AL_VOCAL_MORPHER_PHONEME_AA (5) +//#define AL_VOCAL_MORPHER_PHONEME_AE (6) +//#define AL_VOCAL_MORPHER_PHONEME_AH (7) +//#define AL_VOCAL_MORPHER_PHONEME_AO (8) +//#define AL_VOCAL_MORPHER_PHONEME_EH (9) +//#define AL_VOCAL_MORPHER_PHONEME_ER (10) +//#define AL_VOCAL_MORPHER_PHONEME_IH (11) +//#define AL_VOCAL_MORPHER_PHONEME_IY (12) +//#define AL_VOCAL_MORPHER_PHONEME_UH (13) +//#define AL_VOCAL_MORPHER_PHONEME_UW (14) +//#define AL_VOCAL_MORPHER_PHONEME_B (15) +//#define AL_VOCAL_MORPHER_PHONEME_D (16) +//#define AL_VOCAL_MORPHER_PHONEME_F (17) +//#define AL_VOCAL_MORPHER_PHONEME_G (18) +//#define AL_VOCAL_MORPHER_PHONEME_J (19) +//#define AL_VOCAL_MORPHER_PHONEME_K (20) +//#define AL_VOCAL_MORPHER_PHONEME_L (21) +//#define AL_VOCAL_MORPHER_PHONEME_M (22) +//#define AL_VOCAL_MORPHER_PHONEME_N (23) +//#define AL_VOCAL_MORPHER_PHONEME_P (24) +//#define AL_VOCAL_MORPHER_PHONEME_R (25) +//#define AL_VOCAL_MORPHER_PHONEME_S (26) +//#define AL_VOCAL_MORPHER_PHONEME_T (27) +//#define AL_VOCAL_MORPHER_PHONEME_V (28) +//#define AL_VOCAL_MORPHER_PHONEME_Z (29) +// +//#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID (0) +//#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE (1) +//#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH (2) +// +//#define AL_VOCAL_MORPHER_MIN_WAVEFORM (0) +//#define AL_VOCAL_MORPHER_MAX_WAVEFORM (2) +//#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM (0) +// +//#define AL_VOCAL_MORPHER_MIN_RATE (0.0f) +//#define AL_VOCAL_MORPHER_MAX_RATE (10.0f) +//#define AL_VOCAL_MORPHER_DEFAULT_RATE (1.41f) +// +///* Pitch shifter effect */ +//#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12) +//#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE (12) +//#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE (12) +// +//#define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50) +//#define AL_PITCH_SHIFTER_MAX_FINE_TUNE (50) +//#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE (0) +// +///* Ring modulator effect */ +//#define AL_RING_MODULATOR_MIN_FREQUENCY (0.0f) +//#define AL_RING_MODULATOR_MAX_FREQUENCY (8000.0f) +//#define AL_RING_MODULATOR_DEFAULT_FREQUENCY (440.0f) +// +//#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF (0.0f) +//#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF (24000.0f) +//#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f) +// +//#define AL_RING_MODULATOR_SINUSOID (0) +//#define AL_RING_MODULATOR_SAWTOOTH (1) +//#define AL_RING_MODULATOR_SQUARE (2) +// +//#define AL_RING_MODULATOR_MIN_WAVEFORM (0) +//#define AL_RING_MODULATOR_MAX_WAVEFORM (2) +//#define AL_RING_MODULATOR_DEFAULT_WAVEFORM (0) +// +///* Autowah effect */ +//#define AL_AUTOWAH_MIN_ATTACK_TIME (0.0001f) +//#define AL_AUTOWAH_MAX_ATTACK_TIME (1.0f) +//#define AL_AUTOWAH_DEFAULT_ATTACK_TIME (0.06f) +// +//#define AL_AUTOWAH_MIN_RELEASE_TIME (0.0001f) +//#define AL_AUTOWAH_MAX_RELEASE_TIME (1.0f) +//#define AL_AUTOWAH_DEFAULT_RELEASE_TIME (0.06f) +// +//#define AL_AUTOWAH_MIN_RESONANCE (2.0f) +//#define AL_AUTOWAH_MAX_RESONANCE (1000.0f) +//#define AL_AUTOWAH_DEFAULT_RESONANCE (1000.0f) +// +//#define AL_AUTOWAH_MIN_PEAK_GAIN (0.00003f) +//#define AL_AUTOWAH_MAX_PEAK_GAIN (31621.0f) +//#define AL_AUTOWAH_DEFAULT_PEAK_GAIN (11.22f) +// +///* Compressor effect */ +//#define AL_COMPRESSOR_MIN_ONOFF (0) +//#define AL_COMPRESSOR_MAX_ONOFF (1) +//#define AL_COMPRESSOR_DEFAULT_ONOFF (1) +// +///* Equalizer effect */ +//#define AL_EQUALIZER_MIN_LOW_GAIN (0.126f) +//#define AL_EQUALIZER_MAX_LOW_GAIN (7.943f) +//#define AL_EQUALIZER_DEFAULT_LOW_GAIN (1.0f) +// +//#define AL_EQUALIZER_MIN_LOW_CUTOFF (50.0f) +//#define AL_EQUALIZER_MAX_LOW_CUTOFF (800.0f) +//#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF (200.0f) +// +//#define AL_EQUALIZER_MIN_MID1_GAIN (0.126f) +//#define AL_EQUALIZER_MAX_MID1_GAIN (7.943f) +//#define AL_EQUALIZER_DEFAULT_MID1_GAIN (1.0f) +// +//#define AL_EQUALIZER_MIN_MID1_CENTER (200.0f) +//#define AL_EQUALIZER_MAX_MID1_CENTER (3000.0f) +//#define AL_EQUALIZER_DEFAULT_MID1_CENTER (500.0f) +// +//#define AL_EQUALIZER_MIN_MID1_WIDTH (0.01f) +//#define AL_EQUALIZER_MAX_MID1_WIDTH (1.0f) +//#define AL_EQUALIZER_DEFAULT_MID1_WIDTH (1.0f) +// +//#define AL_EQUALIZER_MIN_MID2_GAIN (0.126f) +//#define AL_EQUALIZER_MAX_MID2_GAIN (7.943f) +//#define AL_EQUALIZER_DEFAULT_MID2_GAIN (1.0f) +// +//#define AL_EQUALIZER_MIN_MID2_CENTER (1000.0f) +//#define AL_EQUALIZER_MAX_MID2_CENTER (8000.0f) +//#define AL_EQUALIZER_DEFAULT_MID2_CENTER (3000.0f) +// +//#define AL_EQUALIZER_MIN_MID2_WIDTH (0.01f) +//#define AL_EQUALIZER_MAX_MID2_WIDTH (1.0f) +//#define AL_EQUALIZER_DEFAULT_MID2_WIDTH (1.0f) +// +//#define AL_EQUALIZER_MIN_HIGH_GAIN (0.126f) +//#define AL_EQUALIZER_MAX_HIGH_GAIN (7.943f) +//#define AL_EQUALIZER_DEFAULT_HIGH_GAIN (1.0f) +// +//#define AL_EQUALIZER_MIN_HIGH_CUTOFF (4000.0f) +//#define AL_EQUALIZER_MAX_HIGH_CUTOFF (16000.0f) +//#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF (6000.0f) +// +// +///* Source parameter value ranges and defaults. */ +//#define AL_MIN_AIR_ABSORPTION_FACTOR (0.0f) +//#define AL_MAX_AIR_ABSORPTION_FACTOR (10.0f) +//#define AL_DEFAULT_AIR_ABSORPTION_FACTOR (0.0f) +// +//#define AL_MIN_ROOM_ROLLOFF_FACTOR (0.0f) +//#define AL_MAX_ROOM_ROLLOFF_FACTOR (10.0f) +//#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f) +// +//#define AL_MIN_CONE_OUTER_GAINHF (0.0f) +//#define AL_MAX_CONE_OUTER_GAINHF (1.0f) +//#define AL_DEFAULT_CONE_OUTER_GAINHF (1.0f) +// +//#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE +//#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE +//#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE +// +//#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE +//#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE +//#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE +// +//#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE +//#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE +//#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE +// +// +///* Listener parameter value ranges and defaults. */ +//#define AL_MIN_METERS_PER_UNIT FLT_MIN +//#define AL_MAX_METERS_PER_UNIT FLT_MAX +//#define AL_DEFAULT_METERS_PER_UNIT (1.0f) + + + public static String GetALErrorMsg(int errorCode) { + String errorText; + switch (errorCode) { + case AL_NO_ERROR: + errorText = "No Error"; + break; + case AL_INVALID_NAME: + errorText = "Invalid Name"; + break; + case AL_INVALID_ENUM: + errorText = "Invalid Enum"; + break; + case AL_INVALID_VALUE: + errorText = "Invalid Value"; + break; + case AL_INVALID_OPERATION: + errorText = "Invalid Operation"; + break; + case AL_OUT_OF_MEMORY: + errorText = "Out of Memory"; + break; + default: + errorText = "Unknown Error Code: " + String.valueOf(errorCode); + } + return errorText; + } +} + diff --git a/engine/src/ios/com/jme3/audio/android/AndroidAudioData.java b/engine/src/ios/com/jme3/audio/android/AndroidAudioData.java new file mode 100644 index 000000000..e7f4a0f98 --- /dev/null +++ b/engine/src/ios/com/jme3/audio/android/AndroidAudioData.java @@ -0,0 +1,67 @@ +package com.jme3.audio.android; + +import com.jme3.asset.AssetKey; +import com.jme3.audio.AudioData; +import com.jme3.audio.AudioRenderer; +import com.jme3.util.NativeObject; + +public class AndroidAudioData extends AudioData { + + protected AssetKey assetKey; + protected float currentVolume = 0f; + + public AndroidAudioData(){ + super(); + } + + protected AndroidAudioData(int id){ + super(id); + } + + public AssetKey getAssetKey() { + return assetKey; + } + + public void setAssetKey(AssetKey assetKey) { + this.assetKey = assetKey; + } + + @Override + public DataType getDataType() { + return DataType.Buffer; + } + + @Override + public float getDuration() { + return 0; // TODO: ??? + } + + @Override + public void resetObject() { + this.id = -1; + setUpdateNeeded(); + } + + @Override + public void deleteObject(Object rendererObject) { + ((AudioRenderer)rendererObject).deleteAudioData(this); + } + + public float getCurrentVolume() { + return currentVolume; + } + + public void setCurrentVolume(float currentVolume) { + this.currentVolume = currentVolume; + } + + @Override + public NativeObject createDestructableClone() { + return new AndroidAudioData(id); + } + + @Override + public long getUniqueId() { + return ((long)OBJTYPE_AUDIOBUFFER << 32) | ((long)id); + } +} diff --git a/engine/src/ios/com/jme3/audio/android/AndroidAudioRenderer.java b/engine/src/ios/com/jme3/audio/android/AndroidAudioRenderer.java new file mode 100644 index 000000000..0cde16aa5 --- /dev/null +++ b/engine/src/ios/com/jme3/audio/android/AndroidAudioRenderer.java @@ -0,0 +1,24 @@ +package com.jme3.audio.android; + +import com.jme3.audio.AudioRenderer; + +/** + * Android specific AudioRenderer interface that supports pausing and resuming + * audio files when the app is minimized or placed in the background + * + * @author iwgeric + */ +public interface AndroidAudioRenderer extends AudioRenderer { + + /** + * Pauses all Playing audio. To be used when the app is placed in the + * background. + */ + public void pauseAll(); + + /** + * Resumes all Paused audio. To be used when the app is brought back to + * the foreground. + */ + public void resumeAll(); +} diff --git a/engine/src/ios/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java b/engine/src/ios/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java new file mode 100644 index 000000000..07591a425 --- /dev/null +++ b/engine/src/ios/com/jme3/audio/android/AndroidOpenALSoftAudioRenderer.java @@ -0,0 +1,1423 @@ +/* + * 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.audio.android; + +import com.jme3.audio.*; +import com.jme3.audio.AudioSource.Status; +import com.jme3.math.Vector3f; +import com.jme3.util.BufferUtils; +import com.jme3.util.NativeObjectManager; +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.util.ArrayList; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class AndroidOpenALSoftAudioRenderer implements AndroidAudioRenderer, Runnable { + + private static final Logger logger = Logger.getLogger(AndroidOpenALSoftAudioRenderer.class.getName()); + private final NativeObjectManager objManager = new NativeObjectManager(); + // When multiplied by STREAMING_BUFFER_COUNT, will equal 44100 * 2 * 2 + // which is exactly 1 second of audio. + private static final int BUFFER_SIZE = 35280; + private static final int STREAMING_BUFFER_COUNT = 5; + private final static int MAX_NUM_CHANNELS = 64; + private IntBuffer ib = BufferUtils.createIntBuffer(1); + private final FloatBuffer fb = BufferUtils.createVector3Buffer(2); + private final ByteBuffer nativeBuf = BufferUtils.createByteBuffer(BUFFER_SIZE); + private final byte[] arrayBuf = new byte[BUFFER_SIZE]; + private int[] channels; + private AudioSource[] chanSrcs; + private int nextChan = 0; + private ArrayList freeChans = new ArrayList(); + private Listener listener; + private boolean audioDisabled = false; + private boolean supportEfx = false; + private int auxSends = 0; + private int reverbFx = -1; + private int reverbFxSlot = -1; + // Update audio 20 times per second + private static final float UPDATE_RATE = 0.05f; + private final Thread audioThread = new Thread(this, "jME3 Audio Thread"); + private final AtomicBoolean threadLock = new AtomicBoolean(false); + private boolean initialized = false; + + public AndroidOpenALSoftAudioRenderer() { + } + + public void initialize() { + if (!audioThread.isAlive()) { + audioThread.setDaemon(true); + audioThread.setPriority(Thread.NORM_PRIORITY + 1); + audioThread.start(); + } else { + throw new IllegalStateException("Initialize already called"); + } + } + + private void checkDead() { + if (audioThread.getState() == Thread.State.TERMINATED) { + throw new IllegalStateException("Audio thread is terminated"); + } + } + + public void run() { + initInThread(); + synchronized (threadLock) { + threadLock.set(true); + threadLock.notifyAll(); + } + + initialized = true; + + long updateRateNanos = (long) (UPDATE_RATE * 1000000000); + mainloop: + while (true) { + long startTime = System.nanoTime(); + + if (Thread.interrupted()) { + break; + } + + synchronized (threadLock) { + updateInThread(UPDATE_RATE); + } + + long endTime = System.nanoTime(); + long diffTime = endTime - startTime; + + if (diffTime < updateRateNanos) { + long desiredEndTime = startTime + updateRateNanos; + while (System.nanoTime() < desiredEndTime) { + try { + Thread.sleep(1); + } catch (InterruptedException ex) { + break mainloop; + } + } + } + } + + initialized = false; + + synchronized (threadLock) { + cleanupInThread(); + } + } + + public void initInThread() { + try { + if (!alIsCreated()) { + //AL.create(); + alCreate(); + checkError(false); + } +// } catch (OpenALException ex) { +// logger.log(Level.SEVERE, "Failed to load audio library", ex); +// audioDisabled = true; +// return; +// } catch (LWJGLException ex) { +// logger.log(Level.SEVERE, "Failed to load audio library", ex); +// audioDisabled = true; +// return; + } catch (UnsatisfiedLinkError ex) { + logger.log(Level.SEVERE, "Failed to load audio library", ex); + audioDisabled = true; + return; + } + + //ALCdevice device = AL.getDevice(); /* device maintained in jni */ + //String deviceName = ALC10.alcGetString(device, ALC10.ALC_DEVICE_SPECIFIER); + String deviceName = alcGetString(AL.ALC_DEVICE_SPECIFIER); + + logger.log(Level.INFO, "Audio Device: {0}", deviceName); + //logger.log(Level.INFO, "Audio Vendor: {0}", alGetString(AL_VENDOR)); + //logger.log(Level.INFO, "Audio Renderer: {0}", alGetString(AL_RENDERER)); + //logger.log(Level.INFO, "Audio Version: {0}", alGetString(AL_VERSION)); + logger.log(Level.INFO, "Audio Vendor: {0}", alGetString(AL.AL_VENDOR)); + logger.log(Level.INFO, "Audio Renderer: {0}", alGetString(AL.AL_RENDERER)); + logger.log(Level.INFO, "Audio Version: {0}", alGetString(AL.AL_VERSION)); + + // Find maximum # of sources supported by this implementation + ArrayList channelList = new ArrayList(); + for (int i = 0; i < MAX_NUM_CHANNELS; i++) { + int chan = alGenSources(); + //if (alGetError() != 0) { + if (checkError(false) != 0) { + break; + } else { + channelList.add(chan); + } + } + + channels = new int[channelList.size()]; + for (int i = 0; i < channels.length; i++) { + channels[i] = channelList.get(i); + } + + ib = BufferUtils.createIntBuffer(channels.length); + chanSrcs = new AudioSource[channels.length]; + + logger.log(Level.INFO, "AudioRenderer supports {0} channels", channels.length); + + //supportEfx = alcIsExtensionPresent(device, "ALC_EXT_EFX"); + supportEfx = alcIsExtensionPresent(AL.ALC_EXT_EFX_NAME); + + if (supportEfx) { + ib.position(0).limit(1); + //ALC10.alcGetInteger(device, EFX10.ALC_EFX_MAJOR_VERSION, ib); + alcGetInteger(AL.ALC_EFX_MAJOR_VERSION, ib, 1); + int major = ib.get(0); + ib.position(0).limit(1); + //ALC10.alcGetInteger(device, EFX10.ALC_EFX_MINOR_VERSION, ib); + alcGetInteger(AL.ALC_EFX_MINOR_VERSION, ib, 1); + int minor = ib.get(0); + logger.log(Level.INFO, "Audio effect extension version: {0}.{1}", new Object[]{major, minor}); + + //ALC10.alcGetInteger(device, EFX10.ALC_MAX_AUXILIARY_SENDS, ib); + alcGetInteger(AL.ALC_MAX_AUXILIARY_SENDS, ib, 1); + auxSends = ib.get(0); + logger.log(Level.INFO, "Audio max auxilary sends: {0}", auxSends); + + // create slot + ib.position(0).limit(1); + //EFX10.alGenAuxiliaryEffectSlots(ib); + alGenAuxiliaryEffectSlots(1, ib); + reverbFxSlot = ib.get(0); + + // create effect + ib.position(0).limit(1); + //EFX10.alGenEffects(ib); + alGenEffects(1, ib); + reverbFx = ib.get(0); + //EFX10.alEffecti(reverbFx, EFX10.AL_EFFECT_TYPE, EFX10.AL_EFFECT_REVERB); + alEffecti(reverbFx, AL.AL_EFFECT_TYPE, AL.AL_EFFECT_REVERB); + + // attach reverb effect to effect slot + //EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx); + alAuxiliaryEffectSloti(reverbFxSlot, AL.AL_EFFECTSLOT_EFFECT, reverbFx); + } else { + logger.log(Level.WARNING, "OpenAL EFX not available! Audio effects won't work."); + } + } + + public void cleanupInThread() { + if (audioDisabled) { + //AL.destroy(); + alDestroy(); + checkError(true); + return; + } + + // stop any playing channels + for (int i = 0; i < chanSrcs.length; i++) { + if (chanSrcs[i] != null) { + clearChannel(i); + } + } + + // delete channel-based sources + ib.clear(); + ib.put(channels); + ib.flip(); + //alDeleteSources(ib); + alDeleteSources(channels.length, ib); + checkError(true); + + // delete audio buffers and filters + objManager.deleteAllObjects(this); + + if (supportEfx) { + ib.position(0).limit(1); + ib.put(0, reverbFx); + //EFX10.alDeleteEffects(ib); + alDeleteEffects(1, ib); + + // If this is not allocated, why is it deleted? + // Commented out to fix native crash in OpenAL. + ib.position(0).limit(1); + ib.put(0, reverbFxSlot); + //EFX10.alDeleteAuxiliaryEffectSlots(ib); + alDeleteAuxiliaryEffectSlots(1, ib); + } + + //AL.destroy(); + logger.log(Level.INFO, "Destroying OpenAL Soft Renderer"); + alDestroy(); + } + + public void cleanup() { + // kill audio thread + if (audioThread.isAlive()) { + audioThread.interrupt(); + } + } + + private void updateFilter(Filter f) { + int id = f.getId(); + if (id == -1) { + ib.position(0).limit(1); + //EFX10.alGenFilters(ib); + alGenFilters(1, ib); + id = ib.get(0); + f.setId(id); + + objManager.registerObject(f); + } + + if (f instanceof LowPassFilter) { + LowPassFilter lpf = (LowPassFilter) f; + //EFX10.alFilteri(id, EFX10.AL_FILTER_TYPE, EFX10.AL_FILTER_LOWPASS); + alFilteri(id, AL.AL_FILTER_TYPE, AL.AL_FILTER_LOWPASS); + //EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAIN, lpf.getVolume()); + alFilterf(id, AL.AL_LOWPASS_GAIN, lpf.getVolume()); + //EFX10.alFilterf(id, EFX10.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume()); + alFilterf(id, AL.AL_LOWPASS_GAINHF, lpf.getHighFreqVolume()); + } else { + throw new UnsupportedOperationException("Filter type unsupported: " + + f.getClass().getName()); + } + + f.clearUpdateNeeded(); + } + + public void updateSourceParam(AudioSource src, AudioParam param) { + checkDead(); + synchronized (threadLock) { + while (!threadLock.get()) { + try { + threadLock.wait(); + } catch (InterruptedException ex) { + } + } + if (audioDisabled) { + return; + } + + // There is a race condition in AudioSource that can + // cause this to be called for a node that has been + // detached from its channel. For example, setVolume() + // called from the render thread may see that that AudioSource + // still has a channel value but the audio thread may + // clear that channel before setVolume() gets to call + // updateSourceParam() (because the audio stopped playing + // on its own right as the volume was set). In this case, + // it should be safe to just ignore the update + if (src.getChannel() < 0) { + return; + } + + assert src.getChannel() >= 0; + + int id = channels[src.getChannel()]; + switch (param) { + case Position: + if (!src.isPositional()) { + return; + } + + Vector3f pos = src.getPosition(); + //alSource3f(id, AL_POSITION, pos.x, pos.y, pos.z); + alSource3f(id, AL.AL_POSITION, pos.x, pos.y, pos.z); + checkError(true); + break; + case Velocity: + if (!src.isPositional()) { + return; + } + + Vector3f vel = src.getVelocity(); + //alSource3f(id, AL_VELOCITY, vel.x, vel.y, vel.z); + alSource3f(id, AL.AL_VELOCITY, vel.x, vel.y, vel.z); + checkError(true); + break; + case MaxDistance: + if (!src.isPositional()) { + return; + } + + //alSourcef(id, AL_MAX_DISTANCE, src.getMaxDistance()); + alSourcef(id, AL.AL_MAX_DISTANCE, src.getMaxDistance()); + checkError(true); + break; + case RefDistance: + if (!src.isPositional()) { + return; + } + + //alSourcef(id, AL_REFERENCE_DISTANCE, src.getRefDistance()); + alSourcef(id, AL.AL_REFERENCE_DISTANCE, src.getRefDistance()); + checkError(true); + break; + case ReverbFilter: + if (!supportEfx || !src.isPositional() || !src.isReverbEnabled()) { + return; + } + + int filter = AL.AL_FILTER_NULL; + if (src.getReverbFilter() != null) { + Filter f = src.getReverbFilter(); + if (f.isUpdateNeeded()) { + updateFilter(f); + } + filter = f.getId(); + } + //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter); + alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter); + break; + case ReverbEnabled: + if (!supportEfx || !src.isPositional()) { + return; + } + + if (src.isReverbEnabled()) { + updateSourceParam(src, AudioParam.ReverbFilter); + } else { + //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL); + alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL); + } + break; + case IsPositional: + if (!src.isPositional()) { + // Play in headspace + //alSourcei(id, AL_SOURCE_RELATIVE, AL_TRUE); + alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_TRUE); + checkError(true); + //alSource3f(id, AL_POSITION, 0, 0, 0); + alSource3f(id, AL.AL_POSITION, 0, 0, 0); + checkError(true); + //alSource3f(id, AL_VELOCITY, 0, 0, 0); + alSource3f(id, AL.AL_VELOCITY, 0, 0, 0); + checkError(true); + + // Disable reverb + //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, 0, 0, EFX10.AL_FILTER_NULL); + alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, 0, 0, AL.AL_FILTER_NULL); + } else { + //alSourcei(id, AL_SOURCE_RELATIVE, AL_FALSE); + alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE); + checkError(true); + updateSourceParam(src, AudioParam.Position); + updateSourceParam(src, AudioParam.Velocity); + updateSourceParam(src, AudioParam.MaxDistance); + updateSourceParam(src, AudioParam.RefDistance); + updateSourceParam(src, AudioParam.ReverbEnabled); + } + break; + case Direction: + if (!src.isDirectional()) { + return; + } + + Vector3f dir = src.getDirection(); + //alSource3f(id, AL_DIRECTION, dir.x, dir.y, dir.z); + alSource3f(id, AL.AL_DIRECTION, dir.x, dir.y, dir.z); + checkError(true); + break; + case InnerAngle: + if (!src.isDirectional()) { + return; + } + + //alSourcef(id, AL_CONE_INNER_ANGLE, src.getInnerAngle()); + alSourcef(id, AL.AL_CONE_INNER_ANGLE, src.getInnerAngle()); + checkError(true); + break; + case OuterAngle: + if (!src.isDirectional()) { + return; + } + + //alSourcef(id, AL_CONE_OUTER_ANGLE, src.getOuterAngle()); + alSourcef(id, AL.AL_CONE_OUTER_ANGLE, src.getOuterAngle()); + checkError(true); + break; + case IsDirectional: + if (src.isDirectional()) { + updateSourceParam(src, AudioParam.Direction); + updateSourceParam(src, AudioParam.InnerAngle); + updateSourceParam(src, AudioParam.OuterAngle); + //alSourcef(id, AL_CONE_OUTER_GAIN, 0); + alSourcef(id, AL.AL_CONE_OUTER_GAIN, 0); + checkError(true); + } else { + //alSourcef(id, AL_CONE_INNER_ANGLE, 360); + alSourcef(id, AL.AL_CONE_INNER_ANGLE, 360); + checkError(true); + //alSourcef(id, AL_CONE_OUTER_ANGLE, 360); + alSourcef(id, AL.AL_CONE_OUTER_ANGLE, 360); + checkError(true); + //alSourcef(id, AL_CONE_OUTER_GAIN, 1f); + alSourcef(id, AL.AL_CONE_OUTER_GAIN, 1f); + checkError(true); + } + break; + case DryFilter: + if (!supportEfx) { + return; + } + + if (src.getDryFilter() != null) { + Filter f = src.getDryFilter(); + if (f.isUpdateNeeded()) { + updateFilter(f); + + // NOTE: must re-attach filter for changes to apply. + //alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId()); + alSourcei(id, AL.AL_DIRECT_FILTER, f.getId()); + } + } else { + //alSourcei(id, EFX10.AL_DIRECT_FILTER, EFX10.AL_FILTER_NULL); + alSourcei(id, AL.AL_DIRECT_FILTER, AL.AL_FILTER_NULL); + } + break; + case Looping: + if (src.isLooping()) { + if (!(src.getAudioData() instanceof AudioStream)) { + //alSourcei(id, AL_LOOPING, AL_TRUE); + alSourcei(id, AL.AL_LOOPING, AL.AL_TRUE); + checkError(true); + } + } else { + //alSourcei(id, AL_LOOPING, AL_FALSE); + alSourcei(id, AL.AL_LOOPING, AL.AL_FALSE); + checkError(true); + } + break; + case Volume: + //alSourcef(id, AL_GAIN, src.getVolume()); + alSourcef(id, AL.AL_GAIN, src.getVolume()); + checkError(true); + break; + case Pitch: + //alSourcef(id, AL_PITCH, src.getPitch()); + alSourcef(id, AL.AL_PITCH, src.getPitch()); + checkError(true); + break; + } + } + } + + private void setSourceParams(int id, AudioSource src, boolean forceNonLoop) { + if (src.isPositional()) { + Vector3f pos = src.getPosition(); + Vector3f vel = src.getVelocity(); + //alSource3f(id, AL_POSITION, pos.x, pos.y, pos.z); + alSource3f(id, AL.AL_POSITION, pos.x, pos.y, pos.z); + checkError(true); + //alSource3f(id, AL_VELOCITY, vel.x, vel.y, vel.z); + alSource3f(id, AL.AL_VELOCITY, vel.x, vel.y, vel.z); + checkError(true); + //alSourcef(id, AL_MAX_DISTANCE, src.getMaxDistance()); + alSourcef(id, AL.AL_MAX_DISTANCE, src.getMaxDistance()); + checkError(true); + //alSourcef(id, AL_REFERENCE_DISTANCE, src.getRefDistance()); + alSourcef(id, AL.AL_REFERENCE_DISTANCE, src.getRefDistance()); + checkError(true); + //alSourcei(id, AL_SOURCE_RELATIVE, AL_FALSE); + alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_FALSE); + checkError(true); + + if (src.isReverbEnabled() && supportEfx) { + //int filter = EFX10.AL_FILTER_NULL; + int filter = AL.AL_FILTER_NULL; + if (src.getReverbFilter() != null) { + Filter f = src.getReverbFilter(); + if (f.isUpdateNeeded()) { + updateFilter(f); + } + filter = f.getId(); + } + //AL11.alSource3i(id, EFX10.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter); + alSource3i(id, AL.AL_AUXILIARY_SEND_FILTER, reverbFxSlot, 0, filter); + } + } else { + // play in headspace + //alSourcei(id, AL_SOURCE_RELATIVE, AL_TRUE); + alSourcei(id, AL.AL_SOURCE_RELATIVE, AL.AL_TRUE); + checkError(true); + //alSource3f(id, AL_POSITION, 0, 0, 0); + alSource3f(id, AL.AL_POSITION, 0, 0, 0); + checkError(true); + //alSource3f(id, AL_VELOCITY, 0, 0, 0); + alSource3f(id, AL.AL_VELOCITY, 0, 0, 0); + checkError(true); + } + + if (src.getDryFilter() != null && supportEfx) { + Filter f = src.getDryFilter(); + if (f.isUpdateNeeded()) { + updateFilter(f); + + // NOTE: must re-attach filter for changes to apply. + //alSourcei(id, EFX10.AL_DIRECT_FILTER, f.getId()); + alSourcei(id, AL.AL_DIRECT_FILTER, f.getId()); + } + } + + if (forceNonLoop) { + //alSourcei(id, AL_LOOPING, AL_FALSE); + alSourcei(id, AL.AL_LOOPING, AL.AL_FALSE); + checkError(true); + } else { + //alSourcei(id, AL_LOOPING, src.isLooping() ? AL_TRUE : AL_FALSE); + alSourcei(id, AL.AL_LOOPING, src.isLooping() ? AL.AL_TRUE : AL.AL_FALSE); + checkError(true); + } + //alSourcef(id, AL_GAIN, src.getVolume()); + alSourcef(id, AL.AL_GAIN, src.getVolume()); + checkError(true); + //alSourcef(id, AL_PITCH, src.getPitch()); + alSourcef(id, AL.AL_PITCH, src.getPitch()); + checkError(true); + //alSourcef(id, AL11.AL_SEC_OFFSET, src.getTimeOffset()); + alSourcef(id, AL.AL_SEC_OFFSET, src.getTimeOffset()); + checkError(true); + + if (src.isDirectional()) { + Vector3f dir = src.getDirection(); + //alSource3f(id, AL_DIRECTION, dir.x, dir.y, dir.z); + alSource3f(id, AL.AL_DIRECTION, dir.x, dir.y, dir.z); + checkError(true); + //alSourcef(id, AL_CONE_INNER_ANGLE, src.getInnerAngle()); + alSourcef(id, AL.AL_CONE_INNER_ANGLE, src.getInnerAngle()); + checkError(true); + //alSourcef(id, AL_CONE_OUTER_ANGLE, src.getOuterAngle()); + alSourcef(id, AL.AL_CONE_OUTER_ANGLE, src.getOuterAngle()); + checkError(true); + //alSourcef(id, AL_CONE_OUTER_GAIN, 0); + alSourcef(id, AL.AL_CONE_OUTER_GAIN, 0); + checkError(true); + } else { + //alSourcef(id, AL_CONE_INNER_ANGLE, 360); + alSourcef(id, AL.AL_CONE_INNER_ANGLE, 360); + checkError(true); + //alSourcef(id, AL_CONE_OUTER_ANGLE, 360); + alSourcef(id, AL.AL_CONE_OUTER_ANGLE, 360); + checkError(true); + //alSourcef(id, AL_CONE_OUTER_GAIN, 1f); + alSourcef(id, AL.AL_CONE_OUTER_GAIN, 1f); + checkError(true); + } + } + + public void updateListenerParam(Listener listener, ListenerParam param) { + checkDead(); + synchronized (threadLock) { + while (!threadLock.get()) { + try { + threadLock.wait(); + } catch (InterruptedException ex) { + } + } + if (audioDisabled) { + return; + } + + switch (param) { + case Position: + Vector3f pos = listener.getLocation(); + //alListener3f(AL_POSITION, pos.x, pos.y, pos.z); + alListener3f(AL.AL_POSITION, pos.x, pos.y, pos.z); + checkError(true); + break; + case Rotation: + Vector3f dir = listener.getDirection(); + Vector3f up = listener.getUp(); + fb.rewind(); + fb.put(dir.x).put(dir.y).put(dir.z); + fb.put(up.x).put(up.y).put(up.z); + fb.flip(); + //alListener(AL_ORIENTATION, fb); + alListener(AL.AL_ORIENTATION, fb); + checkError(true); + break; + case Velocity: + Vector3f vel = listener.getVelocity(); + //alListener3f(AL_VELOCITY, vel.x, vel.y, vel.z); + alListener3f(AL.AL_VELOCITY, vel.x, vel.y, vel.z); + checkError(true); + break; + case Volume: + //alListenerf(AL_GAIN, listener.getVolume()); + alListenerf(AL.AL_GAIN, listener.getVolume()); + checkError(true); + break; + } + } + } + + private void setListenerParams(Listener listener) { + Vector3f pos = listener.getLocation(); + Vector3f vel = listener.getVelocity(); + Vector3f dir = listener.getDirection(); + Vector3f up = listener.getUp(); + + //alListener3f(AL_POSITION, pos.x, pos.y, pos.z); + alListener3f(AL.AL_POSITION, pos.x, pos.y, pos.z); + checkError(true); + //alListener3f(AL_VELOCITY, vel.x, vel.y, vel.z); + alListener3f(AL.AL_VELOCITY, vel.x, vel.y, vel.z); + checkError(true); + fb.rewind(); + fb.put(dir.x).put(dir.y).put(dir.z); + fb.put(up.x).put(up.y).put(up.z); + fb.flip(); + //alListener(AL_ORIENTATION, fb); + alListener(AL.AL_ORIENTATION, fb); + checkError(true); + //alListenerf(AL_GAIN, listener.getVolume()); + alListenerf(AL.AL_GAIN, listener.getVolume()); + checkError(true); + } + + private int newChannel() { + if (freeChans.size() > 0) { + return freeChans.remove(0); + } else if (nextChan < channels.length) { + return nextChan++; + } else { + return -1; + } + } + + private void freeChannel(int index) { + if (index == nextChan - 1) { + nextChan--; + } else { + freeChans.add(index); + } + } + + public void setEnvironment(Environment env) { + checkDead(); + synchronized (threadLock) { + while (!threadLock.get()) { + try { + threadLock.wait(); + } catch (InterruptedException ex) { + } + } + if (audioDisabled || !supportEfx) { + return; + } + + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DENSITY, env.getDensity()); + alEffectf(reverbFx, AL.AL_REVERB_DENSITY, env.getDensity()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DIFFUSION, env.getDiffusion()); + alEffectf(reverbFx, AL.AL_REVERB_DIFFUSION, env.getDiffusion()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAIN, env.getGain()); + alEffectf(reverbFx, AL.AL_REVERB_GAIN, env.getGain()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_GAINHF, env.getGainHf()); + alEffectf(reverbFx, AL.AL_REVERB_GAINHF, env.getGainHf()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_TIME, env.getDecayTime()); + alEffectf(reverbFx, AL.AL_REVERB_DECAY_TIME, env.getDecayTime()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio()); + alEffectf(reverbFx, AL.AL_REVERB_DECAY_HFRATIO, env.getDecayHFRatio()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain()); + alEffectf(reverbFx, AL.AL_REVERB_REFLECTIONS_GAIN, env.getReflectGain()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay()); + alEffectf(reverbFx, AL.AL_REVERB_REFLECTIONS_DELAY, env.getReflectDelay()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain()); + alEffectf(reverbFx, AL.AL_REVERB_LATE_REVERB_GAIN, env.getLateReverbGain()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay()); + alEffectf(reverbFx, AL.AL_REVERB_LATE_REVERB_DELAY, env.getLateReverbDelay()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf()); + alEffectf(reverbFx, AL.AL_REVERB_AIR_ABSORPTION_GAINHF, env.getAirAbsorbGainHf()); + //EFX10.alEffectf(reverbFx, EFX10.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor()); + alEffectf(reverbFx, AL.AL_REVERB_ROOM_ROLLOFF_FACTOR, env.getRoomRolloffFactor()); + + // attach effect to slot + //EFX10.alAuxiliaryEffectSloti(reverbFxSlot, EFX10.AL_EFFECTSLOT_EFFECT, reverbFx); + alAuxiliaryEffectSloti(reverbFxSlot, AL.AL_EFFECTSLOT_EFFECT, reverbFx); + } + } + + private boolean fillBuffer(AudioStream stream, int id) { + int size = 0; + int result; + + while (size < arrayBuf.length) { + result = stream.readSamples(arrayBuf, size, arrayBuf.length - size); + + if (result > 0) { + size += result; + } else { + break; + } + } + + if (size == 0) { + return false; + } + + nativeBuf.clear(); + nativeBuf.put(arrayBuf, 0, size); + nativeBuf.flip(); + + //alBufferData(id, convertFormat(stream), nativeBuf, stream.getSampleRate()); + alBufferData(id, convertFormat(stream), nativeBuf, size, stream.getSampleRate()); + checkError(true); + + return true; + } + + private boolean fillStreamingSource(int sourceId, AudioStream stream) { + if (!stream.isOpen()) { + return false; + } + + boolean active = true; + //int processed = alGetSourcei(sourceId, AL_BUFFERS_PROCESSED); + int processed = alGetSourcei(sourceId, AL.AL_BUFFERS_PROCESSED); + checkError(true); + + //while((processed--) != 0){ + if (processed > 0) { + int buffer; + + ib.position(0).limit(1); + //alSourceUnqueueBuffers(sourceId, ib); + alSourceUnqueueBuffers(sourceId, 1, ib); + checkError(true); + buffer = ib.get(0); + + active = fillBuffer(stream, buffer); + + ib.position(0).limit(1); + ib.put(0, buffer); + //alSourceQueueBuffers(sourceId, ib); + alSourceQueueBuffers(sourceId, 1, ib); + checkError(true); + } + + if (!active && stream.isOpen()) { + stream.close(); + } + + return active; + } + + private boolean attachStreamToSource(int sourceId, AudioStream stream) { + boolean active = true; + int activeBufferCount = 0; + for (int id : stream.getIds()) { + active = fillBuffer(stream, id); + ib.position(0).limit(1); + ib.put(id).flip(); + //alSourceQueueBuffers(sourceId, ib); + // OpenAL Soft does not like 0 size buffer data in alSourceQueueBuffers + // Produces error code 40964 (0xA004) = AL_INVALID_OPERATION and + // does not return (crashes) so that the error code can be checked. + // active is FALSE when the data size is 0 + if (active) { + alSourceQueueBuffers(sourceId, 1, ib); + checkError(true); + activeBufferCount++; + } + } + // adjust the steam id array if the audio data is smaller than STREAMING_BUFFER_COUNT + // this is to avoid an error with OpenAL Soft when alSourceUnenqueueBuffers + // is called with more buffers than were originally used with alSourceQueueBuffers + if (activeBufferCount < STREAMING_BUFFER_COUNT) { + int[] newIds = new int[activeBufferCount]; + for (int i=0; iAndroidAudioLoader will create an + * {@link AndroidAudioData} object with the specified asset key. + */ +public class AndroidAudioLoader implements AssetLoader { + + @Override + public Object load(AssetInfo assetInfo) throws IOException { + AndroidAudioData result = new AndroidAudioData(); + result.setAssetKey(assetInfo.getKey()); + return result; + } +} diff --git a/engine/src/ios/com/jme3/renderer/ios/IGLESShaderRenderer.java b/engine/src/ios/com/jme3/renderer/ios/IGLESShaderRenderer.java new file mode 100644 index 000000000..d3af7eff3 --- /dev/null +++ b/engine/src/ios/com/jme3/renderer/ios/IGLESShaderRenderer.java @@ -0,0 +1,2575 @@ +package com.jme3.renderer.ios; + +import com.jme3.light.LightList; +import com.jme3.material.RenderState; +import com.jme3.math.*; +import com.jme3.renderer.*; +import com.jme3.scene.Mesh; +import com.jme3.scene.Mesh.Mode; +import com.jme3.scene.VertexBuffer; +import com.jme3.scene.VertexBuffer.Format; +import com.jme3.scene.VertexBuffer.Type; +import com.jme3.scene.VertexBuffer.Usage; +import com.jme3.shader.Attribute; +import com.jme3.shader.Shader; +import com.jme3.shader.Shader.ShaderSource; +import com.jme3.shader.Shader.ShaderType; +import com.jme3.shader.Uniform; +import com.jme3.texture.FrameBuffer; +import com.jme3.texture.FrameBuffer.RenderBuffer; +import com.jme3.texture.Image; +import com.jme3.texture.Texture; +import com.jme3.texture.Texture.WrapAxis; +import com.jme3.util.BufferUtils; +import com.jme3.util.ListMap; +import com.jme3.util.NativeObjectManager; + +import java.nio.*; +import java.util.EnumSet; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import jme3tools.shader.ShaderDebug; + +/** + * The Renderer is responsible for taking rendering commands and + * executing them on the underlying video hardware. + * + * @author Kirill Vainer + */ +public class IGLESShaderRenderer implements Renderer { + + private static final Logger logger = Logger.getLogger(IGLESShaderRenderer.class.getName()); + private static final boolean VALIDATE_SHADER = false; + + private final NativeObjectManager objManager = new NativeObjectManager(); + private final EnumSet caps = EnumSet.noneOf(Caps.class); + private final Statistics statistics = new Statistics(); + private final StringBuilder stringBuf = new StringBuilder(250); + private final RenderContext context = new RenderContext(); + private final ByteBuffer nameBuf = BufferUtils.createByteBuffer(250); + + private final int maxFBOAttachs = 1; // Only 1 color attachment on ES + private final int maxMRTFBOAttachs = 1; // FIXME for now, not sure if > 1 is needed for ES + + private final int[] intBuf1 = new int[1]; + private final int[] intBuf16 = new int[16]; + + private int glslVer; + private int vertexTextureUnits; + private int fragTextureUnits; + private int vertexUniforms; + private int fragUniforms; + private int vertexAttribs; + private int maxRBSize; + private int maxTexSize; + private int maxCubeTexSize; + + private FrameBuffer lastFb = null; + private FrameBuffer mainFbOverride = null; + private boolean useVBO = true; + private boolean powerVr = false; + private boolean uintIndexSupport = false; + + private Shader boundShader; + + private int vpX, vpY, vpW, vpH; + private int clipX, clipY, clipW, clipH; + + public IGLESShaderRenderer() { + logger.log(Level.FINE, "IGLESShaderRenderer Constructor"); + } + + /** + * Get the capabilities of the renderer. + * @return The capabilities of the renderer. + */ + public EnumSet getCaps() { + logger.log(Level.FINE, "IGLESShaderRenderer getCaps"); + return caps; + } + + /** + * The statistics allow tracking of how data + * per frame, such as number of objects rendered, number of triangles, etc. + * These are updated when the Renderer's methods are used, make sure + * to call {@link Statistics#clearFrame() } at the appropriate time + * to get accurate info per frame. + */ + public Statistics getStatistics() { + logger.log(Level.FINE, "IGLESShaderRenderer getStatistics"); + return statistics; + } + + /** + * Invalidates the current rendering state. Should be called after + * the GL state was changed manually or through an external library. + */ + public void invalidateState() { + logger.log(Level.FINE, "IGLESShaderRenderer invalidateState"); + } + + /** + * Clears certain channels of the currently bound framebuffer. + * + * @param color True if to clear colors (RGBA) + * @param depth True if to clear depth/z + * @param stencil True if to clear stencil buffer (if available, otherwise + * ignored) + */ + public void clearBuffers(boolean color, boolean depth, boolean stencil) { + logger.log(Level.FINE, "IGLESShaderRenderer clearBuffers"); + int bits = 0; + if (color) { + bits = JmeIosGLES.GL_COLOR_BUFFER_BIT; + } + if (depth) { + bits |= JmeIosGLES.GL_DEPTH_BUFFER_BIT; + } + if (stencil) { + bits |= JmeIosGLES.GL_STENCIL_BUFFER_BIT; + } + if (bits != 0) { + JmeIosGLES.glClear(bits); + JmeIosGLES.checkGLError(); + } + } + + /** + * Sets the background (aka clear) color. + * + * @param color The background color to set + */ + public void setBackgroundColor(ColorRGBA color) { + logger.log(Level.FINE, "IGLESShaderRenderer setBackgroundColor"); + JmeIosGLES.glClearColor(color.r, color.g, color.b, color.a); + JmeIosGLES.checkGLError(); + } + + /** + * Applies the given {@link RenderState}, making the necessary + * GL calls so that the state is applied. + */ + public void applyRenderState(RenderState state) { + logger.log(Level.FINE, "IGLESShaderRenderer applyRenderState"); + /* + if (state.isWireframe() && !context.wireframe){ + GLES20.glPolygonMode(GLES20.GL_FRONT_AND_BACK, GLES20.GL_LINE); + context.wireframe = true; + }else if (!state.isWireframe() && context.wireframe){ + GLES20.glPolygonMode(GLES20.GL_FRONT_AND_BACK, GLES20.GL_FILL); + context.wireframe = false; + } + */ + if (state.isDepthTest() && !context.depthTestEnabled) { + JmeIosGLES.glEnable(JmeIosGLES.GL_DEPTH_TEST); + JmeIosGLES.glDepthFunc(convertTestFunction(context.depthFunc)); + JmeIosGLES.checkGLError(); + context.depthTestEnabled = true; + } else if (!state.isDepthTest() && context.depthTestEnabled) { + JmeIosGLES.glDisable(JmeIosGLES.GL_DEPTH_TEST); + JmeIosGLES.checkGLError(); + context.depthTestEnabled = false; + } + if (state.getDepthFunc() != context.depthFunc) { + JmeIosGLES.glDepthFunc(convertTestFunction(state.getDepthFunc())); + context.depthFunc = state.getDepthFunc(); + } + + if (state.isDepthWrite() && !context.depthWriteEnabled) { + JmeIosGLES.glDepthMask(true); + JmeIosGLES.checkGLError(); + context.depthWriteEnabled = true; + } else if (!state.isDepthWrite() && context.depthWriteEnabled) { + JmeIosGLES.glDepthMask(false); + JmeIosGLES.checkGLError(); + context.depthWriteEnabled = false; + } + if (state.isColorWrite() && !context.colorWriteEnabled) { + JmeIosGLES.glColorMask(true, true, true, true); + JmeIosGLES.checkGLError(); + context.colorWriteEnabled = true; + } else if (!state.isColorWrite() && context.colorWriteEnabled) { + JmeIosGLES.glColorMask(false, false, false, false); + JmeIosGLES.checkGLError(); + context.colorWriteEnabled = false; + } +// if (state.isPointSprite() && !context.pointSprite) { +//// GLES20.glEnable(GLES20.GL_POINT_SPRITE); +//// GLES20.glTexEnvi(GLES20.GL_POINT_SPRITE, GLES20.GL_COORD_REPLACE, GLES20.GL_TRUE); +//// GLES20.glEnable(GLES20.GL_VERTEX_PROGRAM_POINT_SIZE); +//// GLES20.glPointParameterf(GLES20.GL_POINT_SIZE_MIN, 1.0f); +// } else if (!state.isPointSprite() && context.pointSprite) { +//// GLES20.glDisable(GLES20.GL_POINT_SPRITE); +// } + + if (state.isPolyOffset()) { + if (!context.polyOffsetEnabled) { + JmeIosGLES.glEnable(JmeIosGLES.GL_POLYGON_OFFSET_FILL); + JmeIosGLES.glPolygonOffset(state.getPolyOffsetFactor(), + state.getPolyOffsetUnits()); + JmeIosGLES.checkGLError(); + + context.polyOffsetEnabled = true; + context.polyOffsetFactor = state.getPolyOffsetFactor(); + context.polyOffsetUnits = state.getPolyOffsetUnits(); + } else { + if (state.getPolyOffsetFactor() != context.polyOffsetFactor + || state.getPolyOffsetUnits() != context.polyOffsetUnits) { + JmeIosGLES.glPolygonOffset(state.getPolyOffsetFactor(), + state.getPolyOffsetUnits()); + JmeIosGLES.checkGLError(); + + context.polyOffsetFactor = state.getPolyOffsetFactor(); + context.polyOffsetUnits = state.getPolyOffsetUnits(); + } + } + } else { + if (context.polyOffsetEnabled) { + JmeIosGLES.glDisable(JmeIosGLES.GL_POLYGON_OFFSET_FILL); + JmeIosGLES.checkGLError(); + + context.polyOffsetEnabled = false; + context.polyOffsetFactor = 0; + context.polyOffsetUnits = 0; + } + } + if (state.getFaceCullMode() != context.cullMode) { + if (state.getFaceCullMode() == RenderState.FaceCullMode.Off) { + JmeIosGLES.glDisable(JmeIosGLES.GL_CULL_FACE); + JmeIosGLES.checkGLError(); + } else { + JmeIosGLES.glEnable(JmeIosGLES.GL_CULL_FACE); + JmeIosGLES.checkGLError(); + } + + switch (state.getFaceCullMode()) { + case Off: + break; + case Back: + JmeIosGLES.glCullFace(JmeIosGLES.GL_BACK); + JmeIosGLES.checkGLError(); + break; + case Front: + JmeIosGLES.glCullFace(JmeIosGLES.GL_FRONT); + JmeIosGLES.checkGLError(); + break; + case FrontAndBack: + JmeIosGLES.glCullFace(JmeIosGLES.GL_FRONT_AND_BACK); + JmeIosGLES.checkGLError(); + break; + default: + throw new UnsupportedOperationException("Unrecognized face cull mode: " + + state.getFaceCullMode()); + } + + context.cullMode = state.getFaceCullMode(); + } + + if (state.getBlendMode() != context.blendMode) { + if (state.getBlendMode() == RenderState.BlendMode.Off) { + JmeIosGLES.glDisable(JmeIosGLES.GL_BLEND); + JmeIosGLES.checkGLError(); + } else { + JmeIosGLES.glEnable(JmeIosGLES.GL_BLEND); + switch (state.getBlendMode()) { + case Off: + break; + case Additive: + JmeIosGLES.glBlendFunc(JmeIosGLES.GL_ONE, JmeIosGLES.GL_ONE); + break; + case AlphaAdditive: + JmeIosGLES.glBlendFunc(JmeIosGLES.GL_SRC_ALPHA, JmeIosGLES.GL_ONE); + break; + case Color: + JmeIosGLES.glBlendFunc(JmeIosGLES.GL_ONE, JmeIosGLES.GL_ONE_MINUS_SRC_COLOR); + break; + case Alpha: + JmeIosGLES.glBlendFunc(JmeIosGLES.GL_SRC_ALPHA, JmeIosGLES.GL_ONE_MINUS_SRC_ALPHA); + break; + case PremultAlpha: + JmeIosGLES.glBlendFunc(JmeIosGLES.GL_ONE, JmeIosGLES.GL_ONE_MINUS_SRC_ALPHA); + break; + case Modulate: + JmeIosGLES.glBlendFunc(JmeIosGLES.GL_DST_COLOR, JmeIosGLES.GL_ZERO); + break; + case ModulateX2: + JmeIosGLES.glBlendFunc(JmeIosGLES.GL_DST_COLOR, JmeIosGLES.GL_SRC_COLOR); + break; + default: + throw new UnsupportedOperationException("Unrecognized blend mode: " + + state.getBlendMode()); + } + JmeIosGLES.checkGLError(); + } + context.blendMode = state.getBlendMode(); + } + } + + /** + * Set the range of the depth values for objects. All rendered + * objects will have their depth clamped to this range. + * + * @param start The range start + * @param end The range end + */ + public void setDepthRange(float start, float end) { + logger.log(Level.FINE, "IGLESShaderRenderer setDepthRange"); + JmeIosGLES.glDepthRangef(start, end); + JmeIosGLES.checkGLError(); + } + + /** + * Called when a new frame has been rendered. + */ + public void onFrame() { + logger.log(Level.FINE, "IGLESShaderRenderer onFrame"); + //JmeIosGLES.checkGLErrorForced(); + JmeIosGLES.checkGLError(); + + objManager.deleteUnused(this); + } + + /** + * Set the world matrix to use. Does nothing if the Renderer is + * shader based. + * + * @param worldMatrix World matrix to use. + */ + public void setWorldMatrix(Matrix4f worldMatrix) { + logger.log(Level.FINE, "IGLESShaderRenderer setWorldMatrix"); + } + + /** + * Sets the view and projection matrices to use. Does nothing if the Renderer + * is shader based. + * + * @param viewMatrix The view matrix to use. + * @param projMatrix The projection matrix to use. + */ + public void setViewProjectionMatrices(Matrix4f viewMatrix, Matrix4f projMatrix) { + logger.log(Level.FINE, "IGLESShaderRenderer setViewProjectionMatrices"); + } + + /** + * Set the viewport location and resolution on the screen. + * + * @param x The x coordinate of the viewport + * @param y The y coordinate of the viewport + * @param width Width of the viewport + * @param height Height of the viewport + */ + public void setViewPort(int x, int y, int width, int height) { + logger.log(Level.FINE, "IGLESShaderRenderer setViewPort"); + if (x != vpX || vpY != y || vpW != width || vpH != height) { + JmeIosGLES.glViewport(x, y, width, height); + JmeIosGLES.checkGLError(); + + vpX = x; + vpY = y; + vpW = width; + vpH = height; + } + } + + /** + * Specifies a clipping rectangle. + * For all future rendering commands, no pixels will be allowed + * to be rendered outside of the clip rectangle. + * + * @param x The x coordinate of the clip rect + * @param y The y coordinate of the clip rect + * @param width Width of the clip rect + * @param height Height of the clip rect + */ + public void setClipRect(int x, int y, int width, int height) { + logger.log(Level.FINE, "IGLESShaderRenderer setClipRect"); + if (!context.clipRectEnabled) { + JmeIosGLES.glEnable(JmeIosGLES.GL_SCISSOR_TEST); + JmeIosGLES.checkGLError(); + context.clipRectEnabled = true; + } + if (clipX != x || clipY != y || clipW != width || clipH != height) { + JmeIosGLES.glScissor(x, y, width, height); + JmeIosGLES.checkGLError(); + clipX = x; + clipY = y; + clipW = width; + clipH = height; + } + } + + /** + * Clears the clipping rectangle set with + * {@link #setClipRect(int, int, int, int) }. + */ + public void clearClipRect() { + logger.log(Level.FINE, "IGLESShaderRenderer clearClipRect"); + if (context.clipRectEnabled) { + JmeIosGLES.glDisable(JmeIosGLES.GL_SCISSOR_TEST); + JmeIosGLES.checkGLError(); + context.clipRectEnabled = false; + + clipX = 0; + clipY = 0; + clipW = 0; + clipH = 0; + } + } + + /** + * Set lighting state. + * Does nothing if the renderer is shader based. + * The lights should be provided in world space. + * Specify null to disable lighting. + * + * @param lights The light list to set. + */ + public void setLighting(LightList lights) { + logger.log(Level.FINE, "IGLESShaderRenderer setLighting"); + } + + /** + * Sets the shader to use for rendering. + * If the shader has not been uploaded yet, it is compiled + * and linked. If it has been uploaded, then the + * uniform data is updated and the shader is set. + * + * @param shader The shader to use for rendering. + */ + public void setShader(Shader shader) { + logger.log(Level.FINE, "IGLESShaderRenderer setShader"); + if (shader == null) { + throw new IllegalArgumentException("Shader cannot be null"); + } else { + if (shader.isUpdateNeeded()) { + updateShaderData(shader); + } + + // NOTE: might want to check if any of the + // sources need an update? + + assert shader.getId() > 0; + + updateShaderUniforms(shader); + bindProgram(shader); + } + } + + /** + * Deletes a shader. This method also deletes + * the attached shader sources. + * + * @param shader Shader to delete. + */ + public void deleteShader(Shader shader) { + logger.log(Level.FINE, "IGLESShaderRenderer deleteShader"); + if (shader.getId() == -1) { + logger.warning("Shader is not uploaded to GPU, cannot delete."); + return; + } + + for (ShaderSource source : shader.getSources()) { + if (source.getId() != -1) { + JmeIosGLES.glDetachShader(shader.getId(), source.getId()); + JmeIosGLES.checkGLError(); + + deleteShaderSource(source); + } + } + + JmeIosGLES.glDeleteProgram(shader.getId()); + JmeIosGLES.checkGLError(); + + statistics.onDeleteShader(); + shader.resetObject(); + } + + /** + * Deletes the provided shader source. + * + * @param source The ShaderSource to delete. + */ + public void deleteShaderSource(ShaderSource source) { + logger.log(Level.FINE, "IGLESShaderRenderer deleteShaderSource"); + if (source.getId() < 0) { + logger.warning("Shader source is not uploaded to GPU, cannot delete."); + return; + } + + source.clearUpdateNeeded(); + + JmeIosGLES.glDeleteShader(source.getId()); + JmeIosGLES.checkGLError(); + + source.resetObject(); + } + + /** + * Copies contents from src to dst, scaling if necessary. + */ + public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst) { + logger.log(Level.FINE, "IGLESShaderRenderer copyFrameBuffer"); + copyFrameBuffer(src, dst, true); + } + + /** + * Copies contents from src to dst, scaling if necessary. + * set copyDepth to false to only copy the color buffers. + */ + public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth) { + logger.warning("IGLESShaderRenderer copyFrameBuffer with depth TODO"); + throw new RendererException("Copy framebuffer not implemented yet."); + } + + /** + * Sets the framebuffer that will be drawn to. + */ + public void setFrameBuffer(FrameBuffer fb) { + logger.log(Level.FINE, "IGLESShaderRenderer setFrameBuffer"); + if (fb == null && mainFbOverride != null) { + fb = mainFbOverride; + } + + if (lastFb == fb) { + if (fb == null || !fb.isUpdateNeeded()) { + return; + } + } + + // generate mipmaps for last FB if needed + if (lastFb != null) { + for (int i = 0; i < lastFb.getNumColorBuffers(); i++) { + RenderBuffer rb = lastFb.getColorBuffer(i); + Texture tex = rb.getTexture(); + if (tex != null + && tex.getMinFilter().usesMipMapLevels()) { + setTexture(0, rb.getTexture()); + +// int textureType = convertTextureType(tex.getType(), tex.getImage().getMultiSamples(), rb.getFace()); + int textureType = convertTextureType(tex.getType()); + JmeIosGLES.glGenerateMipmap(textureType); + JmeIosGLES.checkGLError(); + } + } + } + + if (fb == null) { + // unbind any fbos + if (context.boundFBO != 0) { + JmeIosGLES.glBindFramebuffer(JmeIosGLES.GL_FRAMEBUFFER, 0); + JmeIosGLES.checkGLError(); + + statistics.onFrameBufferUse(null, true); + + context.boundFBO = 0; + } + + /* + // select back buffer + if (context.boundDrawBuf != -1) { + glDrawBuffer(initialDrawBuf); + context.boundDrawBuf = -1; + } + if (context.boundReadBuf != -1) { + glReadBuffer(initialReadBuf); + context.boundReadBuf = -1; + } + */ + + lastFb = null; + } else { + if (fb.getNumColorBuffers() == 0 && fb.getDepthBuffer() == null) { + throw new IllegalArgumentException("The framebuffer: " + fb + + "\nDoesn't have any color/depth buffers"); + } + + if (fb.isUpdateNeeded()) { + updateFrameBuffer(fb); + } + + if (context.boundFBO != fb.getId()) { + JmeIosGLES.glBindFramebuffer(JmeIosGLES.GL_FRAMEBUFFER, fb.getId()); + JmeIosGLES.checkGLError(); + + statistics.onFrameBufferUse(fb, true); + + // update viewport to reflect framebuffer's resolution + setViewPort(0, 0, fb.getWidth(), fb.getHeight()); + + context.boundFBO = fb.getId(); + } else { + statistics.onFrameBufferUse(fb, false); + } + if (fb.getNumColorBuffers() == 0) { +// // make sure to select NONE as draw buf +// // no color buffer attached. select NONE + if (context.boundDrawBuf != -2) { +// glDrawBuffer(GL_NONE); + context.boundDrawBuf = -2; + } + if (context.boundReadBuf != -2) { +// glReadBuffer(GL_NONE); + context.boundReadBuf = -2; + } + } else { + if (fb.getNumColorBuffers() > maxFBOAttachs) { + throw new RendererException("Framebuffer has more color " + + "attachments than are supported" + + " by the video hardware!"); + } + if (fb.isMultiTarget()) { + if (fb.getNumColorBuffers() > maxMRTFBOAttachs) { + throw new RendererException("Framebuffer has more" + + " multi targets than are supported" + + " by the video hardware!"); + } + + if (context.boundDrawBuf != 100 + fb.getNumColorBuffers()) { + //intBuf16.clear(); + for (int i = 0; i < 16; i++) { + intBuf16[i] = i < fb.getNumColorBuffers() ? JmeIosGLES.GL_COLOR_ATTACHMENT0 + i : 0; + } + + //intBuf16.flip();// TODO: flip +// glDrawBuffers(intBuf16); + context.boundDrawBuf = 100 + fb.getNumColorBuffers(); + } + } else { + RenderBuffer rb = fb.getColorBuffer(fb.getTargetIndex()); + // select this draw buffer + if (context.boundDrawBuf != rb.getSlot()) { + JmeIosGLES.glActiveTexture(convertAttachmentSlot(rb.getSlot())); + JmeIosGLES.checkGLError(); + + context.boundDrawBuf = rb.getSlot(); + } + } + } + + assert fb.getId() >= 0; + assert context.boundFBO == fb.getId(); + + lastFb = fb; + + checkFrameBufferStatus(fb); + } + } + + /** + * Set the framebuffer that will be set instead of the main framebuffer + * when a call to setFrameBuffer(null) is made. + * + * @param fb + */ + public void setMainFrameBufferOverride(FrameBuffer fb) { + logger.log(Level.FINE, "IGLESShaderRenderer setMainFrameBufferOverride"); + mainFbOverride = fb; + } + + /** + * Reads the pixels currently stored in the specified framebuffer + * into the given ByteBuffer object. + * Only color pixels are transferred, the format is BGRA with 8 bits + * per component. The given byte buffer should have at least + * fb.getWidth() * fb.getHeight() * 4 bytes remaining. + * + * @param fb The framebuffer to read from + * @param byteBuf The bytebuffer to transfer color data to + */ + public void readFrameBuffer(FrameBuffer fb, ByteBuffer byteBuf) { + logger.log(Level.FINE, "IGLESShaderRenderer readFrameBuffer"); + if (fb != null) { + RenderBuffer rb = fb.getColorBuffer(); + if (rb == null) { + throw new IllegalArgumentException("Specified framebuffer" + + " does not have a colorbuffer"); + } + + setFrameBuffer(fb); + } else { + setFrameBuffer(null); + } + + //JmeIosGLES.glReadPixels2(vpX, vpY, vpW, vpH, JmeIosGLES.GL_RGBA, JmeIosGLES.GL_UNSIGNED_BYTE, byteBuf.array(), 0, vpW * vpH * 4); + JmeIosGLES.glReadPixels(vpX, vpY, vpW, vpH, JmeIosGLES.GL_RGBA, JmeIosGLES.GL_UNSIGNED_BYTE, byteBuf); + JmeIosGLES.checkGLError(); + } + + /** + * Deletes a framebuffer and all attached renderbuffers + */ + public void deleteFrameBuffer(FrameBuffer fb) { + logger.log(Level.FINE, "IGLESShaderRenderer deleteFrameBuffer"); + if (fb.getId() != -1) { + if (context.boundFBO == fb.getId()) { + JmeIosGLES.glBindFramebuffer(JmeIosGLES.GL_FRAMEBUFFER, 0); + JmeIosGLES.checkGLError(); + + context.boundFBO = 0; + } + + if (fb.getDepthBuffer() != null) { + deleteRenderBuffer(fb, fb.getDepthBuffer()); + } + if (fb.getColorBuffer() != null) { + deleteRenderBuffer(fb, fb.getColorBuffer()); + } + + intBuf1[0] = fb.getId(); + JmeIosGLES.glDeleteFramebuffers(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + + fb.resetObject(); + + statistics.onDeleteFrameBuffer(); + } + } + + /** + * Sets the texture to use for the given texture unit. + */ + public void setTexture(int unit, Texture tex) { + logger.log(Level.FINE, "IGLESShaderRenderer setTexture"); + Image image = tex.getImage(); + if (image.isUpdateNeeded() || (image.isGeneratedMipmapsRequired() && !image.isMipmapsGenerated()) ) { + updateTexImageData(image, tex.getType()); + } + + int texId = image.getId(); + assert texId != -1; + + if (texId == -1) { + logger.warning("error: texture image has -1 id"); + } + + Image[] textures = context.boundTextures; + + int type = convertTextureType(tex.getType()); + if (!context.textureIndexList.moveToNew(unit)) { +// if (context.boundTextureUnit != unit){ +// glActiveTexture(GL_TEXTURE0 + unit); +// context.boundTextureUnit = unit; +// } +// glEnable(type); + } + + if (textures[unit] != image) { + if (context.boundTextureUnit != unit) { + JmeIosGLES.glActiveTexture(JmeIosGLES.GL_TEXTURE0 + unit); + context.boundTextureUnit = unit; + } + + JmeIosGLES.glBindTexture(type, texId); + JmeIosGLES.checkGLError(); + + textures[unit] = image; + + statistics.onTextureUse(tex.getImage(), true); + } else { + statistics.onTextureUse(tex.getImage(), false); + } + + setupTextureParams(tex); + } + + /** + * Modify the given Texture tex with the given Image. The image will be put at x and y into the texture. + * + * @param tex the Texture that will be modified + * @param pixels the source Image data to copy data from + * @param x the x position to put the image into the texture + * @param y the y position to put the image into the texture + */ + public void modifyTexture(Texture tex, Image pixels, int x, int y) { + logger.log(Level.FINE, "IGLESShaderRenderer modifyTexture"); + setTexture(0, tex); + TextureUtil.uploadSubTexture(pixels, convertTextureType(tex.getType()), 0, x, y); + } + + /** + * Deletes a texture from the GPU. + */ + public void deleteImage(Image image) { + logger.log(Level.FINE, "IGLESShaderRenderer deleteImage"); + int texId = image.getId(); + if (texId != -1) { + intBuf1[0] = texId; + + JmeIosGLES.glDeleteTextures(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + + image.resetObject(); + + statistics.onDeleteTexture(); + } + } + + /** + * Uploads a vertex buffer to the GPU. + * + * @param vb The vertex buffer to upload + */ + public void updateBufferData(VertexBuffer vb) { + logger.log(Level.FINE, "IGLESShaderRenderer updateBufferData"); + int bufId = vb.getId(); + boolean created = false; + if (bufId == -1) { + // create buffer + JmeIosGLES.glGenBuffers(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + + bufId = intBuf1[0]; + vb.setId(bufId); + objManager.registerObject(vb); + + created = true; + } + + // bind buffer + int target; + if (vb.getBufferType() == VertexBuffer.Type.Index) { + target = JmeIosGLES.GL_ELEMENT_ARRAY_BUFFER; + if (context.boundElementArrayVBO != bufId) { + JmeIosGLES.glBindBuffer(target, bufId); + JmeIosGLES.checkGLError(); + + context.boundElementArrayVBO = bufId; + } + } else { + target = JmeIosGLES.GL_ARRAY_BUFFER; + if (context.boundArrayVBO != bufId) { + JmeIosGLES.glBindBuffer(target, bufId); + JmeIosGLES.checkGLError(); + + context.boundArrayVBO = bufId; + } + } + + int usage = convertUsage(vb.getUsage()); + vb.getData().rewind(); + + if (created || vb.hasDataSizeChanged()) { + // upload data based on format + int size = vb.getData().limit() * vb.getFormat().getComponentSize(); + + switch (vb.getFormat()) { + case Byte: + case UnsignedByte: + JmeIosGLES.glBufferData(target, size, (ByteBuffer) vb.getData(), usage); + JmeIosGLES.checkGLError(); + break; + case Short: + case UnsignedShort: + JmeIosGLES.glBufferData(target, size, (ShortBuffer) vb.getData(), usage); + JmeIosGLES.checkGLError(); + break; + case Int: + case UnsignedInt: + JmeIosGLES.glBufferData(target, size, (IntBuffer) vb.getData(), usage); + JmeIosGLES.checkGLError(); + break; + case Float: + JmeIosGLES.glBufferData(target, size, (FloatBuffer) vb.getData(), usage); + JmeIosGLES.checkGLError(); + break; + default: + throw new RuntimeException("Unknown buffer format."); + } + } else { + int size = vb.getData().limit() * vb.getFormat().getComponentSize(); + + switch (vb.getFormat()) { + case Byte: + case UnsignedByte: + JmeIosGLES.glBufferSubData(target, 0, size, (ByteBuffer) vb.getData()); + JmeIosGLES.checkGLError(); + break; + case Short: + case UnsignedShort: + JmeIosGLES.glBufferSubData(target, 0, size, (ShortBuffer) vb.getData()); + JmeIosGLES.checkGLError(); + break; + case Int: + case UnsignedInt: + JmeIosGLES.glBufferSubData(target, 0, size, (IntBuffer) vb.getData()); + JmeIosGLES.checkGLError(); + break; + case Float: + JmeIosGLES.glBufferSubData(target, 0, size, (FloatBuffer) vb.getData()); + JmeIosGLES.checkGLError(); + break; + default: + throw new RuntimeException("Unknown buffer format."); + } + } + vb.clearUpdateNeeded(); + } + + /** + * Deletes a vertex buffer from the GPU. + * @param vb The vertex buffer to delete + */ + public void deleteBuffer(VertexBuffer vb) { + logger.log(Level.FINE, "IGLESShaderRenderer deleteBuffer"); + int bufId = vb.getId(); + if (bufId != -1) { + // delete buffer + intBuf1[0] = bufId; + + JmeIosGLES.glDeleteBuffers(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + + vb.resetObject(); + } + } + + /** + * Renders count meshes, with the geometry data supplied. + * The shader which is currently set with setShader is + * responsible for transforming the input verticies into clip space + * and shading it based on the given vertex attributes. + * The int variable gl_InstanceID can be used to access the current + * instance of the mesh being rendered inside the vertex shader. + * + * @param mesh The mesh to render + * @param lod The LOD level to use, see {@link Mesh#setLodLevels(com.jme3.scene.VertexBuffer[]) }. + * @param count Number of mesh instances to render + */ + public void renderMesh(Mesh mesh, int lod, int count) { + logger.log(Level.FINE, "IGLESShaderRenderer renderMesh"); + if (mesh.getVertexCount() == 0) { + return; + } + /* + * NOTE: not supported in OpenGL ES 2.0. + if (context.pointSize != mesh.getPointSize()) { + GLES10.glPointSize(mesh.getPointSize()); + context.pointSize = mesh.getPointSize(); + } + */ + if (context.lineWidth != mesh.getLineWidth()) { + JmeIosGLES.glLineWidth(mesh.getLineWidth()); + JmeIosGLES.checkGLError(); + context.lineWidth = mesh.getLineWidth(); + } + + statistics.onMeshDrawn(mesh, lod); +// if (GLContext.getCapabilities().GL_ARB_vertex_array_object){ +// renderMeshVertexArray(mesh, lod, count); +// }else{ + + if (useVBO) { + renderMeshDefault(mesh, lod, count); + } else { + renderMeshVertexArray(mesh, lod, count); + } + } + + /** + * Resets all previously used {@link NativeObject Native Objects} on this Renderer. + * The state of the native objects is reset in such way, that using + * them again will cause the renderer to reupload them. + * Call this method when you know the GL context is going to shutdown. + * + * @see NativeObject#resetObject() + */ + public void resetGLObjects() { + logger.log(Level.FINE, "IGLESShaderRenderer resetGLObjects"); + objManager.resetObjects(); + statistics.clearMemory(); + boundShader = null; + lastFb = null; + context.reset(); + } + + /** + * Deletes all previously used {@link NativeObject Native Objects} on this Renderer, and + * then resets the native objects. + * + * @see #resetGLObjects() + * @see NativeObject#deleteObject(java.lang.Object) + */ + public void cleanup() { + logger.log(Level.FINE, "IGLESShaderRenderer cleanup"); + objManager.deleteAllObjects(this); + statistics.clearMemory(); + } + + /** + * Sets the alpha to coverage state. + *

    + * When alpha coverage and multi-sampling is enabled, + * each pixel will contain alpha coverage in all + * of its subsamples, which is then combined when + * other future alpha-blended objects are rendered. + *

    + *

    + * Alpha-to-coverage is useful for rendering transparent objects + * without having to worry about sorting them. + *

    + */ + public void setAlphaToCoverage(boolean value) { + logger.log(Level.FINE, "IGLESShaderRenderer setAlphaToCoverage"); + if (value) { + JmeIosGLES.glEnable(JmeIosGLES.GL_SAMPLE_ALPHA_TO_COVERAGE); + JmeIosGLES.checkGLError(); + } else { + JmeIosGLES.glDisable(JmeIosGLES.GL_SAMPLE_ALPHA_TO_COVERAGE); + JmeIosGLES.checkGLError(); + } + } + + + /* ------------------------------------------------------------------------------ */ + + + public void initialize() { + Level store = logger.getLevel(); + logger.setLevel(Level.FINE); + + logger.log(Level.FINE, "Vendor: {0}", JmeIosGLES.glGetString(JmeIosGLES.GL_VENDOR)); + logger.log(Level.FINE, "Renderer: {0}", JmeIosGLES.glGetString(JmeIosGLES.GL_RENDERER)); + logger.log(Level.FINE, "Version: {0}", JmeIosGLES.glGetString(JmeIosGLES.GL_VERSION)); + logger.log(Level.FINE, "Shading Language Version: {0}", JmeIosGLES.glGetString(JmeIosGLES.GL_SHADING_LANGUAGE_VERSION)); + + /* + // Fix issue in TestRenderToMemory when GL_FRONT is the main + // buffer being used. + initialDrawBuf = glGetInteger(GL_DRAW_BUFFER); + initialReadBuf = glGetInteger(GL_READ_BUFFER); + + // XXX: This has to be GL_BACK for canvas on Mac + // Since initialDrawBuf is GL_FRONT for pbuffer, gotta + // change this value later on ... +// initialDrawBuf = GL_BACK; +// initialReadBuf = GL_BACK; + */ + + // Check OpenGL version + int openGlVer = extractVersion("OpenGL ES ", JmeIosGLES.glGetString(JmeIosGLES.GL_VERSION)); + if (openGlVer == -1) { + glslVer = -1; + throw new UnsupportedOperationException("OpenGL ES 2.0+ is required for IGLESShaderRenderer!"); + } + + // Check shader language version + glslVer = extractVersion("OpenGL ES GLSL ES ", JmeIosGLES.glGetString(JmeIosGLES.GL_SHADING_LANGUAGE_VERSION)); + switch (glslVer) { + // TODO: When new versions of OpenGL ES shader language come out, + // update this. + default: + caps.add(Caps.GLSL100); + break; + } + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, intBuf16, 0); + vertexTextureUnits = intBuf16[0]; + logger.log(Level.FINE, "VTF Units: {0}", vertexTextureUnits); + if (vertexTextureUnits > 0) { + caps.add(Caps.VertexTextureFetch); + } + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_TEXTURE_IMAGE_UNITS, intBuf16, 0); + fragTextureUnits = intBuf16[0]; + logger.log(Level.FINE, "Texture Units: {0}", fragTextureUnits); + + // Multiply vector count by 4 to get float count. + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_VERTEX_UNIFORM_VECTORS, intBuf16, 0); + vertexUniforms = intBuf16[0] * 4; + logger.log(Level.FINER, "Vertex Uniforms: {0}", vertexUniforms); + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_FRAGMENT_UNIFORM_VECTORS, intBuf16, 0); + fragUniforms = intBuf16[0] * 4; + logger.log(Level.FINER, "Fragment Uniforms: {0}", fragUniforms); + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_VARYING_VECTORS, intBuf16, 0); + int varyingFloats = intBuf16[0] * 4; + logger.log(Level.FINER, "Varying Floats: {0}", varyingFloats); + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_VERTEX_ATTRIBS, intBuf16, 0); + vertexAttribs = intBuf16[0]; + logger.log(Level.FINE, "Vertex Attributes: {0}", vertexAttribs); + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_SUBPIXEL_BITS, intBuf16, 0); + int subpixelBits = intBuf16[0]; + logger.log(Level.FINE, "Subpixel Bits: {0}", subpixelBits); + +// GLES10.glGetIntegerv(GLES10.GL_MAX_ELEMENTS_VERTICES, intBuf16); +// maxVertCount = intBuf16.get(0); +// logger.log(Level.FINER, "Preferred Batch Vertex Count: {0}", maxVertCount); +// +// GLES10.glGetIntegerv(GLES10.GL_MAX_ELEMENTS_INDICES, intBuf16); +// maxTriCount = intBuf16.get(0); +// logger.log(Level.FINER, "Preferred Batch Index Count: {0}", maxTriCount); + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_TEXTURE_SIZE, intBuf16, 0); + maxTexSize = intBuf16[0]; + logger.log(Level.FINE, "Maximum Texture Resolution: {0}", maxTexSize); + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_CUBE_MAP_TEXTURE_SIZE, intBuf16, 0); + maxCubeTexSize = intBuf16[0]; + logger.log(Level.FINE, "Maximum CubeMap Resolution: {0}", maxCubeTexSize); + + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_MAX_RENDERBUFFER_SIZE, intBuf16, 0); + maxRBSize = intBuf16[0]; + logger.log(Level.FINER, "FBO RB Max Size: {0}", maxRBSize); + + /* + if (ctxCaps.GL_ARB_color_buffer_float){ + // XXX: Require both 16 and 32 bit float support for FloatColorBuffer. + if (ctxCaps.GL_ARB_half_float_pixel){ + caps.add(Caps.FloatColorBuffer); + } + } + + if (ctxCaps.GL_ARB_depth_buffer_float){ + caps.add(Caps.FloatDepthBuffer); + } + + if (ctxCaps.GL_ARB_draw_instanced) + caps.add(Caps.MeshInstancing); + + if (ctxCaps.GL_ARB_texture_buffer_object) + caps.add(Caps.TextureBuffer); + + if (ctxCaps.GL_ARB_texture_float){ + if (ctxCaps.GL_ARB_half_float_pixel){ + caps.add(Caps.FloatTexture); + } + } + + if (ctxCaps.GL_EXT_packed_float){ + caps.add(Caps.PackedFloatColorBuffer); + if (ctxCaps.GL_ARB_half_float_pixel){ + // because textures are usually uploaded as RGB16F + // need half-float pixel + caps.add(Caps.PackedFloatTexture); + } + } + + if (ctxCaps.GL_EXT_texture_array) + caps.add(Caps.TextureArray); + + if (ctxCaps.GL_EXT_texture_shared_exponent) + caps.add(Caps.SharedExponentTexture); + + if (ctxCaps.GL_EXT_framebuffer_object){ + caps.add(Caps.FrameBuffer); + + glGetInteger(GL_MAX_RENDERBUFFER_SIZE_EXT, intBuf16); + maxRBSize = intBuf16.get(0); + logger.log(Level.FINER, "FBO RB Max Size: {0}", maxRBSize); + + glGetInteger(GL_MAX_COLOR_ATTACHMENTS_EXT, intBuf16); + maxFBOAttachs = intBuf16.get(0); + logger.log(Level.FINER, "FBO Max renderbuffers: {0}", maxFBOAttachs); + + if (ctxCaps.GL_EXT_framebuffer_multisample){ + caps.add(Caps.FrameBufferMultisample); + + glGetInteger(GL_MAX_SAMPLES_EXT, intBuf16); + maxFBOSamples = intBuf16.get(0); + logger.log(Level.FINER, "FBO Max Samples: {0}", maxFBOSamples); + } + + if (ctxCaps.GL_ARB_draw_buffers){ + caps.add(Caps.FrameBufferMRT); + glGetInteger(ARBDrawBuffers.GL_MAX_DRAW_BUFFERS_ARB, intBuf16); + maxMRTFBOAttachs = intBuf16.get(0); + logger.log(Level.FINER, "FBO Max MRT renderbuffers: {0}", maxMRTFBOAttachs); + } + } + + if (ctxCaps.GL_ARB_multisample){ + glGetInteger(ARBMultisample.GL_SAMPLE_BUFFERS_ARB, intBuf16); + boolean available = intBuf16.get(0) != 0; + glGetInteger(ARBMultisample.GL_SAMPLES_ARB, intBuf16); + int samples = intBuf16.get(0); + logger.log(Level.FINER, "Samples: {0}", samples); + boolean enabled = glIsEnabled(ARBMultisample.GL_MULTISAMPLE_ARB); + if (samples > 0 && available && !enabled){ + glEnable(ARBMultisample.GL_MULTISAMPLE_ARB); + } + } + */ + + String extensions = JmeIosGLES.glGetString(JmeIosGLES.GL_EXTENSIONS); + logger.log(Level.FINE, "GL_EXTENSIONS: {0}", extensions); + + // Get number of compressed formats available. + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_NUM_COMPRESSED_TEXTURE_FORMATS, intBuf16, 0); + int numCompressedFormats = intBuf16[0]; + + // Allocate buffer for compressed formats. + int[] compressedFormats = new int[numCompressedFormats]; + JmeIosGLES.glGetIntegerv(JmeIosGLES.GL_COMPRESSED_TEXTURE_FORMATS, compressedFormats, 0); + + // Check for errors after all glGet calls. + JmeIosGLES.checkGLError(); + + // Print compressed formats. + for (int i = 0; i < numCompressedFormats; i++) { + logger.log(Level.FINE, "Compressed Texture Formats: {0}", compressedFormats[i]); + } + + TextureUtil.loadTextureFeatures(extensions); + + applyRenderState(RenderState.DEFAULT); + JmeIosGLES.glDisable(JmeIosGLES.GL_DITHER); + JmeIosGLES.checkGLError(); + + logger.log(Level.FINE, "Caps: {0}", caps); + logger.setLevel(store); + + uintIndexSupport = extensions.contains("GL_OES_element_index_uint"); + logger.log(Level.FINE, "Support for UInt index: {0}", uintIndexSupport); + } + + + /* ------------------------------------------------------------------------------ */ + + + private int extractVersion(String prefixStr, String versionStr) { + if (versionStr != null) { + int spaceIdx = versionStr.indexOf(" ", prefixStr.length()); + if (spaceIdx >= 1) { + versionStr = versionStr.substring(prefixStr.length(), spaceIdx).trim(); + } else { + versionStr = versionStr.substring(prefixStr.length()).trim(); + } + float version = Float.parseFloat(versionStr); + return (int) (version * 100); + } else { + return -1; + } + } + + private void deleteRenderBuffer(FrameBuffer fb, RenderBuffer rb) { + intBuf1[0] = rb.getId(); + JmeIosGLES.glDeleteRenderbuffers(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + } + + private int convertUsage(Usage usage) { + switch (usage) { + case Static: + return JmeIosGLES.GL_STATIC_DRAW; + case Dynamic: + return JmeIosGLES.GL_DYNAMIC_DRAW; + case Stream: + return JmeIosGLES.GL_STREAM_DRAW; + default: + throw new RuntimeException("Unknown usage type."); + } + } + + + protected void bindProgram(Shader shader) { + int shaderId = shader.getId(); + if (context.boundShaderProgram != shaderId) { + JmeIosGLES.glUseProgram(shaderId); + JmeIosGLES.checkGLError(); + + statistics.onShaderUse(shader, true); + boundShader = shader; + context.boundShaderProgram = shaderId; + } else { + statistics.onShaderUse(shader, false); + } + } + + protected void updateShaderUniforms(Shader shader) { + ListMap uniforms = shader.getUniformMap(); + for (int i = 0; i < uniforms.size(); i++) { + Uniform uniform = uniforms.getValue(i); + if (uniform.isUpdateNeeded()) { + updateUniform(shader, uniform); + } + } + } + + + protected void updateUniform(Shader shader, Uniform uniform) { + logger.log(Level.FINE, "IGLESShaderRenderer private updateUniform: " + uniform.getVarType()); + int shaderId = shader.getId(); + + assert uniform.getName() != null; + assert shader.getId() > 0; + + if (context.boundShaderProgram != shaderId) { + JmeIosGLES.glUseProgram(shaderId); + JmeIosGLES.checkGLError(); + + statistics.onShaderUse(shader, true); + boundShader = shader; + context.boundShaderProgram = shaderId; + } else { + statistics.onShaderUse(shader, false); + } + + int loc = uniform.getLocation(); + if (loc == -1) { + return; + } + + if (loc == -2) { + // get uniform location + updateUniformLocation(shader, uniform); + if (uniform.getLocation() == -1) { + // not declared, ignore + uniform.clearUpdateNeeded(); + return; + } + loc = uniform.getLocation(); + } + + if (uniform.getVarType() == null) { + // removed logging the warning to avoid flooding the log + // (LWJGL also doesn't post a warning) + //logger.log(Level.FINEST, "Uniform value is not set yet. Shader: {0}, Uniform: {1}", + // new Object[]{shader.toString(), uniform.toString()}); + return; // value not set yet.. + } + + statistics.onUniformSet(); + + uniform.clearUpdateNeeded(); + ByteBuffer bb;//GetPrimitiveArrayCritical + FloatBuffer fb; + IntBuffer ib; + switch (uniform.getVarType()) { + case Float: + Float f = (Float) uniform.getValue(); + JmeIosGLES.glUniform1f(loc, f.floatValue()); + break; + case Vector2: + Vector2f v2 = (Vector2f) uniform.getValue(); + JmeIosGLES.glUniform2f(loc, v2.getX(), v2.getY()); + break; + case Vector3: + Vector3f v3 = (Vector3f) uniform.getValue(); + JmeIosGLES.glUniform3f(loc, v3.getX(), v3.getY(), v3.getZ()); + break; + case Vector4: + Object val = uniform.getValue(); + if (val instanceof ColorRGBA) { + ColorRGBA c = (ColorRGBA) val; + JmeIosGLES.glUniform4f(loc, c.r, c.g, c.b, c.a); + } else if (val instanceof Vector4f) { + Vector4f c = (Vector4f) val; + JmeIosGLES.glUniform4f(loc, c.x, c.y, c.z, c.w); + } else { + Quaternion c = (Quaternion) uniform.getValue(); + JmeIosGLES.glUniform4f(loc, c.getX(), c.getY(), c.getZ(), c.getW()); + } + break; + case Boolean: + Boolean b = (Boolean) uniform.getValue(); + JmeIosGLES.glUniform1i(loc, b.booleanValue() ? JmeIosGLES.GL_TRUE : JmeIosGLES.GL_FALSE); + break; + case Matrix3: + fb = (FloatBuffer) uniform.getValue(); + assert fb.remaining() == 9; + JmeIosGLES.glUniformMatrix3fv(loc, 1, false, fb); + break; + case Matrix4: + fb = (FloatBuffer) uniform.getValue(); + assert fb.remaining() == 16; + JmeIosGLES.glUniformMatrix4fv(loc, 1, false, fb); + break; + case IntArray: + ib = (IntBuffer) uniform.getValue(); + JmeIosGLES.glUniform1iv(loc, ib.limit(), ib); + break; + case FloatArray: + fb = (FloatBuffer) uniform.getValue(); + JmeIosGLES.glUniform1fv(loc, fb.limit(), fb); + break; + case Vector2Array: + fb = (FloatBuffer) uniform.getValue(); + JmeIosGLES.glUniform2fv(loc, fb.limit() / 2, fb); + break; + case Vector3Array: + fb = (FloatBuffer) uniform.getValue(); + JmeIosGLES.glUniform3fv(loc, fb.limit() / 3, fb); + break; + case Vector4Array: + fb = (FloatBuffer) uniform.getValue(); + JmeIosGLES.glUniform4fv(loc, fb.limit() / 4, fb); + break; + case Matrix4Array: + fb = (FloatBuffer) uniform.getValue(); + JmeIosGLES.glUniformMatrix4fv(loc, fb.limit() / 16, false, fb); + break; + case Int: + Integer i = (Integer) uniform.getValue(); + JmeIosGLES.glUniform1i(loc, i.intValue()); + break; + default: + throw new UnsupportedOperationException("Unsupported uniform type: " + uniform.getVarType()); + } + JmeIosGLES.checkGLError(); + } + + protected void updateUniformLocation(Shader shader, Uniform uniform) { + stringBuf.setLength(0); + stringBuf.append(uniform.getName()).append('\0'); + updateNameBuffer(); + int loc = JmeIosGLES.glGetUniformLocation(shader.getId(), uniform.getName()); + JmeIosGLES.checkGLError(); + + if (loc < 0) { + uniform.setLocation(-1); + // uniform is not declared in shader + } else { + uniform.setLocation(loc); + } + } + + protected void updateNameBuffer() { + int len = stringBuf.length(); + + nameBuf.position(0); + nameBuf.limit(len); + for (int i = 0; i < len; i++) { + nameBuf.put((byte) stringBuf.charAt(i)); + } + + nameBuf.rewind(); + } + + + public void updateShaderData(Shader shader) { + int id = shader.getId(); + boolean needRegister = false; + if (id == -1) { + // create program + id = JmeIosGLES.glCreateProgram(); + JmeIosGLES.checkGLError(); + + if (id <= 0) { + throw new RendererException("Invalid ID received when trying to create shader program."); + } + + shader.setId(id); + needRegister = true; + } + + for (ShaderSource source : shader.getSources()) { + if (source.isUpdateNeeded()) { + updateShaderSourceData(source); + } + + JmeIosGLES.glAttachShader(id, source.getId()); + JmeIosGLES.checkGLError(); + } + + // link shaders to program + JmeIosGLES.glLinkProgram(id); + JmeIosGLES.checkGLError(); + + JmeIosGLES.glGetProgramiv(id, JmeIosGLES.GL_LINK_STATUS, intBuf1, 0); + JmeIosGLES.checkGLError(); + + boolean linkOK = intBuf1[0] == JmeIosGLES.GL_TRUE; + String infoLog = null; + + if (VALIDATE_SHADER || !linkOK) { + JmeIosGLES.glGetProgramiv(id, JmeIosGLES.GL_INFO_LOG_LENGTH, intBuf1, 0); + JmeIosGLES.checkGLError(); + + int length = intBuf1[0]; + if (length > 3) { + // get infos + infoLog = JmeIosGLES.glGetProgramInfoLog(id); + JmeIosGLES.checkGLError(); + } + } + + if (linkOK) { + if (infoLog != null) { + logger.log(Level.FINE, "shader link success. \n{0}", infoLog); + } else { + logger.fine("shader link success"); + } + shader.clearUpdateNeeded(); + if (needRegister) { + // Register shader for clean up if it was created in this method. + objManager.registerObject(shader); + statistics.onNewShader(); + } else { + // OpenGL spec: uniform locations may change after re-link + resetUniformLocations(shader); + } + } else { + if (infoLog != null) { + throw new RendererException("Shader link failure, shader:" + shader + " info:" + infoLog); + } else { + throw new RendererException("Shader link failure, shader:" + shader + " info: "); + } + } + } + + protected void resetUniformLocations(Shader shader) { + ListMap uniforms = shader.getUniformMap(); + for (int i = 0; i < uniforms.size(); i++) { + Uniform uniform = uniforms.getValue(i); + uniform.reset(); // e.g check location again + } + } + + public void updateTexImageData(Image img, Texture.Type type) { + int texId = img.getId(); + if (texId == -1) { + // create texture + JmeIosGLES.glGenTextures(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + + texId = intBuf1[0]; + img.setId(texId); + objManager.registerObject(img); + + statistics.onNewTexture(); + } + + // bind texture + int target = convertTextureType(type); + if (context.boundTextures[0] != img) { + if (context.boundTextureUnit != 0) { + JmeIosGLES.glActiveTexture(JmeIosGLES.GL_TEXTURE0); + JmeIosGLES.checkGLError(); + + context.boundTextureUnit = 0; + } + + JmeIosGLES.glBindTexture(target, texId); + JmeIosGLES.checkGLError(); + + context.boundTextures[0] = img; + } + + boolean needMips = false; + if (img.isGeneratedMipmapsRequired()) { + needMips = true; + img.setMipmapsGenerated(true); + } + + if (target == JmeIosGLES.GL_TEXTURE_CUBE_MAP) { + // Check max texture size before upload + if (img.getWidth() > maxCubeTexSize || img.getHeight() > maxCubeTexSize) { + throw new RendererException("Cannot upload cubemap " + img + ". The maximum supported cubemap resolution is " + maxCubeTexSize); + } + } else { + if (img.getWidth() > maxTexSize || img.getHeight() > maxTexSize) { + throw new RendererException("Cannot upload texture " + img + ". The maximum supported texture resolution is " + maxTexSize); + } + } + + if (target == JmeIosGLES.GL_TEXTURE_CUBE_MAP) { + // Upload a cube map / sky box + /* + @SuppressWarnings("unchecked") + List bmps = (List) img.getEfficentData(); + if (bmps != null) { + // Native android bitmap + if (bmps.size() != 6) { + throw new UnsupportedOperationException("Invalid texture: " + img + + "Cubemap textures must contain 6 data units."); + } + for (int i = 0; i < 6; i++) { + TextureUtil.uploadTextureBitmap(JmeIosGLES.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, bmps.get(i).getBitmap(), needMips); + bmps.get(i).notifyBitmapUploaded(); + } + } else { + */ + // Standard jme3 image data + List data = img.getData(); + if (data.size() != 6) { + throw new UnsupportedOperationException("Invalid texture: " + img + + "Cubemap textures must contain 6 data units."); + } + for (int i = 0; i < 6; i++) { + TextureUtil.uploadTextureAny(img, JmeIosGLES.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, i, needMips); + } + //} + } else { + TextureUtil.uploadTextureAny(img, target, 0, needMips); + /* + if (img.getEfficentData() instanceof AndroidImageInfo) { + AndroidImageInfo info = (AndroidImageInfo) img.getEfficentData(); + info.notifyBitmapUploaded(); + } + */ + } + + img.clearUpdateNeeded(); + } + + private void setupTextureParams(Texture tex) { + int target = convertTextureType(tex.getType()); + + // filter things + int minFilter = convertMinFilter(tex.getMinFilter()); + int magFilter = convertMagFilter(tex.getMagFilter()); + + JmeIosGLES.glTexParameteri(target, JmeIosGLES.GL_TEXTURE_MIN_FILTER, minFilter); + JmeIosGLES.checkGLError(); + JmeIosGLES.glTexParameteri(target, JmeIosGLES.GL_TEXTURE_MAG_FILTER, magFilter); + JmeIosGLES.checkGLError(); + + /* + if (tex.getAnisotropicFilter() > 1){ + + if (GLContext.getCapabilities().GL_EXT_texture_filter_anisotropic){ + glTexParameterf(target, + EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT, + tex.getAnisotropicFilter()); + } + + } + */ + // repeat modes + + switch (tex.getType()) { + case ThreeDimensional: + case CubeMap: // cubemaps use 3D coords + // GL_TEXTURE_WRAP_R is not available in api 8 + //GLES20.glTexParameteri(target, GLES20.GL_TEXTURE_WRAP_R, convertWrapMode(tex.getWrap(WrapAxis.R))); + case TwoDimensional: + case TwoDimensionalArray: + JmeIosGLES.glTexParameteri(target, JmeIosGLES.GL_TEXTURE_WRAP_T, convertWrapMode(tex.getWrap(WrapAxis.T))); + + // fall down here is intentional.. +// case OneDimensional: + JmeIosGLES.glTexParameteri(target, JmeIosGLES.GL_TEXTURE_WRAP_S, convertWrapMode(tex.getWrap(WrapAxis.S))); + + JmeIosGLES.checkGLError(); + break; + default: + throw new UnsupportedOperationException("Unknown texture type: " + tex.getType()); + } + + // R to Texture compare mode +/* + if (tex.getShadowCompareMode() != Texture.ShadowCompareMode.Off){ + GLES20.glTexParameteri(target, GLES20.GL_TEXTURE_COMPARE_MODE, GLES20.GL_COMPARE_R_TO_TEXTURE); + GLES20.glTexParameteri(target, GLES20.GL_DEPTH_TEXTURE_MODE, GLES20.GL_INTENSITY); + if (tex.getShadowCompareMode() == Texture.ShadowCompareMode.GreaterOrEqual){ + GLES20.glTexParameteri(target, GLES20.GL_TEXTURE_COMPARE_FUNC, GLES20.GL_GEQUAL); + }else{ + GLES20.glTexParameteri(target, GLES20.GL_TEXTURE_COMPARE_FUNC, GLES20.GL_LEQUAL); + } + } + */ + } + + private int convertTextureType(Texture.Type type) { + switch (type) { + case TwoDimensional: + return JmeIosGLES.GL_TEXTURE_2D; + // case TwoDimensionalArray: + // return EXTTextureArray.GL_TEXTURE_2D_ARRAY_EXT; +// case ThreeDimensional: + // return GLES20.GL_TEXTURE_3D; + case CubeMap: + return JmeIosGLES.GL_TEXTURE_CUBE_MAP; + default: + throw new UnsupportedOperationException("Unknown texture type: " + type); + } + } + + private int convertMagFilter(Texture.MagFilter filter) { + switch (filter) { + case Bilinear: + return JmeIosGLES.GL_LINEAR; + case Nearest: + return JmeIosGLES.GL_NEAREST; + default: + throw new UnsupportedOperationException("Unknown mag filter: " + filter); + } + } + + private int convertMinFilter(Texture.MinFilter filter) { + switch (filter) { + case Trilinear: + return JmeIosGLES.GL_LINEAR_MIPMAP_LINEAR; + case BilinearNearestMipMap: + return JmeIosGLES.GL_LINEAR_MIPMAP_NEAREST; + case NearestLinearMipMap: + return JmeIosGLES.GL_NEAREST_MIPMAP_LINEAR; + case NearestNearestMipMap: + return JmeIosGLES.GL_NEAREST_MIPMAP_NEAREST; + case BilinearNoMipMaps: + return JmeIosGLES.GL_LINEAR; + case NearestNoMipMaps: + return JmeIosGLES.GL_NEAREST; + default: + throw new UnsupportedOperationException("Unknown min filter: " + filter); + } + } + + private int convertWrapMode(Texture.WrapMode mode) { + switch (mode) { + case BorderClamp: + case Clamp: + case EdgeClamp: + return JmeIosGLES.GL_CLAMP_TO_EDGE; + case Repeat: + return JmeIosGLES.GL_REPEAT; + case MirroredRepeat: + return JmeIosGLES.GL_MIRRORED_REPEAT; + default: + throw new UnsupportedOperationException("Unknown wrap mode: " + mode); + } + } + + private void renderMeshVertexArray(Mesh mesh, int lod, int count) { + for (VertexBuffer vb : mesh.getBufferList().getArray()) { + if (vb.getBufferType() == Type.InterleavedData + || vb.getUsage() == Usage.CpuOnly // ignore cpu-only buffers + || vb.getBufferType() == Type.Index) { + continue; + } + + if (vb.getStride() == 0) { + // not interleaved + setVertexAttrib_Array(vb); + } else { + // interleaved + VertexBuffer interleavedData = mesh.getBuffer(Type.InterleavedData); + setVertexAttrib_Array(vb, interleavedData); + } + } + + VertexBuffer indices = null; + if (mesh.getNumLodLevels() > 0) { + indices = mesh.getLodLevel(lod); + } else { + indices = mesh.getBuffer(Type.Index);//buffers.get(Type.Index.ordinal()); + } + if (indices != null) { + drawTriangleList_Array(indices, mesh, count); + } else { + JmeIosGLES.glDrawArrays(convertElementMode(mesh.getMode()), 0, mesh.getVertexCount()); + JmeIosGLES.checkGLError(); + } + clearVertexAttribs(); + clearTextureUnits(); + } + + private void renderMeshDefault(Mesh mesh, int lod, int count) { + VertexBuffer indices = null; + VertexBuffer interleavedData = mesh.getBuffer(Type.InterleavedData); + if (interleavedData != null && interleavedData.isUpdateNeeded()) { + updateBufferData(interleavedData); + } + + //IntMap buffers = mesh.getBuffers(); ; + if (mesh.getNumLodLevels() > 0) { + indices = mesh.getLodLevel(lod); + } else { + indices = mesh.getBuffer(Type.Index);// buffers.get(Type.Index.ordinal()); + } + for (VertexBuffer vb : mesh.getBufferList().getArray()){ + if (vb.getBufferType() == Type.InterleavedData + || vb.getUsage() == Usage.CpuOnly // ignore cpu-only buffers + || vb.getBufferType() == Type.Index) { + continue; + } + + if (vb.getStride() == 0) { + // not interleaved + setVertexAttrib(vb); + } else { + // interleaved + setVertexAttrib(vb, interleavedData); + } + } + if (indices != null) { + drawTriangleList(indices, mesh, count); + } else { +// throw new UnsupportedOperationException("Cannot render without index buffer"); + JmeIosGLES.glDrawArrays(convertElementMode(mesh.getMode()), 0, mesh.getVertexCount()); + JmeIosGLES.checkGLError(); + } + clearVertexAttribs(); + clearTextureUnits(); + } + + + public void setVertexAttrib(VertexBuffer vb, VertexBuffer idb) { + if (vb.getBufferType() == VertexBuffer.Type.Index) { + throw new IllegalArgumentException("Index buffers not allowed to be set to vertex attrib"); + } + + if (vb.isUpdateNeeded() && idb == null) { + updateBufferData(vb); + } + + int programId = context.boundShaderProgram; + if (programId > 0) { + Attribute attrib = boundShader.getAttribute(vb.getBufferType()); + int loc = attrib.getLocation(); + if (loc == -1) { + return; // not defined + } + + if (loc == -2) { +// stringBuf.setLength(0); +// stringBuf.append("in").append(vb.getBufferType().name()).append('\0'); +// updateNameBuffer(); + + String attributeName = "in" + vb.getBufferType().name(); + loc = JmeIosGLES.glGetAttribLocation(programId, attributeName); + JmeIosGLES.checkGLError(); + + // not really the name of it in the shader (inPosition\0) but + // the internal name of the enum (Position). + if (loc < 0) { + attrib.setLocation(-1); + return; // not available in shader. + } else { + attrib.setLocation(loc); + } + } + + VertexBuffer[] attribs = context.boundAttribs; + if (!context.attribIndexList.moveToNew(loc)) { + JmeIosGLES.glEnableVertexAttribArray(loc); + JmeIosGLES.checkGLError(); + //System.out.println("Enabled ATTRIB IDX: "+loc); + } + if (attribs[loc] != vb) { + // NOTE: Use id from interleaved buffer if specified + int bufId = idb != null ? idb.getId() : vb.getId(); + assert bufId != -1; + + if (bufId == -1) { + logger.warning("invalid buffer id"); + } + + if (context.boundArrayVBO != bufId) { + JmeIosGLES.glBindBuffer(JmeIosGLES.GL_ARRAY_BUFFER, bufId); + JmeIosGLES.checkGLError(); + + context.boundArrayVBO = bufId; + } + + vb.getData().rewind(); + /* + Android22Workaround.glVertexAttribPointer(loc, + vb.getNumComponents(), + convertVertexBufferFormat(vb.getFormat()), + vb.isNormalized(), + vb.getStride(), + 0); + */ + logger.warning("iTODO Android22Workaround"); + + JmeIosGLES.glVertexAttribPointer(loc, + vb.getNumComponents(), + convertVertexBufferFormat(vb.getFormat()), + vb.isNormalized(), + vb.getStride(), + null); + + JmeIosGLES.checkGLError(); + + attribs[loc] = vb; + } + } else { + throw new IllegalStateException("Cannot render mesh without shader bound"); + } + } + + public void setVertexAttrib(VertexBuffer vb) { + setVertexAttrib(vb, null); + } + + public void drawTriangleArray(Mesh.Mode mode, int count, int vertCount) { + /* if (count > 1){ + ARBDrawInstanced.glDrawArraysInstancedARB(convertElementMode(mode), 0, + vertCount, count); + }else{*/ + JmeIosGLES.glDrawArrays(convertElementMode(mode), 0, vertCount); + JmeIosGLES.checkGLError(); + /* + }*/ + } + + public void drawTriangleList(VertexBuffer indexBuf, Mesh mesh, int count) { + if (indexBuf.getBufferType() != VertexBuffer.Type.Index) { + throw new IllegalArgumentException("Only index buffers are allowed as triangle lists."); + } + + if (indexBuf.isUpdateNeeded()) { + updateBufferData(indexBuf); + } + + int bufId = indexBuf.getId(); + assert bufId != -1; + + if (bufId == -1) { + throw new RendererException("Invalid buffer ID"); + } + + if (context.boundElementArrayVBO != bufId) { + JmeIosGLES.glBindBuffer(JmeIosGLES.GL_ELEMENT_ARRAY_BUFFER, bufId); + JmeIosGLES.checkGLError(); + + context.boundElementArrayVBO = bufId; + } + + int vertCount = mesh.getVertexCount(); + boolean useInstancing = count > 1 && caps.contains(Caps.MeshInstancing); + + Buffer indexData = indexBuf.getData(); + + if (!uintIndexSupport && (indexBuf.getFormat() == Format.UnsignedInt)) { + throw new RendererException("OpenGL ES does not support 32-bit index buffers." + + "Split your models to avoid going over 65536 vertices."); + } + + if (mesh.getMode() == Mode.Hybrid) { + int[] modeStart = mesh.getModeStart(); + int[] elementLengths = mesh.getElementLengths(); + + int elMode = convertElementMode(Mode.Triangles); + int fmt = convertVertexBufferFormat(indexBuf.getFormat()); + int elSize = indexBuf.getFormat().getComponentSize(); + int listStart = modeStart[0]; + int stripStart = modeStart[1]; + int fanStart = modeStart[2]; + int curOffset = 0; + for (int i = 0; i < elementLengths.length; i++) { + if (i == stripStart) { + elMode = convertElementMode(Mode.TriangleStrip); + } else if (i == fanStart) { + elMode = convertElementMode(Mode.TriangleStrip); + } + int elementLength = elementLengths[i]; + + if (useInstancing) { + //ARBDrawInstanced. + throw new IllegalArgumentException("instancing is not supported."); + /* + GLES20.glDrawElementsInstancedARB(elMode, + elementLength, + fmt, + curOffset, + count); + */ + } else { + indexBuf.getData().position(curOffset); + JmeIosGLES.glDrawElements(elMode, elementLength, fmt, indexBuf.getData()); + JmeIosGLES.checkGLError(); + /* + glDrawRangeElements(elMode, + 0, + vertCount, + elementLength, + fmt, + curOffset); + */ + } + + curOffset += elementLength * elSize; + } + } else { + if (useInstancing) { + throw new IllegalArgumentException("instancing is not supported."); + //ARBDrawInstanced. +/* + GLES20.glDrawElementsInstancedARB(convertElementMode(mesh.getMode()), + indexBuf.getData().limit(), + convertVertexBufferFormat(indexBuf.getFormat()), + 0, + count); + */ + } else { + logger.log(Level.FINE, "IGLESShaderRenderer drawTriangleList TODO check"); + indexData.rewind(); + JmeIosGLES.glDrawElementsIndex( + convertElementMode(mesh.getMode()), + indexBuf.getData().limit(), + convertVertexBufferFormat(indexBuf.getFormat()), + 0); + /*TODO: + indexData.rewind(); + JmeIosGLES.glDrawElements( + convertElementMode(mesh.getMode()), + indexBuf.getData().limit(), + convertVertexBufferFormat(indexBuf.getFormat()), + 0); + */ + JmeIosGLES.checkGLError(); + } + } + } + + public int convertElementMode(Mesh.Mode mode) { + switch (mode) { + case Points: + return JmeIosGLES.GL_POINTS; + case Lines: + return JmeIosGLES.GL_LINES; + case LineLoop: + return JmeIosGLES.GL_LINE_LOOP; + case LineStrip: + return JmeIosGLES.GL_LINE_STRIP; + case Triangles: + return JmeIosGLES.GL_TRIANGLES; + case TriangleFan: + return JmeIosGLES.GL_TRIANGLE_FAN; + case TriangleStrip: + return JmeIosGLES.GL_TRIANGLE_STRIP; + default: + throw new UnsupportedOperationException("Unrecognized mesh mode: " + mode); + } + } + + + private int convertVertexBufferFormat(Format format) { + switch (format) { + case Byte: + return JmeIosGLES.GL_BYTE; + case UnsignedByte: + return JmeIosGLES.GL_UNSIGNED_BYTE; + case Short: + return JmeIosGLES.GL_SHORT; + case UnsignedShort: + return JmeIosGLES.GL_UNSIGNED_SHORT; + case Int: + return JmeIosGLES.GL_INT; + case UnsignedInt: + return JmeIosGLES.GL_UNSIGNED_INT; + /* + case Half: + return NVHalfFloat.GL_HALF_FLOAT_NV; + // return ARBHalfFloatVertex.GL_HALF_FLOAT; + */ + case Float: + return JmeIosGLES.GL_FLOAT; +// case Double: +// return JmeIosGLES.GL_DOUBLE; + default: + throw new RuntimeException("Unknown buffer format."); + + } + } + + public void clearVertexAttribs() { + IDList attribList = context.attribIndexList; + for (int i = 0; i < attribList.oldLen; i++) { + int idx = attribList.oldList[i]; + + JmeIosGLES.glDisableVertexAttribArray(idx); + JmeIosGLES.checkGLError(); + + context.boundAttribs[idx] = null; + } + context.attribIndexList.copyNewToOld(); + } + + + public void clearTextureUnits() { + IDList textureList = context.textureIndexList; + Image[] textures = context.boundTextures; + for (int i = 0; i < textureList.oldLen; i++) { + int idx = textureList.oldList[i]; +// if (context.boundTextureUnit != idx){ +// glActiveTexture(GL_TEXTURE0 + idx); +// context.boundTextureUnit = idx; +// } +// glDisable(convertTextureType(textures[idx].getType())); + textures[idx] = null; + } + context.textureIndexList.copyNewToOld(); + } + + + public void updateFrameBuffer(FrameBuffer fb) { + int id = fb.getId(); + if (id == -1) { + // create FBO + JmeIosGLES.glGenFramebuffers(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + + id = intBuf1[0]; + fb.setId(id); + objManager.registerObject(fb); + + statistics.onNewFrameBuffer(); + } + + if (context.boundFBO != id) { + JmeIosGLES.glBindFramebuffer(JmeIosGLES.GL_FRAMEBUFFER, id); + JmeIosGLES.checkGLError(); + + // binding an FBO automatically sets draw buf to GL_COLOR_ATTACHMENT0 + context.boundDrawBuf = 0; + context.boundFBO = id; + } + + FrameBuffer.RenderBuffer depthBuf = fb.getDepthBuffer(); + if (depthBuf != null) { + updateFrameBufferAttachment(fb, depthBuf); + } + + for (int i = 0; i < fb.getNumColorBuffers(); i++) { + FrameBuffer.RenderBuffer colorBuf = fb.getColorBuffer(i); + updateFrameBufferAttachment(fb, colorBuf); + } + + fb.clearUpdateNeeded(); + } + + + public void updateFrameBufferAttachment(FrameBuffer fb, RenderBuffer rb) { + boolean needAttach; + if (rb.getTexture() == null) { + // if it hasn't been created yet, then attach is required. + needAttach = rb.getId() == -1; + updateRenderBuffer(fb, rb); + } else { + needAttach = false; + updateRenderTexture(fb, rb); + } + if (needAttach) { + JmeIosGLES.glFramebufferRenderbuffer(JmeIosGLES.GL_FRAMEBUFFER, + convertAttachmentSlot(rb.getSlot()), + JmeIosGLES.GL_RENDERBUFFER, + rb.getId()); + + JmeIosGLES.checkGLError(); + } + } + + + public void updateRenderTexture(FrameBuffer fb, RenderBuffer rb) { + Texture tex = rb.getTexture(); + Image image = tex.getImage(); + if (image.isUpdateNeeded()) { + updateTexImageData(image, tex.getType()); + + // NOTE: For depth textures, sets nearest/no-mips mode + // Required to fix "framebuffer unsupported" + // for old NVIDIA drivers! + setupTextureParams(tex); + } + + JmeIosGLES.glFramebufferTexture2D(JmeIosGLES.GL_FRAMEBUFFER, + convertAttachmentSlot(rb.getSlot()), + convertTextureType(tex.getType()), + image.getId(), + 0); + + JmeIosGLES.checkGLError(); + } + + + private void updateRenderBuffer(FrameBuffer fb, RenderBuffer rb) { + int id = rb.getId(); + if (id == -1) { + JmeIosGLES.glGenRenderbuffers(1, intBuf1, 0); + JmeIosGLES.checkGLError(); + + id = intBuf1[0]; + rb.setId(id); + } + + if (context.boundRB != id) { + JmeIosGLES.glBindRenderbuffer(JmeIosGLES.GL_RENDERBUFFER, id); + JmeIosGLES.checkGLError(); + + context.boundRB = id; + } + + if (fb.getWidth() > maxRBSize || fb.getHeight() > maxRBSize) { + throw new RendererException("Resolution " + fb.getWidth() + + ":" + fb.getHeight() + " is not supported."); + } + + TextureUtil.IosGLImageFormat imageFormat = TextureUtil.getImageFormat(rb.getFormat()); + if (imageFormat.renderBufferStorageFormat == 0) { + throw new RendererException("The format '" + rb.getFormat() + "' cannot be used for renderbuffers."); + } + +// if (fb.getSamples() > 1 && GLContext.getCapabilities().GL_EXT_framebuffer_multisample) { + if (fb.getSamples() > 1) { +// // FIXME + throw new RendererException("Multisample FrameBuffer is not supported yet."); +// int samples = fb.getSamples(); +// if (maxFBOSamples < samples) { +// samples = maxFBOSamples; +// } +// glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, +// samples, +// glFmt.internalFormat, +// fb.getWidth(), +// fb.getHeight()); + } else { + JmeIosGLES.glRenderbufferStorage(JmeIosGLES.GL_RENDERBUFFER, + imageFormat.renderBufferStorageFormat, + fb.getWidth(), + fb.getHeight()); + + JmeIosGLES.checkGLError(); + } + } + + + private int convertAttachmentSlot(int attachmentSlot) { + // can also add support for stencil here + if (attachmentSlot == -100) { + return JmeIosGLES.GL_DEPTH_ATTACHMENT; + } else if (attachmentSlot == 0) { + return JmeIosGLES.GL_COLOR_ATTACHMENT0; + } else { + throw new UnsupportedOperationException("Android does not support multiple color attachments to an FBO"); + } + } + + + private void checkFrameBufferStatus(FrameBuffer fb) { + try { + checkFrameBufferError(); + } catch (IllegalStateException ex) { + logger.log(Level.SEVERE, "=== jMonkeyEngine FBO State ===\n{0}", fb); + printRealFrameBufferInfo(fb); + throw ex; + } + } + + private void checkFrameBufferError() { + int status = JmeIosGLES.glCheckFramebufferStatus(JmeIosGLES.GL_FRAMEBUFFER); + switch (status) { + case JmeIosGLES.GL_FRAMEBUFFER_COMPLETE: + break; + case JmeIosGLES.GL_FRAMEBUFFER_UNSUPPORTED: + //Choose different formats + throw new IllegalStateException("Framebuffer object format is " + + "unsupported by the video hardware."); + case JmeIosGLES.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: + throw new IllegalStateException("Framebuffer has erronous attachment."); + case JmeIosGLES.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: + throw new IllegalStateException("Framebuffer doesn't have any renderbuffers attached."); + case JmeIosGLES.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: + throw new IllegalStateException("Framebuffer attachments must have same dimensions."); +// case GLES20.GL_FRAMEBUFFER_INCOMPLETE_FORMATS: +// throw new IllegalStateException("Framebuffer attachments must have same formats."); +// case GLES20.GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: +// throw new IllegalStateException("Incomplete draw buffer."); +// case GLES20.GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: +// throw new IllegalStateException("Incomplete read buffer."); +// case GLES20.GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT: +// throw new IllegalStateException("Incomplete multisample buffer."); + default: + //Programming error; will fail on all hardware + throw new IllegalStateException("Some video driver error " + + "or programming error occured. " + + "Framebuffer object status is invalid: " + status); + } + } + + private void printRealRenderBufferInfo(FrameBuffer fb, RenderBuffer rb, String name) { + System.out.println("== Renderbuffer " + name + " =="); + System.out.println("RB ID: " + rb.getId()); + System.out.println("Is proper? " + JmeIosGLES.glIsRenderbuffer(rb.getId())); + + int attachment = convertAttachmentSlot(rb.getSlot()); + + //intBuf16.clear(); + JmeIosGLES.glGetFramebufferAttachmentParameteriv(JmeIosGLES.GL_FRAMEBUFFER, + attachment, JmeIosGLES.GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, intBuf16, 0); + int type = intBuf16[0]; + + //intBuf16.clear(); + JmeIosGLES.glGetFramebufferAttachmentParameteriv(JmeIosGLES.GL_FRAMEBUFFER, + attachment, JmeIosGLES.GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, intBuf16, 0); + int rbName = intBuf16[0]; + + switch (type) { + case JmeIosGLES.GL_NONE: + System.out.println("Type: None"); + break; + case JmeIosGLES.GL_TEXTURE: + System.out.println("Type: Texture"); + break; + case JmeIosGLES.GL_RENDERBUFFER: + System.out.println("Type: Buffer"); + System.out.println("RB ID: " + rbName); + break; + } + } + + private void printRealFrameBufferInfo(FrameBuffer fb) { +// boolean doubleBuffer = GLES20.glGetBooleanv(GLES20.GL_DOUBLEBUFFER); + boolean doubleBuffer = false; // FIXME +// String drawBuf = getTargetBufferName(glGetInteger(GL_DRAW_BUFFER)); +// String readBuf = getTargetBufferName(glGetInteger(GL_READ_BUFFER)); + + int fbId = fb.getId(); + //intBuf16.clear(); +// int curDrawBinding = GLES20.glGetIntegerv(GLES20.GL_DRAW_FRAMEBUFFER_BINDING); +// int curReadBinding = glGetInteger(ARBFramebufferObject.GL_READ_FRAMEBUFFER_BINDING); + + System.out.println("=== OpenGL FBO State ==="); + System.out.println("Context doublebuffered? " + doubleBuffer); + System.out.println("FBO ID: " + fbId); + System.out.println("Is proper? " + JmeIosGLES.glIsFramebuffer(fbId)); +// System.out.println("Is bound to draw? " + (fbId == curDrawBinding)); +// System.out.println("Is bound to read? " + (fbId == curReadBinding)); +// System.out.println("Draw buffer: " + drawBuf); +// System.out.println("Read buffer: " + readBuf); + + if (context.boundFBO != fbId) { + JmeIosGLES.glBindFramebuffer(JmeIosGLES.GL_FRAMEBUFFER, fbId); + context.boundFBO = fbId; + } + + if (fb.getDepthBuffer() != null) { + printRealRenderBufferInfo(fb, fb.getDepthBuffer(), "Depth"); + } + for (int i = 0; i < fb.getNumColorBuffers(); i++) { + printRealRenderBufferInfo(fb, fb.getColorBuffer(i), "Color" + i); + } + + + } + + public void drawTriangleList_Array(VertexBuffer indexBuf, Mesh mesh, int count) { + if (indexBuf.getBufferType() != VertexBuffer.Type.Index) { + throw new IllegalArgumentException("Only index buffers are allowed as triangle lists."); + } + + boolean useInstancing = count > 1 && caps.contains(Caps.MeshInstancing); + if (useInstancing) { + throw new IllegalArgumentException("Caps.MeshInstancing is not supported."); + } + + int vertCount = mesh.getVertexCount(); + Buffer indexData = indexBuf.getData(); + indexData.rewind(); + + if (mesh.getMode() == Mode.Hybrid) { + int[] modeStart = mesh.getModeStart(); + int[] elementLengths = mesh.getElementLengths(); + + int elMode = convertElementMode(Mode.Triangles); + int fmt = convertVertexBufferFormat(indexBuf.getFormat()); + int elSize = indexBuf.getFormat().getComponentSize(); + int listStart = modeStart[0]; + int stripStart = modeStart[1]; + int fanStart = modeStart[2]; + int curOffset = 0; + for (int i = 0; i < elementLengths.length; i++) { + if (i == stripStart) { + elMode = convertElementMode(Mode.TriangleStrip); + } else if (i == fanStart) { + elMode = convertElementMode(Mode.TriangleFan); + } + int elementLength = elementLengths[i]; + + indexBuf.getData().position(curOffset); + JmeIosGLES.glDrawElements(elMode, elementLength, fmt, indexBuf.getData()); + JmeIosGLES.checkGLError(); + + curOffset += elementLength * elSize; + } + } else { + JmeIosGLES.glDrawElements( + convertElementMode(mesh.getMode()), + indexBuf.getData().limit(), + convertVertexBufferFormat(indexBuf.getFormat()), + indexBuf.getData()); + JmeIosGLES.checkGLError(); + } + } + + public void setVertexAttrib_Array(VertexBuffer vb, VertexBuffer idb) { + if (vb.getBufferType() == VertexBuffer.Type.Index) { + throw new IllegalArgumentException("Index buffers not allowed to be set to vertex attrib"); + } + + // Get shader + int programId = context.boundShaderProgram; + if (programId > 0) { + VertexBuffer[] attribs = context.boundAttribs; + + Attribute attrib = boundShader.getAttribute(vb.getBufferType()); + int loc = attrib.getLocation(); + if (loc == -1) { + //throw new IllegalArgumentException("Location is invalid for attrib: [" + vb.getBufferType().name() + "]"); + return; + } else if (loc == -2) { + String attributeName = "in" + vb.getBufferType().name(); + + loc = JmeIosGLES.glGetAttribLocation(programId, attributeName); + JmeIosGLES.checkGLError(); + + if (loc < 0) { + attrib.setLocation(-1); + return; // not available in shader. + } else { + attrib.setLocation(loc); + } + + } // if (loc == -2) + + if ((attribs[loc] != vb) || vb.isUpdateNeeded()) { + // NOTE: Use data from interleaved buffer if specified + VertexBuffer avb = idb != null ? idb : vb; + avb.getData().rewind(); + avb.getData().position(vb.getOffset()); + + // Upload attribute data + JmeIosGLES.glVertexAttribPointer(loc, + vb.getNumComponents(), + convertVertexBufferFormat(vb.getFormat()), + vb.isNormalized(), + vb.getStride(), + avb.getData()); + + JmeIosGLES.checkGLError(); + + JmeIosGLES.glEnableVertexAttribArray(loc); + JmeIosGLES.checkGLError(); + + attribs[loc] = vb; + } // if (attribs[loc] != vb) + } else { + throw new IllegalStateException("Cannot render mesh without shader bound"); + } + } + + public void setVertexAttrib_Array(VertexBuffer vb) { + setVertexAttrib_Array(vb, null); + } + + + public void updateShaderSourceData(ShaderSource source) { + int id = source.getId(); + if (id == -1) { + // Create id + id = JmeIosGLES.glCreateShader(convertShaderType(source.getType())); + JmeIosGLES.checkGLError(); + + if (id <= 0) { + throw new RendererException("Invalid ID received when trying to create shader."); + } + source.setId(id); + } + + if (!source.getLanguage().equals("GLSL100")) { + throw new RendererException("This shader cannot run in OpenGL ES. " + + "Only GLSL 1.0 shaders are supported."); + } + + // upload shader source + // merge the defines and source code + byte[] definesCodeData = source.getDefines().getBytes(); + byte[] sourceCodeData = source.getSource().getBytes(); + ByteBuffer codeBuf = BufferUtils.createByteBuffer(definesCodeData.length + + sourceCodeData.length); + codeBuf.put(definesCodeData); + codeBuf.put(sourceCodeData); + codeBuf.flip(); + + if (powerVr && source.getType() == ShaderType.Vertex) { + // XXX: This is to fix a bug in old PowerVR, remove + // when no longer applicable. + JmeIosGLES.glShaderSource( + id, source.getDefines() + + source.getSource()); + } else { + String precision =""; + if (source.getType() == ShaderType.Fragment) { + precision = "precision mediump float;\n"; + } + JmeIosGLES.glShaderSource( + id, + precision + +source.getDefines() + + source.getSource()); + } +// int range[] = new int[2]; +// int precision[] = new int[1]; +// GLES20.glGetShaderPrecisionFormat(GLES20.GL_VERTEX_SHADER, GLES20.GL_HIGH_FLOAT, range, 0, precision, 0); +// System.out.println("PRECISION HIGH FLOAT VERTEX"); +// System.out.println("range "+range[0]+"," +range[1]); +// System.out.println("precision "+precision[0]); + + JmeIosGLES.glCompileShader(id); + JmeIosGLES.checkGLError(); + + JmeIosGLES.glGetShaderiv(id, JmeIosGLES.GL_COMPILE_STATUS, intBuf1, 0); + JmeIosGLES.checkGLError(); + + boolean compiledOK = intBuf1[0] == JmeIosGLES.GL_TRUE; + String infoLog = null; + + if (VALIDATE_SHADER || !compiledOK) { + // even if compile succeeded, check + // log for warnings + JmeIosGLES.glGetShaderiv(id, JmeIosGLES.GL_INFO_LOG_LENGTH, intBuf1, 0); + JmeIosGLES.checkGLError(); + infoLog = JmeIosGLES.glGetShaderInfoLog(id); + } + + if (compiledOK) { + if (infoLog != null) { + logger.log(Level.FINE, "compile success: {0}, {1}", new Object[]{source.getName(), infoLog}); + } else { + logger.log(Level.FINE, "compile success: {0}", source.getName()); + } + source.clearUpdateNeeded(); + } else { + logger.log(Level.WARNING, "Bad compile of:\n{0}", + new Object[]{ShaderDebug.formatShaderSource(source.getDefines(), source.getSource(),stringBuf.toString())}); + if (infoLog != null) { + throw new RendererException("compile error in:" + source + " error:" + infoLog); + } else { + throw new RendererException("compile error in:" + source + " error: "); + } + } + } + + + public int convertShaderType(ShaderType type) { + switch (type) { + case Fragment: + return JmeIosGLES.GL_FRAGMENT_SHADER; + case Vertex: + return JmeIosGLES.GL_VERTEX_SHADER; +// case Geometry: +// return ARBGeometryShader4.GL_GEOMETRY_SHADER_ARB; + default: + throw new RuntimeException("Unrecognized shader type."); + } + } + + private int convertTestFunction(RenderState.TestFunction testFunc) { + switch (testFunc) { + case Never: + return JmeIosGLES.GL_NEVER; + case Less: + return JmeIosGLES.GL_LESS; + case LessOrEqual: + return JmeIosGLES.GL_LEQUAL; + case Greater: + return JmeIosGLES.GL_GREATER; + case GreaterOrEqual: + return JmeIosGLES.GL_GEQUAL; + case Equal: + return JmeIosGLES.GL_EQUAL; + case NotEqual: + return JmeIosGLES.GL_NOTEQUAL; + case Always: + return JmeIosGLES.GL_ALWAYS; + default: + throw new UnsupportedOperationException("Unrecognized test function: " + testFunc); + } + } +} \ No newline at end of file diff --git a/engine/src/ios/com/jme3/renderer/ios/JmeIosGLES.java b/engine/src/ios/com/jme3/renderer/ios/JmeIosGLES.java new file mode 100644 index 000000000..0811dc422 --- /dev/null +++ b/engine/src/ios/com/jme3/renderer/ios/JmeIosGLES.java @@ -0,0 +1,273 @@ +package com.jme3.renderer.ios; + +import com.jme3.renderer.RendererException; + +import java.nio.Buffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * The iOS GLES interface iOS alternative to Android's GLES20 class + * + * @author Kostyantyn Hushchyn + */ +public class JmeIosGLES { + private static final Logger logger = Logger.getLogger(JmeIosGLES.class.getName()); + + private static boolean ENABLE_ERROR_CHECKING = true; + + public static final int GL_ALPHA = 0x00001906; + public static final int GL_ALWAYS = 0x00000207; + public static final int GL_ARRAY_BUFFER = 0x00008892; + public static final int GL_BACK = 0x00000405; + public static final int GL_BLEND = 0x00000be2; + public static final int GL_BYTE = 0x00001400; + public static final int GL_CLAMP_TO_EDGE = 0x0000812f; + public static final int GL_COLOR_ATTACHMENT0 = 0x00008ce0; + public static final int GL_COLOR_BUFFER_BIT = 0x00004000; + public static final int GL_COMPILE_STATUS = 0x00008b81; + public static final int GL_COMPRESSED_TEXTURE_FORMATS = 0x000086a3; + public static final int GL_CULL_FACE = 0x00000b44; + public static final int GL_DEPTH_ATTACHMENT = 0x00008d00; + public static final int GL_DEPTH_BUFFER_BIT = 0x00000100; + public static final int GL_DEPTH_COMPONENT = 0x00001902; + public static final int GL_DEPTH_COMPONENT16 = 0x000081a5; + public static final int GL_DEPTH_TEST = 0x00000b71; + public static final int GL_DITHER = 0x00000bd0; + public static final int GL_DST_COLOR = 0x00000306; + public static final int GL_DYNAMIC_DRAW = 0x000088e8; + public static final int GL_EQUAL = 0x00000202; + public static final int GL_ELEMENT_ARRAY_BUFFER = 0x00008893; + public static final int GL_EXTENSIONS = 0x00001f03; + public static final int GL_FALSE = 0x00000000; + public static final int GL_FLOAT = 0x00001406; + public static final int GL_FRAGMENT_SHADER = 0x00008b30; + public static final int GL_FRAMEBUFFER = 0x00008d40; + public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x00008cd1; + public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x00008cd0; + public static final int GL_FRAMEBUFFER_COMPLETE = 0x00008cd5; + public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x00008cd6; + public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x00008cd9; + public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x00008cd7; + public static final int GL_FRAMEBUFFER_UNSUPPORTED = 0x00008cdd; + public static final int GL_FRONT = 0x00000404; + public static final int GL_FRONT_AND_BACK = 0x00000408; + public static final int GL_GEQUAL = 0x00000206; + public static final int GL_GREATER = 0x00000204; + public static final int GL_HIGH_FLOAT = 0x00008df2; + public static final int GL_INFO_LOG_LENGTH = 0x00008b84; + public static final int GL_INT = 0x00001404; + public static final int GL_LEQUAL = 0x00000203; + public static final int GL_LESS = 0x00000201; + public static final int GL_LINEAR = 0x00002601; + public static final int GL_LINEAR_MIPMAP_LINEAR = 0x00002703; + public static final int GL_LINEAR_MIPMAP_NEAREST = 0x00002701; + public static final int GL_LINES = 0x00000001; + public static final int GL_LINE_LOOP = 0x00000002; + public static final int GL_LINE_STRIP = 0x00000003; + public static final int GL_LINK_STATUS = 0x00008b82; + public static final int GL_LUMINANCE = 0x00001909; + public static final int GL_LUMINANCE_ALPHA = 0x0000190a; + public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x0000851c; + public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x00008dfd; + public static final int GL_MAX_RENDERBUFFER_SIZE = 0x000084e8; + public static final int GL_MAX_TEXTURE_IMAGE_UNITS = 0x00008872; + public static final int GL_MAX_TEXTURE_SIZE = 0x00000d33; + public static final int GL_MAX_VARYING_VECTORS = 0x00008dfc; + public static final int GL_MAX_VERTEX_ATTRIBS = 0x00008869; + public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x00008b4c; + public static final int GL_MAX_VERTEX_UNIFORM_VECTORS = 0x00008dfb; + public static final int GL_MIRRORED_REPEAT = 0x00008370; + public static final int GL_NEAREST = 0x00002600; + public static final int GL_NEAREST_MIPMAP_LINEAR = 0x00002702; + public static final int GL_NEAREST_MIPMAP_NEAREST = 0x00002700; + public static final int GL_NEVER = 0x00000200; + public static final int GL_NONE = 0x00000000; + public static final int GL_NOTEQUAL = 0x00000205; + public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x000086a2; + public static final int GL_ONE = 0x00000001; + public static final int GL_ONE_MINUS_SRC_ALPHA = 0x00000303; + public static final int GL_ONE_MINUS_SRC_COLOR = 0x00000301; + public static final int GL_POINTS = 0x00000000; + public static final int GL_POLYGON_OFFSET_FILL = 0x00008037; + public static final int GL_RENDERBUFFER = 0x00008d41; + public static final int GL_RENDERER = 0x00001f01; + public static final int GL_REPEAT = 0x00002901; + public static final int GL_RGB = 0x00001907; + public static final int GL_RGB565 = 0x00008d62; + public static final int GL_RGB5_A1 = 0x00008057; + public static final int GL_RGBA = 0x00001908; + public static final int GL_RGBA4 = 0x00008056; + public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 0x0000809e; + public static final int GL_SCISSOR_TEST = 0x00000c11; + public static final int GL_SHADING_LANGUAGE_VERSION = 0x00008b8c; + public static final int GL_SHORT = 0x00001402; + public static final int GL_SRC_COLOR = 0x00000300; + public static final int GL_SRC_ALPHA = 0x00000302; + public static final int GL_STATIC_DRAW = 0x000088e4; + public static final int GL_STENCIL_BUFFER_BIT = 0x00000400; + public static final int GL_STREAM_DRAW = 0x000088e0; + public static final int GL_SUBPIXEL_BITS = 0x00000d50; + public static final int GL_TEXTURE = 0x00001702; + public static final int GL_TEXTURE0 = 0x000084c0; + public static final int GL_TEXTURE_2D = 0x00000de1; + public static final int GL_TEXTURE_CUBE_MAP = 0x00008513; + public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x00008515; + public static final int GL_TEXTURE_MAG_FILTER = 0x00002800; + public static final int GL_TEXTURE_MIN_FILTER = 0x00002801; + public static final int GL_TEXTURE_WRAP_S = 0x00002802; + public static final int GL_TEXTURE_WRAP_T = 0x00002803; + public static final int GL_TRIANGLES = 0x00000004; + public static final int GL_TRIANGLE_FAN = 0x00000006; + public static final int GL_TRIANGLE_STRIP = 0x00000005; + public static final int GL_TRUE = 0x00000001; + public static final int GL_UNPACK_ALIGNMENT = 0x00000cf5; + public static final int GL_UNSIGNED_BYTE = 0x00001401; + public static final int GL_UNSIGNED_INT = 0x00001405; + public static final int GL_UNSIGNED_SHORT = 0x00001403; + public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 0x00008033; + public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 0x00008034; + public static final int GL_UNSIGNED_SHORT_5_6_5 = 0x00008363; + public static final int GL_VENDOR = 0x00001f00; + public static final int GL_VERSION = 0x00001f02; + public static final int GL_VERTEX_SHADER = 0x00008b31; + public static final int GL_ZERO = 0x00000000; + + public static native void glActiveTexture(int texture); + public static native void glAttachShader(int program, int shader); + public static native void glBindBuffer(int target, int buffer); + public static native void glBindFramebuffer(int target, int framebuffer); + public static native void glBindRenderbuffer(int target, int renderbuffer); + public static native void glBindTexture(int target, int texture); +// public static native void glBindVertexArray // TODO: Investigate this + public static native void glBlendFunc(int sfactor, int dfactor); + public static native void glBufferData(int target, int size, Buffer data, int usage); + public static native void glBufferData2(int target, int size, byte[] data, int offset, int usage); + public static native void glBufferSubData(int target, int offset, int size, Buffer data); + public static native void glBufferSubData2(int target, int offset, int size, byte[] data, int dataoffset); + public static native int glCheckFramebufferStatus(int target); + public static native void glClear(int mask); + public static native void glClearColor(float red, float green, float blue, float alpha); + public static native void glColorMask(boolean red, boolean green, boolean blue, boolean alpha); + public static native void glCompileShader(int shader); + public static native void glCompressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, int imageSize, Buffer pixels); + public static native void glCompressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, int imageSize, Buffer pixels); + public static native int glCreateProgram(); + public static native int glCreateShader(int type); + public static native void glCullFace(int mode); + public static native void glDeleteBuffers(int n, int[] buffers, int offset); + public static native void glDeleteFramebuffers(int n, int[] framebuffers, int offset); + public static native void glDeleteProgram(int program); + public static native void glDeleteRenderbuffers(int n, int[] renderbuffers, int offset); + public static native void glDeleteShader(int shader); + public static native void glDeleteTextures(int n, int[] textures, int offset); + public static native void glDepthFunc(int func); + public static native void glDepthMask(boolean flag); + public static native void glDepthRangef(float zNear, float zFar); + public static native void glDetachShader(int program, int shader); + public static native void glDisableVertexAttribArray(int index); + public static native void glDisable(int cap); + public static native void glDrawArrays(int mode, int first, int count); + public static native void glDrawElements(int mode, int count, int type, Buffer indices); + public static native void glDrawElements2(int mode, int count, int type, byte[] indices, int offset); + public static native void glDrawElementsIndex(int mode, int count, int type, int offset); + public static native void glEnable(int cap); + public static native void glEnableVertexAttribArray(int index); + public static native void glFramebufferRenderbuffer(int target, int attachment, int renderbuffertarget, int renderbuffer); + public static native void glFramebufferTexture2D(int target, int attachment, int textarget, int texture, int level); + public static native void glGenBuffers(int n, int[] buffers, int offset); + public static native void glGenFramebuffers(int n, int[] framebuffers, int offset); + public static native void glGenRenderbuffers(int n, int[] renderbuffers, int offset); + public static native void glGenTextures(int n, int[] textures, int offset); + public static native void glGenerateMipmap(int target); + public static native int glGetAttribLocation(int program, String name); + public static native int glGetError(); + public static native void glGetFramebufferAttachmentParameteriv(int target, int attachment, int pname, int[] params, int offset); + public static native void glGetIntegerv (int pname, int[] params, int offset); + public static native String glGetProgramInfoLog(int program); + public static native void glGetProgramiv(int program, int pname, int[] params, int offset); + public static native String glGetShaderInfoLog(int shader); + public static native void glGetShaderiv(int shader, int pname, int[] params, int offset); + public static native String glGetString(int name); + public static native int glGetUniformLocation(int program, String name); + public static native boolean glIsFramebuffer(int framebuffer); + public static native boolean glIsRenderbuffer(int renderbuffer); + public static native void glLineWidth(float width); + public static native void glLinkProgram(int program); + public static native void glPixelStorei(int pname, int param); + public static native void glPolygonOffset(float factor, float units); + public static native void glReadPixels(int vpX, int vpY, int vpW, int vpH, int format, int type, Buffer pixels); + public static native void glReadPixels2(int vpX, int vpY, int vpW, int vpH, int format, int type, byte[] pixels, int offset, int size); + public static native void glRenderbufferStorage(int target, int internalformat, int width, int height); + public static native void glScissor(int x, int y, int width, int height); + public static native void glShaderSource(int shader, String string); + public static native void glTexImage2D(int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels); + public static native void glTexParameteri(int target, int pname, int param); + public static native void glTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, Buffer pixels); + public static native void glUniform1f(int location, float x); + public static native void glUniform1fv(int location, int count, FloatBuffer v); + public static native void glUniform1fv2(int location, int count, float[] v, int offset); + public static native void glUniform1i(int location, int x); + public static native void glUniform1iv(int location, int count, IntBuffer v); + public static native void glUniform1iv2(int location, int count, int[] v, int offset); + public static native void glUniform2f(int location, float x, float y); + public static native void glUniform2fv(int location, int count, FloatBuffer v); + public static native void glUniform2fv2(int location, int count, float[] v, int offset); + public static native void glUniform3f(int location, float x, float y, float z); + public static native void glUniform3fv(int location, int count, FloatBuffer v); + public static native void glUniform3fv2(int location, int count, float[] v, int offset); + public static native void glUniform4f(int location, float x, float y, float z, float w); + public static native void glUniform4fv(int location, int count, FloatBuffer v); + public static native void glUniform4fv2(int location, int count, float[] v, int offset); + public static native void glUniformMatrix3fv(int location, int count, boolean transpose, FloatBuffer value); + public static native void glUniformMatrix3fv2(int location, int count, boolean transpose, float[] value, int offset); + public static native void glUniformMatrix4fv(int location, int count, boolean transpose, FloatBuffer value); + public static native void glUniformMatrix4fv2(int location, int count, boolean transpose, float[] value, int offset); + public static native void glUseProgram(int program); + //public static native void glVertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, byte[] ptr, int offset); + public static native void glVertexAttribPointer(int indx, int size, int type, boolean normalized, int stride, Buffer ptr); + public static native void glVertexAttribPointer2(int indx, int size, int type, boolean normalized, int stride, int offset); + public static native void glViewport(int x, int y, int width, int height); + + + public static void checkGLError() { + if (!ENABLE_ERROR_CHECKING) { + return; + } + int error = glGetError(); + if (error != 0) { + String message = null;//GLU.gluErrorString(error); + if (message == null) { + throw new RendererException("An unknown [" + error + "] OpenGL error has occurred."); + } else { + throw new RendererException("An OpenGL error has occurred: " + message); + } + } + } + + /* + public static String gluErrorString(int error) { + switch (error) { + case GL10.GL_NO_ERROR: + return "no error"; + case GL10.GL_INVALID_ENUM: + return "invalid enum"; + case GL10.GL_INVALID_VALUE: + return "invalid value"; + case GL10.GL_INVALID_OPERATION: + return "invalid operation"; + case GL10.GL_STACK_OVERFLOW: + return "stack overflow"; + case GL10.GL_STACK_UNDERFLOW: + return "stack underflow"; + case GL10.GL_OUT_OF_MEMORY: + return "out of memory"; + default: + return null; + } + } + */ + +} \ No newline at end of file diff --git a/engine/src/ios/com/jme3/renderer/ios/TextureUtil.java b/engine/src/ios/com/jme3/renderer/ios/TextureUtil.java new file mode 100644 index 000000000..596df0ce4 --- /dev/null +++ b/engine/src/ios/com/jme3/renderer/ios/TextureUtil.java @@ -0,0 +1,591 @@ +package com.jme3.renderer.ios; + +//import android.graphics.Bitmap; +//import android.opengl.ETC1; +//import android.opengl.ETC1Util.ETC1Texture; +//import android.opengl.JmeIosGLES; +//import android.opengl.GLUtils; +//import com.jme3.asset.AndroidImageInfo; +import com.jme3.renderer.ios.JmeIosGLES; +import com.jme3.math.FastMath; +import com.jme3.renderer.RendererException; +import com.jme3.texture.Image; +import com.jme3.texture.Image.Format; +import com.jme3.util.BufferUtils; +import java.nio.ByteBuffer; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class TextureUtil { + + private static final Logger logger = Logger.getLogger(TextureUtil.class.getName()); + //TODO Make this configurable through appSettings + public static boolean ENABLE_COMPRESSION = true; + private static boolean NPOT = false; + private static boolean ETC1support = false; + private static boolean DXT1 = false; + private static boolean PVRTC = false; + private static boolean DEPTH24_STENCIL8 = false; + private static boolean DEPTH_TEXTURE = false; + private static boolean RGBA8 = false; + + // Same constant used by both GL_ARM_rgba8 and GL_OES_rgb8_rgba8. + private static final int GL_RGBA8 = 0x8058; + + private static final int GL_DXT1 = 0x83F0; + private static final int GL_DXT1A = 0x83F1; + + private static final int GL_DEPTH_STENCIL_OES = 0x84F9; + private static final int GL_UNSIGNED_INT_24_8_OES = 0x84FA; + private static final int GL_DEPTH24_STENCIL8_OES = 0x88F0; + + public static void loadTextureFeatures(String extensionString) { + ETC1support = extensionString.contains("GL_OES_compressed_ETC1_RGB8_texture"); + DEPTH24_STENCIL8 = extensionString.contains("GL_OES_packed_depth_stencil"); + NPOT = extensionString.contains("GL_IMG_texture_npot") + || extensionString.contains("GL_OES_texture_npot") + || extensionString.contains("GL_NV_texture_npot_2D_mipmap"); + + PVRTC = extensionString.contains("GL_IMG_texture_compression_pvrtc"); + + DXT1 = extensionString.contains("GL_EXT_texture_compression_dxt1"); + DEPTH_TEXTURE = extensionString.contains("GL_OES_depth_texture"); + + RGBA8 = extensionString.contains("GL_ARM_rgba8") || + extensionString.contains("GL_OES_rgb8_rgba8"); + + logger.log(Level.FINE, "Supports ETC1? {0}", ETC1support); + logger.log(Level.FINE, "Supports DEPTH24_STENCIL8? {0}", DEPTH24_STENCIL8); + logger.log(Level.FINE, "Supports NPOT? {0}", NPOT); + logger.log(Level.FINE, "Supports PVRTC? {0}", PVRTC); + logger.log(Level.FINE, "Supports DXT1? {0}", DXT1); + logger.log(Level.FINE, "Supports DEPTH_TEXTURE? {0}", DEPTH_TEXTURE); + logger.log(Level.FINE, "Supports RGBA8? {0}", RGBA8); + } + + /* + private static void buildMipmap(Bitmap bitmap, boolean compress) { + int level = 0; + int height = bitmap.getHeight(); + int width = bitmap.getWidth(); + + logger.log(Level.FINEST, " - Generating mipmaps for bitmap using SOFTWARE"); + + JmeIosGLES.glPixelStorei(JmeIosGLES.GL_UNPACK_ALIGNMENT, 1); + + while (height >= 1 || width >= 1) { + //First of all, generate the texture from our bitmap and set it to the according level + if (compress) { + logger.log(Level.FINEST, " - Uploading LOD level {0} ({1}x{2}) with compression.", new Object[]{level, width, height}); + uploadBitmapAsCompressed(JmeIosGLES.GL_TEXTURE_2D, level, bitmap, false, 0, 0); + } else { + logger.log(Level.FINEST, " - Uploading LOD level {0} ({1}x{2}) directly.", new Object[]{level, width, height}); + GLUtils.texImage2D(JmeIosGLES.GL_TEXTURE_2D, level, bitmap, 0); + } + + if (height == 1 || width == 1) { + break; + } + + //Increase the mipmap level + height /= 2; + width /= 2; + Bitmap bitmap2 = Bitmap.createScaledBitmap(bitmap, width, height, true); + + // Recycle any bitmaps created as a result of scaling the bitmap. + // Do not recycle the original image (mipmap level 0) + if (level != 0) { + bitmap.recycle(); + } + + bitmap = bitmap2; + + level++; + } + } + + private static void uploadBitmapAsCompressed(int target, int level, Bitmap bitmap, boolean subTexture, int x, int y) { + if (bitmap.hasAlpha()) { + logger.log(Level.FINEST, " - Uploading bitmap directly. Cannot compress as alpha present."); + if (subTexture) { + GLUtils.texSubImage2D(target, level, x, y, bitmap); + JmeIosGLES.checkGLError(); + } else { + GLUtils.texImage2D(target, level, bitmap, 0); + JmeIosGLES.checkGLError(); + } + } else { + // Convert to RGB565 + int bytesPerPixel = 2; + Bitmap rgb565 = bitmap.copy(Bitmap.Config.RGB_565, true); + + // Put texture data into ByteBuffer + ByteBuffer inputImage = BufferUtils.createByteBuffer(bitmap.getRowBytes() * bitmap.getHeight()); + rgb565.copyPixelsToBuffer(inputImage); + inputImage.position(0); + + // Delete the copied RGB565 image + rgb565.recycle(); + + // Encode the image into the output bytebuffer + int encodedImageSize = ETC1.getEncodedDataSize(bitmap.getWidth(), bitmap.getHeight()); + ByteBuffer compressedImage = BufferUtils.createByteBuffer(encodedImageSize); + ETC1.encodeImage(inputImage, bitmap.getWidth(), + bitmap.getHeight(), + bytesPerPixel, + bytesPerPixel * bitmap.getWidth(), + compressedImage); + + // Delete the input image buffer + BufferUtils.destroyDirectBuffer(inputImage); + + // Create an ETC1Texture from the compressed image data + ETC1Texture etc1tex = new ETC1Texture(bitmap.getWidth(), bitmap.getHeight(), compressedImage); + + // Upload the ETC1Texture + if (bytesPerPixel == 2) { + int oldSize = (bitmap.getRowBytes() * bitmap.getHeight()); + int newSize = compressedImage.capacity(); + logger.log(Level.FINEST, " - Uploading compressed image to GL, oldSize = {0}, newSize = {1}, ratio = {2}", new Object[]{oldSize, newSize, (float) oldSize / newSize}); + if (subTexture) { + JmeIosGLES.glCompressedTexSubImage2D(target, + level, + x, y, + bitmap.getWidth(), + bitmap.getHeight(), + ETC1.ETC1_RGB8_OES, + etc1tex.getData().capacity(), + etc1tex.getData()); + + JmeIosGLES.checkGLError(); + } else { + JmeIosGLES.glCompressedTexImage2D(target, + level, + ETC1.ETC1_RGB8_OES, + bitmap.getWidth(), + bitmap.getHeight(), + 0, + etc1tex.getData().capacity(), + etc1tex.getData()); + + JmeIosGLES.checkGLError(); + } + +// ETC1Util.loadTexture(target, level, 0, JmeIosGLES.GL_RGB, +// JmeIosGLES.GL_UNSIGNED_SHORT_5_6_5, etc1Texture); +// } else if (bytesPerPixel == 3) { +// ETC1Util.loadTexture(target, level, 0, JmeIosGLES.GL_RGB, +// JmeIosGLES.GL_UNSIGNED_BYTE, etc1Texture); + } + + BufferUtils.destroyDirectBuffer(compressedImage); + } + } + + /** + * uploadTextureBitmap uploads a native android bitmap + */ + /* + public static void uploadTextureBitmap(final int target, Bitmap bitmap, boolean needMips) { + uploadTextureBitmap(target, bitmap, needMips, false, 0, 0); + } + + /** + * uploadTextureBitmap uploads a native android bitmap + */ + /* + public static void uploadTextureBitmap(final int target, Bitmap bitmap, boolean needMips, boolean subTexture, int x, int y) { + boolean recycleBitmap = false; + //TODO, maybe this should raise an exception when NPOT is not supported + + boolean willCompress = ENABLE_COMPRESSION && ETC1support && !bitmap.hasAlpha(); + if (needMips && willCompress) { + // Image is compressed and mipmaps are desired, generate them + // using software. + buildMipmap(bitmap, willCompress); + } else { + if (willCompress) { + // Image is compressed but mipmaps are not desired, upload directly. + logger.log(Level.FINEST, " - Uploading compressed bitmap. Mipmaps are not generated."); + uploadBitmapAsCompressed(target, 0, bitmap, subTexture, x, y); + + } else { + // Image is not compressed, mipmaps may or may not be desired. + logger.log(Level.FINEST, " - Uploading bitmap directly.{0}", + (needMips + ? " Mipmaps will be generated in HARDWARE" + : " Mipmaps are not generated.")); + if (subTexture) { + System.err.println("x : " + x + " y :" + y + " , " + bitmap.getWidth() + "/" + bitmap.getHeight()); + GLUtils.texSubImage2D(target, 0, x, y, bitmap); + JmeIosGLES.checkGLError(); + } else { + GLUtils.texImage2D(target, 0, bitmap, 0); + JmeIosGLES.checkGLError(); + } + + if (needMips) { + // No pregenerated mips available, + // generate from base level if required + JmeIosGLES.glGenerateMipmap(target); + JmeIosGLES.checkGLError(); + } + } + } + + if (recycleBitmap) { + bitmap.recycle(); + } + } + */ + + public static void uploadTextureAny(Image img, int target, int index, boolean needMips) { + /* + if (img.getEfficentData() instanceof AndroidImageInfo) { + logger.log(Level.FINEST, " === Uploading image {0}. Using BITMAP PATH === ", img); + // If image was loaded from asset manager, use fast path + AndroidImageInfo imageInfo = (AndroidImageInfo) img.getEfficentData(); + uploadTextureBitmap(target, imageInfo.getBitmap(), needMips); + } else { + */ + logger.log(Level.FINEST, " === Uploading image {0}. Using BUFFER PATH === ", img); + boolean wantGeneratedMips = needMips && !img.hasMipmaps(); + if (wantGeneratedMips && img.getFormat().isCompressed()) { + logger.log(Level.WARNING, "Generating mipmaps is only" + + " supported for Bitmap based or non-compressed images!"); + } + + // Upload using slower path + logger.log(Level.FINEST, " - Uploading bitmap directly.{0}", + (wantGeneratedMips + ? " Mipmaps will be generated in HARDWARE" + : " Mipmaps are not generated.")); + + uploadTexture(img, target, index); + + // Image was uploaded using slower path, since it is not compressed, + // then compress it + if (wantGeneratedMips) { + // No pregenerated mips available, + // generate from base level if required + JmeIosGLES.glGenerateMipmap(target); + JmeIosGLES.checkGLError(); + } + //} + } + + private static void unsupportedFormat(Format fmt) { + throw new UnsupportedOperationException("The image format '" + fmt + "' is unsupported by the video hardware."); + } + + public static IosGLImageFormat getImageFormat(Format fmt) throws UnsupportedOperationException { + IosGLImageFormat imageFormat = new IosGLImageFormat(); + switch (fmt) { + case RGBA16: + case RGB16: + case RGB10: + case Luminance16: + case Luminance16Alpha16: + case Alpha16: + case Depth32: + case Depth32F: + throw new UnsupportedOperationException("The image format '" + + fmt + "' is not supported by OpenGL ES 2.0 specification."); + case Alpha8: + imageFormat.format = JmeIosGLES.GL_ALPHA; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + if (RGBA8) { + imageFormat.renderBufferStorageFormat = GL_RGBA8; + } else { + // Highest precision alpha supported by vanilla OGLES2 + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGBA4; + } + break; + case Luminance8: + imageFormat.format = JmeIosGLES.GL_LUMINANCE; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + if (RGBA8) { + imageFormat.renderBufferStorageFormat = GL_RGBA8; + } else { + // Highest precision luminance supported by vanilla OGLES2 + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGB565; + } + break; + case Luminance8Alpha8: + imageFormat.format = JmeIosGLES.GL_LUMINANCE_ALPHA; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + if (RGBA8) { + imageFormat.renderBufferStorageFormat = GL_RGBA8; + } else { + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGBA4; + } + break; + case RGB565: + imageFormat.format = JmeIosGLES.GL_RGB; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_SHORT_5_6_5; + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGB565; + break; + case ARGB4444: + imageFormat.format = JmeIosGLES.GL_RGBA4; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_SHORT_4_4_4_4; + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGBA4; + break; + case RGB5A1: + imageFormat.format = JmeIosGLES.GL_RGBA; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_SHORT_5_5_5_1; + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGB5_A1; + break; + case RGB8: + imageFormat.format = JmeIosGLES.GL_RGB; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + if (RGBA8) { + imageFormat.renderBufferStorageFormat = GL_RGBA8; + } else { + // Fallback: Use RGB565 if RGBA8 is not available. + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGB565; + } + break; + case BGR8: + imageFormat.format = JmeIosGLES.GL_RGB; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + if (RGBA8) { + imageFormat.renderBufferStorageFormat = GL_RGBA8; + } else { + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGB565; + } + break; + case RGBA8: + imageFormat.format = JmeIosGLES.GL_RGBA; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + if (RGBA8) { + imageFormat.renderBufferStorageFormat = GL_RGBA8; + } else { + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_RGBA4; + } + break; + case Depth: + case Depth16: + if (!DEPTH_TEXTURE) { + unsupportedFormat(fmt); + } + imageFormat.format = JmeIosGLES.GL_DEPTH_COMPONENT; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_SHORT; + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_DEPTH_COMPONENT16; + break; + case Depth24: + case Depth24Stencil8: + if (!DEPTH_TEXTURE) { + unsupportedFormat(fmt); + } + if (DEPTH24_STENCIL8) { + // NEW: True Depth24 + Stencil8 format. + imageFormat.format = GL_DEPTH_STENCIL_OES; + imageFormat.dataType = GL_UNSIGNED_INT_24_8_OES; + imageFormat.renderBufferStorageFormat = GL_DEPTH24_STENCIL8_OES; + } else { + // Vanilla OGLES2, only Depth16 available. + imageFormat.format = JmeIosGLES.GL_DEPTH_COMPONENT; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_SHORT; + imageFormat.renderBufferStorageFormat = JmeIosGLES.GL_DEPTH_COMPONENT16; + } + break; + case DXT1: + if (!DXT1) { + unsupportedFormat(fmt); + } + imageFormat.format = GL_DXT1; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + imageFormat.compress = true; + break; + case DXT1A: + if (!DXT1) { + unsupportedFormat(fmt); + } + imageFormat.format = GL_DXT1A; + imageFormat.dataType = JmeIosGLES.GL_UNSIGNED_BYTE; + imageFormat.compress = true; + break; + default: + throw new UnsupportedOperationException("Unrecognized format: " + fmt); + } + return imageFormat; + } + + public static class IosGLImageFormat { + + boolean compress = false; + int format = -1; + int renderBufferStorageFormat = -1; + int dataType = -1; + } + + private static void uploadTexture(Image img, + int target, + int index) { + + /* + if (img.getEfficentData() instanceof AndroidImageInfo) { + throw new RendererException("This image uses efficient data. " + + "Use uploadTextureBitmap instead."); + } + */ + + // Otherwise upload image directly. + // Prefer to only use power of 2 textures here to avoid errors. + Image.Format fmt = img.getFormat(); + ByteBuffer data; + if (index >= 0 || img.getData() != null && img.getData().size() > 0) { + data = img.getData(index); + } else { + data = null; + } + + int width = img.getWidth(); + int height = img.getHeight(); + + if (!NPOT) { + // Check if texture is POT + if (!FastMath.isPowerOfTwo(width) || !FastMath.isPowerOfTwo(height)) { + throw new RendererException("Non-power-of-2 textures " + + "are not supported by the video hardware " + + "and no scaling path available for image: " + img); + } + } + IosGLImageFormat imageFormat = getImageFormat(fmt); + + if (data != null) { + JmeIosGLES.glPixelStorei(JmeIosGLES.GL_UNPACK_ALIGNMENT, 1); + JmeIosGLES.checkGLError(); + } + + int[] mipSizes = img.getMipMapSizes(); + int pos = 0; + if (mipSizes == null) { + if (data != null) { + mipSizes = new int[]{data.capacity()}; + } else { + mipSizes = new int[]{width * height * fmt.getBitsPerPixel() / 8}; + } + } + + for (int i = 0; i < mipSizes.length; i++) { + int mipWidth = Math.max(1, width >> i); + int mipHeight = Math.max(1, height >> i); + + if (data != null) { + data.position(pos); + data.limit(pos + mipSizes[i]); + } + + if (imageFormat.compress && data != null) { + JmeIosGLES.glCompressedTexImage2D(target, + i, + imageFormat.format, + mipWidth, + mipHeight, + 0, + data.remaining(), + data); + } else { + JmeIosGLES.glTexImage2D(target, + i, + imageFormat.format, + mipWidth, + mipHeight, + 0, + imageFormat.format, + imageFormat.dataType, + data); + } + JmeIosGLES.checkGLError(); + + pos += mipSizes[i]; + } + } + + /** + * Update the texture currently bound to target at with data from the given + * Image at position x and y. The parameter index is used as the zoffset in + * case a 3d texture or texture 2d array is being updated. + * + * @param image Image with the source data (this data will be put into the + * texture) + * @param target the target texture + * @param index the mipmap level to update + * @param x the x position where to put the image in the texture + * @param y the y position where to put the image in the texture + */ + public static void uploadSubTexture( + Image img, + int target, + int index, + int x, + int y) { + //TODO: + /* + if (img.getEfficentData() instanceof AndroidImageInfo) { + AndroidImageInfo imageInfo = (AndroidImageInfo) img.getEfficentData(); + uploadTextureBitmap(target, imageInfo.getBitmap(), true, true, x, y); + return; + } + */ + + // Otherwise upload image directly. + // Prefer to only use power of 2 textures here to avoid errors. + Image.Format fmt = img.getFormat(); + ByteBuffer data; + if (index >= 0 || img.getData() != null && img.getData().size() > 0) { + data = img.getData(index); + } else { + data = null; + } + + int width = img.getWidth(); + int height = img.getHeight(); + + if (!NPOT) { + // Check if texture is POT + if (!FastMath.isPowerOfTwo(width) || !FastMath.isPowerOfTwo(height)) { + throw new RendererException("Non-power-of-2 textures " + + "are not supported by the video hardware " + + "and no scaling path available for image: " + img); + } + } + IosGLImageFormat imageFormat = getImageFormat(fmt); + + if (data != null) { + JmeIosGLES.glPixelStorei(JmeIosGLES.GL_UNPACK_ALIGNMENT, 1); + JmeIosGLES.checkGLError(); + } + + int[] mipSizes = img.getMipMapSizes(); + int pos = 0; + if (mipSizes == null) { + if (data != null) { + mipSizes = new int[]{data.capacity()}; + } else { + mipSizes = new int[]{width * height * fmt.getBitsPerPixel() / 8}; + } + } + + for (int i = 0; i < mipSizes.length; i++) { + int mipWidth = Math.max(1, width >> i); + int mipHeight = Math.max(1, height >> i); + + if (data != null) { + data.position(pos); + data.limit(pos + mipSizes[i]); + } + + if (imageFormat.compress && data != null) { + JmeIosGLES.glCompressedTexSubImage2D(target, i, x, y, mipWidth, mipHeight, imageFormat.format, data.remaining(), data); + JmeIosGLES.checkGLError(); + } else { + JmeIosGLES.glTexSubImage2D(target, i, x, y, mipWidth, mipHeight, imageFormat.format, imageFormat.dataType, data); + JmeIosGLES.checkGLError(); + } + + pos += mipSizes[i]; + } + } +} diff --git a/engine/src/ios/com/jme3/system/ios/IGLESContext.java b/engine/src/ios/com/jme3/system/ios/IGLESContext.java new file mode 100644 index 000000000..d96962244 --- /dev/null +++ b/engine/src/ios/com/jme3/system/ios/IGLESContext.java @@ -0,0 +1,201 @@ +/* + * 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.input.*; +import com.jme3.input.controls.SoftTextDialogInputListener; +import com.jme3.input.dummy.DummyKeyInput; +import com.jme3.input.dummy.DummyMouseInput; +import com.jme3.renderer.ios.IGLESShaderRenderer; +import com.jme3.system.*; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class IGLESContext implements JmeContext { + + private static final Logger logger = Logger.getLogger(IGLESContext.class.getName()); + protected final AtomicBoolean created = new AtomicBoolean(false); + protected final AtomicBoolean renderable = new AtomicBoolean(false); + protected final AtomicBoolean needClose = new AtomicBoolean(false); + protected AppSettings settings = new AppSettings(true); + protected boolean autoFlush = true; + + /* + * >= OpenGL ES 2.0 (iOS) + */ + protected IGLESShaderRenderer renderer; + protected Timer timer; + protected SystemListener listener; + protected int minFrameDuration = 0; // No FPS cap + + public IGLESContext() { + logger.log(Level.FINE, "IGLESContext constructor"); + } + + @Override + public Type getType() { + return Type.Display; + } + + @Override + public void setSettings(AppSettings settings) { + logger.log(Level.FINE, "IGLESContext setSettings"); + this.settings.copyFrom(settings); + /* + if (androidInput != null) { + androidInput.loadSettings(settings); + } + */ + + } + + @Override + public void setSystemListener(SystemListener listener) { + logger.log(Level.FINE, "IGLESContext setSystemListener"); + this.listener = listener; + } + + @Override + public AppSettings getSettings() { + return settings; + } + + @Override + public com.jme3.renderer.Renderer getRenderer() { + logger.log(Level.FINE, "IGLESContext getRenderer"); + return renderer; + } + + @Override + public MouseInput getMouseInput() { + return new DummyMouseInput(); + } + + @Override + public KeyInput getKeyInput() { + return new DummyKeyInput(); + } + + @Override + public JoyInput getJoyInput() { + /* + if (androidSensorJoyInput == null) { + androidSensorJoyInput = new AndroidSensorJoyInput(); + } + return androidSensorJoyInput; + */ + return null;// new DummySensorJoyInput(); + } + + @Override + public TouchInput getTouchInput() { + //return androidInput; + return null;// new DummyTouchInput(); + } + + @Override + public Timer getTimer() { + return timer; + } + + @Override + public void setTitle(String title) { + } + + @Override + public boolean isCreated() { + logger.log(Level.FINE, "IGLESContext isCreated"); + return created.get(); + } + + @Override + public void setAutoFlushFrames(boolean enabled) { + this.autoFlush = enabled; + } + + @Override + public boolean isRenderable() { + logger.log(Level.FINE, "IGLESContext isRenderable"); + return true;// renderable.get(); + } + + @Override + public void create(boolean waitFor) { + logger.log(Level.FINE, "IGLESContext create"); + renderer = new IGLESShaderRenderer(); + timer = new NanoTimer(); + +//synchronized (createdLock){ + created.set(true); + //createdLock.notifyAll(); + //} + + listener.initialize(); + + if (waitFor) { + //waitFor(true); + } + logger.log(Level.FINE, "IGLESContext created"); + } + + public void create() { + create(false); + } + + @Override + public void restart() { + } + + @Override + public void destroy(boolean waitFor) { + logger.log(Level.FINE, "IGLESContext destroy"); + listener.destroy(); + needClose.set(true); + if (waitFor) { + //waitFor(false); + } + } + + public void destroy() { + destroy(true); + } + + protected void waitFor(boolean createdVal) { + while (renderable.get() != createdVal) { + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + } + } + } +} \ No newline at end of file diff --git a/engine/src/ios/com/jme3/system/ios/IosAssetManager.java b/engine/src/ios/com/jme3/system/ios/IosAssetManager.java new file mode 100644 index 000000000..edddf4f57 --- /dev/null +++ b/engine/src/ios/com/jme3/system/ios/IosAssetManager.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2009-2012 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.system.ios; + +import com.jme3.asset.AssetLoader; +import com.jme3.asset.DesktopAssetManager; +import com.jme3.asset.TextureKey; +import com.jme3.asset.plugins.ClasspathLocator; +import com.jme3.audio.plugins.WAVLoader; +import com.jme3.texture.Texture; +import java.io.InputStream; +import java.net.URL; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author normenhansen + */ +public class IosAssetManager extends DesktopAssetManager { + + private static final Logger logger = Logger.getLogger(IosAssetManager.class.getName()); + + public IosAssetManager() { + this(null); + } + + @Deprecated + public IosAssetManager(boolean loadDefaults) { + //this(Thread.currentThread().getContextClassLoader().getResource("com/jme3/asset/Android.cfg")); + this(null); + } + + private void registerLoaderSafe(String loaderClass, String ... extensions) { + try { + Class loader = (Class) Class.forName(loaderClass); + registerLoader(loader, extensions); + } catch (Exception e){ + logger.log(Level.WARNING, "Failed to load AssetLoader", e); + } + } + + /** + * AndroidAssetManager constructor + * If URL == null then a default list of locators and loaders for android is set + * @param configFile + */ + public IosAssetManager(URL configFile) { + System.setProperty("org.xml.sax.driver", "org.xmlpull.v1.sax2.Driver"); + + // Set Default iOS config + registerLocator("", ClasspathLocator.class); + + registerLoader(IosImageLoader.class, "jpg", "bmp", "gif", "png", "jpeg"); + //registerLoader(AndroidImageLoader.class, "jpg", "bmp", "gif", "png", "jpeg"); + //registerLoader(AndroidAudioLoader.class, "ogg", "mp3", "wav"); + registerLoader(com.jme3.material.plugins.J3MLoader.class, "j3m"); + registerLoader(com.jme3.material.plugins.J3MLoader.class, "j3md"); + registerLoader(com.jme3.shader.plugins.GLSLLoader.class, "vert", "frag", "glsl", "glsllib"); + registerLoader(com.jme3.export.binary.BinaryImporter.class, "j3o"); + registerLoader(com.jme3.font.plugins.BitmapFontLoader.class, "fnt"); + registerLoader(WAVLoader.class, "wav"); + + // Less common loaders (especially on iOS) + registerLoaderSafe("com.jme3.audio.plugins.OGGLoader", "ogg"); + registerLoaderSafe("com.jme3.texture.plugins.DDSLoader", "dds"); + registerLoaderSafe("com.jme3.texture.plugins.PFMLoader", "pfm"); + registerLoaderSafe("com.jme3.texture.plugins.HDRLoader", "hdr"); + registerLoaderSafe("com.jme3.texture.plugins.TGALoader", "tga"); + registerLoaderSafe("com.jme3.scene.plugins.OBJLoader", "obj"); + registerLoaderSafe("com.jme3.scene.plugins.MTLLoader", "mtl"); + registerLoaderSafe("com.jme3.scene.plugins.ogre.MeshLoader", "mesh.xml"); + registerLoaderSafe("com.jme3.scene.plugins.ogre.SkeletonLoader", "skeleton.xml"); + registerLoaderSafe("com.jme3.scene.plugins.ogre.MaterialLoader", "material"); + registerLoaderSafe("com.jme3.scene.plugins.ogre.SceneLoader", "scene"); + + + logger.fine("IosAssetManager created."); + } + + /** + * Loads a texture. + * + * @return the texture + */ + @Override + public Texture loadTexture(TextureKey key) { + Texture tex = (Texture) loadAsset(key); + + // XXX: This will improve performance on some really + // low end GPUs (e.g. ones with OpenGL ES 1 support only) + // but otherwise won't help on the higher ones. + // Strongly consider removing this. + tex.setMagFilter(Texture.MagFilter.Nearest); + tex.setAnisotropicFilter(0); + if (tex.getMinFilter().usesMipMapLevels()) { + tex.setMinFilter(Texture.MinFilter.NearestNearestMipMap); + } else { + tex.setMinFilter(Texture.MinFilter.NearestNoMipMaps); + } + return tex; + } +} diff --git a/engine/src/ios/com/jme3/system/ios/IosHarness.java b/engine/src/ios/com/jme3/system/ios/IosHarness.java new file mode 100644 index 000000000..f3b10196e --- /dev/null +++ b/engine/src/ios/com/jme3/system/ios/IosHarness.java @@ -0,0 +1,61 @@ +/* + * 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.app.Application; +import com.jme3.system.JmeSystem; + +/** + * @author normenhansen + */ +public abstract class IosHarness extends ObjcNativeObject { + + protected Application app; + + public IosHarness(long appDelegate) { + super(appDelegate); + JmeSystem.setSystemDelegate(new JmeIosSystem()); + } + + public abstract void appPaused(); + + public abstract void appReactivated(); + + public abstract void appClosed(); + + public abstract void appUpdate(); + + public abstract void appDraw(); + + public abstract void appReshape(int width, int height); + +} \ No newline at end of file diff --git a/engine/src/ios/com/jme3/system/ios/IosImageLoader.java b/engine/src/ios/com/jme3/system/ios/IosImageLoader.java new file mode 100644 index 000000000..4ec649086 --- /dev/null +++ b/engine/src/ios/com/jme3/system/ios/IosImageLoader.java @@ -0,0 +1,68 @@ +/* + * 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.AssetInfo; +import com.jme3.asset.AssetLoader; +import com.jme3.texture.Image; +import com.jme3.texture.Image.Format; +import java.io.IOException; +import java.io.InputStream; + +/** + * + * @author normenhansen + */ +public class IosImageLoader implements AssetLoader { + + public Object load(AssetInfo info) throws IOException { + InputStream in = info.openStream(); + Image img = null; + try { + img = loadImageData(Image.Format.RGBA8, in); + } catch (Exception e) { + e.printStackTrace(); + } finally { + in.close(); + } + return img; + } + + /** + * Loads images via iOS native API + * + * @param format has to be Image.Format.RGBA8 + * @param inputStream the InputStream to load the image data from + * @return the loaded Image + */ + private static native Image loadImageData(Format format, InputStream inputStream); +} diff --git a/engine/src/ios/com/jme3/system/ios/IosLogHandler.java b/engine/src/ios/com/jme3/system/ios/IosLogHandler.java new file mode 100644 index 000000000..8e8f51b35 --- /dev/null +++ b/engine/src/ios/com/jme3/system/ios/IosLogHandler.java @@ -0,0 +1,73 @@ +/* + * 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.util.JmeFormatter; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; + +/** + * + * @author normenhansen + */ +public class IosLogHandler extends Handler { + + JmeFormatter formatter = new JmeFormatter(); + + public IosLogHandler() { + } + + @Override + public void publish(LogRecord record) { + if (record.getLevel().equals(Level.SEVERE)) { + System.err.println(formatter.formatMessage(record)); + } + else if (record.getLevel().equals(Level.WARNING)) { + System.err.println(formatter.formatMessage(record)); + } + else { + System.err.println(formatter.formatMessage(record)); + } + } + + @Override + public void flush() { +// throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void close() throws SecurityException { +// throw new UnsupportedOperationException("Not supported yet."); + } + +} diff --git a/engine/src/ios/com/jme3/system/ios/JmeIosSystem.java b/engine/src/ios/com/jme3/system/ios/JmeIosSystem.java new file mode 100644 index 000000000..12c1b6595 --- /dev/null +++ b/engine/src/ios/com/jme3/system/ios/JmeIosSystem.java @@ -0,0 +1,114 @@ +/* + * 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.AssetManager; +import com.jme3.audio.AudioRenderer; +import com.jme3.audio.android.AndroidOpenALSoftAudioRenderer; +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; + +/** + * + * @author normenhansen + */ +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); + } + + @Override + public AssetManager newAssetManager() { + return new IosAssetManager(); + } + + @Override + public void showErrorDialog(String message) { + showDialog(message); + System.err.println("JME APPLICATION ERROR:" + message); + } + + private native void showDialog(String message); + + @Override + public boolean showSettingsDialog(AppSettings sourceSettings, boolean loadFromRegistry) { + return true; + } + + @Override + public JmeContext newContext(AppSettings settings, JmeContext.Type contextType) { + initialize(settings); + JmeContext ctx = null; + if (settings.getRenderer() == null + || settings.getRenderer().equals("NULL") + || contextType == JmeContext.Type.Headless) { + ctx = new NullContext(); + ctx.setSettings(settings); + } else { + ctx = new IGLESContext(); + ctx.setSettings(settings); + } + return ctx; + } + + @Override + public AudioRenderer newAudioRenderer(AppSettings settings) { + return new AndroidOpenALSoftAudioRenderer(); + } + + @Override + public void initialize(AppSettings settings) { + Logger.getLogger("").addHandler(new IosLogHandler()); +// throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public ImageRaster createImageRaster(Image image, int slice) { + throw new UnsupportedOperationException("Not supported yet."); + } +} \ No newline at end of file diff --git a/engine/src/ios/com/jme3/system/ios/ObjcNativeObject.java b/engine/src/ios/com/jme3/system/ios/ObjcNativeObject.java new file mode 100644 index 000000000..271baec0f --- /dev/null +++ b/engine/src/ios/com/jme3/system/ios/ObjcNativeObject.java @@ -0,0 +1,130 @@ +/* + * 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; + +/** + * Java Object that represents a native iOS class. You can call methods and + * retrieve objects from the native object via this class. + * + * @author normenhansen + */ +public class ObjcNativeObject { + + private final long nativeObject; + + /** + * Creates a new native object representation + * + * @param nativeObject The id of the native object, created via cast of + * object to jlong + */ + public ObjcNativeObject(long nativeObject) { + this.nativeObject = nativeObject; + } + + /** + * Performs the given selector on the native AppDelegate, equivalent to + * calling a method in java. + * + * @param selector The selector (name of the method) to perform. + * @return The object in form of a long id if any is returned. + */ + public ObjcNativeObject performSelector(String selector) { + return new ObjcNativeObject(performSelector(nativeObject, selector)); + } + + /** + * Performs the given selector on the native AppDelegate, equivalent to + * calling a method in java. + * + * @param selector The selector (name of the method) to perform. + * @param object An object that was before returned from native code. + * @return The object in form of a long id if any is returned. + */ + public ObjcNativeObject performSelectorWithObject(String selector, ObjcNativeObject object) { + return new ObjcNativeObject(performSelectorWithObject(nativeObject, selector, object.nativeObject)); + } + + /** + * Performs the given selector on the native AppDelegate, run it on the main + * thread. + * + * @param selector The selector (name of the method) to perform. + */ + public void performSelectorOnMainThread(String selector) { + performSelectorOnMainThread(nativeObject, selector); + } + + /** + * Performs the given selector on the native AppDelegate, run it on the main + * thread. + * + * @param selector The selector (name of the method) to perform. + * @param object An object that was before returned from native code. + */ + public void performSelectorOnMainThreadWithObject(String selector, ObjcNativeObject object) { + performSelectorOnMainThreadWithObject(nativeObject, selector, object.nativeObject); + } + + /** + * Performs the given selector on the native AppDelegate, run it in the + * background. + * + * @param selector The selector (name of the method) to perform. + */ + public void performSelectorInBackground(String selector) { + performSelectorInBackground(nativeObject, selector); + } + + /** + * Performs the given selector on the native AppDelegate, run it in the + * background + * + * @param selector The selector (name of the method) to perform. + * @param object An object that was before returned from native code. + */ + public void performSelectorInBackgroundWithObject(String selector, ObjcNativeObject object) { + performSelectorInBackgroundWithObject(nativeObject, selector, object.nativeObject); + } + + private static native long performSelector(long nativeObject, String selector); + + private static native long performSelectorWithObject(long nativeObject, String selector, long object); + + private static native void performSelectorOnMainThread(long nativeObject, String selector); + + private static native void performSelectorOnMainThreadWithObject(long nativeObject, String selector, long object); + + private static native void performSelectorInBackground(long nativeObject, String selector); + + private static native void performSelectorInBackgroundWithObject(long nativeObject, String selector, long object); +} diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/PhysicsSpace.java b/engine/src/jbullet/com/jme3/bullet/PhysicsSpace.java similarity index 99% rename from jme3-jbullet/src/main/java/com/jme3/bullet/PhysicsSpace.java rename to engine/src/jbullet/com/jme3/bullet/PhysicsSpace.java index e96002669..484f52133 100644 --- a/jme3-jbullet/src/main/java/com/jme3/bullet/PhysicsSpace.java +++ b/engine/src/jbullet/com/jme3/bullet/PhysicsSpace.java @@ -242,6 +242,7 @@ public class PhysicsSpace { public void internalTick(DynamicsWorld dw, float f) { //execute task list AppTask task = pQueue.poll(); + task = pQueue.poll(); while (task != null) { while (task.isCancelled()) { task = pQueue.poll(); diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEvent.java b/engine/src/jbullet/com/jme3/bullet/collision/PhysicsCollisionEvent.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEvent.java rename to engine/src/jbullet/com/jme3/bullet/collision/PhysicsCollisionEvent.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java b/engine/src/jbullet/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java rename to engine/src/jbullet/com/jme3/bullet/collision/PhysicsCollisionEventFactory.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionObject.java b/engine/src/jbullet/com/jme3/bullet/collision/PhysicsCollisionObject.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsCollisionObject.java rename to engine/src/jbullet/com/jme3/bullet/collision/PhysicsCollisionObject.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsRayTestResult.java b/engine/src/jbullet/com/jme3/bullet/collision/PhysicsRayTestResult.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsRayTestResult.java rename to engine/src/jbullet/com/jme3/bullet/collision/PhysicsRayTestResult.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsSweepTestResult.java b/engine/src/jbullet/com/jme3/bullet/collision/PhysicsSweepTestResult.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/PhysicsSweepTestResult.java rename to engine/src/jbullet/com/jme3/bullet/collision/PhysicsSweepTestResult.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/BoxCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/BoxCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/BoxCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/BoxCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/CapsuleCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/CollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/CollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/CompoundCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/ConeCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/ConeCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/ConeCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/ConeCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/CylinderCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/GImpactCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/HeightfieldCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/HullCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/HullCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/HullCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/HullCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/MeshCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/MeshCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/MeshCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/MeshCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/PlaneCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/SimplexCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/SphereCollisionShape.java b/engine/src/jbullet/com/jme3/bullet/collision/shapes/SphereCollisionShape.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/collision/shapes/SphereCollisionShape.java rename to engine/src/jbullet/com/jme3/bullet/collision/shapes/SphereCollisionShape.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/ConeJoint.java b/engine/src/jbullet/com/jme3/bullet/joints/ConeJoint.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/ConeJoint.java rename to engine/src/jbullet/com/jme3/bullet/joints/ConeJoint.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/HingeJoint.java b/engine/src/jbullet/com/jme3/bullet/joints/HingeJoint.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/HingeJoint.java rename to engine/src/jbullet/com/jme3/bullet/joints/HingeJoint.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/PhysicsJoint.java b/engine/src/jbullet/com/jme3/bullet/joints/PhysicsJoint.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/PhysicsJoint.java rename to engine/src/jbullet/com/jme3/bullet/joints/PhysicsJoint.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/Point2PointJoint.java b/engine/src/jbullet/com/jme3/bullet/joints/Point2PointJoint.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/Point2PointJoint.java rename to engine/src/jbullet/com/jme3/bullet/joints/Point2PointJoint.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/SixDofJoint.java b/engine/src/jbullet/com/jme3/bullet/joints/SixDofJoint.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/SixDofJoint.java rename to engine/src/jbullet/com/jme3/bullet/joints/SixDofJoint.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/SliderJoint.java b/engine/src/jbullet/com/jme3/bullet/joints/SliderJoint.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/SliderJoint.java rename to engine/src/jbullet/com/jme3/bullet/joints/SliderJoint.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/motors/RotationalLimitMotor.java b/engine/src/jbullet/com/jme3/bullet/joints/motors/RotationalLimitMotor.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/motors/RotationalLimitMotor.java rename to engine/src/jbullet/com/jme3/bullet/joints/motors/RotationalLimitMotor.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java b/engine/src/jbullet/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java rename to engine/src/jbullet/com/jme3/bullet/joints/motors/TranslationalLimitMotor.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsCharacter.java b/engine/src/jbullet/com/jme3/bullet/objects/PhysicsCharacter.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsCharacter.java rename to engine/src/jbullet/com/jme3/bullet/objects/PhysicsCharacter.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsGhostObject.java b/engine/src/jbullet/com/jme3/bullet/objects/PhysicsGhostObject.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsGhostObject.java rename to engine/src/jbullet/com/jme3/bullet/objects/PhysicsGhostObject.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsRigidBody.java b/engine/src/jbullet/com/jme3/bullet/objects/PhysicsRigidBody.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsRigidBody.java rename to engine/src/jbullet/com/jme3/bullet/objects/PhysicsRigidBody.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsVehicle.java b/engine/src/jbullet/com/jme3/bullet/objects/PhysicsVehicle.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/objects/PhysicsVehicle.java rename to engine/src/jbullet/com/jme3/bullet/objects/PhysicsVehicle.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/objects/VehicleWheel.java b/engine/src/jbullet/com/jme3/bullet/objects/VehicleWheel.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/objects/VehicleWheel.java rename to engine/src/jbullet/com/jme3/bullet/objects/VehicleWheel.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/objects/infos/RigidBodyMotionState.java b/engine/src/jbullet/com/jme3/bullet/objects/infos/RigidBodyMotionState.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/objects/infos/RigidBodyMotionState.java rename to engine/src/jbullet/com/jme3/bullet/objects/infos/RigidBodyMotionState.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/util/Converter.java b/engine/src/jbullet/com/jme3/bullet/util/Converter.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/util/Converter.java rename to engine/src/jbullet/com/jme3/bullet/util/Converter.java diff --git a/jme3-jbullet/src/main/java/com/jme3/bullet/util/DebugShapeFactory.java b/engine/src/jbullet/com/jme3/bullet/util/DebugShapeFactory.java similarity index 100% rename from jme3-jbullet/src/main/java/com/jme3/bullet/util/DebugShapeFactory.java rename to engine/src/jbullet/com/jme3/bullet/util/DebugShapeFactory.java diff --git a/engine/src/jheora/com/jme3/newvideo/InputStreamSrc.java b/engine/src/jheora/com/jme3/newvideo/InputStreamSrc.java new file mode 100644 index 000000000..93a3499de --- /dev/null +++ b/engine/src/jheora/com/jme3/newvideo/InputStreamSrc.java @@ -0,0 +1,205 @@ +/* + * 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.newvideo; + +import com.fluendo.jst.Buffer; +import com.fluendo.jst.Caps; +import com.fluendo.jst.Element; +import com.fluendo.jst.ElementFactory; +import com.fluendo.jst.Event; +import com.fluendo.jst.Message; +import com.fluendo.jst.Pad; +import com.fluendo.utils.Debug; +import java.io.IOException; +import java.io.InputStream; + +public class InputStreamSrc extends Element { + private InputStream input; + private long contentLength; + private long offset = 0; + private long offsetLastMessage = 0; + private long skipBytes = 0; + private String mime; + private Caps outCaps; + private boolean discont = true; + private static final int DEFAULT_READSIZE = 4096; + private int readSize = DEFAULT_READSIZE; + + private Pad srcpad = new Pad(Pad.SRC, "src") { + @Override + protected void taskFunc() { + int ret; + int toRead; + long left; + + // Skip to the target offset if required + if (skipBytes > 0) { + Debug.info("Skipping " + skipBytes + " input bytes"); + try { + offset += input.skip(skipBytes); + } catch (IOException e) { + Debug.error("input.skip error: " + e); + postMessage(Message.newError(this, "File read error")); + return; + } + skipBytes = 0; + } + + // Calculate the read size + if (contentLength != -1) { + left = contentLength - offset; + } else { + left = -1; + } + + if (left != -1 && left < readSize) { + toRead = (int) left; + } else { + toRead = readSize; + } + + // Perform the read + Buffer data = Buffer.create(); + data.ensureSize(toRead); + data.offset = 0; + try { + if (toRead > 0) { + data.length = input.read(data.data, 0, toRead); + } else { + data.length = -1; + } + } catch (Exception e) { + e.printStackTrace(); + data.length = 0; + } + if (data.length <= 0) { + /* EOS */ + + postMessage(Message.newBytePosition(this, offset)); + offsetLastMessage = offset; + + try { + input.close(); + } catch (Exception e) { + e.printStackTrace(); + } + data.free(); + Debug.log(Debug.INFO, this + " reached EOS"); + pushEvent(Event.newEOS()); + postMessage(Message.newStreamStatus(this, false, Pad.UNEXPECTED, "reached EOS")); + pauseTask(); + return; + } + + offset += data.length; + if (offsetLastMessage > offset) { + offsetLastMessage = 0; + } + if (offset - offsetLastMessage > contentLength / 100) { + postMessage(Message.newBytePosition(this, offset)); + offsetLastMessage = offset; + } + + // Negotiate capabilities + if (srcpad.getCaps() == null) { + String typeMime; + + typeMime = ElementFactory.typeFindMime(data.data, data.offset, data.length); + Debug.log(Debug.INFO, "using typefind contentType: " + typeMime); + mime = typeMime; + + outCaps = new Caps(mime); + srcpad.setCaps(outCaps); + } + + data.caps = outCaps; + data.setFlag(com.fluendo.jst.Buffer.FLAG_DISCONT, discont); + discont = false; + + // Push the data to the peer + if ((ret = push(data)) != OK) { + if (isFlowFatal(ret) || ret == Pad.NOT_LINKED) { + postMessage(Message.newError(this, "error: " + getFlowName(ret))); + pushEvent(Event.newEOS()); + } + postMessage(Message.newStreamStatus(this, false, ret, "reason: " + getFlowName(ret))); + pauseTask(); + } + } + + @Override + protected boolean activateFunc(int mode) { + switch (mode) { + case MODE_NONE: + postMessage(Message.newStreamStatus(this, false, Pad.WRONG_STATE, "stopping")); + input = null; + outCaps = null; + mime = null; + return stopTask(); + case MODE_PUSH: + contentLength = -1; + // until we can determine content length from IS? +// if (contentLength != -1) { +// postMessage(Message.newDuration(this, Format.BYTES, contentLength)); +// } + if (input == null) + return false; + + postMessage(Message.newStreamStatus(this, true, Pad.OK, "activating")); + return startTask("JmeVideo-Src-Stream-" + Debug.genId()); + default: + return false; + } + } + }; + + public String getFactoryName() { + return "inputstreamsrc"; + } + + public InputStreamSrc(String name) { + super(name); + addPad(srcpad); + } + + @Override + public synchronized boolean setProperty(String name, java.lang.Object value) { + if (name.equals("inputstream")){ + input = (InputStream) value; + }else if (name.equals("readSize")) { + readSize = Integer.parseInt((String) value); + } else { + return false; + } + return true; + } +} diff --git a/engine/src/jheora/com/jme3/newvideo/JmeVideoPipeline.java b/engine/src/jheora/com/jme3/newvideo/JmeVideoPipeline.java new file mode 100644 index 000000000..7cb76e451 --- /dev/null +++ b/engine/src/jheora/com/jme3/newvideo/JmeVideoPipeline.java @@ -0,0 +1,412 @@ +package com.jme3.newvideo; + +import com.fluendo.jst.Caps; +import com.fluendo.jst.CapsListener; +import com.fluendo.jst.Clock; +import com.fluendo.jst.Element; +import com.fluendo.jst.ElementFactory; +import com.fluendo.jst.Format; +import com.fluendo.jst.Message; +import com.fluendo.jst.Pad; +import com.fluendo.jst.PadListener; +import com.fluendo.jst.Pipeline; +import com.fluendo.jst.Query; +import com.fluendo.utils.Debug; +import com.jme3.app.Application; +import com.jme3.texture.Texture2D; +import java.io.InputStream; + +public class JmeVideoPipeline extends Pipeline implements PadListener, CapsListener { + + private boolean enableAudio; + private boolean enableVideo; + + private int bufferSize = -1; + private int bufferLow = -1; + private int bufferHigh = -1; + + private Element inputstreamsrc; + private Element buffer; + private Element demux; + private Element videodec; + private Element audiodec; + private Element videosink; + private Element audiosink; + private Element yuv2tex; + private Element v_queue, v_queue2, a_queue = null; + private Pad asinkpad, ovsinkpad; + private Pad apad, vpad; + public boolean usingJavaX = false; + + public InputStream inputStream; + private Application app; + + public JmeVideoPipeline(Application app) { + super("pipeline"); + + enableAudio = true; + enableVideo = true; + this.app = app; + } + + private void noSuchElement(String elemName) { + postMessage(Message.newError(this, "no such element: " + elemName)); + } + + public void padAdded(Pad pad) { + Caps caps = pad.getCaps(); + + if (caps == null) { + Debug.log(Debug.INFO, "pad added without caps: " + pad); + return; + } + + Debug.log(Debug.INFO, "pad added " + pad); + String mime = caps.getMime(); + + if (mime.equals("audio/x-vorbis")) { + if (true) + return; + + if (a_queue != null) { + Debug.log(Debug.INFO, "More than one audio stream detected, ignoring all except first one"); + return; + } + + a_queue = ElementFactory.makeByName("queue", "a_queue"); + if (a_queue == null) { + noSuchElement("queue"); + return; + } + + // if we already have a video queue: We want smooth audio playback + // over frame completeness, so make the video queue leaky + if (v_queue != null) { + v_queue.setProperty("leaky", "2"); // 2 == Queue.LEAK_DOWNSTREAM + } + + audiodec = ElementFactory.makeByName("vorbisdec", "audiodec"); + if (audiodec == null) { + noSuchElement("vorbisdec"); + return; + } + + a_queue.setProperty("maxBuffers", "100"); + + add(a_queue); + add(audiodec); + + pad.link(a_queue.getPad("sink")); + a_queue.getPad("src").link(audiodec.getPad("sink")); + if (!audiodec.getPad("src").link(asinkpad)) { + postMessage(Message.newError(this, "audiosink already linked")); + return; + } + + apad = pad; + + audiodec.setState(PAUSE); + a_queue.setState(PAUSE); + } else if (enableVideo && mime.equals("video/x-theora")) { + // Constructs a chain of the form + // oggdemux -> v_queue -> theoradec -> v_queue2 -> videosink + v_queue = ElementFactory.makeByName("queue", "v_queue"); + v_queue2 = ElementFactory.makeByName("queue", "v_queue2"); + yuv2tex = new YUV2Texture(app); + if (v_queue == null) { + noSuchElement("queue"); + return; + } + + videodec = ElementFactory.makeByName("theoradec", "videodec"); + if (videodec == null) { + noSuchElement("theoradec"); + return; + } + add(videodec); + + // if we have audio: We want smooth audio playback + // over frame completeness + if (a_queue != null) { + v_queue.setProperty("leaky", "2"); // 2 == Queue.LEAK_DOWNSTREAM + } + + v_queue.setProperty("maxBuffers", "5"); + v_queue2.setProperty("maxBuffers", "5"); + v_queue2.setProperty("isBuffer", Boolean.FALSE); + + add(v_queue); + add(v_queue2); + add(yuv2tex); + + pad.link(v_queue.getPad("sink")); + v_queue.getPad("src").link(videodec.getPad("sink")); + + // WITH YUV2TEX + videodec.getPad("src").link(yuv2tex.getPad("sink")); + yuv2tex.getPad("src").link(v_queue2.getPad("sink")); + v_queue2.getPad("src").link(videosink.getPad("sink")); + + // WITHOUT YUV2TEX +// videodec.getPad("src").link(v_queue2.getPad("sink")); + + if (!v_queue2.getPad("src").link(ovsinkpad)) { + postMessage(Message.newError(this, "videosink already linked")); + return; + } + + vpad = pad; + + videodec.setState(PAUSE); + v_queue.setState(PAUSE); + v_queue2.setState(PAUSE); + yuv2tex.setState(PAUSE); + } + } + + public void padRemoved(Pad pad) { + pad.unlink(); + if (pad == vpad) { + Debug.log(Debug.INFO, "video pad removed " + pad); + ovsinkpad.unlink(); + vpad = null; + } else if (pad == apad) { + Debug.log(Debug.INFO, "audio pad removed " + pad); + asinkpad.unlink(); + apad = null; + } + } + + @Override + public void noMorePads() { + boolean changed = false; + + Debug.log(Debug.INFO, "all streams detected"); + + if (apad == null && enableAudio) { + Debug.log(Debug.INFO, "file has no audio, remove audiosink"); + audiosink.setState(STOP); + remove(audiosink); + audiosink = null; + changed = true; + if (videosink != null) { +// videosink.setProperty("max-lateness", Long.toString(Long.MAX_VALUE)); + videosink.setProperty("max-lateness", ""+Clock.SECOND); + } + } + if (vpad == null && enableVideo) { + Debug.log(Debug.INFO, "file has no video, remove videosink"); + videosink.setState(STOP); + + remove(videosink); + videosink = null; + changed = true; + } + if (changed) { + scheduleReCalcState(); + } + } + + public Texture2D getTexture(){ + if (videosink != null){ + return (Texture2D) videosink.getProperty("texture"); + } + return null; + } + + public boolean buildOggPipeline() { + demux = ElementFactory.makeByName("oggdemux", "OggFileDemuxer"); + if (demux == null) { + noSuchElement("oggdemux"); + return false; + } + + buffer = ElementFactory.makeByName("queue", "BufferQueue"); + if (buffer == null) { + demux = null; + noSuchElement("queue"); + return false; + } + + buffer.setProperty("isBuffer", Boolean.TRUE); + if (bufferSize != -1) { + buffer.setProperty("maxSize", new Integer(bufferSize * 1024)); + } + if (bufferLow != -1) { + buffer.setProperty("lowPercent", new Integer(bufferLow)); + } + if (bufferHigh != -1) { + buffer.setProperty("highPercent", new Integer(bufferHigh)); + } + + add(demux); + add(buffer); + + // Link input stream source with bufferqueue's sink + inputstreamsrc.getPad("src").link(buffer.getPad("sink")); + + // Link bufferqueue's source with the oggdemuxer's sink + buffer.getPad("src").link(demux.getPad("sink")); + + // Receive pad events from OggDemuxer + demux.addPadListener(this); + + buffer.setState(PAUSE); + demux.setState(PAUSE); + + return true; + } + + public void capsChanged(Caps caps) { + String mime = caps.getMime(); + if (mime.equals("application/ogg")) { + buildOggPipeline(); + } else { + postMessage(Message.newError(this, "Unknown MIME type: " + mime)); + } + } + + private boolean openFile() { + inputstreamsrc = new InputStreamSrc("InputStreamSource"); + inputstreamsrc.setProperty("inputstream", inputStream); + add(inputstreamsrc); + + // Receive caps from InputStream source + inputstreamsrc.getPad("src").addCapsListener(this); + + audiosink = newAudioSink(); + if (audiosink == null) { + enableAudio = false; + } else { + asinkpad = audiosink.getPad("sink"); + add(audiosink); + } + + if (enableVideo) { + videosink = new TextureVideoSink("TextureVideoSink"); + videosink.setProperty("max-lateness", ""+Clock.SECOND); +// Long.toString(enableAudio ? Clock.MSECOND * 20 : Long.MAX_VALUE)); + add(videosink); + + ovsinkpad = videosink.getPad("sink"); + } + if (audiosink == null && videosink == null) { + postMessage(Message.newError(this, "Both audio and video are disabled, can't play anything")); + return false; + } + + return true; + } + + protected Element newAudioSink() { + com.fluendo.plugin.AudioSink s; + try { + s = (com.fluendo.plugin.AudioSink) ElementFactory.makeByName("audiosinkj2", "audiosink"); + Debug.log(Debug.INFO, "using high quality javax.sound backend"); + } catch (Throwable e) { + s = null; + noSuchElement ("audiosink"); + return null; + } + if (!s.test()) { + return null; + } else { + return s; + } + } + + private boolean cleanup() { + Debug.log(Debug.INFO, "cleanup"); + if (inputstreamsrc != null) { + remove(inputstreamsrc); + inputstreamsrc = null; + } + if (audiosink != null) { + remove(audiosink); + audiosink = null; + asinkpad = null; + } + if (videosink != null) { + remove(videosink); + videosink = null; + } + if (buffer != null) { + remove(buffer); + buffer = null; + } + if (demux != null) { + demux.removePadListener(this); + remove(demux); + demux = null; + } + if (v_queue != null) { + remove(v_queue); + v_queue = null; + } + if (v_queue2 != null) { + remove(v_queue2); + v_queue2 = null; + } + if (yuv2tex != null){ + remove(yuv2tex); + yuv2tex = null; + } + if (a_queue != null) { + remove(a_queue); + a_queue = null; + } + if (videodec != null) { + remove(videodec); + videodec = null; + } + if (audiodec != null) { + remove(audiodec); + audiodec = null; + } + + return true; + } + + @Override + protected int changeState(int transition) { + int res; + switch (transition) { + case STOP_PAUSE: + if (!openFile()) { + return FAILURE; + } + break; + default: + break; + } + + res = super.changeState(transition); + + switch (transition) { + case PAUSE_STOP: + cleanup(); + break; + default: + break; + } + + return res; + } + + @Override + protected boolean doSendEvent(com.fluendo.jst.Event event) { + return false; // no seek support + } + + protected long getPosition() { + Query q; + long result = 0; + + q = Query.newPosition(Format.TIME); + if (super.query(q)){ + result = q.parsePositionValue(); + } + return result; + } + +} diff --git a/engine/src/jheora/com/jme3/newvideo/TestNewVideo.java b/engine/src/jheora/com/jme3/newvideo/TestNewVideo.java new file mode 100644 index 000000000..b9edbc9a6 --- /dev/null +++ b/engine/src/jheora/com/jme3/newvideo/TestNewVideo.java @@ -0,0 +1,144 @@ +/* + * 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.newvideo; + +import com.fluendo.jst.BusHandler; +import com.fluendo.jst.Message; +import com.fluendo.jst.Pipeline; +import com.fluendo.utils.Debug; +import com.jme3.app.SimpleApplication; +import com.jme3.system.AppSettings; +import com.jme3.texture.Texture2D; +import com.jme3.ui.Picture; +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +public class TestNewVideo extends SimpleApplication implements BusHandler { + + private Picture picture; + private JmeVideoPipeline p; + private int frame = 0; + + public static void main(String[] args){ + TestNewVideo app = new TestNewVideo(); + AppSettings settings = new AppSettings(true); +// settings.setFrameRate(24); + app.setSettings(settings); + app.start(); + } + + private void createVideo(){ + Debug.level = Debug.INFO; + p = new JmeVideoPipeline(this); + p.getBus().addHandler(this); + try { + p.inputStream = new FileInputStream("E:\\VideoTest.ogv"); + } catch (FileNotFoundException ex) { + ex.printStackTrace(); + } + p.setState(Pipeline.PLAY); + } + + @Override + public void simpleUpdate(float tpf){ +// if (p == null) +// return; + + Texture2D tex = p.getTexture(); + if (tex == null) + return; + + if (picture != null){ + synchronized (tex){ + try { + tex.wait(); + } catch (InterruptedException ex) { + // ignore + } + tex.getImage().setUpdateNeeded(); + renderer.setTexture(0, tex); + ((VideoTexture)tex).free(); + System.out.println("PLAY : " + (frame++)); + } + return; + } + + picture = new Picture("VideoPicture", true); + picture.setPosition(0, 0); + picture.setWidth(settings.getWidth()); + picture.setHeight(settings.getHeight()); + picture.setTexture(assetManager, tex, false); + rootNode.attachChild(picture); + } + + public void simpleInitApp() { + // start video playback + createVideo(); + } + + @Override + public void destroy(){ + if (p != null){ + p.setState(Pipeline.STOP); + p.shutDown(); + } + super.destroy(); + } + + public void handleMessage(Message msg) { + switch (msg.getType()){ + case Message.EOS: + Debug.log(Debug.INFO, "EOS: playback ended"); + /* + enqueue(new Callable(){ + public Void call() throws Exception { + rootNode.detachChild(picture); + p.setState(Element.STOP); + p.shutDown(); + p = null; + return null; + } + }); + + Texture2D tex = p.getTexture(); + synchronized (tex){ + tex.notifyAll(); + } + */ + break; + case Message.STREAM_STATUS: + Debug.info(msg.toString()); + break; + } + } +} diff --git a/engine/src/jheora/com/jme3/newvideo/TextureVideoSink.java b/engine/src/jheora/com/jme3/newvideo/TextureVideoSink.java new file mode 100644 index 000000000..04cbf33e7 --- /dev/null +++ b/engine/src/jheora/com/jme3/newvideo/TextureVideoSink.java @@ -0,0 +1,98 @@ +package com.jme3.newvideo; + +import com.fluendo.jst.Buffer; +import com.fluendo.jst.Caps; +import com.fluendo.jst.Pad; +import com.fluendo.jst.Sink; +import com.fluendo.utils.Debug; +import com.jme3.texture.Image; +import com.jme3.texture.Texture2D; + +public class TextureVideoSink extends Sink { + + private Texture2D outTex; + private int width, height; + + private int frame = 0; + + public TextureVideoSink(String name) { + super(); + setName(name); + } + + @Override + protected boolean setCapsFunc(Caps caps) { + String mime = caps.getMime(); + if (!mime.equals("video/raw")) { + return false; + } + + width = caps.getFieldInt("width", -1); + height = caps.getFieldInt("height", -1); + + if (width == -1 || height == -1) { + return false; + } + +// aspectX = caps.getFieldInt("aspect_x", 1); +// aspectY = caps.getFieldInt("aspect_y", 1); +// +// if (!ignoreAspect) { +// Debug.log(Debug.DEBUG, this + " dimension: " + width + "x" + height + ", aspect: " + aspectX + "/" + aspectY); +// +// if (aspectY > aspectX) { +// height = height * aspectY / aspectX; +// } else { +// width = width * aspectX / aspectY; +// } +// Debug.log(Debug.DEBUG, this + " scaled source: " + width + "x" + height); +// } + + outTex = new Texture2D(); + + return true; + } + + @Override + protected int preroll(Buffer buf) { + return render(buf); + } + + @Override + protected int render(Buffer buf) { + if (buf.duplicate) + return Pad.OK; + + Debug.log(Debug.DEBUG, this.getName() + " starting buffer " + buf); + if (buf.object instanceof Image){ + synchronized (outTex){ + outTex.setImage( (Image) buf.object ); + outTex.notifyAll(); + System.out.println("PUSH : " + (frame++)); + } + } else { + System.out.println(this + ": unknown buffer received " + buf.object); + return Pad.ERROR; + } + + if (outTex == null) { + return Pad.NOT_NEGOTIATED; + } + + Debug.log(Debug.DEBUG, this.getName() + " done with buffer " + buf); + return Pad.OK; + } + + public String getFactoryName() { + return "texturevideosink"; + } + + @Override + public java.lang.Object getProperty(String name) { + if (name.equals("texture")) { + return outTex; + } else { + return super.getProperty(name); + } + } +} diff --git a/engine/src/jheora/com/jme3/newvideo/VideoTexture.java b/engine/src/jheora/com/jme3/newvideo/VideoTexture.java new file mode 100644 index 000000000..4581bfc1b --- /dev/null +++ b/engine/src/jheora/com/jme3/newvideo/VideoTexture.java @@ -0,0 +1,27 @@ +package com.jme3.newvideo; + +import com.jme3.texture.Image; +import com.jme3.texture.Image.Format; +import com.jme3.texture.Texture2D; +import com.jme3.util.BufferUtils; +import java.util.concurrent.BlockingQueue; + +public final class VideoTexture extends Texture2D { + + private BlockingQueue ownerQueue; + + public VideoTexture(int width, int height, Format format, BlockingQueue ownerQueue){ + super(new Image(format, width, height, + BufferUtils.createByteBuffer(width*height*format.getBitsPerPixel()/8))); + this.ownerQueue = ownerQueue; + } + + public void free(){ + try { + ownerQueue.put(this); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } + +} diff --git a/engine/src/jheora/com/jme3/newvideo/YUV2Texture.java b/engine/src/jheora/com/jme3/newvideo/YUV2Texture.java new file mode 100644 index 000000000..4557d973d --- /dev/null +++ b/engine/src/jheora/com/jme3/newvideo/YUV2Texture.java @@ -0,0 +1,109 @@ +package com.jme3.newvideo; + +import com.fluendo.jheora.YUVBuffer; +import com.fluendo.jst.Buffer; +import com.fluendo.jst.Element; +import com.fluendo.jst.Event; +import com.fluendo.jst.Pad; +import com.jme3.app.Application; +import com.jme3.texture.Image.Format; +import java.awt.image.FilteredImageSource; +import java.lang.reflect.Field; +import java.nio.ByteBuffer; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Callable; + +public class YUV2Texture extends Element { + + private YUVConv conv = new YUVConv(); + private int width, height; + private BlockingQueue frameQueue; + private Application app; + + private int frame = 0; + + private YUVBuffer getYUVBuffer(Buffer buf){ + if (buf.object instanceof FilteredImageSource) { + FilteredImageSource imgSrc = (FilteredImageSource) buf.object; + try { + Field srcField = imgSrc.getClass().getDeclaredField("src"); + srcField.setAccessible(true); + return (YUVBuffer) srcField.get(imgSrc); + } catch (Exception e){ + throw new RuntimeException(e); + } + }else if (buf.object instanceof YUVBuffer){ + return (YUVBuffer) buf.object; + }else{ + throw new RuntimeException("Expected buffer"); + } + } + + private VideoTexture decode(YUVBuffer yuv){ + if (frameQueue == null){ + frameQueue = new ArrayBlockingQueue(20); + for (int i = 0; i < 20; i++){ + VideoTexture img = new VideoTexture(yuv.y_width, yuv.y_height, Format.RGBA8, frameQueue); + frameQueue.add(img); + } + } + + try { + final VideoTexture videoTex = frameQueue.take(); + ByteBuffer outBuf = videoTex.getImage().getData(0); + conv.convert(yuv, 0, 0, yuv.y_width, yuv.y_height); + outBuf.clear(); + outBuf.asIntBuffer().put(conv.getRGBData()).clear(); + + app.enqueue( new Callable() { + public Void call() throws Exception { + videoTex.getImage().setUpdateNeeded(); + app.getRenderer().setTexture(0, videoTex); + return null; + } + }); + + return videoTex; + } catch (InterruptedException ex) { + } + + return null; + } + + private Pad srcPad = new Pad(Pad.SRC, "src") { + @Override + protected boolean eventFunc(Event event) { + return sinkPad.pushEvent(event); + } + }; + + private Pad sinkPad = new Pad(Pad.SINK, "sink") { + @Override + protected boolean eventFunc(Event event) { + return srcPad.pushEvent(event); + } + + @Override + protected int chainFunc (Buffer buf) { + YUVBuffer yuv = getYUVBuffer(buf); + buf.object = decode(yuv); + System.out.println("DECODE: " + (frame++)); + return srcPad.push(buf); + + } + }; + + public YUV2Texture(Application app) { + super("YUV2Texture"); + addPad(srcPad); + addPad(sinkPad); + this.app = app; + } + + @Override + public String getFactoryName() { + return "yuv2tex"; + } + +} diff --git a/engine/src/jheora/com/jme3/newvideo/YUVConv.java b/engine/src/jheora/com/jme3/newvideo/YUVConv.java new file mode 100644 index 000000000..637ffd903 --- /dev/null +++ b/engine/src/jheora/com/jme3/newvideo/YUVConv.java @@ -0,0 +1,143 @@ +/* + * 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.newvideo; + +import com.fluendo.jheora.YUVBuffer; + +@Deprecated +public final class YUVConv { + + private int[] pixels; + + private static final int VAL_RANGE = 256; + private static final int SHIFT = 16; + + private static final int CR_FAC = (int) (1.402 * (1 << SHIFT)); + private static final int CB_FAC = (int) (1.772 * (1 << SHIFT)); + private static final int CR_DIFF_FAC = (int) (0.71414 * (1 << SHIFT)); + private static final int CB_DIFF_FAC = (int) (0.34414 * (1 << SHIFT)); + + private static int[] r_tab = new int[VAL_RANGE * 3]; + private static int[] g_tab = new int[VAL_RANGE * 3]; + private static int[] b_tab = new int[VAL_RANGE * 3]; + + static { + setupRgbYuvAccelerators(); + } + + private static final short clamp255(int val) { + val -= 255; + val = -(255 + ((val >> (31)) & val)); + return (short) -((val >> 31) & val); + } + + private static void setupRgbYuvAccelerators() { + for (int i = 0; i < VAL_RANGE * 3; i++) { + r_tab[i] = clamp255(i - VAL_RANGE); + g_tab[i] = clamp255(i - VAL_RANGE) << 8; + b_tab[i] = clamp255(i - VAL_RANGE) << 16; + } + } + + public YUVConv(){ + } + + public int[] getRGBData(){ + return pixels; + } + + public void convert(YUVBuffer yuv, int xOff, int yOff, int width, int height) { + if (pixels == null){ + pixels = new int[width*height]; + } + // Set up starting values for YUV pointers + int YPtr = yuv.y_offset + xOff + yOff * (yuv.y_stride); + int YPtr2 = YPtr + yuv.y_stride; + int UPtr = yuv.u_offset + xOff/2 + (yOff/2)*(yuv.uv_stride); + int VPtr = yuv.v_offset + xOff/2 + (yOff/2)*(yuv.uv_stride); + int RGBPtr = 0; + int RGBPtr2 = width; + int width2 = width / 2; + int height2 = height / 2; + + // Set the line step for the Y and UV planes and YPtr2 + int YStep = yuv.y_stride * 2 - (width2) * 2; + int UVStep = yuv.uv_stride - (width2); + int RGBStep = width; + + for (int i = 0; i < height2; i++) { + for (int j = 0; j < width2; j++) { + // groups of four pixels + int UFactor = yuv.data[UPtr++] - 128; + int VFactor = yuv.data[VPtr++] - 128; + int GFactor = UFactor * CR_DIFF_FAC + VFactor * CB_DIFF_FAC - (VAL_RANGE<>SHIFT] | + b_tab[(YVal + UFactor)>>SHIFT] | + g_tab[(YVal - GFactor)>>SHIFT]; + + YVal = yuv.data[YPtr+1] << SHIFT; + pixels[RGBPtr+1] = r_tab[(YVal + VFactor)>>SHIFT] | + b_tab[(YVal + UFactor)>>SHIFT] | + g_tab[(YVal - GFactor)>>SHIFT]; + + YVal = yuv.data[YPtr2] << SHIFT; + pixels[RGBPtr2] = r_tab[(YVal + VFactor)>>SHIFT] | + b_tab[(YVal + UFactor)>>SHIFT] | + g_tab[(YVal - GFactor)>>SHIFT]; + + YVal = yuv.data[YPtr2+1] << SHIFT; + pixels[RGBPtr2+1] = r_tab[(YVal + VFactor)>>SHIFT] | + b_tab[(YVal + UFactor)>>SHIFT] | + g_tab[(YVal - GFactor)>>SHIFT]; + + YPtr += 2; + YPtr2 += 2; + RGBPtr += 2; + RGBPtr2 += 2; + } + + // Increment the various pointers + YPtr += YStep; + YPtr2 += YStep; + UPtr += UVStep; + VPtr += UVStep; + RGBPtr += RGBStep; + RGBPtr2 += RGBStep; + } + } +} diff --git a/jme3-jogg/src/main/java/com/jme3/audio/plugins/CachedOggStream.java b/engine/src/jogg/com/jme3/audio/plugins/CachedOggStream.java similarity index 100% rename from jme3-jogg/src/main/java/com/jme3/audio/plugins/CachedOggStream.java rename to engine/src/jogg/com/jme3/audio/plugins/CachedOggStream.java diff --git a/jme3-jogg/src/main/java/com/jme3/audio/plugins/OGGLoader.java b/engine/src/jogg/com/jme3/audio/plugins/OGGLoader.java similarity index 100% rename from jme3-jogg/src/main/java/com/jme3/audio/plugins/OGGLoader.java rename to engine/src/jogg/com/jme3/audio/plugins/OGGLoader.java diff --git a/jme3-jogg/src/main/java/com/jme3/audio/plugins/UncachedOggStream.java b/engine/src/jogg/com/jme3/audio/plugins/UncachedOggStream.java similarity index 100% rename from jme3-jogg/src/main/java/com/jme3/audio/plugins/UncachedOggStream.java rename to engine/src/jogg/com/jme3/audio/plugins/UncachedOggStream.java diff --git a/jme3-jogl/src/main/java/com/jme3/audio/joal/JoalAudioRenderer.java b/engine/src/jogl/com/jme3/audio/joal/JoalAudioRenderer.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/audio/joal/JoalAudioRenderer.java rename to engine/src/jogl/com/jme3/audio/joal/JoalAudioRenderer.java diff --git a/jme3-jogl/src/main/java/com/jme3/input/jogl/NewtKeyInput.java b/engine/src/jogl/com/jme3/input/jogl/NewtKeyInput.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/input/jogl/NewtKeyInput.java rename to engine/src/jogl/com/jme3/input/jogl/NewtKeyInput.java diff --git a/jme3-jogl/src/main/java/com/jme3/input/jogl/NewtMouseInput.java b/engine/src/jogl/com/jme3/input/jogl/NewtMouseInput.java similarity index 90% rename from jme3-jogl/src/main/java/com/jme3/input/jogl/NewtMouseInput.java rename to engine/src/jogl/com/jme3/input/jogl/NewtMouseInput.java index 65c749f10..d50017ccc 100644 --- a/jme3-jogl/src/main/java/com/jme3/input/jogl/NewtMouseInput.java +++ b/engine/src/jogl/com/jme3/input/jogl/NewtMouseInput.java @@ -37,11 +37,18 @@ import com.jme3.input.MouseInput; import com.jme3.input.RawInputListener; import com.jme3.input.event.MouseButtonEvent; import com.jme3.input.event.MouseMotionEvent; +import com.jogamp.common.nio.Buffers; +import com.jogamp.newt.Display.PointerIcon; import com.jogamp.newt.event.MouseEvent; import com.jogamp.newt.event.MouseListener; import com.jogamp.newt.opengl.GLWindow; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.logging.Logger; +import javax.media.nativewindow.util.Dimension; +import javax.media.nativewindow.util.DimensionImmutable; +import javax.media.nativewindow.util.PixelFormat; +import javax.media.nativewindow.util.PixelRectangle; import javax.media.nativewindow.util.Point; public class NewtMouseInput implements MouseInput, MouseListener { @@ -175,9 +182,9 @@ public class NewtMouseInput implements MouseInput, MouseListener { // listener.onMouseButtonEvent(evt); } - public void mousePressed(MouseEvent awtEvt) { - MouseButtonEvent evt = new MouseButtonEvent(getJMEButtonIndex(awtEvt), true, awtEvt.getX(), awtEvt.getY()); - evt.setTime(awtEvt.getWhen()); + public void mousePressed(MouseEvent newtEvt) { + MouseButtonEvent evt = new MouseButtonEvent(getJMEButtonIndex(newtEvt), true, newtEvt.getX(), newtEvt.getY()); + evt.setTime(newtEvt.getWhen()); synchronized (eventQueue) { eventQueue.add(evt); } @@ -281,5 +288,11 @@ public class NewtMouseInput implements MouseInput, MouseListener { } public void setNativeCursor(JmeCursor cursor) { + final ByteBuffer pixels = Buffers.copyIntBufferAsByteBuffer(cursor.getImagesData()); + final DimensionImmutable size = new Dimension(cursor.getWidth(), cursor.getHeight()); + final PixelFormat pixFormat = PixelFormat.RGBA8888; + final PixelRectangle.GenericPixelRect rec = new PixelRectangle.GenericPixelRect(pixFormat, size, 0, true, pixels); + final PointerIcon joglCursor = component.getScreen().getDisplay().createPointerIcon(rec, cursor.getXHotSpot(), cursor.getYHotSpot()); + component.setPointerIcon(joglCursor); } } \ No newline at end of file diff --git a/jme3-jogl/src/main/java/com/jme3/renderer/jogl/JoglGL1Renderer.java b/engine/src/jogl/com/jme3/renderer/jogl/JoglGL1Renderer.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/renderer/jogl/JoglGL1Renderer.java rename to engine/src/jogl/com/jme3/renderer/jogl/JoglGL1Renderer.java diff --git a/jme3-jogl/src/main/java/com/jme3/renderer/jogl/JoglRenderer.java b/engine/src/jogl/com/jme3/renderer/jogl/JoglRenderer.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/renderer/jogl/JoglRenderer.java rename to engine/src/jogl/com/jme3/renderer/jogl/JoglRenderer.java diff --git a/jme3-jogl/src/main/java/com/jme3/renderer/jogl/TextureUtil.java b/engine/src/jogl/com/jme3/renderer/jogl/TextureUtil.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/renderer/jogl/TextureUtil.java rename to engine/src/jogl/com/jme3/renderer/jogl/TextureUtil.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglAbstractDisplay.java b/engine/src/jogl/com/jme3/system/jogl/JoglAbstractDisplay.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglAbstractDisplay.java rename to engine/src/jogl/com/jme3/system/jogl/JoglAbstractDisplay.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglCanvas.java b/engine/src/jogl/com/jme3/system/jogl/JoglCanvas.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglCanvas.java rename to engine/src/jogl/com/jme3/system/jogl/JoglCanvas.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglContext.java b/engine/src/jogl/com/jme3/system/jogl/JoglContext.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglContext.java rename to engine/src/jogl/com/jme3/system/jogl/JoglContext.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglDisplay.java b/engine/src/jogl/com/jme3/system/jogl/JoglDisplay.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglDisplay.java rename to engine/src/jogl/com/jme3/system/jogl/JoglDisplay.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglNewtAbstractDisplay.java b/engine/src/jogl/com/jme3/system/jogl/JoglNewtAbstractDisplay.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglNewtAbstractDisplay.java rename to engine/src/jogl/com/jme3/system/jogl/JoglNewtAbstractDisplay.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglNewtCanvas.java b/engine/src/jogl/com/jme3/system/jogl/JoglNewtCanvas.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglNewtCanvas.java rename to engine/src/jogl/com/jme3/system/jogl/JoglNewtCanvas.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglNewtDisplay.java b/engine/src/jogl/com/jme3/system/jogl/JoglNewtDisplay.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglNewtDisplay.java rename to engine/src/jogl/com/jme3/system/jogl/JoglNewtDisplay.java diff --git a/jme3-jogl/src/main/java/com/jme3/system/jogl/JoglOffscreenBuffer.java b/engine/src/jogl/com/jme3/system/jogl/JoglOffscreenBuffer.java similarity index 100% rename from jme3-jogl/src/main/java/com/jme3/system/jogl/JoglOffscreenBuffer.java rename to engine/src/jogl/com/jme3/system/jogl/JoglOffscreenBuffer.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/audio/lwjgl/LwjglAudioRenderer.java b/engine/src/lwjgl/com/jme3/audio/lwjgl/LwjglAudioRenderer.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/audio/lwjgl/LwjglAudioRenderer.java rename to engine/src/lwjgl/com/jme3/audio/lwjgl/LwjglAudioRenderer.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/input/lwjgl/JInputJoyInput.java b/engine/src/lwjgl/com/jme3/input/lwjgl/JInputJoyInput.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/input/lwjgl/JInputJoyInput.java rename to engine/src/lwjgl/com/jme3/input/lwjgl/JInputJoyInput.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/input/lwjgl/LwjglKeyInput.java b/engine/src/lwjgl/com/jme3/input/lwjgl/LwjglKeyInput.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/input/lwjgl/LwjglKeyInput.java rename to engine/src/lwjgl/com/jme3/input/lwjgl/LwjglKeyInput.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/input/lwjgl/LwjglMouseInput.java b/engine/src/lwjgl/com/jme3/input/lwjgl/LwjglMouseInput.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/input/lwjgl/LwjglMouseInput.java rename to engine/src/lwjgl/com/jme3/input/lwjgl/LwjglMouseInput.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java b/engine/src/lwjgl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java rename to engine/src/lwjgl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/LwjglRenderer.java b/engine/src/lwjgl/com/jme3/renderer/lwjgl/LwjglRenderer.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/LwjglRenderer.java rename to engine/src/lwjgl/com/jme3/renderer/lwjgl/LwjglRenderer.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/TextureUtil.java b/engine/src/lwjgl/com/jme3/renderer/lwjgl/TextureUtil.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/renderer/lwjgl/TextureUtil.java rename to engine/src/lwjgl/com/jme3/renderer/lwjgl/TextureUtil.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglAbstractDisplay.java b/engine/src/lwjgl/com/jme3/system/lwjgl/LwjglAbstractDisplay.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglAbstractDisplay.java rename to engine/src/lwjgl/com/jme3/system/lwjgl/LwjglAbstractDisplay.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java b/engine/src/lwjgl/com/jme3/system/lwjgl/LwjglCanvas.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java rename to engine/src/lwjgl/com/jme3/system/lwjgl/LwjglCanvas.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglContext.java b/engine/src/lwjgl/com/jme3/system/lwjgl/LwjglContext.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglContext.java rename to engine/src/lwjgl/com/jme3/system/lwjgl/LwjglContext.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglDisplay.java b/engine/src/lwjgl/com/jme3/system/lwjgl/LwjglDisplay.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglDisplay.java rename to engine/src/lwjgl/com/jme3/system/lwjgl/LwjglDisplay.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglOffscreenBuffer.java b/engine/src/lwjgl/com/jme3/system/lwjgl/LwjglOffscreenBuffer.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglOffscreenBuffer.java rename to engine/src/lwjgl/com/jme3/system/lwjgl/LwjglOffscreenBuffer.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglSmoothingTimer.java b/engine/src/lwjgl/com/jme3/system/lwjgl/LwjglSmoothingTimer.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglSmoothingTimer.java rename to engine/src/lwjgl/com/jme3/system/lwjgl/LwjglSmoothingTimer.java diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglTimer.java b/engine/src/lwjgl/com/jme3/system/lwjgl/LwjglTimer.java similarity index 100% rename from jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglTimer.java rename to engine/src/lwjgl/com/jme3/system/lwjgl/LwjglTimer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/AbstractMessage.java b/engine/src/networking/com/jme3/network/AbstractMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/AbstractMessage.java rename to engine/src/networking/com/jme3/network/AbstractMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/Client.java b/engine/src/networking/com/jme3/network/Client.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/Client.java rename to engine/src/networking/com/jme3/network/Client.java diff --git a/jme3-networking/src/main/java/com/jme3/network/ClientStateListener.java b/engine/src/networking/com/jme3/network/ClientStateListener.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/ClientStateListener.java rename to engine/src/networking/com/jme3/network/ClientStateListener.java diff --git a/jme3-networking/src/main/java/com/jme3/network/ConnectionListener.java b/engine/src/networking/com/jme3/network/ConnectionListener.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/ConnectionListener.java rename to engine/src/networking/com/jme3/network/ConnectionListener.java diff --git a/jme3-networking/src/main/java/com/jme3/network/ErrorListener.java b/engine/src/networking/com/jme3/network/ErrorListener.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/ErrorListener.java rename to engine/src/networking/com/jme3/network/ErrorListener.java diff --git a/jme3-networking/src/main/java/com/jme3/network/Filter.java b/engine/src/networking/com/jme3/network/Filter.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/Filter.java rename to engine/src/networking/com/jme3/network/Filter.java diff --git a/jme3-networking/src/main/java/com/jme3/network/Filters.java b/engine/src/networking/com/jme3/network/Filters.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/Filters.java rename to engine/src/networking/com/jme3/network/Filters.java diff --git a/jme3-networking/src/main/java/com/jme3/network/HostedConnection.java b/engine/src/networking/com/jme3/network/HostedConnection.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/HostedConnection.java rename to engine/src/networking/com/jme3/network/HostedConnection.java diff --git a/jme3-networking/src/main/java/com/jme3/network/Message.java b/engine/src/networking/com/jme3/network/Message.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/Message.java rename to engine/src/networking/com/jme3/network/Message.java diff --git a/jme3-networking/src/main/java/com/jme3/network/MessageConnection.java b/engine/src/networking/com/jme3/network/MessageConnection.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/MessageConnection.java rename to engine/src/networking/com/jme3/network/MessageConnection.java diff --git a/jme3-networking/src/main/java/com/jme3/network/MessageListener.java b/engine/src/networking/com/jme3/network/MessageListener.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/MessageListener.java rename to engine/src/networking/com/jme3/network/MessageListener.java diff --git a/jme3-networking/src/main/java/com/jme3/network/Network.java b/engine/src/networking/com/jme3/network/Network.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/Network.java rename to engine/src/networking/com/jme3/network/Network.java diff --git a/jme3-networking/src/main/java/com/jme3/network/NetworkClient.java b/engine/src/networking/com/jme3/network/NetworkClient.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/NetworkClient.java rename to engine/src/networking/com/jme3/network/NetworkClient.java diff --git a/jme3-networking/src/main/java/com/jme3/network/Server.java b/engine/src/networking/com/jme3/network/Server.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/Server.java rename to engine/src/networking/com/jme3/network/Server.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/ConnectorAdapter.java b/engine/src/networking/com/jme3/network/base/ConnectorAdapter.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/ConnectorAdapter.java rename to engine/src/networking/com/jme3/network/base/ConnectorAdapter.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/ConnectorFactory.java b/engine/src/networking/com/jme3/network/base/ConnectorFactory.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/ConnectorFactory.java rename to engine/src/networking/com/jme3/network/base/ConnectorFactory.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/DefaultClient.java b/engine/src/networking/com/jme3/network/base/DefaultClient.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/DefaultClient.java rename to engine/src/networking/com/jme3/network/base/DefaultClient.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/DefaultServer.java b/engine/src/networking/com/jme3/network/base/DefaultServer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/DefaultServer.java rename to engine/src/networking/com/jme3/network/base/DefaultServer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/KernelAdapter.java b/engine/src/networking/com/jme3/network/base/KernelAdapter.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/KernelAdapter.java rename to engine/src/networking/com/jme3/network/base/KernelAdapter.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/KernelFactory.java b/engine/src/networking/com/jme3/network/base/KernelFactory.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/KernelFactory.java rename to engine/src/networking/com/jme3/network/base/KernelFactory.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/MessageListenerRegistry.java b/engine/src/networking/com/jme3/network/base/MessageListenerRegistry.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/MessageListenerRegistry.java rename to engine/src/networking/com/jme3/network/base/MessageListenerRegistry.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/MessageProtocol.java b/engine/src/networking/com/jme3/network/base/MessageProtocol.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/MessageProtocol.java rename to engine/src/networking/com/jme3/network/base/MessageProtocol.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/NioKernelFactory.java b/engine/src/networking/com/jme3/network/base/NioKernelFactory.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/NioKernelFactory.java rename to engine/src/networking/com/jme3/network/base/NioKernelFactory.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/TcpConnectorFactory.java b/engine/src/networking/com/jme3/network/base/TcpConnectorFactory.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/TcpConnectorFactory.java rename to engine/src/networking/com/jme3/network/base/TcpConnectorFactory.java diff --git a/jme3-networking/src/main/java/com/jme3/network/base/package.html b/engine/src/networking/com/jme3/network/base/package.html similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/base/package.html rename to engine/src/networking/com/jme3/network/base/package.html diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/AbstractKernel.java b/engine/src/networking/com/jme3/network/kernel/AbstractKernel.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/AbstractKernel.java rename to engine/src/networking/com/jme3/network/kernel/AbstractKernel.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/Connector.java b/engine/src/networking/com/jme3/network/kernel/Connector.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/Connector.java rename to engine/src/networking/com/jme3/network/kernel/Connector.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/ConnectorException.java b/engine/src/networking/com/jme3/network/kernel/ConnectorException.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/ConnectorException.java rename to engine/src/networking/com/jme3/network/kernel/ConnectorException.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/Endpoint.java b/engine/src/networking/com/jme3/network/kernel/Endpoint.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/Endpoint.java rename to engine/src/networking/com/jme3/network/kernel/Endpoint.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/EndpointEvent.java b/engine/src/networking/com/jme3/network/kernel/EndpointEvent.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/EndpointEvent.java rename to engine/src/networking/com/jme3/network/kernel/EndpointEvent.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/Envelope.java b/engine/src/networking/com/jme3/network/kernel/Envelope.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/Envelope.java rename to engine/src/networking/com/jme3/network/kernel/Envelope.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/Kernel.java b/engine/src/networking/com/jme3/network/kernel/Kernel.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/Kernel.java rename to engine/src/networking/com/jme3/network/kernel/Kernel.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/KernelException.java b/engine/src/networking/com/jme3/network/kernel/KernelException.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/KernelException.java rename to engine/src/networking/com/jme3/network/kernel/KernelException.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/NamedThreadFactory.java b/engine/src/networking/com/jme3/network/kernel/NamedThreadFactory.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/NamedThreadFactory.java rename to engine/src/networking/com/jme3/network/kernel/NamedThreadFactory.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/package.html b/engine/src/networking/com/jme3/network/kernel/package.html similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/package.html rename to engine/src/networking/com/jme3/network/kernel/package.html diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/tcp/NioEndpoint.java b/engine/src/networking/com/jme3/network/kernel/tcp/NioEndpoint.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/tcp/NioEndpoint.java rename to engine/src/networking/com/jme3/network/kernel/tcp/NioEndpoint.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/tcp/SelectorKernel.java b/engine/src/networking/com/jme3/network/kernel/tcp/SelectorKernel.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/tcp/SelectorKernel.java rename to engine/src/networking/com/jme3/network/kernel/tcp/SelectorKernel.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/tcp/SocketConnector.java b/engine/src/networking/com/jme3/network/kernel/tcp/SocketConnector.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/tcp/SocketConnector.java rename to engine/src/networking/com/jme3/network/kernel/tcp/SocketConnector.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/udp/UdpConnector.java b/engine/src/networking/com/jme3/network/kernel/udp/UdpConnector.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/udp/UdpConnector.java rename to engine/src/networking/com/jme3/network/kernel/udp/UdpConnector.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/udp/UdpEndpoint.java b/engine/src/networking/com/jme3/network/kernel/udp/UdpEndpoint.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/udp/UdpEndpoint.java rename to engine/src/networking/com/jme3/network/kernel/udp/UdpEndpoint.java diff --git a/jme3-networking/src/main/java/com/jme3/network/kernel/udp/UdpKernel.java b/engine/src/networking/com/jme3/network/kernel/udp/UdpKernel.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/kernel/udp/UdpKernel.java rename to engine/src/networking/com/jme3/network/kernel/udp/UdpKernel.java diff --git a/jme3-networking/src/main/java/com/jme3/network/message/ChannelInfoMessage.java b/engine/src/networking/com/jme3/network/message/ChannelInfoMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/message/ChannelInfoMessage.java rename to engine/src/networking/com/jme3/network/message/ChannelInfoMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/message/ClientRegistrationMessage.java b/engine/src/networking/com/jme3/network/message/ClientRegistrationMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/message/ClientRegistrationMessage.java rename to engine/src/networking/com/jme3/network/message/ClientRegistrationMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/message/CompressedMessage.java b/engine/src/networking/com/jme3/network/message/CompressedMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/message/CompressedMessage.java rename to engine/src/networking/com/jme3/network/message/CompressedMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/message/DisconnectMessage.java b/engine/src/networking/com/jme3/network/message/DisconnectMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/message/DisconnectMessage.java rename to engine/src/networking/com/jme3/network/message/DisconnectMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/message/GZIPCompressedMessage.java b/engine/src/networking/com/jme3/network/message/GZIPCompressedMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/message/GZIPCompressedMessage.java rename to engine/src/networking/com/jme3/network/message/GZIPCompressedMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/message/ZIPCompressedMessage.java b/engine/src/networking/com/jme3/network/message/ZIPCompressedMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/message/ZIPCompressedMessage.java rename to engine/src/networking/com/jme3/network/message/ZIPCompressedMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/package.html b/engine/src/networking/com/jme3/network/package.html similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/package.html rename to engine/src/networking/com/jme3/network/package.html diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/LocalObject.java b/engine/src/networking/com/jme3/network/rmi/LocalObject.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/LocalObject.java rename to engine/src/networking/com/jme3/network/rmi/LocalObject.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/MethodDef.java b/engine/src/networking/com/jme3/network/rmi/MethodDef.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/MethodDef.java rename to engine/src/networking/com/jme3/network/rmi/MethodDef.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/ObjectDef.java b/engine/src/networking/com/jme3/network/rmi/ObjectDef.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/ObjectDef.java rename to engine/src/networking/com/jme3/network/rmi/ObjectDef.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/ObjectStore.java b/engine/src/networking/com/jme3/network/rmi/ObjectStore.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/ObjectStore.java rename to engine/src/networking/com/jme3/network/rmi/ObjectStore.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/RemoteMethodCallMessage.java b/engine/src/networking/com/jme3/network/rmi/RemoteMethodCallMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/RemoteMethodCallMessage.java rename to engine/src/networking/com/jme3/network/rmi/RemoteMethodCallMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/RemoteMethodReturnMessage.java b/engine/src/networking/com/jme3/network/rmi/RemoteMethodReturnMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/RemoteMethodReturnMessage.java rename to engine/src/networking/com/jme3/network/rmi/RemoteMethodReturnMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/RemoteObject.java b/engine/src/networking/com/jme3/network/rmi/RemoteObject.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/RemoteObject.java rename to engine/src/networking/com/jme3/network/rmi/RemoteObject.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/RemoteObjectDefMessage.java b/engine/src/networking/com/jme3/network/rmi/RemoteObjectDefMessage.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/RemoteObjectDefMessage.java rename to engine/src/networking/com/jme3/network/rmi/RemoteObjectDefMessage.java diff --git a/jme3-networking/src/main/java/com/jme3/network/rmi/RmiSerializer.java b/engine/src/networking/com/jme3/network/rmi/RmiSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/rmi/RmiSerializer.java rename to engine/src/networking/com/jme3/network/rmi/RmiSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/Serializable.java b/engine/src/networking/com/jme3/network/serializing/Serializable.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/Serializable.java rename to engine/src/networking/com/jme3/network/serializing/Serializable.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/Serializer.java b/engine/src/networking/com/jme3/network/serializing/Serializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/Serializer.java rename to engine/src/networking/com/jme3/network/serializing/Serializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/SerializerException.java b/engine/src/networking/com/jme3/network/serializing/SerializerException.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/SerializerException.java rename to engine/src/networking/com/jme3/network/serializing/SerializerException.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/SerializerRegistration.java b/engine/src/networking/com/jme3/network/serializing/SerializerRegistration.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/SerializerRegistration.java rename to engine/src/networking/com/jme3/network/serializing/SerializerRegistration.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ArraySerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/ArraySerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ArraySerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/ArraySerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/BooleanSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/BooleanSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/BooleanSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/BooleanSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ByteSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/ByteSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ByteSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/ByteSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/CharSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/CharSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/CharSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/CharSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/CollectionSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/CollectionSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/CollectionSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/CollectionSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/DateSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/DateSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/DateSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/DateSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/DoubleSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/DoubleSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/DoubleSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/DoubleSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/EnumSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/EnumSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/EnumSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/EnumSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/FieldSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/FieldSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/FieldSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/FieldSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/FloatSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/FloatSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/FloatSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/FloatSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/GZIPSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/GZIPSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/GZIPSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/GZIPSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/IntSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/IntSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/IntSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/IntSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/LongSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/LongSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/LongSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/LongSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/MapSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/MapSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/MapSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/MapSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/SavableSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/SavableSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/SavableSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/SavableSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/SerializableSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/SerializableSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/SerializableSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/SerializableSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ShortSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/ShortSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ShortSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/ShortSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/StringSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/StringSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/StringSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/StringSerializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/Vector3Serializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/Vector3Serializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/Vector3Serializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/Vector3Serializer.java diff --git a/jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ZIPSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/ZIPSerializer.java similarity index 100% rename from jme3-networking/src/main/java/com/jme3/network/serializing/serializers/ZIPSerializer.java rename to engine/src/networking/com/jme3/network/serializing/serializers/ZIPSerializer.java diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuad.frag b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.frag similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuad.frag rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.frag diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuad.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuad.j3md rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.j3md diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuad.vert b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.vert similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuad.vert rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuad.vert diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuadGrad.frag b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.frag similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuadGrad.frag rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.frag diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuadGrad.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuadGrad.j3md rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.j3md diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuadGrad.vert b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.vert similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyQuadGrad.vert rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyQuadGrad.vert diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyTex.frag b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.frag similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyTex.frag rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.frag diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyTex.j3md b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyTex.j3md rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.j3md diff --git a/jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyTex.vert b/engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.vert similarity index 100% rename from jme3-niftygui/src/main/resources/Common/MatDefs/Nifty/NiftyTex.vert rename to engine/src/niftygui/Common/MatDefs/Nifty/NiftyTex.vert diff --git a/jme3-niftygui/src/main/java/com/jme3/cinematic/events/GuiEvent.java b/engine/src/niftygui/com/jme3/cinematic/events/GuiEvent.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/cinematic/events/GuiEvent.java rename to engine/src/niftygui/com/jme3/cinematic/events/GuiEvent.java diff --git a/jme3-niftygui/src/main/java/com/jme3/cinematic/events/GuiTrack.java b/engine/src/niftygui/com/jme3/cinematic/events/GuiTrack.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/cinematic/events/GuiTrack.java rename to engine/src/niftygui/com/jme3/cinematic/events/GuiTrack.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/InputSystemJme.java b/engine/src/niftygui/com/jme3/niftygui/InputSystemJme.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/InputSystemJme.java rename to engine/src/niftygui/com/jme3/niftygui/InputSystemJme.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/JmeBatchRenderBackend.java b/engine/src/niftygui/com/jme3/niftygui/JmeBatchRenderBackend.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/JmeBatchRenderBackend.java rename to engine/src/niftygui/com/jme3/niftygui/JmeBatchRenderBackend.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/NiftyJmeDisplay.java b/engine/src/niftygui/com/jme3/niftygui/NiftyJmeDisplay.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/NiftyJmeDisplay.java rename to engine/src/niftygui/com/jme3/niftygui/NiftyJmeDisplay.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/RenderDeviceJme.java b/engine/src/niftygui/com/jme3/niftygui/RenderDeviceJme.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/RenderDeviceJme.java rename to engine/src/niftygui/com/jme3/niftygui/RenderDeviceJme.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/RenderFontJme.java b/engine/src/niftygui/com/jme3/niftygui/RenderFontJme.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/RenderFontJme.java rename to engine/src/niftygui/com/jme3/niftygui/RenderFontJme.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/RenderImageJme.java b/engine/src/niftygui/com/jme3/niftygui/RenderImageJme.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/RenderImageJme.java rename to engine/src/niftygui/com/jme3/niftygui/RenderImageJme.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/SoundDeviceJme.java b/engine/src/niftygui/com/jme3/niftygui/SoundDeviceJme.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/SoundDeviceJme.java rename to engine/src/niftygui/com/jme3/niftygui/SoundDeviceJme.java diff --git a/jme3-niftygui/src/main/java/com/jme3/niftygui/SoundHandleJme.java b/engine/src/niftygui/com/jme3/niftygui/SoundHandleJme.java similarity index 100% rename from jme3-niftygui/src/main/java/com/jme3/niftygui/SoundHandleJme.java rename to engine/src/niftygui/com/jme3/niftygui/SoundHandleJme.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/AnimData.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/AnimData.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/AnimData.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/AnimData.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/MaterialLoader.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/MaterialLoader.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/MaterialLoader.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/MaterialLoader.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/MeshAnimationLoader.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/MeshAnimationLoader.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/MeshAnimationLoader.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/MeshAnimationLoader.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/MeshLoader.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/MeshLoader.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/MeshLoader.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/MeshLoader.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/OgreMeshKey.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/OgreMeshKey.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/OgreMeshKey.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/OgreMeshKey.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/SceneLoader.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/SceneLoader.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/SceneLoader.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/SceneLoader.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/SceneMaterialLoader.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/SceneMaterialLoader.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/SceneMaterialLoader.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/SceneMaterialLoader.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/SkeletonLoader.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/SkeletonLoader.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/SkeletonLoader.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/SkeletonLoader.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/MaterialExtension.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/matext/MaterialExtension.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/MaterialExtension.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/matext/MaterialExtension.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/MaterialExtensionLoader.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/matext/MaterialExtensionLoader.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/MaterialExtensionLoader.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/matext/MaterialExtensionLoader.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/MaterialExtensionSet.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/matext/MaterialExtensionSet.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/MaterialExtensionSet.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/matext/MaterialExtensionSet.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/OgreMaterialKey.java b/engine/src/ogre/com/jme3/scene/plugins/ogre/matext/OgreMaterialKey.java similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/OgreMaterialKey.java rename to engine/src/ogre/com/jme3/scene/plugins/ogre/matext/OgreMaterialKey.java diff --git a/jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/package.html b/engine/src/ogre/com/jme3/scene/plugins/ogre/matext/package.html similarity index 100% rename from jme3-plugins/src/ogre/java/com/jme3/scene/plugins/ogre/matext/package.html rename to engine/src/ogre/com/jme3/scene/plugins/ogre/matext/package.html diff --git a/jme3-android-native/src/native/android/Android.mk b/engine/src/openal-soft-native/android/Android.mk similarity index 88% rename from jme3-android-native/src/native/android/Android.mk rename to engine/src/openal-soft-native/android/Android.mk index 428008320..936bf3d49 100644 --- a/jme3-android-native/src/native/android/Android.mk +++ b/engine/src/openal-soft-native/android/Android.mk @@ -29,9 +29,11 @@ LOCAL_SRC_FILES := OpenAL32/alAuxEffectSlot.c \ OpenAL32/alThunk.c \ Alc/ALc.c \ Alc/ALu.c \ + Alc/alcChorus.c \ Alc/alcConfig.c \ Alc/alcDedicated.c \ Alc/alcEcho.c \ + Alc/alcFlanger.c \ Alc/alcModulator.c \ Alc/alcReverb.c \ Alc/alcRing.c \ @@ -41,18 +43,13 @@ LOCAL_SRC_FILES := OpenAL32/alAuxEffectSlot.c \ Alc/panning.c \ Alc/hrtf.c \ Alc/mixer.c \ - Alc/mixer_c.c \ + Alc/mixer_c.c \ Alc/backends/loopback.c \ Alc/backends/null.c \ Alc/backends/opensl.c \ com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp # Alc/backends/alsa.c \ # Alc/backends/android.c \ -# Alc/alcChorus.c \ -# Alc/alcFlanger.c \ -# Alc/mixer_c.c \ -# Alc/backends/loopback.c \ -# Alc/backends/null.c \ include $(BUILD_SHARED_LIBRARY) diff --git a/jme3-android-native/src/native/android/Application.mk b/engine/src/openal-soft-native/android/Application.mk similarity index 100% rename from jme3-android-native/src/native/android/Application.mk rename to engine/src/openal-soft-native/android/Application.mk diff --git a/jme3-android-native/src/native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp b/engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp similarity index 100% rename from jme3-android-native/src/native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp rename to engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp diff --git a/jme3-android-native/src/native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.h b/engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.h similarity index 100% rename from jme3-android-native/src/native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.h rename to engine/src/openal-soft-native/android/com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.h diff --git a/jme3-android-native/src/native/android/config.h b/engine/src/openal-soft-native/android/config.h similarity index 100% rename from jme3-android-native/src/native/android/config.h rename to engine/src/openal-soft-native/android/config.h diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/HeightBasedTerrain.frag b/engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.frag similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/HeightBasedTerrain.frag rename to engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.frag diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/HeightBasedTerrain.j3md b/engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.j3md similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/HeightBasedTerrain.j3md rename to engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.j3md diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/HeightBasedTerrain.vert b/engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.vert similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/HeightBasedTerrain.vert rename to engine/src/terrain/Common/MatDefs/Terrain/HeightBasedTerrain.vert diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Terrain.frag b/engine/src/terrain/Common/MatDefs/Terrain/Terrain.frag similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Terrain.frag rename to engine/src/terrain/Common/MatDefs/Terrain/Terrain.frag diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Terrain.j3md b/engine/src/terrain/Common/MatDefs/Terrain/Terrain.j3md similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Terrain.j3md rename to engine/src/terrain/Common/MatDefs/Terrain/Terrain.j3md diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Terrain.vert b/engine/src/terrain/Common/MatDefs/Terrain/Terrain.vert similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/Terrain.vert rename to engine/src/terrain/Common/MatDefs/Terrain/Terrain.vert diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/TerrainLighting.frag b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.frag similarity index 78% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/TerrainLighting.frag rename to engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.frag index 8484b454d..68bd2d236 100644 --- a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/TerrainLighting.frag +++ b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.frag @@ -208,53 +208,56 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w vec4 diffuseColor = texture2D(m_DiffuseMap, texCoord * m_DiffuseMap_0_scale); diffuseColor *= alphaBlend.r; #ifdef DIFFUSEMAP_1 - vec4 diffuseColor1 = texture2D(m_DiffuseMap_1, texCoord * m_DiffuseMap_1_scale); - diffuseColor = mix( diffuseColor, diffuseColor1, alphaBlend.g ); - #ifdef DIFFUSEMAP_2 + vec4 diffuseColor1 = texture2D(m_DiffuseMap_1, texCoord * m_DiffuseMap_1_scale); + diffuseColor = mix( diffuseColor, diffuseColor1, alphaBlend.g ); + #endif + #ifdef DIFFUSEMAP_2 vec4 diffuseColor2 = texture2D(m_DiffuseMap_2, texCoord * m_DiffuseMap_2_scale); diffuseColor = mix( diffuseColor, diffuseColor2, alphaBlend.b ); - #ifdef DIFFUSEMAP_3 - vec4 diffuseColor3 = texture2D(m_DiffuseMap_3, texCoord * m_DiffuseMap_3_scale); - diffuseColor = mix( diffuseColor, diffuseColor3, alphaBlend.a ); - #ifdef ALPHAMAP_1 - #ifdef DIFFUSEMAP_4 - vec4 diffuseColor4 = texture2D(m_DiffuseMap_4, texCoord * m_DiffuseMap_4_scale); - diffuseColor = mix( diffuseColor, diffuseColor4, alphaBlend1.r ); - #ifdef DIFFUSEMAP_5 - vec4 diffuseColor5 = texture2D(m_DiffuseMap_5, texCoord * m_DiffuseMap_5_scale); - diffuseColor = mix( diffuseColor, diffuseColor5, alphaBlend1.g ); - #ifdef DIFFUSEMAP_6 - vec4 diffuseColor6 = texture2D(m_DiffuseMap_6, texCoord * m_DiffuseMap_6_scale); - diffuseColor = mix( diffuseColor, diffuseColor6, alphaBlend1.b ); - #ifdef DIFFUSEMAP_7 - vec4 diffuseColor7 = texture2D(m_DiffuseMap_7, texCoord * m_DiffuseMap_7_scale); - diffuseColor = mix( diffuseColor, diffuseColor7, alphaBlend1.a ); - #ifdef ALPHAMAP_2 - #ifdef DIFFUSEMAP_8 - vec4 diffuseColor8 = texture2D(m_DiffuseMap_8, texCoord * m_DiffuseMap_8_scale); - diffuseColor = mix( diffuseColor, diffuseColor8, alphaBlend2.r ); - #ifdef DIFFUSEMAP_9 - vec4 diffuseColor9 = texture2D(m_DiffuseMap_9, texCoord * m_DiffuseMap_9_scale); - diffuseColor = mix( diffuseColor, diffuseColor9, alphaBlend2.g ); - #ifdef DIFFUSEMAP_10 - vec4 diffuseColor10 = texture2D(m_DiffuseMap_10, texCoord * m_DiffuseMap_10_scale); - diffuseColor = mix( diffuseColor, diffuseColor10, alphaBlend2.b ); - #ifdef DIFFUSEMAP_11 - vec4 diffuseColor11 = texture2D(m_DiffuseMap_11, texCoord * m_DiffuseMap_11_scale); - diffuseColor = mix( diffuseColor, diffuseColor11, alphaBlend2.a ); - #endif - #endif - #endif - #endif - #endif - #endif - #endif - #endif - #endif - #endif + #endif + #ifdef DIFFUSEMAP_3 + vec4 diffuseColor3 = texture2D(m_DiffuseMap_3, texCoord * m_DiffuseMap_3_scale); + diffuseColor = mix( diffuseColor, diffuseColor3, alphaBlend.a ); + #endif + + #ifdef ALPHAMAP_1 + #ifdef DIFFUSEMAP_4 + vec4 diffuseColor4 = texture2D(m_DiffuseMap_4, texCoord * m_DiffuseMap_4_scale); + diffuseColor = mix( diffuseColor, diffuseColor4, alphaBlend1.r ); #endif - #endif + #ifdef DIFFUSEMAP_5 + vec4 diffuseColor5 = texture2D(m_DiffuseMap_5, texCoord * m_DiffuseMap_5_scale); + diffuseColor = mix( diffuseColor, diffuseColor5, alphaBlend1.g ); + #endif + #ifdef DIFFUSEMAP_6 + vec4 diffuseColor6 = texture2D(m_DiffuseMap_6, texCoord * m_DiffuseMap_6_scale); + diffuseColor = mix( diffuseColor, diffuseColor6, alphaBlend1.b ); + #endif + #ifdef DIFFUSEMAP_7 + vec4 diffuseColor7 = texture2D(m_DiffuseMap_7, texCoord * m_DiffuseMap_7_scale); + diffuseColor = mix( diffuseColor, diffuseColor7, alphaBlend1.a ); + #endif + #endif + + #ifdef ALPHAMAP_2 + #ifdef DIFFUSEMAP_8 + vec4 diffuseColor8 = texture2D(m_DiffuseMap_8, texCoord * m_DiffuseMap_8_scale); + diffuseColor = mix( diffuseColor, diffuseColor8, alphaBlend2.r ); + #endif + #ifdef DIFFUSEMAP_9 + vec4 diffuseColor9 = texture2D(m_DiffuseMap_9, texCoord * m_DiffuseMap_9_scale); + diffuseColor = mix( diffuseColor, diffuseColor9, alphaBlend2.g ); + #endif + #ifdef DIFFUSEMAP_10 + vec4 diffuseColor10 = texture2D(m_DiffuseMap_10, texCoord * m_DiffuseMap_10_scale); + diffuseColor = mix( diffuseColor, diffuseColor10, alphaBlend2.b ); + #endif + #ifdef DIFFUSEMAP_11 + vec4 diffuseColor11 = texture2D(m_DiffuseMap_11, texCoord * m_DiffuseMap_11_scale); + diffuseColor = mix( diffuseColor, diffuseColor11, alphaBlend2.a ); + #endif #endif + return diffuseColor; } @@ -428,41 +431,41 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w vec4 diffuseColor = tex0 * alphaBlend.r; #ifdef DIFFUSEMAP_1 - diffuseColor = mix( diffuseColor, tex1, alphaBlend.g ); - #ifdef DIFFUSEMAP_2 + diffuseColor = mix( diffuseColor, tex1, alphaBlend.g ); + #endif + #ifdef DIFFUSEMAP_2 diffuseColor = mix( diffuseColor, tex2, alphaBlend.b ); - #ifdef DIFFUSEMAP_3 - diffuseColor = mix( diffuseColor, tex3, alphaBlend.a ); - #ifdef ALPHAMAP_1 - #ifdef DIFFUSEMAP_4 - diffuseColor = mix( diffuseColor, tex4, alphaBlend1.r ); - #ifdef DIFFUSEMAP_5 - diffuseColor = mix( diffuseColor, tex5, alphaBlend1.g ); - #ifdef DIFFUSEMAP_6 - diffuseColor = mix( diffuseColor, tex6, alphaBlend1.b ); - #ifdef DIFFUSEMAP_7 - diffuseColor = mix( diffuseColor, tex7, alphaBlend1.a ); - #ifdef ALPHAMAP_2 - #ifdef DIFFUSEMAP_8 - diffuseColor = mix( diffuseColor, tex8, alphaBlend2.r ); - #ifdef DIFFUSEMAP_9 - diffuseColor = mix( diffuseColor, tex9, alphaBlend2.g ); - #ifdef DIFFUSEMAP_10 - diffuseColor = mix( diffuseColor, tex10, alphaBlend2.b ); - #ifdef DIFFUSEMAP_11 - diffuseColor = mix( diffuseColor, tex11, alphaBlend2.a ); - #endif - #endif - #endif - #endif - #endif - #endif - #endif - #endif - #endif - #endif + #endif + #ifdef DIFFUSEMAP_3 + diffuseColor = mix( diffuseColor, tex3, alphaBlend.a ); + #endif + #ifdef ALPHAMAP_1 + #ifdef DIFFUSEMAP_4 + diffuseColor = mix( diffuseColor, tex4, alphaBlend1.r ); + #endif + #ifdef DIFFUSEMAP_5 + diffuseColor = mix( diffuseColor, tex5, alphaBlend1.g ); + #endif + #ifdef DIFFUSEMAP_6 + diffuseColor = mix( diffuseColor, tex6, alphaBlend1.b ); + #endif + #ifdef DIFFUSEMAP_7 + diffuseColor = mix( diffuseColor, tex7, alphaBlend1.a ); + #endif + #endif + #ifdef ALPHAMAP_2 + #ifdef DIFFUSEMAP_8 + diffuseColor = mix( diffuseColor, tex8, alphaBlend2.r ); + #endif + #ifdef DIFFUSEMAP_9 + diffuseColor = mix( diffuseColor, tex9, alphaBlend2.g ); + #endif + #ifdef DIFFUSEMAP_10 + diffuseColor = mix( diffuseColor, tex10, alphaBlend2.b ); + #endif + #ifdef DIFFUSEMAP_11 + diffuseColor = mix( diffuseColor, tex11, alphaBlend2.a ); #endif - #endif #endif return diffuseColor; diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/TerrainLighting.j3md b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/TerrainLighting.j3md rename to engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.j3md diff --git a/jme3-terrain/src/main/resources/Common/MatDefs/Terrain/TerrainLighting.vert b/engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert similarity index 100% rename from jme3-terrain/src/main/resources/Common/MatDefs/Terrain/TerrainLighting.vert rename to engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/GeoMap.java b/engine/src/terrain/com/jme3/terrain/GeoMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/GeoMap.java rename to engine/src/terrain/com/jme3/terrain/GeoMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/ProgressMonitor.java b/engine/src/terrain/com/jme3/terrain/ProgressMonitor.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/ProgressMonitor.java rename to engine/src/terrain/com/jme3/terrain/ProgressMonitor.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/Terrain.java b/engine/src/terrain/com/jme3/terrain/Terrain.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/Terrain.java rename to engine/src/terrain/com/jme3/terrain/Terrain.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/LODGeomap.java b/engine/src/terrain/com/jme3/terrain/geomipmap/LODGeomap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/LODGeomap.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/LODGeomap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/LRUCache.java b/engine/src/terrain/com/jme3/terrain/geomipmap/LRUCache.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/LRUCache.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/LRUCache.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/MultiTerrainLodControl.java b/engine/src/terrain/com/jme3/terrain/geomipmap/MultiTerrainLodControl.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/MultiTerrainLodControl.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/MultiTerrainLodControl.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/NeighbourFinder.java b/engine/src/terrain/com/jme3/terrain/geomipmap/NeighbourFinder.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/NeighbourFinder.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/NeighbourFinder.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/NormalRecalcControl.java b/engine/src/terrain/com/jme3/terrain/geomipmap/NormalRecalcControl.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/NormalRecalcControl.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/NormalRecalcControl.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGrid.java b/engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGrid.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGrid.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGrid.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGridListener.java b/engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGridListener.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGridListener.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGridListener.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGridLodControl.java b/engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGridLodControl.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGridLodControl.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGridLodControl.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGridTileLoader.java b/engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGridTileLoader.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainGridTileLoader.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/TerrainGridTileLoader.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainLodControl.java b/engine/src/terrain/com/jme3/terrain/geomipmap/TerrainLodControl.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainLodControl.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/TerrainLodControl.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainPatch.java b/engine/src/terrain/com/jme3/terrain/geomipmap/TerrainPatch.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainPatch.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/TerrainPatch.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainQuad.java b/engine/src/terrain/com/jme3/terrain/geomipmap/TerrainQuad.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/TerrainQuad.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/TerrainQuad.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/UpdatedTerrainPatch.java b/engine/src/terrain/com/jme3/terrain/geomipmap/UpdatedTerrainPatch.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/UpdatedTerrainPatch.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/UpdatedTerrainPatch.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/grid/AssetTileLoader.java b/engine/src/terrain/com/jme3/terrain/geomipmap/grid/AssetTileLoader.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/grid/AssetTileLoader.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/grid/AssetTileLoader.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/grid/FractalTileLoader.java b/engine/src/terrain/com/jme3/terrain/geomipmap/grid/FractalTileLoader.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/grid/FractalTileLoader.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/grid/FractalTileLoader.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/grid/ImageTileLoader.java b/engine/src/terrain/com/jme3/terrain/geomipmap/grid/ImageTileLoader.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/grid/ImageTileLoader.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/grid/ImageTileLoader.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/DistanceLodCalculator.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/DistanceLodCalculator.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/DistanceLodCalculator.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/DistanceLodCalculator.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodCalculator.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodCalculator.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodCalculator.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodCalculator.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodCalculatorFactory.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodCalculatorFactory.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodCalculatorFactory.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodCalculatorFactory.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodDistanceCalculatorFactory.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodDistanceCalculatorFactory.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodDistanceCalculatorFactory.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodDistanceCalculatorFactory.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodPerspectiveCalculatorFactory.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodPerspectiveCalculatorFactory.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodPerspectiveCalculatorFactory.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodPerspectiveCalculatorFactory.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodThreshold.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodThreshold.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/LodThreshold.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/LodThreshold.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/PerspectiveLodCalculator.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/PerspectiveLodCalculator.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/PerspectiveLodCalculator.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/PerspectiveLodCalculator.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/SimpleLodThreshold.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/SimpleLodThreshold.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/SimpleLodThreshold.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/SimpleLodThreshold.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/util/EntropyComputeUtil.java b/engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/util/EntropyComputeUtil.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/lodcalc/util/EntropyComputeUtil.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/lodcalc/util/EntropyComputeUtil.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/BresenhamTerrainPicker.java b/engine/src/terrain/com/jme3/terrain/geomipmap/picking/BresenhamTerrainPicker.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/BresenhamTerrainPicker.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/picking/BresenhamTerrainPicker.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/BresenhamYUpGridTracer.java b/engine/src/terrain/com/jme3/terrain/geomipmap/picking/BresenhamYUpGridTracer.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/BresenhamYUpGridTracer.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/picking/BresenhamYUpGridTracer.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/TerrainPickData.java b/engine/src/terrain/com/jme3/terrain/geomipmap/picking/TerrainPickData.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/TerrainPickData.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/picking/TerrainPickData.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/TerrainPicker.java b/engine/src/terrain/com/jme3/terrain/geomipmap/picking/TerrainPicker.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/geomipmap/picking/TerrainPicker.java rename to engine/src/terrain/com/jme3/terrain/geomipmap/picking/TerrainPicker.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/AbstractHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/AbstractHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/AbstractHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/AbstractHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/CombinerHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/CombinerHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/CombinerHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/CombinerHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/FaultHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/FaultHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/FaultHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/FaultHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/FluidSimHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/FluidSimHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/FluidSimHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/FluidSimHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/HeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/HeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/HeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/HeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/HeightMapGrid.java b/engine/src/terrain/com/jme3/terrain/heightmap/HeightMapGrid.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/HeightMapGrid.java rename to engine/src/terrain/com/jme3/terrain/heightmap/HeightMapGrid.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/HillHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/HillHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/HillHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/HillHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ImageBasedHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/ImageBasedHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ImageBasedHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/ImageBasedHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ImageBasedHeightMapGrid.java b/engine/src/terrain/com/jme3/terrain/heightmap/ImageBasedHeightMapGrid.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ImageBasedHeightMapGrid.java rename to engine/src/terrain/com/jme3/terrain/heightmap/ImageBasedHeightMapGrid.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ImageHeightmap.java b/engine/src/terrain/com/jme3/terrain/heightmap/ImageHeightmap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ImageHeightmap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/ImageHeightmap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/MidpointDisplacementHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/MidpointDisplacementHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/MidpointDisplacementHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/MidpointDisplacementHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/Namer.java b/engine/src/terrain/com/jme3/terrain/heightmap/Namer.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/Namer.java rename to engine/src/terrain/com/jme3/terrain/heightmap/Namer.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ParticleDepositionHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/ParticleDepositionHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/ParticleDepositionHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/ParticleDepositionHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/heightmap/RawHeightMap.java b/engine/src/terrain/com/jme3/terrain/heightmap/RawHeightMap.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/heightmap/RawHeightMap.java rename to engine/src/terrain/com/jme3/terrain/heightmap/RawHeightMap.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/Basis.java b/engine/src/terrain/com/jme3/terrain/noise/Basis.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/Basis.java rename to engine/src/terrain/com/jme3/terrain/noise/Basis.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/Color.java b/engine/src/terrain/com/jme3/terrain/noise/Color.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/Color.java rename to engine/src/terrain/com/jme3/terrain/noise/Color.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/Filter.java b/engine/src/terrain/com/jme3/terrain/noise/Filter.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/Filter.java rename to engine/src/terrain/com/jme3/terrain/noise/Filter.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java b/engine/src/terrain/com/jme3/terrain/noise/ShaderUtils.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/ShaderUtils.java rename to engine/src/terrain/com/jme3/terrain/noise/ShaderUtils.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/FilteredBasis.java b/engine/src/terrain/com/jme3/terrain/noise/basis/FilteredBasis.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/FilteredBasis.java rename to engine/src/terrain/com/jme3/terrain/noise/basis/FilteredBasis.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/ImprovedNoise.java b/engine/src/terrain/com/jme3/terrain/noise/basis/ImprovedNoise.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/ImprovedNoise.java rename to engine/src/terrain/com/jme3/terrain/noise/basis/ImprovedNoise.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/Noise.java b/engine/src/terrain/com/jme3/terrain/noise/basis/Noise.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/Noise.java rename to engine/src/terrain/com/jme3/terrain/noise/basis/Noise.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/NoiseAggregator.java b/engine/src/terrain/com/jme3/terrain/noise/basis/NoiseAggregator.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/basis/NoiseAggregator.java rename to engine/src/terrain/com/jme3/terrain/noise/basis/NoiseAggregator.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/AbstractFilter.java b/engine/src/terrain/com/jme3/terrain/noise/filter/AbstractFilter.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/AbstractFilter.java rename to engine/src/terrain/com/jme3/terrain/noise/filter/AbstractFilter.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/HydraulicErodeFilter.java b/engine/src/terrain/com/jme3/terrain/noise/filter/HydraulicErodeFilter.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/HydraulicErodeFilter.java rename to engine/src/terrain/com/jme3/terrain/noise/filter/HydraulicErodeFilter.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/IterativeFilter.java b/engine/src/terrain/com/jme3/terrain/noise/filter/IterativeFilter.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/IterativeFilter.java rename to engine/src/terrain/com/jme3/terrain/noise/filter/IterativeFilter.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/OptimizedErode.java b/engine/src/terrain/com/jme3/terrain/noise/filter/OptimizedErode.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/OptimizedErode.java rename to engine/src/terrain/com/jme3/terrain/noise/filter/OptimizedErode.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/PerturbFilter.java b/engine/src/terrain/com/jme3/terrain/noise/filter/PerturbFilter.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/PerturbFilter.java rename to engine/src/terrain/com/jme3/terrain/noise/filter/PerturbFilter.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/SmoothFilter.java b/engine/src/terrain/com/jme3/terrain/noise/filter/SmoothFilter.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/SmoothFilter.java rename to engine/src/terrain/com/jme3/terrain/noise/filter/SmoothFilter.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/ThermalErodeFilter.java b/engine/src/terrain/com/jme3/terrain/noise/filter/ThermalErodeFilter.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/filter/ThermalErodeFilter.java rename to engine/src/terrain/com/jme3/terrain/noise/filter/ThermalErodeFilter.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/fractal/Fractal.java b/engine/src/terrain/com/jme3/terrain/noise/fractal/Fractal.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/fractal/Fractal.java rename to engine/src/terrain/com/jme3/terrain/noise/fractal/Fractal.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/fractal/FractalSum.java b/engine/src/terrain/com/jme3/terrain/noise/fractal/FractalSum.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/fractal/FractalSum.java rename to engine/src/terrain/com/jme3/terrain/noise/fractal/FractalSum.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/modulator/CatRom2.java b/engine/src/terrain/com/jme3/terrain/noise/modulator/CatRom2.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/modulator/CatRom2.java rename to engine/src/terrain/com/jme3/terrain/noise/modulator/CatRom2.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/modulator/Modulator.java b/engine/src/terrain/com/jme3/terrain/noise/modulator/Modulator.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/modulator/Modulator.java rename to engine/src/terrain/com/jme3/terrain/noise/modulator/Modulator.java diff --git a/jme3-terrain/src/main/java/com/jme3/terrain/noise/modulator/NoiseModulator.java b/engine/src/terrain/com/jme3/terrain/noise/modulator/NoiseModulator.java similarity index 100% rename from jme3-terrain/src/main/java/com/jme3/terrain/noise/modulator/NoiseModulator.java rename to engine/src/terrain/com/jme3/terrain/noise/modulator/NoiseModulator.java diff --git a/jme3-examples/src/main/java/jme3test/TestChooser.java b/engine/src/test/jme3test/TestChooser.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/TestChooser.java rename to engine/src/test/jme3test/TestChooser.java diff --git a/jme3-examples/src/main/java/jme3test/animation/SubtitleTrack.java b/engine/src/test/jme3test/animation/SubtitleTrack.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/animation/SubtitleTrack.java rename to engine/src/test/jme3test/animation/SubtitleTrack.java diff --git a/jme3-examples/src/main/java/jme3test/animation/TestCameraMotionPath.java b/engine/src/test/jme3test/animation/TestCameraMotionPath.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/animation/TestCameraMotionPath.java rename to engine/src/test/jme3test/animation/TestCameraMotionPath.java diff --git a/jme3-examples/src/main/java/jme3test/animation/TestCinematic.java b/engine/src/test/jme3test/animation/TestCinematic.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/animation/TestCinematic.java rename to engine/src/test/jme3test/animation/TestCinematic.java diff --git a/jme3-examples/src/main/java/jme3test/animation/TestJaime.java b/engine/src/test/jme3test/animation/TestJaime.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/animation/TestJaime.java rename to engine/src/test/jme3test/animation/TestJaime.java diff --git a/jme3-examples/src/main/java/jme3test/animation/TestMotionPath.java b/engine/src/test/jme3test/animation/TestMotionPath.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/animation/TestMotionPath.java rename to engine/src/test/jme3test/animation/TestMotionPath.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestAppStateLifeCycle.java b/engine/src/test/jme3test/app/TestAppStateLifeCycle.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestAppStateLifeCycle.java rename to engine/src/test/jme3test/app/TestAppStateLifeCycle.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestApplication.java b/engine/src/test/jme3test/app/TestApplication.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestApplication.java rename to engine/src/test/jme3test/app/TestApplication.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestBareBonesApp.java b/engine/src/test/jme3test/app/TestBareBonesApp.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestBareBonesApp.java rename to engine/src/test/jme3test/app/TestBareBonesApp.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestChangeAppIcon.java b/engine/src/test/jme3test/app/TestChangeAppIcon.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestChangeAppIcon.java rename to engine/src/test/jme3test/app/TestChangeAppIcon.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestContextRestart.java b/engine/src/test/jme3test/app/TestContextRestart.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestContextRestart.java rename to engine/src/test/jme3test/app/TestContextRestart.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestCustomAppSettings.java b/engine/src/test/jme3test/app/TestCustomAppSettings.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestCustomAppSettings.java rename to engine/src/test/jme3test/app/TestCustomAppSettings.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestIDList.java b/engine/src/test/jme3test/app/TestIDList.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestIDList.java rename to engine/src/test/jme3test/app/TestIDList.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestReleaseDirectMemory.java b/engine/src/test/jme3test/app/TestReleaseDirectMemory.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestReleaseDirectMemory.java rename to engine/src/test/jme3test/app/TestReleaseDirectMemory.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestTempVars.java b/engine/src/test/jme3test/app/TestTempVars.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestTempVars.java rename to engine/src/test/jme3test/app/TestTempVars.java diff --git a/jme3-examples/src/main/java/jme3test/app/TestUseAfterFree.java b/engine/src/test/jme3test/app/TestUseAfterFree.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/TestUseAfterFree.java rename to engine/src/test/jme3test/app/TestUseAfterFree.java diff --git a/jme3-examples/src/main/java/jme3test/app/state/RootNodeState.java b/engine/src/test/jme3test/app/state/RootNodeState.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/state/RootNodeState.java rename to engine/src/test/jme3test/app/state/RootNodeState.java diff --git a/jme3-examples/src/main/java/jme3test/app/state/TestAppStates.java b/engine/src/test/jme3test/app/state/TestAppStates.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/app/state/TestAppStates.java rename to engine/src/test/jme3test/app/state/TestAppStates.java diff --git a/jme3-examples/src/main/java/jme3test/asset/TestAbsoluteLocators.java b/engine/src/test/jme3test/asset/TestAbsoluteLocators.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/asset/TestAbsoluteLocators.java rename to engine/src/test/jme3test/asset/TestAbsoluteLocators.java diff --git a/jme3-examples/src/main/java/jme3test/asset/TestAssetCache.java b/engine/src/test/jme3test/asset/TestAssetCache.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/asset/TestAssetCache.java rename to engine/src/test/jme3test/asset/TestAssetCache.java diff --git a/jme3-examples/src/main/java/jme3test/asset/TestCustomLoader.java b/engine/src/test/jme3test/asset/TestCustomLoader.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/asset/TestCustomLoader.java rename to engine/src/test/jme3test/asset/TestCustomLoader.java diff --git a/jme3-examples/src/main/java/jme3test/asset/TestManyLocators.java b/engine/src/test/jme3test/asset/TestManyLocators.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/asset/TestManyLocators.java rename to engine/src/test/jme3test/asset/TestManyLocators.java diff --git a/jme3-examples/src/main/java/jme3test/asset/TestOnlineJar.java b/engine/src/test/jme3test/asset/TestOnlineJar.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/asset/TestOnlineJar.java rename to engine/src/test/jme3test/asset/TestOnlineJar.java diff --git a/jme3-examples/src/main/java/jme3test/asset/TestUrlLoading.java b/engine/src/test/jme3test/asset/TestUrlLoading.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/asset/TestUrlLoading.java rename to engine/src/test/jme3test/asset/TestUrlLoading.java diff --git a/jme3-examples/src/main/java/jme3test/asset/TextLoader.java b/engine/src/test/jme3test/asset/TextLoader.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/asset/TextLoader.java rename to engine/src/test/jme3test/asset/TextLoader.java diff --git a/jme3-examples/src/main/java/jme3test/audio/TestAmbient.java b/engine/src/test/jme3test/audio/TestAmbient.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestAmbient.java rename to engine/src/test/jme3test/audio/TestAmbient.java diff --git a/jme3-examples/src/main/java/jme3test/audio/TestDoppler.java b/engine/src/test/jme3test/audio/TestDoppler.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestDoppler.java rename to engine/src/test/jme3test/audio/TestDoppler.java diff --git a/jme3-examples/src/main/java/jme3test/audio/TestMusicPlayer.form b/engine/src/test/jme3test/audio/TestMusicPlayer.form similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestMusicPlayer.form rename to engine/src/test/jme3test/audio/TestMusicPlayer.form diff --git a/jme3-examples/src/main/java/jme3test/audio/TestMusicPlayer.java b/engine/src/test/jme3test/audio/TestMusicPlayer.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestMusicPlayer.java rename to engine/src/test/jme3test/audio/TestMusicPlayer.java diff --git a/jme3-examples/src/main/java/jme3test/audio/TestMusicStreaming.java b/engine/src/test/jme3test/audio/TestMusicStreaming.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestMusicStreaming.java rename to engine/src/test/jme3test/audio/TestMusicStreaming.java diff --git a/jme3-examples/src/main/java/jme3test/audio/TestOgg.java b/engine/src/test/jme3test/audio/TestOgg.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestOgg.java rename to engine/src/test/jme3test/audio/TestOgg.java diff --git a/jme3-examples/src/main/java/jme3test/audio/TestReverb.java b/engine/src/test/jme3test/audio/TestReverb.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestReverb.java rename to engine/src/test/jme3test/audio/TestReverb.java diff --git a/jme3-examples/src/main/java/jme3test/audio/TestWav.java b/engine/src/test/jme3test/audio/TestWav.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/audio/TestWav.java rename to engine/src/test/jme3test/audio/TestWav.java diff --git a/jme3-examples/src/main/java/jme3test/awt/AppHarness.java b/engine/src/test/jme3test/awt/AppHarness.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/awt/AppHarness.java rename to engine/src/test/jme3test/awt/AppHarness.java diff --git a/jme3-examples/src/main/java/jme3test/awt/TestApplet.java b/engine/src/test/jme3test/awt/TestApplet.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/awt/TestApplet.java rename to engine/src/test/jme3test/awt/TestApplet.java diff --git a/jme3-examples/src/main/java/jme3test/awt/TestAwtPanels.java b/engine/src/test/jme3test/awt/TestAwtPanels.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/awt/TestAwtPanels.java rename to engine/src/test/jme3test/awt/TestAwtPanels.java diff --git a/jme3-examples/src/main/java/jme3test/awt/TestCanvas.java b/engine/src/test/jme3test/awt/TestCanvas.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/awt/TestCanvas.java rename to engine/src/test/jme3test/awt/TestCanvas.java diff --git a/jme3-examples/src/main/java/jme3test/awt/TestSafeCanvas.java b/engine/src/test/jme3test/awt/TestSafeCanvas.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/awt/TestSafeCanvas.java rename to engine/src/test/jme3test/awt/TestSafeCanvas.java diff --git a/jme3-examples/src/main/java/jme3test/batching/TestBatchNode.java b/engine/src/test/jme3test/batching/TestBatchNode.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/batching/TestBatchNode.java rename to engine/src/test/jme3test/batching/TestBatchNode.java diff --git a/jme3-examples/src/main/java/jme3test/batching/TestBatchNodeCluster.java b/engine/src/test/jme3test/batching/TestBatchNodeCluster.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/batching/TestBatchNodeCluster.java rename to engine/src/test/jme3test/batching/TestBatchNodeCluster.java diff --git a/jme3-examples/src/main/java/jme3test/batching/TestBatchNodeTower.java b/engine/src/test/jme3test/batching/TestBatchNodeTower.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/batching/TestBatchNodeTower.java rename to engine/src/test/jme3test/batching/TestBatchNodeTower.java diff --git a/jme3-examples/src/main/java/jme3test/blender/TestBlenderLoader.java b/engine/src/test/jme3test/blender/TestBlenderLoader.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/blender/TestBlenderLoader.java rename to engine/src/test/jme3test/blender/TestBlenderLoader.java diff --git a/jme3-examples/src/main/java/jme3test/bounding/TestRayCollision.java b/engine/src/test/jme3test/bounding/TestRayCollision.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bounding/TestRayCollision.java rename to engine/src/test/jme3test/bounding/TestRayCollision.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/BombControl.java b/engine/src/test/jme3test/bullet/BombControl.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/BombControl.java rename to engine/src/test/jme3test/bullet/BombControl.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/PhysicsHoverControl.java b/engine/src/test/jme3test/bullet/PhysicsHoverControl.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/PhysicsHoverControl.java rename to engine/src/test/jme3test/bullet/PhysicsHoverControl.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/PhysicsTestHelper.java b/engine/src/test/jme3test/bullet/PhysicsTestHelper.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/PhysicsTestHelper.java rename to engine/src/test/jme3test/bullet/PhysicsTestHelper.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestAttachDriver.java b/engine/src/test/jme3test/bullet/TestAttachDriver.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestAttachDriver.java rename to engine/src/test/jme3test/bullet/TestAttachDriver.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestAttachGhostObject.java b/engine/src/test/jme3test/bullet/TestAttachGhostObject.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestAttachGhostObject.java rename to engine/src/test/jme3test/bullet/TestAttachGhostObject.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestBetterCharacter.java b/engine/src/test/jme3test/bullet/TestBetterCharacter.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestBetterCharacter.java rename to engine/src/test/jme3test/bullet/TestBetterCharacter.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestBoneRagdoll.java b/engine/src/test/jme3test/bullet/TestBoneRagdoll.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestBoneRagdoll.java rename to engine/src/test/jme3test/bullet/TestBoneRagdoll.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestBrickTower.java b/engine/src/test/jme3test/bullet/TestBrickTower.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestBrickTower.java rename to engine/src/test/jme3test/bullet/TestBrickTower.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestBrickWall.java b/engine/src/test/jme3test/bullet/TestBrickWall.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestBrickWall.java rename to engine/src/test/jme3test/bullet/TestBrickWall.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestCcd.java b/engine/src/test/jme3test/bullet/TestCcd.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestCcd.java rename to engine/src/test/jme3test/bullet/TestCcd.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestCollisionGroups.java b/engine/src/test/jme3test/bullet/TestCollisionGroups.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestCollisionGroups.java rename to engine/src/test/jme3test/bullet/TestCollisionGroups.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestCollisionListener.java b/engine/src/test/jme3test/bullet/TestCollisionListener.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestCollisionListener.java rename to engine/src/test/jme3test/bullet/TestCollisionListener.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestCollisionShapeFactory.java b/engine/src/test/jme3test/bullet/TestCollisionShapeFactory.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestCollisionShapeFactory.java rename to engine/src/test/jme3test/bullet/TestCollisionShapeFactory.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestFancyCar.java b/engine/src/test/jme3test/bullet/TestFancyCar.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestFancyCar.java rename to engine/src/test/jme3test/bullet/TestFancyCar.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestGhostObject.java b/engine/src/test/jme3test/bullet/TestGhostObject.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestGhostObject.java rename to engine/src/test/jme3test/bullet/TestGhostObject.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestHoveringTank.java b/engine/src/test/jme3test/bullet/TestHoveringTank.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestHoveringTank.java rename to engine/src/test/jme3test/bullet/TestHoveringTank.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestKinematicAddToPhysicsSpaceIssue.java b/engine/src/test/jme3test/bullet/TestKinematicAddToPhysicsSpaceIssue.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestKinematicAddToPhysicsSpaceIssue.java rename to engine/src/test/jme3test/bullet/TestKinematicAddToPhysicsSpaceIssue.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestLocalPhysics.java b/engine/src/test/jme3test/bullet/TestLocalPhysics.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestLocalPhysics.java rename to engine/src/test/jme3test/bullet/TestLocalPhysics.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsCar.java b/engine/src/test/jme3test/bullet/TestPhysicsCar.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestPhysicsCar.java rename to engine/src/test/jme3test/bullet/TestPhysicsCar.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsCharacter.java b/engine/src/test/jme3test/bullet/TestPhysicsCharacter.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestPhysicsCharacter.java rename to engine/src/test/jme3test/bullet/TestPhysicsCharacter.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsHingeJoint.java b/engine/src/test/jme3test/bullet/TestPhysicsHingeJoint.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestPhysicsHingeJoint.java rename to engine/src/test/jme3test/bullet/TestPhysicsHingeJoint.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsRayCast.java b/engine/src/test/jme3test/bullet/TestPhysicsRayCast.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestPhysicsRayCast.java rename to engine/src/test/jme3test/bullet/TestPhysicsRayCast.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsReadWrite.java b/engine/src/test/jme3test/bullet/TestPhysicsReadWrite.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestPhysicsReadWrite.java rename to engine/src/test/jme3test/bullet/TestPhysicsReadWrite.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestQ3.java b/engine/src/test/jme3test/bullet/TestQ3.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestQ3.java rename to engine/src/test/jme3test/bullet/TestQ3.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestRagDoll.java b/engine/src/test/jme3test/bullet/TestRagDoll.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestRagDoll.java rename to engine/src/test/jme3test/bullet/TestRagDoll.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestRagdollCharacter.java b/engine/src/test/jme3test/bullet/TestRagdollCharacter.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestRagdollCharacter.java rename to engine/src/test/jme3test/bullet/TestRagdollCharacter.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestSimplePhysics.java b/engine/src/test/jme3test/bullet/TestSimplePhysics.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestSimplePhysics.java rename to engine/src/test/jme3test/bullet/TestSimplePhysics.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestSweepTest.java b/engine/src/test/jme3test/bullet/TestSweepTest.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestSweepTest.java rename to engine/src/test/jme3test/bullet/TestSweepTest.java diff --git a/jme3-examples/src/main/java/jme3test/bullet/TestWalkingChar.java b/engine/src/test/jme3test/bullet/TestWalkingChar.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/bullet/TestWalkingChar.java rename to engine/src/test/jme3test/bullet/TestWalkingChar.java diff --git a/jme3-examples/src/main/java/jme3test/collision/RayTrace.java b/engine/src/test/jme3test/collision/RayTrace.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/collision/RayTrace.java rename to engine/src/test/jme3test/collision/RayTrace.java diff --git a/jme3-examples/src/main/java/jme3test/collision/TestMousePick.java b/engine/src/test/jme3test/collision/TestMousePick.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/collision/TestMousePick.java rename to engine/src/test/jme3test/collision/TestMousePick.java diff --git a/jme3-examples/src/main/java/jme3test/collision/TestRayCasting.java b/engine/src/test/jme3test/collision/TestRayCasting.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/collision/TestRayCasting.java rename to engine/src/test/jme3test/collision/TestRayCasting.java diff --git a/jme3-examples/src/main/java/jme3test/collision/TestTriangleCollision.java b/engine/src/test/jme3test/collision/TestTriangleCollision.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/collision/TestTriangleCollision.java rename to engine/src/test/jme3test/collision/TestTriangleCollision.java diff --git a/jme3-examples/src/main/java/jme3test/conversion/TestMipMapGen.java b/engine/src/test/jme3test/conversion/TestMipMapGen.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/conversion/TestMipMapGen.java rename to engine/src/test/jme3test/conversion/TestMipMapGen.java diff --git a/jme3-examples/src/main/java/jme3test/conversion/TestTriangleStrip.java b/engine/src/test/jme3test/conversion/TestTriangleStrip.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/conversion/TestTriangleStrip.java rename to engine/src/test/jme3test/conversion/TestTriangleStrip.java diff --git a/jme3-examples/src/main/java/jme3test/effect/TestEverything.java b/engine/src/test/jme3test/effect/TestEverything.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/effect/TestEverything.java rename to engine/src/test/jme3test/effect/TestEverything.java diff --git a/jme3-examples/src/main/java/jme3test/effect/TestExplosionEffect.java b/engine/src/test/jme3test/effect/TestExplosionEffect.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/effect/TestExplosionEffect.java rename to engine/src/test/jme3test/effect/TestExplosionEffect.java diff --git a/jme3-examples/src/main/java/jme3test/effect/TestMovingParticle.java b/engine/src/test/jme3test/effect/TestMovingParticle.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/effect/TestMovingParticle.java rename to engine/src/test/jme3test/effect/TestMovingParticle.java diff --git a/jme3-examples/src/main/java/jme3test/effect/TestParticleExportingCloning.java b/engine/src/test/jme3test/effect/TestParticleExportingCloning.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/effect/TestParticleExportingCloning.java rename to engine/src/test/jme3test/effect/TestParticleExportingCloning.java diff --git a/jme3-examples/src/main/java/jme3test/effect/TestPointSprite.java b/engine/src/test/jme3test/effect/TestPointSprite.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/effect/TestPointSprite.java rename to engine/src/test/jme3test/effect/TestPointSprite.java diff --git a/jme3-examples/src/main/java/jme3test/effect/TestSoftParticles.java b/engine/src/test/jme3test/effect/TestSoftParticles.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/effect/TestSoftParticles.java rename to engine/src/test/jme3test/effect/TestSoftParticles.java diff --git a/jme3-examples/src/main/java/jme3test/export/TestAssetLinkNode.java b/engine/src/test/jme3test/export/TestAssetLinkNode.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/export/TestAssetLinkNode.java rename to engine/src/test/jme3test/export/TestAssetLinkNode.java diff --git a/jme3-examples/src/main/java/jme3test/export/TestOgreConvert.java b/engine/src/test/jme3test/export/TestOgreConvert.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/export/TestOgreConvert.java rename to engine/src/test/jme3test/export/TestOgreConvert.java diff --git a/jme3-examples/src/main/java/jme3test/games/CubeField.java b/engine/src/test/jme3test/games/CubeField.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/games/CubeField.java rename to engine/src/test/jme3test/games/CubeField.java diff --git a/jme3-examples/src/main/java/jme3test/games/WorldOfInception.java b/engine/src/test/jme3test/games/WorldOfInception.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/games/WorldOfInception.java rename to engine/src/test/jme3test/games/WorldOfInception.java diff --git a/jme3-examples/src/main/java/jme3test/gui/TestBitmapFont.java b/engine/src/test/jme3test/gui/TestBitmapFont.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/gui/TestBitmapFont.java rename to engine/src/test/jme3test/gui/TestBitmapFont.java diff --git a/jme3-examples/src/main/java/jme3test/gui/TestBitmapText3D.java b/engine/src/test/jme3test/gui/TestBitmapText3D.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/gui/TestBitmapText3D.java rename to engine/src/test/jme3test/gui/TestBitmapText3D.java diff --git a/jme3-examples/src/main/java/jme3test/gui/TestCursor.java b/engine/src/test/jme3test/gui/TestCursor.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/gui/TestCursor.java rename to engine/src/test/jme3test/gui/TestCursor.java diff --git a/jme3-examples/src/main/java/jme3test/gui/TestOrtho.java b/engine/src/test/jme3test/gui/TestOrtho.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/gui/TestOrtho.java rename to engine/src/test/jme3test/gui/TestOrtho.java diff --git a/jme3-examples/src/main/java/jme3test/gui/TestSoftwareMouse.java b/engine/src/test/jme3test/gui/TestSoftwareMouse.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/gui/TestSoftwareMouse.java rename to engine/src/test/jme3test/gui/TestSoftwareMouse.java diff --git a/jme3-examples/src/main/java/jme3test/gui/TestZOrder.java b/engine/src/test/jme3test/gui/TestZOrder.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/gui/TestZOrder.java rename to engine/src/test/jme3test/gui/TestZOrder.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloAnimation.java b/engine/src/test/jme3test/helloworld/HelloAnimation.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloAnimation.java rename to engine/src/test/jme3test/helloworld/HelloAnimation.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloAssets.java b/engine/src/test/jme3test/helloworld/HelloAssets.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloAssets.java rename to engine/src/test/jme3test/helloworld/HelloAssets.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloAudio.java b/engine/src/test/jme3test/helloworld/HelloAudio.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloAudio.java rename to engine/src/test/jme3test/helloworld/HelloAudio.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloCollision.java b/engine/src/test/jme3test/helloworld/HelloCollision.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloCollision.java rename to engine/src/test/jme3test/helloworld/HelloCollision.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloEffects.java b/engine/src/test/jme3test/helloworld/HelloEffects.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloEffects.java rename to engine/src/test/jme3test/helloworld/HelloEffects.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloInput.java b/engine/src/test/jme3test/helloworld/HelloInput.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloInput.java rename to engine/src/test/jme3test/helloworld/HelloInput.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloJME3.java b/engine/src/test/jme3test/helloworld/HelloJME3.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloJME3.java rename to engine/src/test/jme3test/helloworld/HelloJME3.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloLoop.java b/engine/src/test/jme3test/helloworld/HelloLoop.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloLoop.java rename to engine/src/test/jme3test/helloworld/HelloLoop.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloMaterial.java b/engine/src/test/jme3test/helloworld/HelloMaterial.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloMaterial.java rename to engine/src/test/jme3test/helloworld/HelloMaterial.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloNode.java b/engine/src/test/jme3test/helloworld/HelloNode.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloNode.java rename to engine/src/test/jme3test/helloworld/HelloNode.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloPhysics.java b/engine/src/test/jme3test/helloworld/HelloPhysics.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloPhysics.java rename to engine/src/test/jme3test/helloworld/HelloPhysics.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloPicking.java b/engine/src/test/jme3test/helloworld/HelloPicking.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloPicking.java rename to engine/src/test/jme3test/helloworld/HelloPicking.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloTerrain.java b/engine/src/test/jme3test/helloworld/HelloTerrain.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloTerrain.java rename to engine/src/test/jme3test/helloworld/HelloTerrain.java diff --git a/jme3-examples/src/main/java/jme3test/helloworld/HelloTerrainCollision.java b/engine/src/test/jme3test/helloworld/HelloTerrainCollision.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/helloworld/HelloTerrainCollision.java rename to engine/src/test/jme3test/helloworld/HelloTerrainCollision.java diff --git a/jme3-examples/src/main/java/jme3test/input/TestCameraNode.java b/engine/src/test/jme3test/input/TestCameraNode.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/input/TestCameraNode.java rename to engine/src/test/jme3test/input/TestCameraNode.java diff --git a/jme3-examples/src/main/java/jme3test/input/TestChaseCamera.java b/engine/src/test/jme3test/input/TestChaseCamera.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/input/TestChaseCamera.java rename to engine/src/test/jme3test/input/TestChaseCamera.java diff --git a/jme3-examples/src/main/java/jme3test/input/TestChaseCameraAppState.java b/engine/src/test/jme3test/input/TestChaseCameraAppState.java similarity index 97% rename from jme3-examples/src/main/java/jme3test/input/TestChaseCameraAppState.java rename to engine/src/test/jme3test/input/TestChaseCameraAppState.java index 38c3651cb..a3db00ff2 100644 --- a/jme3-examples/src/main/java/jme3test/input/TestChaseCameraAppState.java +++ b/engine/src/test/jme3test/input/TestChaseCameraAppState.java @@ -1,153 +1,153 @@ -/* - * 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 jme3test.input; - -import com.jme3.app.ChaseCameraAppState; -import com.jme3.app.FlyCamAppState; -import com.jme3.app.SimpleApplication; -import com.jme3.input.KeyInput; -import com.jme3.input.controls.ActionListener; -import com.jme3.input.controls.AnalogListener; -import com.jme3.input.controls.KeyTrigger; -import com.jme3.material.Material; -import com.jme3.math.FastMath; -import com.jme3.math.Quaternion; -import com.jme3.math.Vector3f; -import com.jme3.scene.Geometry; -import com.jme3.scene.shape.Quad; - -/** A 3rd-person chase camera orbits a target (teapot). - * Follow the teapot with WASD keys, rotate by dragging the mouse. */ -public class TestChaseCameraAppState extends SimpleApplication implements AnalogListener, ActionListener { - - private Geometry teaGeom; - - public static void main(String[] args) { - TestChaseCameraAppState app = new TestChaseCameraAppState(); - app.start(); - } - - public void simpleInitApp() { - // Load a teapot model - teaGeom = (Geometry) assetManager.loadModel("Models/Teapot/Teapot.obj"); - Material mat_tea = new Material(assetManager, "Common/MatDefs/Misc/ShowNormals.j3md"); - teaGeom.setMaterial(mat_tea); - rootNode.attachChild(teaGeom); - - // Load a floor model - Material mat_ground = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); - mat_ground.setTexture("ColorMap", assetManager.loadTexture("Interface/Logo/Monkey.jpg")); - Geometry ground = new Geometry("ground", new Quad(50, 50)); - ground.setLocalRotation(new Quaternion().fromAngleAxis(-FastMath.HALF_PI, Vector3f.UNIT_X)); - ground.setLocalTranslation(-25, -1, 25); - ground.setMaterial(mat_ground); - rootNode.attachChild(ground); - - //disable the flyCam - stateManager.detach(stateManager.getState(FlyCamAppState.class)); - - // Enable a chase cam - ChaseCameraAppState chaseCamAS = new ChaseCameraAppState(); - chaseCamAS.setTarget(teaGeom); - stateManager.attach(chaseCamAS); - - //Uncomment this to invert the camera's vertical rotation Axis - //chaseCamAS.setInvertVerticalAxis(true); - - //Uncomment this to invert the camera's horizontal rotation Axis - //chaseCamAS.setInvertHorizontalAxis(true); - - //Uncomment this to enable rotation when the middle mouse button is pressed (like Blender) - //WARNING : setting this trigger disable the rotation on right and left mouse button click - //chaseCamAS.setToggleRotationTrigger(new MouseButtonTrigger(MouseInput.BUTTON_MIDDLE)); - - //Uncomment this to set mutiple triggers to enable rotation of the cam - //Here space bar and middle mouse button - //chaseCamAS.setToggleRotationTrigger(new MouseButtonTrigger(MouseInput.BUTTON_MIDDLE),new KeyTrigger(KeyInput.KEY_SPACE)); - - //registering inputs for target's movement - registerInput(); - - } - - public void registerInput() { - inputManager.addMapping("moveForward", new KeyTrigger(KeyInput.KEY_UP), new KeyTrigger(KeyInput.KEY_W)); - inputManager.addMapping("moveBackward", new KeyTrigger(KeyInput.KEY_DOWN), new KeyTrigger(KeyInput.KEY_S)); - inputManager.addMapping("moveRight", new KeyTrigger(KeyInput.KEY_RIGHT), new KeyTrigger(KeyInput.KEY_D)); - inputManager.addMapping("moveLeft", new KeyTrigger(KeyInput.KEY_LEFT), new KeyTrigger(KeyInput.KEY_A)); - inputManager.addMapping("displayPosition", new KeyTrigger(KeyInput.KEY_P)); - inputManager.addListener(this, "moveForward", "moveBackward", "moveRight", "moveLeft"); - inputManager.addListener(this, "displayPosition"); - } - - public void onAnalog(String name, float value, float tpf) { - if (name.equals("moveForward")) { - teaGeom.move(0, 0, -5 * tpf); - } - if (name.equals("moveBackward")) { - teaGeom.move(0, 0, 5 * tpf); - } - if (name.equals("moveRight")) { - teaGeom.move(5 * tpf, 0, 0); - } - if (name.equals("moveLeft")) { - teaGeom.move(-5 * tpf, 0, 0); - - } - - } - - public void onAction(String name, boolean keyPressed, float tpf) { - if (name.equals("displayPosition") && keyPressed) { - teaGeom.move(10, 10, 10); - - } - } - - @Override - public void simpleUpdate(float tpf) { - super.simpleUpdate(tpf); - - // teaGeom.move(new Vector3f(0.001f, 0, 0)); - // pivot.rotate(0, 0.00001f, 0); - // rootNode.updateGeometricState(); - } -// public void update() { -// super.update(); -//// render the viewports -// float tpf = timer.getTimePerFrame(); -// state.getRootNode().rotate(0, 0.000001f, 0); -// stateManager.update(tpf); -// stateManager.render(renderManager); -// renderManager.render(tpf); -// } -} +/* + * 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 jme3test.input; + +import com.jme3.app.ChaseCameraAppState; +import com.jme3.app.FlyCamAppState; +import com.jme3.app.SimpleApplication; +import com.jme3.input.KeyInput; +import com.jme3.input.controls.ActionListener; +import com.jme3.input.controls.AnalogListener; +import com.jme3.input.controls.KeyTrigger; +import com.jme3.material.Material; +import com.jme3.math.FastMath; +import com.jme3.math.Quaternion; +import com.jme3.math.Vector3f; +import com.jme3.scene.Geometry; +import com.jme3.scene.shape.Quad; + +/** A 3rd-person chase camera orbits a target (teapot). + * Follow the teapot with WASD keys, rotate by dragging the mouse. */ +public class TestChaseCameraAppState extends SimpleApplication implements AnalogListener, ActionListener { + + private Geometry teaGeom; + + public static void main(String[] args) { + TestChaseCameraAppState app = new TestChaseCameraAppState(); + app.start(); + } + + public void simpleInitApp() { + // Load a teapot model + teaGeom = (Geometry) assetManager.loadModel("Models/Teapot/Teapot.obj"); + Material mat_tea = new Material(assetManager, "Common/MatDefs/Misc/ShowNormals.j3md"); + teaGeom.setMaterial(mat_tea); + rootNode.attachChild(teaGeom); + + // Load a floor model + Material mat_ground = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + mat_ground.setTexture("ColorMap", assetManager.loadTexture("Interface/Logo/Monkey.jpg")); + Geometry ground = new Geometry("ground", new Quad(50, 50)); + ground.setLocalRotation(new Quaternion().fromAngleAxis(-FastMath.HALF_PI, Vector3f.UNIT_X)); + ground.setLocalTranslation(-25, -1, 25); + ground.setMaterial(mat_ground); + rootNode.attachChild(ground); + + //disable the flyCam + stateManager.detach(stateManager.getState(FlyCamAppState.class)); + + // Enable a chase cam + ChaseCameraAppState chaseCamAS = new ChaseCameraAppState(); + chaseCamAS.setTarget(teaGeom); + stateManager.attach(chaseCamAS); + + //Uncomment this to invert the camera's vertical rotation Axis + //chaseCamAS.setInvertVerticalAxis(true); + + //Uncomment this to invert the camera's horizontal rotation Axis + //chaseCamAS.setInvertHorizontalAxis(true); + + //Uncomment this to enable rotation when the middle mouse button is pressed (like Blender) + //WARNING : setting this trigger disable the rotation on right and left mouse button click + //chaseCamAS.setToggleRotationTrigger(new MouseButtonTrigger(MouseInput.BUTTON_MIDDLE)); + + //Uncomment this to set mutiple triggers to enable rotation of the cam + //Here space bar and middle mouse button + //chaseCamAS.setToggleRotationTrigger(new MouseButtonTrigger(MouseInput.BUTTON_MIDDLE),new KeyTrigger(KeyInput.KEY_SPACE)); + + //registering inputs for target's movement + registerInput(); + + } + + public void registerInput() { + inputManager.addMapping("moveForward", new KeyTrigger(KeyInput.KEY_UP), new KeyTrigger(KeyInput.KEY_W)); + inputManager.addMapping("moveBackward", new KeyTrigger(KeyInput.KEY_DOWN), new KeyTrigger(KeyInput.KEY_S)); + inputManager.addMapping("moveRight", new KeyTrigger(KeyInput.KEY_RIGHT), new KeyTrigger(KeyInput.KEY_D)); + inputManager.addMapping("moveLeft", new KeyTrigger(KeyInput.KEY_LEFT), new KeyTrigger(KeyInput.KEY_A)); + inputManager.addMapping("displayPosition", new KeyTrigger(KeyInput.KEY_P)); + inputManager.addListener(this, "moveForward", "moveBackward", "moveRight", "moveLeft"); + inputManager.addListener(this, "displayPosition"); + } + + public void onAnalog(String name, float value, float tpf) { + if (name.equals("moveForward")) { + teaGeom.move(0, 0, -5 * tpf); + } + if (name.equals("moveBackward")) { + teaGeom.move(0, 0, 5 * tpf); + } + if (name.equals("moveRight")) { + teaGeom.move(5 * tpf, 0, 0); + } + if (name.equals("moveLeft")) { + teaGeom.move(-5 * tpf, 0, 0); + + } + + } + + public void onAction(String name, boolean keyPressed, float tpf) { + if (name.equals("displayPosition") && keyPressed) { + teaGeom.move(10, 10, 10); + + } + } + + @Override + public void simpleUpdate(float tpf) { + super.simpleUpdate(tpf); + + // teaGeom.move(new Vector3f(0.001f, 0, 0)); + // pivot.rotate(0, 0.00001f, 0); + // rootNode.updateGeometricState(); + } +// public void update() { +// super.update(); +//// render the viewports +// float tpf = timer.getTimePerFrame(); +// state.getRootNode().rotate(0, 0.000001f, 0); +// stateManager.update(tpf); +// stateManager.render(renderManager); +// renderManager.render(tpf); +// } +} diff --git a/jme3-examples/src/main/java/jme3test/input/TestControls.java b/engine/src/test/jme3test/input/TestControls.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/input/TestControls.java rename to engine/src/test/jme3test/input/TestControls.java diff --git a/jme3-examples/src/main/java/jme3test/input/TestJoystick.java b/engine/src/test/jme3test/input/TestJoystick.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/input/TestJoystick.java rename to engine/src/test/jme3test/input/TestJoystick.java diff --git a/jme3-examples/src/main/java/jme3test/input/combomoves/ComboMove.java b/engine/src/test/jme3test/input/combomoves/ComboMove.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/input/combomoves/ComboMove.java rename to engine/src/test/jme3test/input/combomoves/ComboMove.java diff --git a/jme3-examples/src/main/java/jme3test/input/combomoves/ComboMoveExecution.java b/engine/src/test/jme3test/input/combomoves/ComboMoveExecution.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/input/combomoves/ComboMoveExecution.java rename to engine/src/test/jme3test/input/combomoves/ComboMoveExecution.java diff --git a/jme3-examples/src/main/java/jme3test/input/combomoves/TestComboMoves.java b/engine/src/test/jme3test/input/combomoves/TestComboMoves.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/input/combomoves/TestComboMoves.java rename to engine/src/test/jme3test/input/combomoves/TestComboMoves.java diff --git a/jme3-examples/src/main/java/jme3test/light/ShadowTestUIManager.java b/engine/src/test/jme3test/light/ShadowTestUIManager.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/ShadowTestUIManager.java rename to engine/src/test/jme3test/light/ShadowTestUIManager.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestDirectionalLightShadow.java b/engine/src/test/jme3test/light/TestDirectionalLightShadow.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestDirectionalLightShadow.java rename to engine/src/test/jme3test/light/TestDirectionalLightShadow.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestEnvironmentMapping.java b/engine/src/test/jme3test/light/TestEnvironmentMapping.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestEnvironmentMapping.java rename to engine/src/test/jme3test/light/TestEnvironmentMapping.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestLightNode.java b/engine/src/test/jme3test/light/TestLightNode.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestLightNode.java rename to engine/src/test/jme3test/light/TestLightNode.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestLightRadius.java b/engine/src/test/jme3test/light/TestLightRadius.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestLightRadius.java rename to engine/src/test/jme3test/light/TestLightRadius.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestManyLights.java b/engine/src/test/jme3test/light/TestManyLights.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestManyLights.java rename to engine/src/test/jme3test/light/TestManyLights.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestPointLightShadows.java b/engine/src/test/jme3test/light/TestPointLightShadows.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestPointLightShadows.java rename to engine/src/test/jme3test/light/TestPointLightShadows.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestPssmShadow.java b/engine/src/test/jme3test/light/TestPssmShadow.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestPssmShadow.java rename to engine/src/test/jme3test/light/TestPssmShadow.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestShadow.java b/engine/src/test/jme3test/light/TestShadow.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestShadow.java rename to engine/src/test/jme3test/light/TestShadow.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestShadowsPerf.java b/engine/src/test/jme3test/light/TestShadowsPerf.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestShadowsPerf.java rename to engine/src/test/jme3test/light/TestShadowsPerf.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestSimpleLighting.java b/engine/src/test/jme3test/light/TestSimpleLighting.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestSimpleLighting.java rename to engine/src/test/jme3test/light/TestSimpleLighting.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestSpotLight.java b/engine/src/test/jme3test/light/TestSpotLight.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestSpotLight.java rename to engine/src/test/jme3test/light/TestSpotLight.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestSpotLightShadows.java b/engine/src/test/jme3test/light/TestSpotLightShadows.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestSpotLightShadows.java rename to engine/src/test/jme3test/light/TestSpotLightShadows.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestSpotLightTerrain.java b/engine/src/test/jme3test/light/TestSpotLightTerrain.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestSpotLightTerrain.java rename to engine/src/test/jme3test/light/TestSpotLightTerrain.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestTangentGen.java b/engine/src/test/jme3test/light/TestTangentGen.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestTangentGen.java rename to engine/src/test/jme3test/light/TestTangentGen.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestTangentGenBadModels.java b/engine/src/test/jme3test/light/TestTangentGenBadModels.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestTangentGenBadModels.java rename to engine/src/test/jme3test/light/TestTangentGenBadModels.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestTangentGenBadUV.java b/engine/src/test/jme3test/light/TestTangentGenBadUV.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestTangentGenBadUV.java rename to engine/src/test/jme3test/light/TestTangentGenBadUV.java diff --git a/jme3-examples/src/main/java/jme3test/light/TestTransparentShadow.java b/engine/src/test/jme3test/light/TestTransparentShadow.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/light/TestTransparentShadow.java rename to engine/src/test/jme3test/light/TestTransparentShadow.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestBumpModel.java b/engine/src/test/jme3test/material/TestBumpModel.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestBumpModel.java rename to engine/src/test/jme3test/material/TestBumpModel.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestColoredTexture.java b/engine/src/test/jme3test/material/TestColoredTexture.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestColoredTexture.java rename to engine/src/test/jme3test/material/TestColoredTexture.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestMaterialCompare.java b/engine/src/test/jme3test/material/TestMaterialCompare.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestMaterialCompare.java rename to engine/src/test/jme3test/material/TestMaterialCompare.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestNormalMapping.java b/engine/src/test/jme3test/material/TestNormalMapping.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestNormalMapping.java rename to engine/src/test/jme3test/material/TestNormalMapping.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestParallax.java b/engine/src/test/jme3test/material/TestParallax.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestParallax.java rename to engine/src/test/jme3test/material/TestParallax.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestShaderNodes.java b/engine/src/test/jme3test/material/TestShaderNodes.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestShaderNodes.java rename to engine/src/test/jme3test/material/TestShaderNodes.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestSimpleBumps.java b/engine/src/test/jme3test/material/TestSimpleBumps.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestSimpleBumps.java rename to engine/src/test/jme3test/material/TestSimpleBumps.java diff --git a/jme3-examples/src/main/java/jme3test/material/TestUnshadedModel.java b/engine/src/test/jme3test/material/TestUnshadedModel.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/material/TestUnshadedModel.java rename to engine/src/test/jme3test/material/TestUnshadedModel.java diff --git a/jme3-examples/src/main/java/jme3test/math/TestHalfFloat.java b/engine/src/test/jme3test/math/TestHalfFloat.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/math/TestHalfFloat.java rename to engine/src/test/jme3test/math/TestHalfFloat.java diff --git a/jme3-examples/src/main/java/jme3test/model/TestHoverTank.java b/engine/src/test/jme3test/model/TestHoverTank.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/TestHoverTank.java rename to engine/src/test/jme3test/model/TestHoverTank.java diff --git a/jme3-examples/src/main/java/jme3test/model/TestMonkeyHead.java b/engine/src/test/jme3test/model/TestMonkeyHead.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/TestMonkeyHead.java rename to engine/src/test/jme3test/model/TestMonkeyHead.java diff --git a/jme3-examples/src/main/java/jme3test/model/TestObjLoading.java b/engine/src/test/jme3test/model/TestObjLoading.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/TestObjLoading.java rename to engine/src/test/jme3test/model/TestObjLoading.java diff --git a/jme3-examples/src/main/java/jme3test/model/TestOgreLoading.java b/engine/src/test/jme3test/model/TestOgreLoading.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/TestOgreLoading.java rename to engine/src/test/jme3test/model/TestOgreLoading.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestAnimBlendBug.java b/engine/src/test/jme3test/model/anim/TestAnimBlendBug.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestAnimBlendBug.java rename to engine/src/test/jme3test/model/anim/TestAnimBlendBug.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestAnimationFactory.java b/engine/src/test/jme3test/model/anim/TestAnimationFactory.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestAnimationFactory.java rename to engine/src/test/jme3test/model/anim/TestAnimationFactory.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestBlenderAnim.java b/engine/src/test/jme3test/model/anim/TestBlenderAnim.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestBlenderAnim.java rename to engine/src/test/jme3test/model/anim/TestBlenderAnim.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestBlenderObjectAnim.java b/engine/src/test/jme3test/model/anim/TestBlenderObjectAnim.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestBlenderObjectAnim.java rename to engine/src/test/jme3test/model/anim/TestBlenderObjectAnim.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestCustomAnim.java b/engine/src/test/jme3test/model/anim/TestCustomAnim.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestCustomAnim.java rename to engine/src/test/jme3test/model/anim/TestCustomAnim.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestHWSkinning.java b/engine/src/test/jme3test/model/anim/TestHWSkinning.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestHWSkinning.java rename to engine/src/test/jme3test/model/anim/TestHWSkinning.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestOgreAnim.java b/engine/src/test/jme3test/model/anim/TestOgreAnim.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestOgreAnim.java rename to engine/src/test/jme3test/model/anim/TestOgreAnim.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestOgreComplexAnim.java b/engine/src/test/jme3test/model/anim/TestOgreComplexAnim.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestOgreComplexAnim.java rename to engine/src/test/jme3test/model/anim/TestOgreComplexAnim.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestSkeletonControlRefresh.java b/engine/src/test/jme3test/model/anim/TestSkeletonControlRefresh.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestSkeletonControlRefresh.java rename to engine/src/test/jme3test/model/anim/TestSkeletonControlRefresh.java diff --git a/jme3-examples/src/main/java/jme3test/model/anim/TestSpatialAnim.java b/engine/src/test/jme3test/model/anim/TestSpatialAnim.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/anim/TestSpatialAnim.java rename to engine/src/test/jme3test/model/anim/TestSpatialAnim.java diff --git a/jme3-examples/src/main/java/jme3test/model/shape/TestBillboard.java b/engine/src/test/jme3test/model/shape/TestBillboard.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/shape/TestBillboard.java rename to engine/src/test/jme3test/model/shape/TestBillboard.java diff --git a/jme3-examples/src/main/java/jme3test/model/shape/TestBox.java b/engine/src/test/jme3test/model/shape/TestBox.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/shape/TestBox.java rename to engine/src/test/jme3test/model/shape/TestBox.java diff --git a/jme3-examples/src/main/java/jme3test/model/shape/TestCustomMesh.java b/engine/src/test/jme3test/model/shape/TestCustomMesh.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/shape/TestCustomMesh.java rename to engine/src/test/jme3test/model/shape/TestCustomMesh.java diff --git a/jme3-examples/src/main/java/jme3test/model/shape/TestCylinder.java b/engine/src/test/jme3test/model/shape/TestCylinder.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/shape/TestCylinder.java rename to engine/src/test/jme3test/model/shape/TestCylinder.java diff --git a/jme3-examples/src/main/java/jme3test/model/shape/TestDebugShapes.java b/engine/src/test/jme3test/model/shape/TestDebugShapes.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/shape/TestDebugShapes.java rename to engine/src/test/jme3test/model/shape/TestDebugShapes.java diff --git a/jme3-examples/src/main/java/jme3test/model/shape/TestExpandingTorus.java b/engine/src/test/jme3test/model/shape/TestExpandingTorus.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/shape/TestExpandingTorus.java rename to engine/src/test/jme3test/model/shape/TestExpandingTorus.java diff --git a/jme3-examples/src/main/java/jme3test/model/shape/TestSphere.java b/engine/src/test/jme3test/model/shape/TestSphere.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/model/shape/TestSphere.java rename to engine/src/test/jme3test/model/shape/TestSphere.java diff --git a/jme3-examples/src/main/java/jme3test/network/MovingAverage.java b/engine/src/test/jme3test/network/MovingAverage.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/MovingAverage.java rename to engine/src/test/jme3test/network/MovingAverage.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestChatClient.java b/engine/src/test/jme3test/network/TestChatClient.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestChatClient.java rename to engine/src/test/jme3test/network/TestChatClient.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestChatServer.java b/engine/src/test/jme3test/network/TestChatServer.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestChatServer.java rename to engine/src/test/jme3test/network/TestChatServer.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestLatency.java b/engine/src/test/jme3test/network/TestLatency.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestLatency.java rename to engine/src/test/jme3test/network/TestLatency.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestMessages.java b/engine/src/test/jme3test/network/TestMessages.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestMessages.java rename to engine/src/test/jme3test/network/TestMessages.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestNetworkStress.java b/engine/src/test/jme3test/network/TestNetworkStress.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestNetworkStress.java rename to engine/src/test/jme3test/network/TestNetworkStress.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestRemoteCall.java b/engine/src/test/jme3test/network/TestRemoteCall.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestRemoteCall.java rename to engine/src/test/jme3test/network/TestRemoteCall.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestSerialization.java b/engine/src/test/jme3test/network/TestSerialization.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestSerialization.java rename to engine/src/test/jme3test/network/TestSerialization.java diff --git a/jme3-examples/src/main/java/jme3test/network/TestThroughput.java b/engine/src/test/jme3test/network/TestThroughput.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/network/TestThroughput.java rename to engine/src/test/jme3test/network/TestThroughput.java diff --git a/jme3-examples/src/main/java/jme3test/niftygui/TestNiftyExamples.java b/engine/src/test/jme3test/niftygui/TestNiftyExamples.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/niftygui/TestNiftyExamples.java rename to engine/src/test/jme3test/niftygui/TestNiftyExamples.java diff --git a/jme3-examples/src/main/java/jme3test/niftygui/TestNiftyGui.java b/engine/src/test/jme3test/niftygui/TestNiftyGui.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/niftygui/TestNiftyGui.java rename to engine/src/test/jme3test/niftygui/TestNiftyGui.java diff --git a/jme3-examples/src/main/java/jme3test/niftygui/TestNiftyToMesh.java b/engine/src/test/jme3test/niftygui/TestNiftyToMesh.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/niftygui/TestNiftyToMesh.java rename to engine/src/test/jme3test/niftygui/TestNiftyToMesh.java diff --git a/jme3-examples/src/main/java/jme3test/post/BloomUI.java b/engine/src/test/jme3test/post/BloomUI.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/BloomUI.java rename to engine/src/test/jme3test/post/BloomUI.java diff --git a/jme3-examples/src/main/java/jme3test/post/LightScatteringUI.java b/engine/src/test/jme3test/post/LightScatteringUI.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/LightScatteringUI.java rename to engine/src/test/jme3test/post/LightScatteringUI.java diff --git a/jme3-examples/src/main/java/jme3test/post/SSAOUI.java b/engine/src/test/jme3test/post/SSAOUI.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/SSAOUI.java rename to engine/src/test/jme3test/post/SSAOUI.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestBloom.java b/engine/src/test/jme3test/post/TestBloom.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestBloom.java rename to engine/src/test/jme3test/post/TestBloom.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestCartoonEdge.java b/engine/src/test/jme3test/post/TestCartoonEdge.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestCartoonEdge.java rename to engine/src/test/jme3test/post/TestCartoonEdge.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestCrossHatch.java b/engine/src/test/jme3test/post/TestCrossHatch.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestCrossHatch.java rename to engine/src/test/jme3test/post/TestCrossHatch.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestDepthOfField.java b/engine/src/test/jme3test/post/TestDepthOfField.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestDepthOfField.java rename to engine/src/test/jme3test/post/TestDepthOfField.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestFBOPassthrough.java b/engine/src/test/jme3test/post/TestFBOPassthrough.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestFBOPassthrough.java rename to engine/src/test/jme3test/post/TestFBOPassthrough.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestFog.java b/engine/src/test/jme3test/post/TestFog.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestFog.java rename to engine/src/test/jme3test/post/TestFog.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestHDR.java b/engine/src/test/jme3test/post/TestHDR.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestHDR.java rename to engine/src/test/jme3test/post/TestHDR.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestLightScattering.java b/engine/src/test/jme3test/post/TestLightScattering.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestLightScattering.java rename to engine/src/test/jme3test/post/TestLightScattering.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestMultiRenderTarget.java b/engine/src/test/jme3test/post/TestMultiRenderTarget.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestMultiRenderTarget.java rename to engine/src/test/jme3test/post/TestMultiRenderTarget.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestMultiViewsFilters.java b/engine/src/test/jme3test/post/TestMultiViewsFilters.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestMultiViewsFilters.java rename to engine/src/test/jme3test/post/TestMultiViewsFilters.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestMultiplesFilters.java b/engine/src/test/jme3test/post/TestMultiplesFilters.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestMultiplesFilters.java rename to engine/src/test/jme3test/post/TestMultiplesFilters.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestPostFilters.java b/engine/src/test/jme3test/post/TestPostFilters.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestPostFilters.java rename to engine/src/test/jme3test/post/TestPostFilters.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestPostFiltersCompositing.java b/engine/src/test/jme3test/post/TestPostFiltersCompositing.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestPostFiltersCompositing.java rename to engine/src/test/jme3test/post/TestPostFiltersCompositing.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestPosterization.java b/engine/src/test/jme3test/post/TestPosterization.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestPosterization.java rename to engine/src/test/jme3test/post/TestPosterization.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestRenderToCubemap.java b/engine/src/test/jme3test/post/TestRenderToCubemap.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestRenderToCubemap.java rename to engine/src/test/jme3test/post/TestRenderToCubemap.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestRenderToMemory.java b/engine/src/test/jme3test/post/TestRenderToMemory.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestRenderToMemory.java rename to engine/src/test/jme3test/post/TestRenderToMemory.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestRenderToTexture.java b/engine/src/test/jme3test/post/TestRenderToTexture.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestRenderToTexture.java rename to engine/src/test/jme3test/post/TestRenderToTexture.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestSSAO.java b/engine/src/test/jme3test/post/TestSSAO.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestSSAO.java rename to engine/src/test/jme3test/post/TestSSAO.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestTransparentCartoonEdge.java b/engine/src/test/jme3test/post/TestTransparentCartoonEdge.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestTransparentCartoonEdge.java rename to engine/src/test/jme3test/post/TestTransparentCartoonEdge.java diff --git a/jme3-examples/src/main/java/jme3test/post/TestTransparentSSAO.java b/engine/src/test/jme3test/post/TestTransparentSSAO.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/post/TestTransparentSSAO.java rename to engine/src/test/jme3test/post/TestTransparentSSAO.java diff --git a/jme3-examples/src/main/java/jme3test/renderer/TestDepthFuncChange.java b/engine/src/test/jme3test/renderer/TestDepthFuncChange.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/renderer/TestDepthFuncChange.java rename to engine/src/test/jme3test/renderer/TestDepthFuncChange.java diff --git a/jme3-examples/src/main/java/jme3test/renderer/TestMultiViews.java b/engine/src/test/jme3test/renderer/TestMultiViews.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/renderer/TestMultiViews.java rename to engine/src/test/jme3test/renderer/TestMultiViews.java diff --git a/jme3-examples/src/main/java/jme3test/renderer/TestParallelProjection.java b/engine/src/test/jme3test/renderer/TestParallelProjection.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/renderer/TestParallelProjection.java rename to engine/src/test/jme3test/renderer/TestParallelProjection.java diff --git a/jme3-examples/src/main/java/jme3test/scene/TestSceneLoading.java b/engine/src/test/jme3test/scene/TestSceneLoading.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/scene/TestSceneLoading.java rename to engine/src/test/jme3test/scene/TestSceneLoading.java diff --git a/jme3-examples/src/main/java/jme3test/scene/TestUserData.java b/engine/src/test/jme3test/scene/TestUserData.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/scene/TestUserData.java rename to engine/src/test/jme3test/scene/TestUserData.java diff --git a/jme3-examples/src/main/java/jme3test/stress/TestBatchLod.java b/engine/src/test/jme3test/stress/TestBatchLod.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/stress/TestBatchLod.java rename to engine/src/test/jme3test/stress/TestBatchLod.java diff --git a/jme3-examples/src/main/java/jme3test/stress/TestLeakingGL.java b/engine/src/test/jme3test/stress/TestLeakingGL.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/stress/TestLeakingGL.java rename to engine/src/test/jme3test/stress/TestLeakingGL.java diff --git a/jme3-examples/src/main/java/jme3test/stress/TestLodGeneration.java b/engine/src/test/jme3test/stress/TestLodGeneration.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/stress/TestLodGeneration.java rename to engine/src/test/jme3test/stress/TestLodGeneration.java diff --git a/jme3-examples/src/main/java/jme3test/stress/TestLodStress.java b/engine/src/test/jme3test/stress/TestLodStress.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/stress/TestLodStress.java rename to engine/src/test/jme3test/stress/TestLodStress.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainFractalGridTest.java b/engine/src/test/jme3test/terrain/TerrainFractalGridTest.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainFractalGridTest.java rename to engine/src/test/jme3test/terrain/TerrainFractalGridTest.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainGridAlphaMapTest.java b/engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainGridAlphaMapTest.java rename to engine/src/test/jme3test/terrain/TerrainGridAlphaMapTest.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainGridSerializationTest.java b/engine/src/test/jme3test/terrain/TerrainGridSerializationTest.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainGridSerializationTest.java rename to engine/src/test/jme3test/terrain/TerrainGridSerializationTest.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainGridTest.java b/engine/src/test/jme3test/terrain/TerrainGridTest.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainGridTest.java rename to engine/src/test/jme3test/terrain/TerrainGridTest.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainGridTileLoaderTest.java b/engine/src/test/jme3test/terrain/TerrainGridTileLoaderTest.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainGridTileLoaderTest.java rename to engine/src/test/jme3test/terrain/TerrainGridTileLoaderTest.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainTest.java b/engine/src/test/jme3test/terrain/TerrainTest.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainTest.java rename to engine/src/test/jme3test/terrain/TerrainTest.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainTestAdvanced.java b/engine/src/test/jme3test/terrain/TerrainTestAdvanced.java similarity index 76% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainTestAdvanced.java rename to engine/src/test/jme3test/terrain/TerrainTestAdvanced.java index 21f8435de..afd83ac31 100644 --- a/jme3-examples/src/main/java/jme3test/terrain/TerrainTestAdvanced.java +++ b/engine/src/test/jme3test/terrain/TerrainTestAdvanced.java @@ -32,6 +32,7 @@ package jme3test.terrain; import com.jme3.app.SimpleApplication; +import com.jme3.asset.TextureKey; import com.jme3.bounding.BoundingBox; import com.jme3.font.BitmapText; import com.jme3.input.KeyInput; @@ -72,9 +73,14 @@ public class TerrainTestAdvanced extends SimpleApplication { protected BitmapText hintText; PointLight pl; Geometry lightMdl; - private float grassScale = 64; private float dirtScale = 16; - private float rockScale = 128; + private float darkRockScale = 32; + private float pinkRockScale = 32; + private float riverRockScale = 80; + private float grassScale = 32; + private float brickScale = 128; + private float roadScale = 200; + public static void main(String[] args) { TerrainTestAdvanced app = new TerrainTestAdvanced(); @@ -105,7 +111,8 @@ public class TerrainTestAdvanced extends SimpleApplication { // this material also supports 'AlphaMap_2', so you can get up to 12 diffuse textures // HEIGHTMAP image (for the terrain heightmap) - Texture heightMapImage = assetManager.loadTexture("Textures/Terrain/splat/mountains512.png"); + TextureKey hmKey = new TextureKey("Textures/Terrain/splat/mountains512.png", false); + Texture heightMapImage = assetManager.loadTexture(hmKey); // DIRT texture, Diffuse textures 0 to 3 use the first AlphaMap Texture dirt = assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg"); @@ -113,43 +120,62 @@ public class TerrainTestAdvanced extends SimpleApplication { matTerrain.setTexture("DiffuseMap", dirt); matTerrain.setFloat("DiffuseMap_0_scale", dirtScale); + // DARK ROCK texture + Texture darkRock = assetManager.loadTexture("Textures/Terrain/Rock2/rock.jpg"); + darkRock.setWrap(WrapMode.Repeat); + matTerrain.setTexture("DiffuseMap_1", darkRock); + matTerrain.setFloat("DiffuseMap_1_scale", darkRockScale); + + // PINK ROCK texture + Texture pinkRock = assetManager.loadTexture("Textures/Terrain/Rock/Rock.PNG"); + pinkRock.setWrap(WrapMode.Repeat); + matTerrain.setTexture("DiffuseMap_2", pinkRock); + matTerrain.setFloat("DiffuseMap_2_scale", pinkRockScale); + + // RIVER ROCK texture, this texture will use the next alphaMap: AlphaMap_1 + Texture riverRock = assetManager.loadTexture("Textures/Terrain/Pond/Pond.jpg"); + riverRock.setWrap(WrapMode.Repeat); + matTerrain.setTexture("DiffuseMap_3", riverRock); + matTerrain.setFloat("DiffuseMap_3_scale", riverRockScale); + // GRASS texture Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg"); grass.setWrap(WrapMode.Repeat); - matTerrain.setTexture("DiffuseMap_1", grass); - matTerrain.setFloat("DiffuseMap_1_scale", grassScale); - - // ROCK texture - Texture rock = assetManager.loadTexture("Textures/Terrain/splat/road.jpg"); - rock.setWrap(WrapMode.Repeat); - matTerrain.setTexture("DiffuseMap_2", rock); - matTerrain.setFloat("DiffuseMap_2_scale", rockScale); + matTerrain.setTexture("DiffuseMap_4", grass); + matTerrain.setFloat("DiffuseMap_4_scale", grassScale); // BRICK texture Texture brick = assetManager.loadTexture("Textures/Terrain/BrickWall/BrickWall.jpg"); brick.setWrap(WrapMode.Repeat); - matTerrain.setTexture("DiffuseMap_3", brick); - matTerrain.setFloat("DiffuseMap_3_scale", rockScale); + matTerrain.setTexture("DiffuseMap_5", brick); + matTerrain.setFloat("DiffuseMap_5_scale", brickScale); + + // ROAD texture + Texture road = assetManager.loadTexture("Textures/Terrain/splat/road.jpg"); + road.setWrap(WrapMode.Repeat); + matTerrain.setTexture("DiffuseMap_6", road); + matTerrain.setFloat("DiffuseMap_6_scale", roadScale); - // RIVER ROCK texture, this texture will use the next alphaMap: AlphaMap_1 - Texture riverRock = assetManager.loadTexture("Textures/Terrain/Pond/Pond.jpg"); - riverRock.setWrap(WrapMode.Repeat); - matTerrain.setTexture("DiffuseMap_4", riverRock); - matTerrain.setFloat("DiffuseMap_4_scale", rockScale); + // diffuse textures 0 to 3 use AlphaMap // diffuse textures 4 to 7 use AlphaMap_1 // diffuse textures 8 to 11 use AlphaMap_2 - Texture normalMap0 = assetManager.loadTexture("Textures/Terrain/splat/grass_normal.jpg"); - normalMap0.setWrap(WrapMode.Repeat); - Texture normalMap1 = assetManager.loadTexture("Textures/Terrain/splat/dirt_normal.png"); - normalMap1.setWrap(WrapMode.Repeat); - Texture normalMap2 = assetManager.loadTexture("Textures/Terrain/splat/road_normal.png"); - normalMap2.setWrap(WrapMode.Repeat); - //matTerrain.setTexture("NormalMap", normalMap0); - matTerrain.setTexture("NormalMap_1", normalMap2); - matTerrain.setTexture("NormalMap_2", normalMap2); - matTerrain.setTexture("NormalMap_4", normalMap2); + + // NORMAL MAPS + Texture normalMapDirt = assetManager.loadTexture("Textures/Terrain/splat/dirt_normal.png"); + normalMapDirt.setWrap(WrapMode.Repeat); + Texture normalMapPinkRock = assetManager.loadTexture("Textures/Terrain/Rock/Rock_normal.png"); + normalMapPinkRock.setWrap(WrapMode.Repeat); + Texture normalMapGrass = assetManager.loadTexture("Textures/Terrain/splat/grass_normal.jpg"); + normalMapGrass.setWrap(WrapMode.Repeat); + Texture normalMapRoad = assetManager.loadTexture("Textures/Terrain/splat/road_normal.png"); + normalMapRoad.setWrap(WrapMode.Repeat); + matTerrain.setTexture("NormalMap", normalMapDirt); + matTerrain.setTexture("NormalMap_1", normalMapPinkRock); + matTerrain.setTexture("NormalMap_2", normalMapPinkRock); + matTerrain.setTexture("NormalMap_4", normalMapGrass); + matTerrain.setTexture("NormalMap_6", normalMapRoad); // WIREFRAME material (used to debug the terrain, only useful for this test case) @@ -162,7 +188,7 @@ public class TerrainTestAdvanced extends SimpleApplication { // CREATE HEIGHTMAP AbstractHeightMap heightmap = null; try { - heightmap = new ImageBasedHeightMap(heightMapImage.getImage(), 0.5f); + heightmap = new ImageBasedHeightMap(heightMapImage.getImage(), 0.3f); heightmap.load(); heightmap.smooth(0.9f, 1); @@ -177,7 +203,7 @@ public class TerrainTestAdvanced extends SimpleApplication { /** * Optimal terrain patch size is 65 (64x64). * The total size is up to you. At 1025 it ran fine for me (200+FPS), however at - * size=2049, it got really slow. But that is a jump from 2 million to 8 million triangles... + * size=2049 it got really slow. But that is a jump from 2 million to 8 million triangles... */ terrain = new TerrainQuad("terrain", 65, 513, heightmap.getHeightMap());//, new LodPerspectiveCalculatorFactory(getCamera(), 4)); // add this in to see it use entropy for LOD calculations TerrainLodControl control = new TerrainLodControl(terrain, getCamera()); @@ -239,19 +265,27 @@ public class TerrainTestAdvanced extends SimpleApplication { matTerrain.setBoolean("useTriPlanarMapping", true); // planar textures don't use the mesh's texture coordinates but real world coordinates, // so we need to convert these texture coordinate scales into real world scales so it looks - // the same when we switch to/from tr-planar mode - matTerrain.setFloat("DiffuseMap_0_scale", 1f / (float) (512f / grassScale)); - matTerrain.setFloat("DiffuseMap_1_scale", 1f / (float) (512f / dirtScale)); - matTerrain.setFloat("DiffuseMap_2_scale", 1f / (float) (512f / rockScale)); - matTerrain.setFloat("DiffuseMap_3_scale", 1f / (float) (512f / rockScale)); - matTerrain.setFloat("DiffuseMap_4_scale", 1f / (float) (512f / rockScale)); + // the same when we switch to/from tr-planar mode (1024f is the alphamap size) + matTerrain.setFloat("DiffuseMap_0_scale", 1f / (float) (1024f / dirtScale)); + matTerrain.setFloat("DiffuseMap_1_scale", 1f / (float) (1024f / darkRockScale)); + matTerrain.setFloat("DiffuseMap_2_scale", 1f / (float) (1024f / pinkRockScale)); + matTerrain.setFloat("DiffuseMap_3_scale", 1f / (float) (1024f / riverRockScale)); + matTerrain.setFloat("DiffuseMap_4_scale", 1f / (float) (1024f / grassScale)); + matTerrain.setFloat("DiffuseMap_5_scale", 1f / (float) (1024f / brickScale)); + matTerrain.setFloat("DiffuseMap_6_scale", 1f / (float) (1024f / roadScale)); } else { matTerrain.setBoolean("useTriPlanarMapping", false); - matTerrain.setFloat("DiffuseMap_0_scale", grassScale); - matTerrain.setFloat("DiffuseMap_1_scale", dirtScale); - matTerrain.setFloat("DiffuseMap_2_scale", rockScale); - matTerrain.setFloat("DiffuseMap_3_scale", rockScale); - matTerrain.setFloat("DiffuseMap_4_scale", rockScale); + + matTerrain.setFloat("DiffuseMap_0_scale", dirtScale); + matTerrain.setFloat("DiffuseMap_1_scale", darkRockScale); + matTerrain.setFloat("DiffuseMap_2_scale", pinkRockScale); + matTerrain.setFloat("DiffuseMap_3_scale", riverRockScale); + matTerrain.setFloat("DiffuseMap_4_scale", grassScale); + matTerrain.setFloat("DiffuseMap_5_scale", brickScale); + matTerrain.setFloat("DiffuseMap_6_scale", roadScale); + + + } } if (name.equals("DetachControl") && !pressed) { TerrainLodControl control = terrain.getControl(TerrainLodControl.class); diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainTestAndroid.java b/engine/src/test/jme3test/terrain/TerrainTestAndroid.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainTestAndroid.java rename to engine/src/test/jme3test/terrain/TerrainTestAndroid.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainTestCollision.java b/engine/src/test/jme3test/terrain/TerrainTestCollision.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainTestCollision.java rename to engine/src/test/jme3test/terrain/TerrainTestCollision.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainTestModifyHeight.java b/engine/src/test/jme3test/terrain/TerrainTestModifyHeight.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainTestModifyHeight.java rename to engine/src/test/jme3test/terrain/TerrainTestModifyHeight.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainTestReadWrite.java b/engine/src/test/jme3test/terrain/TerrainTestReadWrite.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainTestReadWrite.java rename to engine/src/test/jme3test/terrain/TerrainTestReadWrite.java diff --git a/jme3-examples/src/main/java/jme3test/terrain/TerrainTestTile.java b/engine/src/test/jme3test/terrain/TerrainTestTile.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/terrain/TerrainTestTile.java rename to engine/src/test/jme3test/terrain/TerrainTestTile.java diff --git a/jme3-examples/src/main/java/jme3test/texture/TestImageRaster.java b/engine/src/test/jme3test/texture/TestImageRaster.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/texture/TestImageRaster.java rename to engine/src/test/jme3test/texture/TestImageRaster.java diff --git a/jme3-examples/src/main/java/jme3test/texture/TestSkyLoading.java b/engine/src/test/jme3test/texture/TestSkyLoading.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/texture/TestSkyLoading.java rename to engine/src/test/jme3test/texture/TestSkyLoading.java diff --git a/jme3-examples/src/main/java/jme3test/texture/TestTexture3D.java b/engine/src/test/jme3test/texture/TestTexture3D.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/texture/TestTexture3D.java rename to engine/src/test/jme3test/texture/TestTexture3D.java diff --git a/jme3-examples/src/main/java/jme3test/texture/TestTexture3DLoading.java b/engine/src/test/jme3test/texture/TestTexture3DLoading.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/texture/TestTexture3DLoading.java rename to engine/src/test/jme3test/texture/TestTexture3DLoading.java diff --git a/jme3-examples/src/main/java/jme3test/texture/TestTextureArray.java b/engine/src/test/jme3test/texture/TestTextureArray.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/texture/TestTextureArray.java rename to engine/src/test/jme3test/texture/TestTextureArray.java diff --git a/jme3-examples/src/main/resources/jme3test/texture/UnshadedArray.frag b/engine/src/test/jme3test/texture/UnshadedArray.frag similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/UnshadedArray.frag rename to engine/src/test/jme3test/texture/UnshadedArray.frag diff --git a/jme3-examples/src/main/resources/jme3test/texture/UnshadedArray.j3md b/engine/src/test/jme3test/texture/UnshadedArray.j3md similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/UnshadedArray.j3md rename to engine/src/test/jme3test/texture/UnshadedArray.j3md diff --git a/jme3-examples/src/main/resources/jme3test/texture/UnshadedArray.vert b/engine/src/test/jme3test/texture/UnshadedArray.vert similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/UnshadedArray.vert rename to engine/src/test/jme3test/texture/UnshadedArray.vert diff --git a/jme3-examples/src/main/resources/jme3test/texture/tex3D.frag b/engine/src/test/jme3test/texture/tex3D.frag similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/tex3D.frag rename to engine/src/test/jme3test/texture/tex3D.frag diff --git a/jme3-examples/src/main/resources/jme3test/texture/tex3D.j3md b/engine/src/test/jme3test/texture/tex3D.j3md similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/tex3D.j3md rename to engine/src/test/jme3test/texture/tex3D.j3md diff --git a/jme3-examples/src/main/resources/jme3test/texture/tex3D.vert b/engine/src/test/jme3test/texture/tex3D.vert similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/tex3D.vert rename to engine/src/test/jme3test/texture/tex3D.vert diff --git a/jme3-examples/src/main/resources/jme3test/texture/tex3DThumb.frag b/engine/src/test/jme3test/texture/tex3DThumb.frag similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/tex3DThumb.frag rename to engine/src/test/jme3test/texture/tex3DThumb.frag diff --git a/jme3-examples/src/main/resources/jme3test/texture/tex3DThumb.j3md b/engine/src/test/jme3test/texture/tex3DThumb.j3md similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/tex3DThumb.j3md rename to engine/src/test/jme3test/texture/tex3DThumb.j3md diff --git a/jme3-examples/src/main/resources/jme3test/texture/tex3DThumb.vert b/engine/src/test/jme3test/texture/tex3DThumb.vert similarity index 100% rename from jme3-examples/src/main/resources/jme3test/texture/tex3DThumb.vert rename to engine/src/test/jme3test/texture/tex3DThumb.vert diff --git a/jme3-examples/src/main/java/jme3test/tools/TestSaveGame.java b/engine/src/test/jme3test/tools/TestSaveGame.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/tools/TestSaveGame.java rename to engine/src/test/jme3test/tools/TestSaveGame.java diff --git a/jme3-examples/src/main/java/jme3test/tools/TestTextureAtlas.java b/engine/src/test/jme3test/tools/TestTextureAtlas.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/tools/TestTextureAtlas.java rename to engine/src/test/jme3test/tools/TestTextureAtlas.java diff --git a/jme3-examples/src/main/java/jme3test/water/TestMultiPostWater.java b/engine/src/test/jme3test/water/TestMultiPostWater.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/water/TestMultiPostWater.java rename to engine/src/test/jme3test/water/TestMultiPostWater.java diff --git a/jme3-examples/src/main/java/jme3test/water/TestPostWater.java b/engine/src/test/jme3test/water/TestPostWater.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/water/TestPostWater.java rename to engine/src/test/jme3test/water/TestPostWater.java diff --git a/jme3-examples/src/main/java/jme3test/water/TestPostWaterLake.java b/engine/src/test/jme3test/water/TestPostWaterLake.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/water/TestPostWaterLake.java rename to engine/src/test/jme3test/water/TestPostWaterLake.java diff --git a/jme3-examples/src/main/java/jme3test/water/TestSceneWater.java b/engine/src/test/jme3test/water/TestSceneWater.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/water/TestSceneWater.java rename to engine/src/test/jme3test/water/TestSceneWater.java diff --git a/jme3-examples/src/main/java/jme3test/water/TestSimpleWater.java b/engine/src/test/jme3test/water/TestSimpleWater.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/water/TestSimpleWater.java rename to engine/src/test/jme3test/water/TestSimpleWater.java diff --git a/jme3-examples/src/main/java/jme3test/water/WaterUI.java b/engine/src/test/jme3test/water/WaterUI.java similarity index 100% rename from jme3-examples/src/main/java/jme3test/water/WaterUI.java rename to engine/src/test/jme3test/water/WaterUI.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/Converter.java b/engine/src/tools/jme3tools/converters/Converter.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/Converter.java rename to engine/src/tools/jme3tools/converters/Converter.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/FolderConverter.java b/engine/src/tools/jme3tools/converters/FolderConverter.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/FolderConverter.java rename to engine/src/tools/jme3tools/converters/FolderConverter.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/RGB565.java b/engine/src/tools/jme3tools/converters/RGB565.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/RGB565.java rename to engine/src/tools/jme3tools/converters/RGB565.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/FloatToFixed.java b/engine/src/tools/jme3tools/converters/model/FloatToFixed.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/FloatToFixed.java rename to engine/src/tools/jme3tools/converters/model/FloatToFixed.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/ModelConverter.java b/engine/src/tools/jme3tools/converters/model/ModelConverter.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/ModelConverter.java rename to engine/src/tools/jme3tools/converters/model/ModelConverter.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/EdgeInfo.java b/engine/src/tools/jme3tools/converters/model/strip/EdgeInfo.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/EdgeInfo.java rename to engine/src/tools/jme3tools/converters/model/strip/EdgeInfo.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/EdgeInfoVec.java b/engine/src/tools/jme3tools/converters/model/strip/EdgeInfoVec.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/EdgeInfoVec.java rename to engine/src/tools/jme3tools/converters/model/strip/EdgeInfoVec.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/FaceInfo.java b/engine/src/tools/jme3tools/converters/model/strip/FaceInfo.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/FaceInfo.java rename to engine/src/tools/jme3tools/converters/model/strip/FaceInfo.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/FaceInfoVec.java b/engine/src/tools/jme3tools/converters/model/strip/FaceInfoVec.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/FaceInfoVec.java rename to engine/src/tools/jme3tools/converters/model/strip/FaceInfoVec.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/IntVec.java b/engine/src/tools/jme3tools/converters/model/strip/IntVec.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/IntVec.java rename to engine/src/tools/jme3tools/converters/model/strip/IntVec.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/PrimitiveGroup.java b/engine/src/tools/jme3tools/converters/model/strip/PrimitiveGroup.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/PrimitiveGroup.java rename to engine/src/tools/jme3tools/converters/model/strip/PrimitiveGroup.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/StripInfo.java b/engine/src/tools/jme3tools/converters/model/strip/StripInfo.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/StripInfo.java rename to engine/src/tools/jme3tools/converters/model/strip/StripInfo.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/StripInfoVec.java b/engine/src/tools/jme3tools/converters/model/strip/StripInfoVec.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/StripInfoVec.java rename to engine/src/tools/jme3tools/converters/model/strip/StripInfoVec.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/StripStartInfo.java b/engine/src/tools/jme3tools/converters/model/strip/StripStartInfo.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/StripStartInfo.java rename to engine/src/tools/jme3tools/converters/model/strip/StripStartInfo.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/Stripifier.java b/engine/src/tools/jme3tools/converters/model/strip/Stripifier.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/Stripifier.java rename to engine/src/tools/jme3tools/converters/model/strip/Stripifier.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/TriStrip.java b/engine/src/tools/jme3tools/converters/model/strip/TriStrip.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/TriStrip.java rename to engine/src/tools/jme3tools/converters/model/strip/TriStrip.java diff --git a/jme3-core/src/tools/java/jme3tools/converters/model/strip/VertexCache.java b/engine/src/tools/jme3tools/converters/model/strip/VertexCache.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/converters/model/strip/VertexCache.java rename to engine/src/tools/jme3tools/converters/model/strip/VertexCache.java diff --git a/jme3-core/src/tools/java/jme3tools/optimize/GeometryBatchFactory.java b/engine/src/tools/jme3tools/optimize/GeometryBatchFactory.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/optimize/GeometryBatchFactory.java rename to engine/src/tools/jme3tools/optimize/GeometryBatchFactory.java diff --git a/jme3-core/src/tools/java/jme3tools/optimize/LodGenerator.java b/engine/src/tools/jme3tools/optimize/LodGenerator.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/optimize/LodGenerator.java rename to engine/src/tools/jme3tools/optimize/LodGenerator.java diff --git a/jme3-core/src/tools/java/jme3tools/optimize/TextureAtlas.java b/engine/src/tools/jme3tools/optimize/TextureAtlas.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/optimize/TextureAtlas.java rename to engine/src/tools/jme3tools/optimize/TextureAtlas.java diff --git a/jme3-core/src/tools/java/jme3tools/savegame/SaveGame.java b/engine/src/tools/jme3tools/savegame/SaveGame.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/savegame/SaveGame.java rename to engine/src/tools/jme3tools/savegame/SaveGame.java diff --git a/jme3-core/src/tools/java/jme3tools/shader/ShaderDebug.java b/engine/src/tools/jme3tools/shader/ShaderDebug.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/shader/ShaderDebug.java rename to engine/src/tools/jme3tools/shader/ShaderDebug.java diff --git a/jme3-core/src/tools/java/jme3tools/shadercheck/CgcValidator.java b/engine/src/tools/jme3tools/shadercheck/CgcValidator.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/shadercheck/CgcValidator.java rename to engine/src/tools/jme3tools/shadercheck/CgcValidator.java diff --git a/jme3-core/src/tools/java/jme3tools/shadercheck/GpuAnalyzerValidator.java b/engine/src/tools/jme3tools/shadercheck/GpuAnalyzerValidator.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/shadercheck/GpuAnalyzerValidator.java rename to engine/src/tools/jme3tools/shadercheck/GpuAnalyzerValidator.java diff --git a/jme3-core/src/tools/java/jme3tools/shadercheck/ShaderCheck.java b/engine/src/tools/jme3tools/shadercheck/ShaderCheck.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/shadercheck/ShaderCheck.java rename to engine/src/tools/jme3tools/shadercheck/ShaderCheck.java diff --git a/jme3-core/src/tools/java/jme3tools/shadercheck/Validator.java b/engine/src/tools/jme3tools/shadercheck/Validator.java similarity index 100% rename from jme3-core/src/tools/java/jme3tools/shadercheck/Validator.java rename to engine/src/tools/jme3tools/shadercheck/Validator.java diff --git a/jme3-plugins/src/xml/java/com/jme3/export/xml/DOMInputCapsule.java b/engine/src/xml/com/jme3/export/xml/DOMInputCapsule.java similarity index 100% rename from jme3-plugins/src/xml/java/com/jme3/export/xml/DOMInputCapsule.java rename to engine/src/xml/com/jme3/export/xml/DOMInputCapsule.java diff --git a/jme3-plugins/src/xml/java/com/jme3/export/xml/DOMOutputCapsule.java b/engine/src/xml/com/jme3/export/xml/DOMOutputCapsule.java similarity index 100% rename from jme3-plugins/src/xml/java/com/jme3/export/xml/DOMOutputCapsule.java rename to engine/src/xml/com/jme3/export/xml/DOMOutputCapsule.java diff --git a/jme3-plugins/src/xml/java/com/jme3/export/xml/DOMSerializer.java b/engine/src/xml/com/jme3/export/xml/DOMSerializer.java similarity index 100% rename from jme3-plugins/src/xml/java/com/jme3/export/xml/DOMSerializer.java rename to engine/src/xml/com/jme3/export/xml/DOMSerializer.java diff --git a/jme3-plugins/src/xml/java/com/jme3/export/xml/XMLExporter.java b/engine/src/xml/com/jme3/export/xml/XMLExporter.java similarity index 100% rename from jme3-plugins/src/xml/java/com/jme3/export/xml/XMLExporter.java rename to engine/src/xml/com/jme3/export/xml/XMLExporter.java diff --git a/jme3-plugins/src/xml/java/com/jme3/export/xml/XMLImporter.java b/engine/src/xml/com/jme3/export/xml/XMLImporter.java similarity index 100% rename from jme3-plugins/src/xml/java/com/jme3/export/xml/XMLImporter.java rename to engine/src/xml/com/jme3/export/xml/XMLImporter.java diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/BaseMesh_249.blend b/engine/test-data/Blender/2.4x/BaseMesh_249.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/BaseMesh_249.blend rename to engine/test-data/Blender/2.4x/BaseMesh_249.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/BaseScene.blend b/engine/test-data/Blender/2.4x/BaseScene.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/BaseScene.blend rename to engine/test-data/Blender/2.4x/BaseScene.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/MountainValley_Track.blend b/engine/test-data/Blender/2.4x/MountainValley_Track.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/MountainValley_Track.blend rename to engine/test-data/Blender/2.4x/MountainValley_Track.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/ObjectAnimation.blend b/engine/test-data/Blender/2.4x/ObjectAnimation.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/ObjectAnimation.blend rename to engine/test-data/Blender/2.4x/ObjectAnimation.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/SimpleAnimation.blend b/engine/test-data/Blender/2.4x/SimpleAnimation.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/SimpleAnimation.blend rename to engine/test-data/Blender/2.4x/SimpleAnimation.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/Sinbad.blend b/engine/test-data/Blender/2.4x/Sinbad.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/Sinbad.blend rename to engine/test-data/Blender/2.4x/Sinbad.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/WoodCrate_lighter - (Inverted Normal Map).png b/engine/test-data/Blender/2.4x/WoodCrate_lighter - (Inverted Normal Map).png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/WoodCrate_lighter - (Inverted Normal Map).png rename to engine/test-data/Blender/2.4x/WoodCrate_lighter - (Inverted Normal Map).png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/WoodCrate_lighter - Height Map.png b/engine/test-data/Blender/2.4x/WoodCrate_lighter - Height Map.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/WoodCrate_lighter - Height Map.png rename to engine/test-data/Blender/2.4x/WoodCrate_lighter - Height Map.png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/WoodCrate_lighter.png b/engine/test-data/Blender/2.4x/WoodCrate_lighter.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/WoodCrate_lighter.png rename to engine/test-data/Blender/2.4x/WoodCrate_lighter.png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/animtest.blend b/engine/test-data/Blender/2.4x/animtest.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/animtest.blend rename to engine/test-data/Blender/2.4x/animtest.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/constraints.blend b/engine/test-data/Blender/2.4x/constraints.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/constraints.blend rename to engine/test-data/Blender/2.4x/constraints.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/curves.blend b/engine/test-data/Blender/2.4x/curves.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/curves.blend rename to engine/test-data/Blender/2.4x/curves.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/kerrigan.blend b/engine/test-data/Blender/2.4x/kerrigan.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/kerrigan.blend rename to engine/test-data/Blender/2.4x/kerrigan.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/kerrigan_diffuse.png b/engine/test-data/Blender/2.4x/kerrigan_diffuse.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/kerrigan_diffuse.png rename to engine/test-data/Blender/2.4x/kerrigan_diffuse.png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/materials.blend b/engine/test-data/Blender/2.4x/materials.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/materials.blend rename to engine/test-data/Blender/2.4x/materials.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/modifiers.blend b/engine/test-data/Blender/2.4x/modifiers.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/modifiers.blend rename to engine/test-data/Blender/2.4x/modifiers.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/nurbs.blend b/engine/test-data/Blender/2.4x/nurbs.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/nurbs.blend rename to engine/test-data/Blender/2.4x/nurbs.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/particles.blend b/engine/test-data/Blender/2.4x/particles.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/particles.blend rename to engine/test-data/Blender/2.4x/particles.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/positions.blend b/engine/test-data/Blender/2.4x/positions.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/positions.blend rename to engine/test-data/Blender/2.4x/positions.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/sinbad_body.tga b/engine/test-data/Blender/2.4x/sinbad_body.tga similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/sinbad_body.tga rename to engine/test-data/Blender/2.4x/sinbad_body.tga diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/sinbad_clothes.tga b/engine/test-data/Blender/2.4x/sinbad_clothes.tga similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/sinbad_clothes.tga rename to engine/test-data/Blender/2.4x/sinbad_clothes.tga diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/sinbad_sword.tga b/engine/test-data/Blender/2.4x/sinbad_sword.tga similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/sinbad_sword.tga rename to engine/test-data/Blender/2.4x/sinbad_sword.tga diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/texturedPlaneTest.blend b/engine/test-data/Blender/2.4x/texturedPlaneTest.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/texturedPlaneTest.blend rename to engine/test-data/Blender/2.4x/texturedPlaneTest.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/textures.blend b/engine/test-data/Blender/2.4x/textures.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/textures.blend rename to engine/test-data/Blender/2.4x/textures.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/textures/Concrete_Wall.PNG b/engine/test-data/Blender/2.4x/textures/Concrete_Wall.PNG similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/textures/Concrete_Wall.PNG rename to engine/test-data/Blender/2.4x/textures/Concrete_Wall.PNG diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/textures/Grass_256.png b/engine/test-data/Blender/2.4x/textures/Grass_256.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/textures/Grass_256.png rename to engine/test-data/Blender/2.4x/textures/Grass_256.png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/textures/SandDesert_StartTower.png b/engine/test-data/Blender/2.4x/textures/SandDesert_StartTower.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/textures/SandDesert_StartTower.png rename to engine/test-data/Blender/2.4x/textures/SandDesert_StartTower.png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/textures/SkyBox-Mountain.png b/engine/test-data/Blender/2.4x/textures/SkyBox-Mountain.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/textures/SkyBox-Mountain.png rename to engine/test-data/Blender/2.4x/textures/SkyBox-Mountain.png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/textures/Tar_Cracked.png b/engine/test-data/Blender/2.4x/textures/Tar_Cracked.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/textures/Tar_Cracked.png rename to engine/test-data/Blender/2.4x/textures/Tar_Cracked.png diff --git a/jme3-testdata/src/main/resources/Blender/2.4x/textures/WarningStrip.png b/engine/test-data/Blender/2.4x/textures/WarningStrip.png similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.4x/textures/WarningStrip.png rename to engine/test-data/Blender/2.4x/textures/WarningStrip.png diff --git a/jme3-testdata/src/main/resources/Blender/2.5x/BaseMesh_256.blend b/engine/test-data/Blender/2.5x/BaseMesh_256.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.5x/BaseMesh_256.blend rename to engine/test-data/Blender/2.5x/BaseMesh_256.blend diff --git a/jme3-testdata/src/main/resources/Blender/2.5x/textures.blend b/engine/test-data/Blender/2.5x/textures.blend similarity index 100% rename from jme3-testdata/src/main/resources/Blender/2.5x/textures.blend rename to engine/test-data/Blender/2.5x/textures.blend diff --git a/jme3-testdata/src/main/resources/Blender/test.conf b/engine/test-data/Blender/test.conf similarity index 100% rename from jme3-testdata/src/main/resources/Blender/test.conf rename to engine/test-data/Blender/test.conf diff --git a/jme3-testdata/src/main/resources/Effects/Explosion/Debris.png b/engine/test-data/Effects/Explosion/Debris.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Explosion/Debris.png rename to engine/test-data/Effects/Explosion/Debris.png diff --git a/jme3-testdata/src/main/resources/Effects/Explosion/flame.png b/engine/test-data/Effects/Explosion/flame.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Explosion/flame.png rename to engine/test-data/Effects/Explosion/flame.png diff --git a/jme3-testdata/src/main/resources/Effects/Explosion/flash.png b/engine/test-data/Effects/Explosion/flash.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Explosion/flash.png rename to engine/test-data/Effects/Explosion/flash.png diff --git a/jme3-testdata/src/main/resources/Effects/Explosion/roundspark.png b/engine/test-data/Effects/Explosion/roundspark.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Explosion/roundspark.png rename to engine/test-data/Effects/Explosion/roundspark.png diff --git a/jme3-testdata/src/main/resources/Effects/Explosion/shockwave.png b/engine/test-data/Effects/Explosion/shockwave.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Explosion/shockwave.png rename to engine/test-data/Effects/Explosion/shockwave.png diff --git a/jme3-testdata/src/main/resources/Effects/Explosion/smoketrail.png b/engine/test-data/Effects/Explosion/smoketrail.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Explosion/smoketrail.png rename to engine/test-data/Effects/Explosion/smoketrail.png diff --git a/jme3-testdata/src/main/resources/Effects/Explosion/spark.png b/engine/test-data/Effects/Explosion/spark.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Explosion/spark.png rename to engine/test-data/Effects/Explosion/spark.png diff --git a/jme3-testdata/src/main/resources/Effects/Smoke/Smoke.png b/engine/test-data/Effects/Smoke/Smoke.png similarity index 100% rename from jme3-testdata/src/main/resources/Effects/Smoke/Smoke.png rename to engine/test-data/Effects/Smoke/Smoke.png diff --git a/jme3-testdata/src/main/resources/Interface/Joystick/gamepad-buttons.png b/engine/test-data/Interface/Joystick/gamepad-buttons.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Joystick/gamepad-buttons.png rename to engine/test-data/Interface/Joystick/gamepad-buttons.png diff --git a/jme3-testdata/src/main/resources/Interface/Joystick/gamepad-frame.png b/engine/test-data/Interface/Joystick/gamepad-frame.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Joystick/gamepad-frame.png rename to engine/test-data/Interface/Joystick/gamepad-frame.png diff --git a/jme3-testdata/src/main/resources/Interface/Joystick/gamepad-stick.png b/engine/test-data/Interface/Joystick/gamepad-stick.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Joystick/gamepad-stick.png rename to engine/test-data/Interface/Joystick/gamepad-stick.png diff --git a/jme3-testdata/src/main/resources/Interface/Logo/Cursor.png b/engine/test-data/Interface/Logo/Cursor.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Logo/Cursor.png rename to engine/test-data/Interface/Logo/Cursor.png diff --git a/jme3-testdata/src/main/resources/Interface/Logo/Logo.j3m b/engine/test-data/Interface/Logo/Logo.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Logo/Logo.j3m rename to engine/test-data/Interface/Logo/Logo.j3m diff --git a/jme3-testdata/src/main/resources/Interface/Logo/Monkey.jpg b/engine/test-data/Interface/Logo/Monkey.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Logo/Monkey.jpg rename to engine/test-data/Interface/Logo/Monkey.jpg diff --git a/jme3-testdata/src/main/resources/Interface/Logo/Monkey.png b/engine/test-data/Interface/Logo/Monkey.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Logo/Monkey.png rename to engine/test-data/Interface/Logo/Monkey.png diff --git a/jme3-testdata/src/main/resources/Interface/Nifty/CinematicTest.xml b/engine/test-data/Interface/Nifty/CinematicTest.xml similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Nifty/CinematicTest.xml rename to engine/test-data/Interface/Nifty/CinematicTest.xml diff --git a/jme3-testdata/src/main/resources/Interface/Nifty/HelloJme.xml b/engine/test-data/Interface/Nifty/HelloJme.xml similarity index 100% rename from jme3-testdata/src/main/resources/Interface/Nifty/HelloJme.xml rename to engine/test-data/Interface/Nifty/HelloJme.xml diff --git a/jme3-testdata/src/main/resources/Interface/icons/SmartMonkey128.png b/engine/test-data/Interface/icons/SmartMonkey128.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/icons/SmartMonkey128.png rename to engine/test-data/Interface/icons/SmartMonkey128.png diff --git a/jme3-testdata/src/main/resources/Interface/icons/SmartMonkey16.png b/engine/test-data/Interface/icons/SmartMonkey16.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/icons/SmartMonkey16.png rename to engine/test-data/Interface/icons/SmartMonkey16.png diff --git a/jme3-testdata/src/main/resources/Interface/icons/SmartMonkey256.png b/engine/test-data/Interface/icons/SmartMonkey256.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/icons/SmartMonkey256.png rename to engine/test-data/Interface/icons/SmartMonkey256.png diff --git a/jme3-testdata/src/main/resources/Interface/icons/SmartMonkey32.png b/engine/test-data/Interface/icons/SmartMonkey32.png similarity index 100% rename from jme3-testdata/src/main/resources/Interface/icons/SmartMonkey32.png rename to engine/test-data/Interface/icons/SmartMonkey32.png diff --git a/jme3-testdata/src/main/resources/Models/Boat/boat.j3m b/engine/test-data/Models/Boat/boat.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Boat/boat.j3m rename to engine/test-data/Models/Boat/boat.j3m diff --git a/jme3-testdata/src/main/resources/Models/Boat/boat.j3o b/engine/test-data/Models/Boat/boat.j3o similarity index 100% rename from jme3-testdata/src/main/resources/Models/Boat/boat.j3o rename to engine/test-data/Models/Boat/boat.j3o diff --git a/jme3-testdata/src/main/resources/Models/Boat/boat.mesh.xml b/engine/test-data/Models/Boat/boat.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Boat/boat.mesh.xml rename to engine/test-data/Models/Boat/boat.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Boat/boat.png b/engine/test-data/Models/Boat/boat.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/Boat/boat.png rename to engine/test-data/Models/Boat/boat.png diff --git a/jme3-testdata/src/main/resources/Models/Boat/boat_normal.png b/engine/test-data/Models/Boat/boat_normal.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/Boat/boat_normal.png rename to engine/test-data/Models/Boat/boat_normal.png diff --git a/jme3-testdata/src/main/resources/Models/Buggy/Buggy.j3m b/engine/test-data/Models/Buggy/Buggy.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Buggy/Buggy.j3m rename to engine/test-data/Models/Buggy/Buggy.j3m diff --git a/jme3-testdata/src/main/resources/Models/Buggy/Buggy.j3o b/engine/test-data/Models/Buggy/Buggy.j3o similarity index 100% rename from jme3-testdata/src/main/resources/Models/Buggy/Buggy.j3o rename to engine/test-data/Models/Buggy/Buggy.j3o diff --git a/jme3-testdata/src/main/resources/Models/Buggy/buggy_diffuse.jpg b/engine/test-data/Models/Buggy/buggy_diffuse.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Buggy/buggy_diffuse.jpg rename to engine/test-data/Models/Buggy/buggy_diffuse.jpg diff --git a/jme3-testdata/src/main/resources/Models/Buggy/buggy_glow.jpg b/engine/test-data/Models/Buggy/buggy_glow.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Buggy/buggy_glow.jpg rename to engine/test-data/Models/Buggy/buggy_glow.jpg diff --git a/jme3-testdata/src/main/resources/Models/Buggy/buggy_normals.png b/engine/test-data/Models/Buggy/buggy_normals.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/Buggy/buggy_normals.png rename to engine/test-data/Models/Buggy/buggy_normals.png diff --git a/jme3-testdata/src/main/resources/Models/Buggy/buggy_specular.jpg b/engine/test-data/Models/Buggy/buggy_specular.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Buggy/buggy_specular.jpg rename to engine/test-data/Models/Buggy/buggy_specular.jpg diff --git a/jme3-testdata/src/main/resources/Models/Elephant/Elephant.j3m b/engine/test-data/Models/Elephant/Elephant.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/Elephant.j3m rename to engine/test-data/Models/Elephant/Elephant.j3m diff --git a/jme3-testdata/src/main/resources/Models/Elephant/Elephant.jpg b/engine/test-data/Models/Elephant/Elephant.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/Elephant.jpg rename to engine/test-data/Models/Elephant/Elephant.jpg diff --git a/jme3-testdata/src/main/resources/Models/Elephant/Elephant.material b/engine/test-data/Models/Elephant/Elephant.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/Elephant.material rename to engine/test-data/Models/Elephant/Elephant.material diff --git a/jme3-testdata/src/main/resources/Models/Elephant/Elephant.mesh.xml b/engine/test-data/Models/Elephant/Elephant.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/Elephant.mesh.xml rename to engine/test-data/Models/Elephant/Elephant.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Elephant/Elephant.skeleton.xml b/engine/test-data/Models/Elephant/Elephant.skeleton.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/Elephant.skeleton.xml rename to engine/test-data/Models/Elephant/Elephant.skeleton.xml diff --git a/jme3-testdata/src/main/resources/Models/Elephant/ElephantEye.jpg b/engine/test-data/Models/Elephant/ElephantEye.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/ElephantEye.jpg rename to engine/test-data/Models/Elephant/ElephantEye.jpg diff --git a/jme3-testdata/src/main/resources/Models/Elephant/ElephantTusk.jpg b/engine/test-data/Models/Elephant/ElephantTusk.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/ElephantTusk.jpg rename to engine/test-data/Models/Elephant/ElephantTusk.jpg diff --git a/jme3-testdata/src/main/resources/Models/Elephant/Elephant_normal.jpg b/engine/test-data/Models/Elephant/Elephant_normal.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Elephant/Elephant_normal.jpg rename to engine/test-data/Models/Elephant/Elephant_normal.jpg diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/Car.jpg b/engine/test-data/Models/Ferrari/Car.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/Car.jpg rename to engine/test-data/Models/Ferrari/Car.jpg diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/Car.material b/engine/test-data/Models/Ferrari/Car.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/Car.material rename to engine/test-data/Models/Ferrari/Car.material diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/Car.mesh.xml b/engine/test-data/Models/Ferrari/Car.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/Car.mesh.xml rename to engine/test-data/Models/Ferrari/Car.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/Car.scene b/engine/test-data/Models/Ferrari/Car.scene similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/Car.scene rename to engine/test-data/Models/Ferrari/Car.scene diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/WheelBackLeft.mesh.xml b/engine/test-data/Models/Ferrari/WheelBackLeft.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/WheelBackLeft.mesh.xml rename to engine/test-data/Models/Ferrari/WheelBackLeft.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/WheelBackRight.mesh.xml b/engine/test-data/Models/Ferrari/WheelBackRight.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/WheelBackRight.mesh.xml rename to engine/test-data/Models/Ferrari/WheelBackRight.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/WheelFrontLeft.mesh.xml b/engine/test-data/Models/Ferrari/WheelFrontLeft.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/WheelFrontLeft.mesh.xml rename to engine/test-data/Models/Ferrari/WheelFrontLeft.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Ferrari/WheelFrontRight.mesh.xml b/engine/test-data/Models/Ferrari/WheelFrontRight.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ferrari/WheelFrontRight.mesh.xml rename to engine/test-data/Models/Ferrari/WheelFrontRight.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/HoverTank/Tank2.mesh.xml b/engine/test-data/Models/HoverTank/Tank2.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/HoverTank/Tank2.mesh.xml rename to engine/test-data/Models/HoverTank/Tank2.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/HoverTank/tank.j3m b/engine/test-data/Models/HoverTank/tank.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/HoverTank/tank.j3m rename to engine/test-data/Models/HoverTank/tank.j3m diff --git a/jme3-testdata/src/main/resources/Models/HoverTank/tankFinalExport.blend b/engine/test-data/Models/HoverTank/tankFinalExport.blend similarity index 100% rename from jme3-testdata/src/main/resources/Models/HoverTank/tankFinalExport.blend rename to engine/test-data/Models/HoverTank/tankFinalExport.blend diff --git a/jme3-testdata/src/main/resources/Models/HoverTank/tank_diffuse.jpg b/engine/test-data/Models/HoverTank/tank_diffuse.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/HoverTank/tank_diffuse.jpg rename to engine/test-data/Models/HoverTank/tank_diffuse.jpg diff --git a/jme3-testdata/src/main/resources/Models/HoverTank/tank_glow_map.jpg b/engine/test-data/Models/HoverTank/tank_glow_map.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/HoverTank/tank_glow_map.jpg rename to engine/test-data/Models/HoverTank/tank_glow_map.jpg diff --git a/jme3-testdata/src/main/resources/Models/HoverTank/tank_normals.png b/engine/test-data/Models/HoverTank/tank_normals.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/HoverTank/tank_normals.png rename to engine/test-data/Models/HoverTank/tank_normals.png diff --git a/jme3-testdata/src/main/resources/Models/HoverTank/tank_specular.jpg b/engine/test-data/Models/HoverTank/tank_specular.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/HoverTank/tank_specular.jpg rename to engine/test-data/Models/HoverTank/tank_specular.jpg diff --git a/jme3-testdata/src/main/resources/Models/Jaime/Jaime.j3m b/engine/test-data/Models/Jaime/Jaime.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Jaime/Jaime.j3m rename to engine/test-data/Models/Jaime/Jaime.j3m diff --git a/jme3-testdata/src/main/resources/Models/Jaime/Jaime.j3o b/engine/test-data/Models/Jaime/Jaime.j3o similarity index 100% rename from jme3-testdata/src/main/resources/Models/Jaime/Jaime.j3o rename to engine/test-data/Models/Jaime/Jaime.j3o diff --git a/jme3-testdata/src/main/resources/Models/Jaime/NormalMap.png b/engine/test-data/Models/Jaime/NormalMap.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/Jaime/NormalMap.png rename to engine/test-data/Models/Jaime/NormalMap.png diff --git a/jme3-testdata/src/main/resources/Models/Jaime/diffuseMap.jpg b/engine/test-data/Models/Jaime/diffuseMap.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Jaime/diffuseMap.jpg rename to engine/test-data/Models/Jaime/diffuseMap.jpg diff --git a/jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead.j3m b/engine/test-data/Models/MonkeyHead/MonkeyHead.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead.j3m rename to engine/test-data/Models/MonkeyHead/MonkeyHead.j3m diff --git a/jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead.mesh.xml b/engine/test-data/Models/MonkeyHead/MonkeyHead.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead.mesh.xml rename to engine/test-data/Models/MonkeyHead/MonkeyHead.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead_diffuse.jpg b/engine/test-data/Models/MonkeyHead/MonkeyHead_diffuse.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead_diffuse.jpg rename to engine/test-data/Models/MonkeyHead/MonkeyHead_diffuse.jpg diff --git a/jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead_normal.jpg b/engine/test-data/Models/MonkeyHead/MonkeyHead_normal.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead_normal.jpg rename to engine/test-data/Models/MonkeyHead/MonkeyHead_normal.jpg diff --git a/jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead_spec.jpg b/engine/test-data/Models/MonkeyHead/MonkeyHead_spec.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/MonkeyHead/MonkeyHead_spec.jpg rename to engine/test-data/Models/MonkeyHead/MonkeyHead_spec.jpg diff --git a/jme3-testdata/src/main/resources/Models/Ninja/Ninja.jpg b/engine/test-data/Models/Ninja/Ninja.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ninja/Ninja.jpg rename to engine/test-data/Models/Ninja/Ninja.jpg diff --git a/jme3-testdata/src/main/resources/Models/Ninja/Ninja.material b/engine/test-data/Models/Ninja/Ninja.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ninja/Ninja.material rename to engine/test-data/Models/Ninja/Ninja.material diff --git a/jme3-testdata/src/main/resources/Models/Ninja/Ninja.mesh.xml b/engine/test-data/Models/Ninja/Ninja.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ninja/Ninja.mesh.xml rename to engine/test-data/Models/Ninja/Ninja.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Ninja/Ninja.skeleton.xml b/engine/test-data/Models/Ninja/Ninja.skeleton.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Ninja/Ninja.skeleton.xml rename to engine/test-data/Models/Ninja/Ninja.skeleton.xml diff --git a/jme3-testdata/src/main/resources/Models/Oto/Oto.j3m b/engine/test-data/Models/Oto/Oto.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Oto/Oto.j3m rename to engine/test-data/Models/Oto/Oto.j3m diff --git a/jme3-testdata/src/main/resources/Models/Oto/Oto.jpg b/engine/test-data/Models/Oto/Oto.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Oto/Oto.jpg rename to engine/test-data/Models/Oto/Oto.jpg diff --git a/jme3-testdata/src/main/resources/Models/Oto/Oto.material b/engine/test-data/Models/Oto/Oto.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/Oto/Oto.material rename to engine/test-data/Models/Oto/Oto.material diff --git a/jme3-testdata/src/main/resources/Models/Oto/Oto.mesh.xml b/engine/test-data/Models/Oto/Oto.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Oto/Oto.mesh.xml rename to engine/test-data/Models/Oto/Oto.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Oto/Oto.skeleton.xml b/engine/test-data/Models/Oto/Oto.skeleton.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Oto/Oto.skeleton.xml rename to engine/test-data/Models/Oto/Oto.skeleton.xml diff --git a/jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.j3m b/engine/test-data/Models/Sign Post/Sign Post.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.j3m rename to engine/test-data/Models/Sign Post/Sign Post.j3m diff --git a/jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.jpg b/engine/test-data/Models/Sign Post/Sign Post.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.jpg rename to engine/test-data/Models/Sign Post/Sign Post.jpg diff --git a/jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.material b/engine/test-data/Models/Sign Post/Sign Post.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.material rename to engine/test-data/Models/Sign Post/Sign Post.material diff --git a/jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.mesh.xml b/engine/test-data/Models/Sign Post/Sign Post.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sign Post/Sign Post.mesh.xml rename to engine/test-data/Models/Sign Post/Sign Post.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Sign Post/Sign Post_normal.jpg b/engine/test-data/Models/Sign Post/Sign Post_normal.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sign Post/Sign Post_normal.jpg rename to engine/test-data/Models/Sign Post/Sign Post_normal.jpg diff --git a/jme3-testdata/src/main/resources/Models/Sign Post/Sign Post_specular.jpg b/engine/test-data/Models/Sign Post/Sign Post_specular.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sign Post/Sign Post_specular.jpg rename to engine/test-data/Models/Sign Post/Sign Post_specular.jpg diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/README-LICENSE.txt b/engine/test-data/Models/Sinbad/README-LICENSE.txt similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/README-LICENSE.txt rename to engine/test-data/Models/Sinbad/README-LICENSE.txt diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/Sinbad.material b/engine/test-data/Models/Sinbad/Sinbad.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/Sinbad.material rename to engine/test-data/Models/Sinbad/Sinbad.material diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/Sinbad.mesh.xml b/engine/test-data/Models/Sinbad/Sinbad.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/Sinbad.mesh.xml rename to engine/test-data/Models/Sinbad/Sinbad.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/Sinbad.skeleton.xml b/engine/test-data/Models/Sinbad/Sinbad.skeleton.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/Sinbad.skeleton.xml rename to engine/test-data/Models/Sinbad/Sinbad.skeleton.xml diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/Sword.material b/engine/test-data/Models/Sinbad/Sword.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/Sword.material rename to engine/test-data/Models/Sinbad/Sword.material diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/Sword.mesh.xml b/engine/test-data/Models/Sinbad/Sword.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/Sword.mesh.xml rename to engine/test-data/Models/Sinbad/Sword.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/sinbad_body.jpg b/engine/test-data/Models/Sinbad/sinbad_body.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/sinbad_body.jpg rename to engine/test-data/Models/Sinbad/sinbad_body.jpg diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/sinbad_clothes.jpg b/engine/test-data/Models/Sinbad/sinbad_clothes.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/sinbad_clothes.jpg rename to engine/test-data/Models/Sinbad/sinbad_clothes.jpg diff --git a/jme3-testdata/src/main/resources/Models/Sinbad/sinbad_sword.jpg b/engine/test-data/Models/Sinbad/sinbad_sword.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sinbad/sinbad_sword.jpg rename to engine/test-data/Models/Sinbad/sinbad_sword.jpg diff --git a/jme3-testdata/src/main/resources/Models/SpaceCraft/Rocket.material b/engine/test-data/Models/SpaceCraft/Rocket.material similarity index 100% rename from jme3-testdata/src/main/resources/Models/SpaceCraft/Rocket.material rename to engine/test-data/Models/SpaceCraft/Rocket.material diff --git a/jme3-testdata/src/main/resources/Models/SpaceCraft/Rocket.mesh.xml b/engine/test-data/Models/SpaceCraft/Rocket.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/SpaceCraft/Rocket.mesh.xml rename to engine/test-data/Models/SpaceCraft/Rocket.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/SpaceCraft/Rocket.png b/engine/test-data/Models/SpaceCraft/Rocket.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/SpaceCraft/Rocket.png rename to engine/test-data/Models/SpaceCraft/Rocket.png diff --git a/jme3-testdata/src/main/resources/Models/Sponza/Sponza.j3o b/engine/test-data/Models/Sponza/Sponza.j3o similarity index 100% rename from jme3-testdata/src/main/resources/Models/Sponza/Sponza.j3o rename to engine/test-data/Models/Sponza/Sponza.j3o diff --git a/jme3-testdata/src/main/resources/Models/TangentBugs/test.blend b/engine/test-data/Models/TangentBugs/test.blend similarity index 100% rename from jme3-testdata/src/main/resources/Models/TangentBugs/test.blend rename to engine/test-data/Models/TangentBugs/test.blend diff --git a/jme3-testdata/src/main/resources/Models/TangentBugs/test_normal.png b/engine/test-data/Models/TangentBugs/test_normal.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/TangentBugs/test_normal.png rename to engine/test-data/Models/TangentBugs/test_normal.png diff --git a/jme3-testdata/src/main/resources/Models/Teapot/Teapot.mesh.xml b/engine/test-data/Models/Teapot/Teapot.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Teapot/Teapot.mesh.xml rename to engine/test-data/Models/Teapot/Teapot.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Teapot/Teapot.mtl b/engine/test-data/Models/Teapot/Teapot.mtl similarity index 100% rename from jme3-testdata/src/main/resources/Models/Teapot/Teapot.mtl rename to engine/test-data/Models/Teapot/Teapot.mtl diff --git a/jme3-testdata/src/main/resources/Models/Teapot/Teapot.obj b/engine/test-data/Models/Teapot/Teapot.obj similarity index 100% rename from jme3-testdata/src/main/resources/Models/Teapot/Teapot.obj rename to engine/test-data/Models/Teapot/Teapot.obj diff --git a/jme3-testdata/src/main/resources/Models/Terrain/Terrain.mesh.xml b/engine/test-data/Models/Terrain/Terrain.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Terrain/Terrain.mesh.xml rename to engine/test-data/Models/Terrain/Terrain.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Test/CornellBox.j3o b/engine/test-data/Models/Test/CornellBox.j3o similarity index 100% rename from jme3-testdata/src/main/resources/Models/Test/CornellBox.j3o rename to engine/test-data/Models/Test/CornellBox.j3o diff --git a/jme3-testdata/src/main/resources/Models/Tree/BarkColor.jpg b/engine/test-data/Models/Tree/BarkColor.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/BarkColor.jpg rename to engine/test-data/Models/Tree/BarkColor.jpg diff --git a/jme3-testdata/src/main/resources/Models/Tree/BarkNormal.jpg b/engine/test-data/Models/Tree/BarkNormal.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/BarkNormal.jpg rename to engine/test-data/Models/Tree/BarkNormal.jpg diff --git a/jme3-testdata/src/main/resources/Models/Tree/Leaves.j3m b/engine/test-data/Models/Tree/Leaves.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/Leaves.j3m rename to engine/test-data/Models/Tree/Leaves.j3m diff --git a/jme3-testdata/src/main/resources/Models/Tree/Leaves.png b/engine/test-data/Models/Tree/Leaves.png similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/Leaves.png rename to engine/test-data/Models/Tree/Leaves.png diff --git a/jme3-testdata/src/main/resources/Models/Tree/Tree.mesh.j3o b/engine/test-data/Models/Tree/Tree.mesh.j3o similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/Tree.mesh.j3o rename to engine/test-data/Models/Tree/Tree.mesh.j3o diff --git a/jme3-testdata/src/main/resources/Models/Tree/Tree.mesh.j3odata b/engine/test-data/Models/Tree/Tree.mesh.j3odata similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/Tree.mesh.j3odata rename to engine/test-data/Models/Tree/Tree.mesh.j3odata diff --git a/jme3-testdata/src/main/resources/Models/Tree/Tree.mesh.xml b/engine/test-data/Models/Tree/Tree.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/Tree.mesh.xml rename to engine/test-data/Models/Tree/Tree.mesh.xml diff --git a/jme3-testdata/src/main/resources/Models/Tree/Trunk.j3m b/engine/test-data/Models/Tree/Trunk.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Models/Tree/Trunk.j3m rename to engine/test-data/Models/Tree/Trunk.j3m diff --git a/jme3-testdata/src/main/resources/Models/WaterTest/WaterTest.mesh.xml b/engine/test-data/Models/WaterTest/WaterTest.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Models/WaterTest/WaterTest.mesh.xml rename to engine/test-data/Models/WaterTest/WaterTest.mesh.xml diff --git a/jme3-testdata/src/main/resources/Scenes/Beach/FullskiesSunset0068.dds b/engine/test-data/Scenes/Beach/FullskiesSunset0068.dds similarity index 100% rename from jme3-testdata/src/main/resources/Scenes/Beach/FullskiesSunset0068.dds rename to engine/test-data/Scenes/Beach/FullskiesSunset0068.dds diff --git a/jme3-testdata/src/main/resources/Scenes/DotScene/DotScene.scene b/engine/test-data/Scenes/DotScene/DotScene.scene similarity index 100% rename from jme3-testdata/src/main/resources/Scenes/DotScene/DotScene.scene rename to engine/test-data/Scenes/DotScene/DotScene.scene diff --git a/jme3-testdata/src/main/resources/Scenes/ManyLights/AO.jpg b/engine/test-data/Scenes/ManyLights/AO.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Scenes/ManyLights/AO.jpg rename to engine/test-data/Scenes/ManyLights/AO.jpg diff --git a/jme3-testdata/src/main/resources/Scenes/ManyLights/Grid.mesh.xml b/engine/test-data/Scenes/ManyLights/Grid.mesh.xml similarity index 100% rename from jme3-testdata/src/main/resources/Scenes/ManyLights/Grid.mesh.xml rename to engine/test-data/Scenes/ManyLights/Grid.mesh.xml diff --git a/jme3-testdata/src/main/resources/Scenes/ManyLights/Main.material b/engine/test-data/Scenes/ManyLights/Main.material similarity index 100% rename from jme3-testdata/src/main/resources/Scenes/ManyLights/Main.material rename to engine/test-data/Scenes/ManyLights/Main.material diff --git a/jme3-testdata/src/main/resources/Scenes/ManyLights/Main.scene b/engine/test-data/Scenes/ManyLights/Main.scene similarity index 100% rename from jme3-testdata/src/main/resources/Scenes/ManyLights/Main.scene rename to engine/test-data/Scenes/ManyLights/Main.scene diff --git a/jme3-testdata/src/main/resources/Sound/Effects/Bang.wav b/engine/test-data/Sound/Effects/Bang.wav similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Effects/Bang.wav rename to engine/test-data/Sound/Effects/Bang.wav diff --git a/jme3-testdata/src/main/resources/Sound/Effects/Beep.ogg b/engine/test-data/Sound/Effects/Beep.ogg similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Effects/Beep.ogg rename to engine/test-data/Sound/Effects/Beep.ogg diff --git a/jme3-testdata/src/main/resources/Sound/Effects/Foot steps.ogg b/engine/test-data/Sound/Effects/Foot steps.ogg similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Effects/Foot steps.ogg rename to engine/test-data/Sound/Effects/Foot steps.ogg diff --git a/jme3-testdata/src/main/resources/Sound/Effects/Gun.wav b/engine/test-data/Sound/Effects/Gun.wav similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Effects/Gun.wav rename to engine/test-data/Sound/Effects/Gun.wav diff --git a/jme3-testdata/src/main/resources/Sound/Effects/kick.wav b/engine/test-data/Sound/Effects/kick.wav similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Effects/kick.wav rename to engine/test-data/Sound/Effects/kick.wav diff --git a/jme3-testdata/src/main/resources/Sound/Environment/Nature.ogg b/engine/test-data/Sound/Environment/Nature.ogg similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Environment/Nature.ogg rename to engine/test-data/Sound/Environment/Nature.ogg diff --git a/jme3-testdata/src/main/resources/Sound/Environment/Ocean Waves.ogg b/engine/test-data/Sound/Environment/Ocean Waves.ogg similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Environment/Ocean Waves.ogg rename to engine/test-data/Sound/Environment/Ocean Waves.ogg diff --git a/jme3-testdata/src/main/resources/Sound/Environment/River.ogg b/engine/test-data/Sound/Environment/River.ogg similarity index 100% rename from jme3-testdata/src/main/resources/Sound/Environment/River.ogg rename to engine/test-data/Sound/Environment/River.ogg diff --git a/jme3-testdata/src/main/resources/TerrainGrid/TerrainGrid.j3o b/engine/test-data/TerrainGrid/TerrainGrid.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/TerrainGrid.j3o rename to engine/test-data/TerrainGrid/TerrainGrid.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_-1.j3o b/engine/test-data/TerrainGrid/testgrid_0_0_-1.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_-1.j3o rename to engine/test-data/TerrainGrid/testgrid_0_0_-1.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_-2.j3o b/engine/test-data/TerrainGrid/testgrid_0_0_-2.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_-2.j3o rename to engine/test-data/TerrainGrid/testgrid_0_0_-2.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_-3.j3o b/engine/test-data/TerrainGrid/testgrid_0_0_-3.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_-3.j3o rename to engine/test-data/TerrainGrid/testgrid_0_0_-3.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_0.j3o b/engine/test-data/TerrainGrid/testgrid_0_0_0.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_0.j3o rename to engine/test-data/TerrainGrid/testgrid_0_0_0.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_1.j3o b/engine/test-data/TerrainGrid/testgrid_0_0_1.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_0_0_1.j3o rename to engine/test-data/TerrainGrid/testgrid_0_0_1.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_-1.j3o b/engine/test-data/TerrainGrid/testgrid_1_0_-1.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_-1.j3o rename to engine/test-data/TerrainGrid/testgrid_1_0_-1.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_-2.j3o b/engine/test-data/TerrainGrid/testgrid_1_0_-2.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_-2.j3o rename to engine/test-data/TerrainGrid/testgrid_1_0_-2.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_-3.j3o b/engine/test-data/TerrainGrid/testgrid_1_0_-3.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_-3.j3o rename to engine/test-data/TerrainGrid/testgrid_1_0_-3.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_0.j3o b/engine/test-data/TerrainGrid/testgrid_1_0_0.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_0.j3o rename to engine/test-data/TerrainGrid/testgrid_1_0_0.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_1.j3o b/engine/test-data/TerrainGrid/testgrid_1_0_1.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_1_0_1.j3o rename to engine/test-data/TerrainGrid/testgrid_1_0_1.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-1.j3o b/engine/test-data/TerrainGrid/testgrid_2_0_-1.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-1.j3o rename to engine/test-data/TerrainGrid/testgrid_2_0_-1.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-2.j3o b/engine/test-data/TerrainGrid/testgrid_2_0_-2.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-2.j3o rename to engine/test-data/TerrainGrid/testgrid_2_0_-2.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-3.j3o b/engine/test-data/TerrainGrid/testgrid_2_0_-3.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-3.j3o rename to engine/test-data/TerrainGrid/testgrid_2_0_-3.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-4.j3o b/engine/test-data/TerrainGrid/testgrid_2_0_-4.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_-4.j3o rename to engine/test-data/TerrainGrid/testgrid_2_0_-4.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_0.j3o b/engine/test-data/TerrainGrid/testgrid_2_0_0.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_2_0_0.j3o rename to engine/test-data/TerrainGrid/testgrid_2_0_0.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-1.j3o b/engine/test-data/TerrainGrid/testgrid_3_0_-1.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-1.j3o rename to engine/test-data/TerrainGrid/testgrid_3_0_-1.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-2.j3o b/engine/test-data/TerrainGrid/testgrid_3_0_-2.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-2.j3o rename to engine/test-data/TerrainGrid/testgrid_3_0_-2.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-3.j3o b/engine/test-data/TerrainGrid/testgrid_3_0_-3.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-3.j3o rename to engine/test-data/TerrainGrid/testgrid_3_0_-3.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-4.j3o b/engine/test-data/TerrainGrid/testgrid_3_0_-4.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_-4.j3o rename to engine/test-data/TerrainGrid/testgrid_3_0_-4.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_0.j3o b/engine/test-data/TerrainGrid/testgrid_3_0_0.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_3_0_0.j3o rename to engine/test-data/TerrainGrid/testgrid_3_0_0.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_4_0_-1.j3o b/engine/test-data/TerrainGrid/testgrid_4_0_-1.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_4_0_-1.j3o rename to engine/test-data/TerrainGrid/testgrid_4_0_-1.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_4_0_-2.j3o b/engine/test-data/TerrainGrid/testgrid_4_0_-2.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_4_0_-2.j3o rename to engine/test-data/TerrainGrid/testgrid_4_0_-2.j3o diff --git a/jme3-testdata/src/main/resources/TerrainGrid/testgrid_4_0_-3.j3o b/engine/test-data/TerrainGrid/testgrid_4_0_-3.j3o similarity index 100% rename from jme3-testdata/src/main/resources/TerrainGrid/testgrid_4_0_-3.j3o rename to engine/test-data/TerrainGrid/testgrid_4_0_-3.j3o diff --git a/jme3-testdata/src/main/resources/Textures/3D/flame.dds b/engine/test-data/Textures/3D/flame.dds similarity index 100% rename from jme3-testdata/src/main/resources/Textures/3D/flame.dds rename to engine/test-data/Textures/3D/flame.dds diff --git a/jme3-testdata/src/main/resources/Textures/BumpMapTest/SimpleBump.j3m b/engine/test-data/Textures/BumpMapTest/SimpleBump.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/BumpMapTest/SimpleBump.j3m rename to engine/test-data/Textures/BumpMapTest/SimpleBump.j3m diff --git a/jme3-testdata/src/main/resources/Textures/BumpMapTest/Simple_height.png b/engine/test-data/Textures/BumpMapTest/Simple_height.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/BumpMapTest/Simple_height.png rename to engine/test-data/Textures/BumpMapTest/Simple_height.png diff --git a/jme3-testdata/src/main/resources/Textures/BumpMapTest/Simple_normal.png b/engine/test-data/Textures/BumpMapTest/Simple_normal.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/BumpMapTest/Simple_normal.png rename to engine/test-data/Textures/BumpMapTest/Simple_normal.png diff --git a/jme3-testdata/src/main/resources/Textures/BumpMapTest/Tangent.j3m b/engine/test-data/Textures/BumpMapTest/Tangent.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/BumpMapTest/Tangent.j3m rename to engine/test-data/Textures/BumpMapTest/Tangent.j3m diff --git a/jme3-testdata/src/main/resources/Textures/BumpMapTest/Tangent.png b/engine/test-data/Textures/BumpMapTest/Tangent.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/BumpMapTest/Tangent.png rename to engine/test-data/Textures/BumpMapTest/Tangent.png diff --git a/jme3-testdata/src/main/resources/Textures/ColorRamp/cloudy.png b/engine/test-data/Textures/ColorRamp/cloudy.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/ColorRamp/cloudy.png rename to engine/test-data/Textures/ColorRamp/cloudy.png diff --git a/jme3-testdata/src/main/resources/Textures/ColorRamp/toon.png b/engine/test-data/Textures/ColorRamp/toon.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/ColorRamp/toon.png rename to engine/test-data/Textures/ColorRamp/toon.png diff --git a/jme3-testdata/src/main/resources/Textures/ColoredTex/Monkey.png b/engine/test-data/Textures/ColoredTex/Monkey.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/ColoredTex/Monkey.png rename to engine/test-data/Textures/ColoredTex/Monkey.png diff --git a/jme3-testdata/src/main/resources/Textures/Cursors/meme.cur b/engine/test-data/Textures/Cursors/meme.cur similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Cursors/meme.cur rename to engine/test-data/Textures/Cursors/meme.cur diff --git a/jme3-testdata/src/main/resources/Textures/Cursors/monkey.ani b/engine/test-data/Textures/Cursors/monkey.ani similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Cursors/monkey.ani rename to engine/test-data/Textures/Cursors/monkey.ani diff --git a/jme3-testdata/src/main/resources/Textures/Cursors/nyancat.ico b/engine/test-data/Textures/Cursors/nyancat.ico similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Cursors/nyancat.ico rename to engine/test-data/Textures/Cursors/nyancat.ico diff --git a/jme3-testdata/src/main/resources/Textures/HdrTest/Memorial.hdr b/engine/test-data/Textures/HdrTest/Memorial.hdr similarity index 100% rename from jme3-testdata/src/main/resources/Textures/HdrTest/Memorial.hdr rename to engine/test-data/Textures/HdrTest/Memorial.hdr diff --git a/jme3-testdata/src/main/resources/Textures/HdrTest/Memorial.j3m b/engine/test-data/Textures/HdrTest/Memorial.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/HdrTest/Memorial.j3m rename to engine/test-data/Textures/HdrTest/Memorial.j3m diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Bright/BrightSky.dds b/engine/test-data/Textures/Sky/Bright/BrightSky.dds similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Bright/BrightSky.dds rename to engine/test-data/Textures/Sky/Bright/BrightSky.dds diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Bright/FullskiesBlueClear03.dds b/engine/test-data/Textures/Sky/Bright/FullskiesBlueClear03.dds similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Bright/FullskiesBlueClear03.dds rename to engine/test-data/Textures/Sky/Bright/FullskiesBlueClear03.dds diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Lagoon/LICENSE.txt b/engine/test-data/Textures/Sky/Lagoon/LICENSE.txt similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Lagoon/LICENSE.txt rename to engine/test-data/Textures/Sky/Lagoon/LICENSE.txt diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_down.jpg b/engine/test-data/Textures/Sky/Lagoon/lagoon_down.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_down.jpg rename to engine/test-data/Textures/Sky/Lagoon/lagoon_down.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_east.jpg b/engine/test-data/Textures/Sky/Lagoon/lagoon_east.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_east.jpg rename to engine/test-data/Textures/Sky/Lagoon/lagoon_east.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_north.jpg b/engine/test-data/Textures/Sky/Lagoon/lagoon_north.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_north.jpg rename to engine/test-data/Textures/Sky/Lagoon/lagoon_north.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_south.jpg b/engine/test-data/Textures/Sky/Lagoon/lagoon_south.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_south.jpg rename to engine/test-data/Textures/Sky/Lagoon/lagoon_south.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_up.jpg b/engine/test-data/Textures/Sky/Lagoon/lagoon_up.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_up.jpg rename to engine/test-data/Textures/Sky/Lagoon/lagoon_up.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_west.jpg b/engine/test-data/Textures/Sky/Lagoon/lagoon_west.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/Lagoon/lagoon_west.jpg rename to engine/test-data/Textures/Sky/Lagoon/lagoon_west.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Sky/St Peters/StPeters.hdr b/engine/test-data/Textures/Sky/St Peters/StPeters.hdr similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/St Peters/StPeters.hdr rename to engine/test-data/Textures/Sky/St Peters/StPeters.hdr diff --git a/jme3-testdata/src/main/resources/Textures/Sky/St Peters/StPeters.jpg b/engine/test-data/Textures/Sky/St Peters/StPeters.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Sky/St Peters/StPeters.jpg rename to engine/test-data/Textures/Sky/St Peters/StPeters.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall.j3m b/engine/test-data/Textures/Terrain/BrickWall/BrickWall.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall.j3m rename to engine/test-data/Textures/Terrain/BrickWall/BrickWall.j3m diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall.jpg b/engine/test-data/Textures/Terrain/BrickWall/BrickWall.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall.jpg rename to engine/test-data/Textures/Terrain/BrickWall/BrickWall.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall2.j3m b/engine/test-data/Textures/Terrain/BrickWall/BrickWall2.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall2.j3m rename to engine/test-data/Textures/Terrain/BrickWall/BrickWall2.j3m diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall_height.jpg b/engine/test-data/Textures/Terrain/BrickWall/BrickWall_height.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall_height.jpg rename to engine/test-data/Textures/Terrain/BrickWall/BrickWall_height.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall_normal.jpg b/engine/test-data/Textures/Terrain/BrickWall/BrickWall_normal.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall_normal.jpg rename to engine/test-data/Textures/Terrain/BrickWall/BrickWall_normal.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall_normal_parallax.dds b/engine/test-data/Textures/Terrain/BrickWall/BrickWall_normal_parallax.dds similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/BrickWall/BrickWall_normal_parallax.dds rename to engine/test-data/Textures/Terrain/BrickWall/BrickWall_normal_parallax.dds diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Pond/Pond.j3m b/engine/test-data/Textures/Terrain/Pond/Pond.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Pond/Pond.j3m rename to engine/test-data/Textures/Terrain/Pond/Pond.j3m diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Pond/Pond.jpg b/engine/test-data/Textures/Terrain/Pond/Pond.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Pond/Pond.jpg rename to engine/test-data/Textures/Terrain/Pond/Pond.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Pond/Pond_normal.png b/engine/test-data/Textures/Terrain/Pond/Pond_normal.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Pond/Pond_normal.png rename to engine/test-data/Textures/Terrain/Pond/Pond_normal.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Rock/Rock.PNG b/engine/test-data/Textures/Terrain/Rock/Rock.PNG similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Rock/Rock.PNG rename to engine/test-data/Textures/Terrain/Rock/Rock.PNG diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Rock/Rock.j3m b/engine/test-data/Textures/Terrain/Rock/Rock.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Rock/Rock.j3m rename to engine/test-data/Textures/Terrain/Rock/Rock.j3m diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Rock/Rock_normal.png b/engine/test-data/Textures/Terrain/Rock/Rock_normal.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Rock/Rock_normal.png rename to engine/test-data/Textures/Terrain/Rock/Rock_normal.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Rock2/rock.jpg b/engine/test-data/Textures/Terrain/Rock2/rock.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Rock2/rock.jpg rename to engine/test-data/Textures/Terrain/Rock2/rock.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Rocky/Rocky.j3m b/engine/test-data/Textures/Terrain/Rocky/Rocky.j3m similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Rocky/Rocky.j3m rename to engine/test-data/Textures/Terrain/Rocky/Rocky.j3m diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Rocky/RockyNormals.jpg b/engine/test-data/Textures/Terrain/Rocky/RockyNormals.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Rocky/RockyNormals.jpg rename to engine/test-data/Textures/Terrain/Rocky/RockyNormals.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/Rocky/RockyTexture.jpg b/engine/test-data/Textures/Terrain/Rocky/RockyTexture.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/Rocky/RockyTexture.jpg rename to engine/test-data/Textures/Terrain/Rocky/RockyTexture.jpg diff --git a/engine/test-data/Textures/Terrain/splat/alpha1.png b/engine/test-data/Textures/Terrain/splat/alpha1.png new file mode 100644 index 000000000..bb7742fe9 Binary files /dev/null and b/engine/test-data/Textures/Terrain/splat/alpha1.png differ diff --git a/engine/test-data/Textures/Terrain/splat/alpha2.png b/engine/test-data/Textures/Terrain/splat/alpha2.png new file mode 100644 index 000000000..28e48c64d Binary files /dev/null and b/engine/test-data/Textures/Terrain/splat/alpha2.png differ diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/alphamap.png b/engine/test-data/Textures/Terrain/splat/alphamap.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/alphamap.png rename to engine/test-data/Textures/Terrain/splat/alphamap.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/alphamap2.png b/engine/test-data/Textures/Terrain/splat/alphamap2.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/alphamap2.png rename to engine/test-data/Textures/Terrain/splat/alphamap2.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/dirt.jpg b/engine/test-data/Textures/Terrain/splat/dirt.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/dirt.jpg rename to engine/test-data/Textures/Terrain/splat/dirt.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/dirt_normal.png b/engine/test-data/Textures/Terrain/splat/dirt_normal.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/dirt_normal.png rename to engine/test-data/Textures/Terrain/splat/dirt_normal.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/fortress512.png b/engine/test-data/Textures/Terrain/splat/fortress512.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/fortress512.png rename to engine/test-data/Textures/Terrain/splat/fortress512.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/grass.jpg b/engine/test-data/Textures/Terrain/splat/grass.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/grass.jpg rename to engine/test-data/Textures/Terrain/splat/grass.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/grass_normal.jpg b/engine/test-data/Textures/Terrain/splat/grass_normal.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/grass_normal.jpg rename to engine/test-data/Textures/Terrain/splat/grass_normal.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/mountains1024.jpg b/engine/test-data/Textures/Terrain/splat/mountains1024.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/mountains1024.jpg rename to engine/test-data/Textures/Terrain/splat/mountains1024.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/mountains128.png b/engine/test-data/Textures/Terrain/splat/mountains128.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/mountains128.png rename to engine/test-data/Textures/Terrain/splat/mountains128.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/mountains512.png b/engine/test-data/Textures/Terrain/splat/mountains512.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/mountains512.png rename to engine/test-data/Textures/Terrain/splat/mountains512.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/pools.png b/engine/test-data/Textures/Terrain/splat/pools.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/pools.png rename to engine/test-data/Textures/Terrain/splat/pools.png diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/road.jpg b/engine/test-data/Textures/Terrain/splat/road.jpg similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/road.jpg rename to engine/test-data/Textures/Terrain/splat/road.jpg diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/road_normal.png b/engine/test-data/Textures/Terrain/splat/road_normal.png similarity index 100% rename from jme3-testdata/src/main/resources/Textures/Terrain/splat/road_normal.png rename to engine/test-data/Textures/Terrain/splat/road_normal.png diff --git a/jme3-testdata/src/main/resources/profiling points b/engine/test-data/profiling points similarity index 100% rename from jme3-testdata/src/main/resources/profiling points rename to engine/test-data/profiling points diff --git a/engine/test/com/jme/animation/CompactQuaternionArrayTest.java b/engine/test/com/jme/animation/CompactQuaternionArrayTest.java new file mode 100644 index 000000000..2e328be31 --- /dev/null +++ b/engine/test/com/jme/animation/CompactQuaternionArrayTest.java @@ -0,0 +1,45 @@ +package com.jme.animation; + +import com.jme3.animation.CompactQuaternionArray; +import com.jme3.math.Quaternion; +import java.util.Arrays; +import static org.junit.Assert.assertTrue; +import org.junit.Before; +import org.junit.Test; + +public class CompactQuaternionArrayTest { + + @Before + public void setUp() throws Exception { + } + + @Test + public void testCompactQuaternionArrayQuaternionArray() { + Quaternion[] objArray = new Quaternion[] { + new Quaternion(1, 0, 1, 1), + new Quaternion(1, 1, 1, 0), + new Quaternion(0, 1, 1, 0), + new Quaternion(1, 1, 1, 0), + new Quaternion(1, 0, 1, 1), + }; + CompactQuaternionArray compact = new CompactQuaternionArray(); + compact.add(objArray); + assertTrue(Arrays.equals(compact.getIndex(objArray), new int[] {0, 1, 2, 1, 0})); + assertTrue(Arrays.equals(compact.getSerializedData(), new float[] {1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0})); + } + + @Test + public void testCompactQuaternionArrayDoubleArrayIntArray() { + int[] indexArray = new int[] {0, 1, 2, 1, 0}; + float[] dataArray = new float[] {1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0}; + Quaternion[] objArray = new Quaternion[] { + new Quaternion(1, 0, 1, 1), + new Quaternion(1, 1, 1, 0), + new Quaternion(0, 1, 1, 0), + new Quaternion(1, 1, 1, 0), + new Quaternion(1, 0, 1, 1), + }; + CompactQuaternionArray compact = new CompactQuaternionArray(dataArray, indexArray); + assertTrue(Arrays.deepEquals(compact.toObjectArray(), objArray)); + } +} diff --git a/engine/test/com/jme/animation/CompactVector3ArrayTest.java b/engine/test/com/jme/animation/CompactVector3ArrayTest.java new file mode 100644 index 000000000..46280df36 --- /dev/null +++ b/engine/test/com/jme/animation/CompactVector3ArrayTest.java @@ -0,0 +1,156 @@ +package com.jme.animation; + +import com.jme3.animation.CompactVector3Array; +import com.jme3.export.binary.BinaryExporter; +import com.jme3.export.binary.BinaryImporter; +import com.jme3.math.Vector3f; +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; + +public class CompactVector3ArrayTest { + private final Vector3f[] objArray1 = new Vector3f[] { + new Vector3f(1, 0, 1), // 0 + new Vector3f(1, 1, 1), // 1 + new Vector3f(0, 1, 1), // 2 + new Vector3f(1, 1, 1), // 1 + new Vector3f(1, 0, 1), // 0 + }; + private final Vector3f[] objArray2 = new Vector3f[] { + new Vector3f(1, 0, 2), // 3 + new Vector3f(1, 1, 1), // 1 + new Vector3f(0, 1, 1), // 2 + null, // -1 + new Vector3f(1, 0, 2), // 3 + }; + private static final int[] index1 = new int[] {0, 1, 2, 1, 0}; + private static final int[] index2 = new int[] {3, 1, 2, -1, 3}; + private int[] index12; + private static final float[] serialData = new float[] {1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 2}; + + CompactVector3Array compact; + + @Before + public void setUp() throws Exception { + compact = new CompactVector3Array(); + index12 = Arrays.copyOf(index1, index1.length+index2.length); + System.arraycopy(index2, 0, index12, index1.length, index2.length); + } + + @Test + public void testCompactVector3ArrayAdd() { + compact.add(objArray1); + compact.add(objArray2); + _testAdd(); + + try { + compact.freeze(); + compact.add(objArray1); + fail(); + } catch (Exception e) { + } + } + + private void _testAdd() { + assertTrue(Arrays.equals(compact.getIndex(objArray1), index1)); + assertTrue(Arrays.equals(compact.getIndex(objArray2), index2)); + assertTrue(Arrays.equals(compact.getSerializedData(), serialData)); + } + + @Test + public void testCompactVector3ArrayFloatArrayIntArray() { + int[] indexArray = index1; + float[] dataArray = new float[] {1, 0, 1, 1, 1, 1, 0, 1, 1}; + Vector3f[] objArray = new Vector3f[] { + new Vector3f(1, 0, 1), + new Vector3f(1, 1, 1), + new Vector3f(0, 1, 1), + new Vector3f(1, 1, 1), + new Vector3f(1, 0, 1), + }; + CompactVector3Array compact = new CompactVector3Array(dataArray, indexArray); + assertTrue(Arrays.deepEquals(compact.toObjectArray(), objArray)); + } + + @Test + public void testGetTotalObjectSize() { + compact.add(objArray1); + assertTrue(compact.getTotalObjectSize() == 5); + assertTrue(compact.getCompactObjectSize() == 3); + compact.add(objArray2); + _testSize(); + } + + private void _testSize() { + assertTrue(compact.getTotalObjectSize() == 10); + assertTrue(compact.getCompactObjectSize() == 4); + } + + @Test + public void testGet() { + compact.add(objArray1); + Vector3f v1 = compact.get(1, new Vector3f()); + assertEquals(new Vector3f(1, 1, 1), v1); + compact.add(objArray2); + _testGet(); + } + + private void _testGet() { + Vector3f v2 = compact.get(1, new Vector3f()); + assertEquals(new Vector3f(1, 1, 1), v2); + Vector3f v3 = compact.get(5, new Vector3f()); + assertEquals(new Vector3f(1, 0, 2), v3); + } + + @Test + public void testGetCompactIndex() { + compact.add(objArray1); + compact.add(objArray2); + _testCompactIndex(); + } + + private void _testCompactIndex() { + for (int i = 0; i < index12.length; i++) { + assertEquals(index12[i], compact.getCompactIndex(i)); + } + } + + @Test + public void testGetIndex() { + compact.add(objArray1); + compact.add(objArray2); + _testGetIndex(); + } + + private void _testGetIndex() { + Vector3f[] reverse = new Vector3f[objArray1.length]; + int[] reverseIndex = new int[objArray1.length]; + for (int i = 0; i < objArray1.length; i++) { + reverse[i] = objArray1[objArray1.length-1-i]; + reverseIndex[i] = index1[objArray1.length-1-i]; + } + + int[] index = compact.getIndex(reverse); + for (int i = 0; i < index.length; i++) { + assertEquals(reverseIndex[i], index[i]); + } + } + + @Test + public void testRead() throws IOException { + File file = File.createTempFile("compactArray", "test"); + BinaryImporter importer = new BinaryImporter(); + BinaryExporter exporter = new BinaryExporter(); + compact.add(objArray1); + compact.add(objArray2); + exporter.save(compact, file); + compact = (CompactVector3Array) importer.load(file); + _testSize(); + _testCompactIndex(); + _testGet(); + file.delete(); + } +} diff --git a/engine/test/com/jme3/font/ColorTagsTest.java b/engine/test/com/jme3/font/ColorTagsTest.java new file mode 100644 index 000000000..084a5256d --- /dev/null +++ b/engine/test/com/jme3/font/ColorTagsTest.java @@ -0,0 +1,45 @@ +package com.jme3.font; + +import org.junit.After; +import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; + +public class ColorTagsTest { + + @Before + public void setUp() throws Exception { + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testGetPureText() { + String str1 = "abcde test"; + ColorTags tag1 = new ColorTags(str1); + assertEquals(tag1.getPlainText(), str1); + + String str2 = "abcde\\#1A3d#test\\#1A3#"; + ColorTags tag2 = new ColorTags(str2); + assertEquals("abcdetest", tag2.getPlainText()); + } + + @Test + public void testGetTags() { + String str1 = "abcde test"; + ColorTags tag1 = new ColorTags(str1); + assertTrue(tag1.getTags().isEmpty()); + + String str2 = "abcde\\#1A3d#test\\#abef1211#gogo\\#abef12#yeye\\#ab1#hey"; + ColorTags tag2 = new ColorTags(str2); + assertEquals(4, tag2.getTags().size()); + assertEquals("abcdetestgogoyeyehey", tag2.getPlainText()); + assertEquals(5, tag2.getTags().get(0).start); + assertEquals(9, tag2.getTags().get(1).start); + assertEquals(13, tag2.getTags().get(2).start); + assertEquals(17, tag2.getTags().get(3).start); + } + +} diff --git a/engine/test/com/jme3/math/TrigonometryTest.java b/engine/test/com/jme3/math/TrigonometryTest.java new file mode 100644 index 000000000..c9df4878f --- /dev/null +++ b/engine/test/com/jme3/math/TrigonometryTest.java @@ -0,0 +1,23 @@ +package com.jme3.math; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class TrigonometryTest { + + @Test + public void testVector2(){ + Vector2f original = new Vector2f(1, 2); + Vector2f recreated = new Vector2f(); + + float angle = original.getAngle(); + float length = original.length(); + + recreated.set( FastMath.cos(angle), FastMath.sin(angle) ); + recreated.multLocal(length); + + assertEquals( original.getX(), recreated.getX(), 0.000001 ); + assertEquals( original.getY(), recreated.getY(), 0.000001 ); + } + +} diff --git a/engine/test/com/jme3/scene/GeometryTest.java b/engine/test/com/jme3/scene/GeometryTest.java new file mode 100644 index 000000000..bf00e8f5b --- /dev/null +++ b/engine/test/com/jme3/scene/GeometryTest.java @@ -0,0 +1,178 @@ +package com.jme3.scene; + +import com.jme3.bounding.BoundingVolume; +import com.jme3.material.Material; +import com.jme3.math.Quaternion; +import com.jme3.math.Transform; +import com.jme3.math.Vector3f; +import org.junit.Test; +import static org.easymock.EasyMock.*; +import static org.junit.Assert.*; + +public class GeometryTest { + + @Test + public void testConstructorNameNull() { + Geometry geom = new Geometry(null); + assertNull(geom.getName()); + } + + @Test + public void testConstructorName() { + Geometry geom = new Geometry("TestGeometry"); + assertEquals("TestGeometry", geom.getName()); + } + + @Test(expected = NullPointerException.class) + public void testConstructorNameMeshNullMesh() { + Geometry geom = new Geometry("TestGeometry", null); + } + + @Test + public void testConstructorNameMesh() { + Mesh m = new Mesh(); + Geometry geom = new Geometry("TestGeometry", m); + assertEquals("TestGeometry", geom.getName()); + assertEquals(m, geom.getMesh()); + } + + @Test(expected = IllegalStateException.class) + public void testSetLodLevelMeshLodZero() { + Mesh m = new Mesh(); + Geometry geom = new Geometry("TestGeometry", m); + geom.setLodLevel(0); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetLodLevelLodLessZero() { + Mesh m = new Mesh(); + VertexBuffer lodLevels = new VertexBuffer(VertexBuffer.Type.Size); + m.setLodLevels(new VertexBuffer[]{lodLevels}); + Geometry geom = new Geometry("TestGeometry", m); + geom.setLodLevel(-1); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetLodLevelLodGreaterMeshLod() { + Mesh m = new Mesh(); + VertexBuffer lodLevel = new VertexBuffer(VertexBuffer.Type.Size); + m.setLodLevels(new VertexBuffer[]{lodLevel}); + Geometry geom = new Geometry("TestGeometry", m); + geom.setLodLevel(5); + } + + @Test + public void testSetLodLevel() { + Mesh m = new Mesh(); + VertexBuffer lodLevel = new VertexBuffer(VertexBuffer.Type.Size); + m.setLodLevels(new VertexBuffer[]{lodLevel, lodLevel, lodLevel}); + Geometry geom = new Geometry("TestGeometry", m); + geom.setLodLevel(2); + assertEquals(2, geom.getLodLevel()); + } + + @Test(expected = IllegalArgumentException.class) + public void testSetMeshNull() { + Geometry geom = new Geometry(); + geom.setMesh(null); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSetMeshBatched() { + Mesh m = new Mesh(); + Geometry geom = new Geometry(); + BatchNode bn = new BatchNode(); + geom.batch(bn, 1); + geom.setMesh(m); + } + + @Test + public void testSetMesh() { + Mesh m = new Mesh(); + Geometry geom = new Geometry(); + geom.setMesh(m); + assertEquals(m, geom.getMesh()); + } + + @Test(expected = UnsupportedOperationException.class) + public void testSetMaterialBatched() { + Material m = new Material(); + Geometry geom = new Geometry(); + BatchNode bn = new BatchNode(); + geom.batch(bn, 1); + geom.setMaterial(m); + } + + @Test + public void testSetMaterial() { + Material m = new Material(); + Geometry geom = new Geometry(); + geom.setMaterial(m); + assertEquals(m, geom.getMaterial()); + } + + @Test + public void testUpdateModelBound() { + Mesh mockedMesh = createMock(Mesh.class); + mockedMesh.updateBound(); + expectLastCall(); + + replay(mockedMesh); + Geometry geom = new Geometry(); + geom.setMesh(mockedMesh); + geom.updateModelBound(); + + verify(mockedMesh); + } + + @Test(expected = NullPointerException.class) + public void testUpdateWorldBoundNoMesh() { + Geometry geom = new Geometry(); + geom.updateWorldBound(); + } + + @Test + public void testUpdateWorlBoundNoBoundingVolume() { + Mesh mockedMesh = createMock(Mesh.class); + expect(mockedMesh.getBound()).andReturn(null); + replay(mockedMesh); + + Geometry geom = new Geometry(); + geom.setMesh(mockedMesh); + geom.updateWorldBound(); + + verify(mockedMesh); + } + + @Test + public void testUpdateWorlBoundIgnoreTransform() { + Mesh mockedMesh = createMock(Mesh.class); + BoundingVolume mockedBoundingVolume = createMock(BoundingVolume.class); + expect(mockedMesh.getBound()).andReturn(mockedBoundingVolume).times(2); + expect(mockedBoundingVolume.clone(null)).andReturn(null); + replay(mockedMesh, mockedBoundingVolume); + + Geometry geom = new Geometry(); + geom.setMesh(mockedMesh); + geom.setIgnoreTransform(true); + geom.updateWorldBound(); + + verify(mockedMesh, mockedBoundingVolume); + } + + @Test + public void testUpdateWorlBoundTransform() { + Mesh mockedMesh = createMock(Mesh.class); + BoundingVolume mockedBoundingVolume = createMock(BoundingVolume.class); + expect(mockedMesh.getBound()).andReturn(mockedBoundingVolume).times(2); + expect(mockedBoundingVolume.transform(anyObject(Transform.class), same((BoundingVolume) null))).andReturn(null); + replay(mockedMesh, mockedBoundingVolume); + + Geometry geom = new Geometry(); + geom.setMesh(mockedMesh); + geom.setIgnoreTransform(false); + geom.updateWorldBound(); + + verify(mockedMesh, mockedBoundingVolume); + } +} diff --git a/engine/town.zip b/engine/town.zip new file mode 100644 index 000000000..53e31a0bf Binary files /dev/null and b/engine/town.zip differ diff --git a/engine/wildhouse.zip b/engine/wildhouse.zip new file mode 100644 index 000000000..ea9cc26eb Binary files /dev/null and b/engine/wildhouse.zip differ diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index e25636a95..000000000 --- a/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -jmeVersion = 3.0.10 - -// path to android ndk for building native libraries -#ndkPath=/Users/normenhansen/Documents/Code-Import/android-ndk-r7 -ndkPath = D:/android/android-ndk-r8e diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 583859812..000000000 Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 9997bdc41..000000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Mon Jan 06 23:12:51 CET 2014 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.10-bin.zip diff --git a/gradlew b/gradlew deleted file mode 100755 index 91a7e269e..000000000 --- a/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100644 index aec99730b..000000000 --- a/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/jme3-android-native/build.gradle b/jme3-android-native/build.gradle deleted file mode 100644 index 4c065aac8..000000000 --- a/jme3-android-native/build.gradle +++ /dev/null @@ -1,154 +0,0 @@ -// Note: "common.gradle" in the root project contains additional initialization -// for this project. This initialization is applied in the "build.gradle" -// of the root project. - -// NetBeans will automatically add "run" and "debug" tasks relying on the -// "mainClass" property. You may however define the property prior executing -// tasks by passing a "-PmainClass=" argument. -// -// Note however, that you may define your own "run" and "debug" task if you -// prefer. In this case NetBeans will not add these tasks but you may rely on -// your own implementation. -// // OpenAL Soft r1.15.1 -//String openALSoftUrl = 'http://repo.or.cz/w/openal-soft.git/snapshot/9b6a226da55a987cb883f425eeb568776ea12c8d.zip' -// OpenAL Soft r1.15.1 + Android OpenSL Support -String openALSoftUrl = 'http://repo.or.cz/w/openal-soft.git/snapshot/be25e6802dacad78876c6fa1d6a5c63797b8a9ed.zip' -// OpenAL Soft r1.15.1 latest build (at the time) -//String openALSoftUrl = 'http://repo.or.cz/w/openal-soft.git/snapshot/3f5914e0949ee12b504ee7254990e007ff8057ef.zip' - -// OpenAL Soft directory the download is extracted into -// Typically, the downloaded OpenAL Soft zip file will extract to a directory -// called "openal-soft" -String openALSoftFolder = 'openal-soft' -String openALSoftZipFile = 'OpenALSoft.zip' - -//Working directory for the ndk build. -//Must be the parent directory of the jni directory -//Libs directory (output of ndk) will be created in this directory as well -String ndkWorkingPath = 'src/native' - -// jni folder path to build from -String jniPath = ndkWorkingPath + '/jni' - -//Output directory of the NDK (do not change) -String ndkOutputPath = ndkWorkingPath + '/libs' - -// jME Android Native source files path -String jMEAndroidPath = 'src/native/android' - -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -sourceSets { - main { - java { - srcDir jMEAndroidPath - } - } -} - -dependencies { - // TODO: Add dependencies here - // but note that JUnit should have already been added in parent.gradle. - // By default, only the Maven Central Repository is specified in - // parent.gradle. - // - // You can read more about how to add dependency here: - // http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies - compile project(':jme3-android') -} - -// Download bullet if not available -task downloadOpenALSoft(type: MyDownload) { - sourceUrl = openALSoftUrl - target = file(openALSoftZipFile) -} - -// Unzip OpenALSoft -task unzipOpenALSoft(type: Copy) { - def zipFile = file(openALSoftZipFile) - def outputDir = file(".") - - from zipTree(zipFile) - into outputDir -} -unzipOpenALSoft.dependsOn { - def zipFilePath = project.projectDir.absolutePath + File.separator + openALSoftZipFile - def zipFile = new File(zipFilePath) -// println "zipFile path: " + zipFile.absolutePath -// println "zipFile exists: " + zipFile.exists() - if (!zipFile.exists()) { - downloadOpenALSoft - } -} - -// Copy OpenALSoft files to jni directory -task copyOpenALSoft(type: Copy) { - def sourceDir = file(openALSoftFolder) - def outputDir = file(jniPath) - - from sourceDir - into outputDir -} -copyOpenALSoft.dependsOn { - def openALSoftUnzipDir = new File(project.projectDir.absolutePath + File.separator + openALSoftFolder) -// println "openALSoftUnzipDir path: " + openALSoftUnzipDir.absolutePath -// println "openALSoftUnzipDir exists: " + openALSoftUnzipDir.isDirectory() - if (!openALSoftUnzipDir.isDirectory()) { - unzipOpenALSoft - } -} - -// Copy jME Android native files to jni directory -task copyJmeOpenALSoft(type: Copy, dependsOn:copyOpenALSoft) { - def sourceDir = file(jMEAndroidPath) - def outputDir = file(jniPath) - - from sourceDir - into outputDir -} - -task buildNative(type: Exec, dependsOn:copyJmeOpenALSoft) { - String ndkBuildFile = "ndk-build" - // if windows, use ndk-build.cmd instead - if (System.properties['os.name'].toLowerCase().contains('windows')) { - ndkBuildFile = "ndk-build.cmd" - } - - // ndkPath is defined in the root project gradle.properties file - String ndkBuildPath = ndkPath + File.separator + ndkBuildFile - //Use the environment variable for the NDK location if defined - if (System.env.ANDROID_NDK != null) { - ndkBuildPath = System.env.ANDROID_NDK + File.separator + ndkBuildFile - } - - // need to target android-9 so the ndk can pull in the opensl library - args 'TARGET_PLATFORM=android-9' - workingDir ndkWorkingPath - executable ndkBuildPath -} - -jar.into("lib") { from ndkOutputPath } - -compileJava.dependsOn { - // ndkPath is defined in the root project gradle.properties file - def ndkDir = new File(ndkPath) - if (ndkDir.isDirectory()) { - buildNative - } -} - -// Helper class to wrap ant dowload task -class MyDownload extends DefaultTask { - @Input - String sourceUrl - - @OutputFile - File target - - @TaskAction - void download() { - ant.get(src: sourceUrl, dest: target) - } -} diff --git a/jme3-android-native/src/native/libs/armeabi-v7a/libopenalsoftjme.so b/jme3-android-native/src/native/libs/armeabi-v7a/libopenalsoftjme.so deleted file mode 100644 index 04d4fd48f..000000000 Binary files a/jme3-android-native/src/native/libs/armeabi-v7a/libopenalsoftjme.so and /dev/null differ diff --git a/jme3-android-native/src/native/libs/armeabi/libopenalsoftjme.so b/jme3-android-native/src/native/libs/armeabi/libopenalsoftjme.so deleted file mode 100644 index ff561809c..000000000 Binary files a/jme3-android-native/src/native/libs/armeabi/libopenalsoftjme.so and /dev/null differ diff --git a/jme3-android-native/src/native/libs/mips/libopenalsoftjme.so b/jme3-android-native/src/native/libs/mips/libopenalsoftjme.so deleted file mode 100644 index 24f07dd22..000000000 Binary files a/jme3-android-native/src/native/libs/mips/libopenalsoftjme.so and /dev/null differ diff --git a/jme3-android-native/src/native/libs/x86/libopenalsoftjme.so b/jme3-android-native/src/native/libs/x86/libopenalsoftjme.so deleted file mode 100644 index 93e2029ad..000000000 Binary files a/jme3-android-native/src/native/libs/x86/libopenalsoftjme.so and /dev/null differ diff --git a/jme3-android/build.gradle b/jme3-android/build.gradle deleted file mode 100644 index 417273d39..000000000 --- a/jme3-android/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') - compile project(':jme3-plugins') - compile 'com.google.android:android:4.1.1.4' -} diff --git a/jme3-blender/build.gradle b/jme3-blender/build.gradle deleted file mode 100644 index 96a71cb5c..000000000 --- a/jme3-blender/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') - compile project(':jme3-desktop') -} diff --git a/jme3-bullet-native/build.gradle b/jme3-bullet-native/build.gradle deleted file mode 100644 index 03ae74889..000000000 --- a/jme3-bullet-native/build.gradle +++ /dev/null @@ -1,258 +0,0 @@ -apply plugin: 'cpp' - -String bulletUrl = 'http://bullet.googlecode.com/files/bullet-2.82-r2704.zip' -String bulletFolder = 'bullet-2.82-r2704' -String bulletSrcPath = bulletFolder + '/src' -String bulletZipFile = 'bullet.zip' - -//Directories for the android ndk build. -String ndkWorkingPath = 'src/native' -String jmeAndroidPath = ndkWorkingPath + '/android' -String jmeCppPath = ndkWorkingPath + '/cpp' -String jniPath = ndkWorkingPath + '/jni' -String ndkOutputPath = ndkWorkingPath + '/libs' - -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-bullet') -} - -// C++ sources for binary compilation -sources { - bulletjme { - cpp { - source { - srcDir 'src/native/cpp' - srcDir bulletSrcPath - exclude 'BulletMultiThreaded/GpuSoftBodySolvers/**' - include '**/*.cpp' - } - exportedHeaders { - srcDir 'src/native/cpp' - srcDir bulletSrcPath - include '**/*.h' - } - } - } -} - -// Java source sets for IDE acces and source jar bundling / mavenization -sourceSets { - main { - java { - srcDir 'src/native/cpp' - srcDir 'src/native/android' - } - } -} - -// Set of target platforms, will be available based on build system -targetPlatforms { -// osx_universal { // TODO: universal binary doesn't work? -// architecture 'x86_64' -// architecture 'x86' -// operatingSystem 'osx' -// } - osx_x86 { - architecture "x86" - operatingSystem "osx" - } - osx_x64 { - architecture "x86_64" - operatingSystem "osx" - } - linux_x86 { - architecture "x86" - operatingSystem "linux" - } - linux_x86_64 { - architecture "x86_64" - operatingSystem "linux" - } - windows_x86 { - architecture "x86" - operatingSystem "windows" - } - windows_x86_64 { - architecture "x86_64" - operatingSystem "windows" - } -} - -// Defines created C++ libraries -libraries { - bulletjme { - } - all { - binaries.all { - cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include" - if (targetPlatform.operatingSystem.name == "osx") { - cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/darwin" - } else if (targetPlatform.operatingSystem.name == "linux") { - cppCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux" - cppCompiler.args "-fPIC" - cppCompiler.args "-fpermissive" - cppCompiler.args "-static-libgcc" - linker.args "-static" - } else if (targetPlatform.operatingSystem.name == "windows") { - cppCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32" -// cppCompiler.define('WIN32') -// linker.args 'Shlwapi.lib', 'Advapi32.lib' - } - } - } -} - -// Download bullet if not available -task downloadBullet(type: MyDownload) { - sourceUrl = bulletUrl - target = file(bulletZipFile) -} - -// Unzip bullet if not available -task unzipBullet(type: Copy) { - def zipFile = file(bulletZipFile) - def outputDir = file(".") - - from zipTree(zipFile) - into outputDir -} -unzipBullet.dependsOn { - def zipFilePath = project.projectDir.absolutePath + File.separator + bulletZipFile - def zipFile = new File(zipFilePath) -// println "zipFile path: " + zipFile.absolutePath -// println "zipFile exists: " + zipFile.exists() - if (!zipFile.exists()) { - downloadBullet - } -} - -compileJava.dependsOn { - def bulletUnzipDir = new File(project.projectDir.absolutePath + File.separator + bulletFolder) -// println "bulletUnzipDir path: " + bulletUnzipDir.absolutePath -// println "bulletUnzipDir exists: " + bulletUnzipDir.isDirectory() - if (!bulletUnzipDir.isDirectory()) { - unzipBullet - } -} - -//task buildAllExecutables { -// dependsOn binaries.withType(SharedLibraryBinary).matching { -// it.buildable -// } -//} - -// Adds all built binaries to java jar task -binaries.withType(SharedLibraryBinary) { binary -> - if (!buildable) { - //TODO: obtain elsewhere if not available - return - } - // Get builder of this binary - def builderTask = binary.tasks.builder - // Add output to jar file - jar.into("native/${targetPlatform.operatingSystem.name}/${targetPlatform.architecture.name}") { from builderTask.outputFile } - // Add depend on build - jar.dependsOn builderTask -} - -// Helper class to wrap ant dowload task -class MyDownload extends DefaultTask { - @Input - String sourceUrl - - @OutputFile - File target - - @TaskAction - void download() { - ant.get(src: sourceUrl, dest: target) - } -} - - -// ANDROID NDK BUILD - -// Copy Bullet files to jni directory -task copyBullet(type: Copy) { - def sourceDir = file(bulletSrcPath) - def outputDir = file(jniPath) - - from sourceDir - into outputDir -} -copyBullet.dependsOn { - def bulletUnzipDir = new File(project.projectDir.absolutePath + File.separator + bulletFolder) - if (!bulletUnzipDir.isDirectory()) { - unzipBullet - } -} - -// Copy jME cpp native files to jni directory -task copyJmeCpp(type: Copy, dependsOn:copyBullet) { - def sourceDir = file(jmeCppPath) - def outputDir = file(jniPath) - - from sourceDir - into outputDir -} - -// Copy jME android native files to jni directory -task copyJmeAndroid(type: Copy, dependsOn:copyJmeCpp) { - def sourceDir = file(jmeAndroidPath) - def outputDir = file(jniPath) - - from sourceDir - into outputDir -} - -task buildNative(type: Exec, dependsOn:copyJmeAndroid) { - String ndkBuildFile = "ndk-build" - // if windows, use ndk-build.cmd instead - if (System.properties['os.name'].toLowerCase().contains('windows')) { - ndkBuildFile = "ndk-build.cmd" - } - - String ndkBuildPath = ndkPath + File.separator + ndkBuildFile - //Use the environment variable for the NDK location if defined - if (System.env.ANDROID_NDK != null) { - ndkBuildPath = System.env.ANDROID_NDK + File.separator + ndkBuildFile - } - - // need to target android-9 so the ndk can pull in the opensl library - args 'TARGET_PLATFORM=android-9' - workingDir ndkWorkingPath - executable ndkBuildPath -} - -task jarAndroidLibs(type: Jar, dependsOn:buildNative) { - String jarName = project.name + '-android' - from ndkOutputPath - into('lib') - baseName = jarName -} -//println jar.archiveName -//println relativePath(jar.destinationDir) -//println relativePath(jar.archivePath) -//println jarAndroidLibs.archiveName -//println relativePath(jarAndroidLibs.destinationDir) -//println relativePath(jarAndroidLibs.archivePath) - -jar.dependsOn { - def ndkDir = new File(ndkPath) - if (ndkDir.isDirectory()) { - buildNative - } -} -jar.dependsOn jarAndroidLibs - -//adds files into existing jar file -//jar.into("lib") { from ndkOutputPath } - - -artifacts { - archives jarAndroidLibs -} diff --git a/jme3-bullet-native/src/native/android/Android.mk b/jme3-bullet-native/src/native/android/Android.mk deleted file mode 100644 index cfa2c0012..000000000 --- a/jme3-bullet-native/src/native/android/Android.mk +++ /dev/null @@ -1,68 +0,0 @@ -# /* -# Bullet Continuous Collision Detection and Physics Library for Android NDK -# Copyright (c) 2006-2009 Noritsuna Imamura http://www.siprop.org/ -# -# This software is provided 'as-is', without any express or implied warranty. -# In no event will the authors be held liable for any damages arising from the use of this software. -# Permission is granted to anyone to use this software for any purpose, -# including commercial applications, and to alter it and redistribute it freely, -# subject to the following restrictions: -# -# 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -# 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -# 3. This notice may not be removed or altered from any source distribution. -# */ -LOCAL_PATH:= $(call my-dir) -JME3_PATH:= ${LOCAL_PATH}/../ -BULLET_PATH:= ${LOCAL_PATH}/../ - -include $(CLEAR_VARS) - -LOCAL_MODULE := bulletjme -LOCAL_C_INCLUDES := $(BULLET_PATH)/\ - $(BULLET_PATH)/BulletCollision\ - $(BULLET_PATH)/BulletCollision/BroadphaseCollision\ - $(BULLET_PATH)/BulletCollision/CollisionDispatch\ - $(BULLET_PATH)/BulletCollision/CollisionShapes\ - $(BULLET_PATH)/BulletCollision/NarrowPhaseCollision\ - $(BULLET_PATH)/BulletCollision/Gimpact\ - $(BULLET_PATH)/BulletDynamics\ - $(BULLET_PATH)/BulletDynamics/ConstraintSolver\ - $(BULLET_PATH)/BulletDynamics/Dynamics\ - $(BULLET_PATH)/BulletDynamics/Vehicle\ - $(BULLET_PATH)/BulletDynamics/Character\ - $(BULLET_PATH)/BulletMultiThreaded\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers\ - $(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask\ - $(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Apple\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC\ - $(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10\ - $(BULLET_PATH)/LinearMath\ - $(BULLET_PATH)/BulletSoftBody\ - $(BULLET_PATH)/LinearMath\ - $(BULLET_PATH)/MiniCL\ - $(BULLET_PATH)/MiniCL/MiniCLTask\ - $(BULLET_PATH)/vectormath\ - $(BULLET_PATH)/vectormath/scalar\ - $(BULLET_PATH)/vectormath/sse\ - $(BULLET_PATH)/vectormath/neon - -LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -lm -llog - -FILE_LIST := $(wildcard $(LOCAL_PATH)/*.cpp) -FILE_LIST += $(wildcard $(LOCAL_PATH)/**/*.cpp) -FILE_LIST += $(wildcard $(LOCAL_PATH)/**/**/*.cpp) -LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) - -#LOCAL_SRC_FILES := $(JME3_PATH) - -include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/jme3-bullet/build.gradle b/jme3-bullet/build.gradle deleted file mode 100644 index bcb1d50cc..000000000 --- a/jme3-bullet/build.gradle +++ /dev/null @@ -1,17 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -sourceSets { - main { - java { - srcDir 'src/main/java' - srcDir 'src/common/java' - } - } -} - -dependencies { - compile project(':jme3-core') - compile project(':jme3-terrain') -} diff --git a/jme3-core/build.gradle b/jme3-core/build.gradle deleted file mode 100644 index c5d2b7d2a..000000000 --- a/jme3-core/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -sourceSets { - main { - java { - srcDir 'src/main/java' - srcDir 'src/plugins/java' - srcDir 'src/tools/java' - } - } -} - -dependencies { -} diff --git a/jme3-desktop/build.gradle b/jme3-desktop/build.gradle deleted file mode 100644 index 0a77d7d72..000000000 --- a/jme3-desktop/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') -} diff --git a/jme3-effects/build.gradle b/jme3-effects/build.gradle deleted file mode 100644 index 0a77d7d72..000000000 --- a/jme3-effects/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') -} diff --git a/jme3-examples/build.gradle b/jme3-examples/build.gradle deleted file mode 100644 index 9288c8a1c..000000000 --- a/jme3-examples/build.gradle +++ /dev/null @@ -1,95 +0,0 @@ -//apply plugin:'application' - -if (!hasProperty('mainClass')) { - ext.mainClass = 'jme3test.TestChooser' -} - -//mainClassName = ext.mainClass - -dependencies { - compile project(':jme3-blender') - compile project(':jme3-core') - compile project(':jme3-desktop') - compile project(':jme3-effects') -// compile project(':jme3-bullet') - compile project(':jme3-jbullet') - compile project(':jme3-jogg') -// compile project(':jme3-jogl') - compile project(':jme3-lwjgl') - compile project(':jme3-networking') - compile project(':jme3-niftygui') - compile project(':jme3-plugins') - compile project(':jme3-terrain') - compile project(':jme3-testdata') -} - -jar.doFirst{ - manifest { - attributes('Manifest-Version' : '1.0', -// 'Created-By' : vendor, -// 'Specification-Title' : appName, -// 'Specification-Version' : jmeVersion, -// 'Specification-Vendor' : "jMonkeyEngine", -// 'Implementation-Title' : appName, -// 'Implementation-Version' : version, -// 'Implementation-Vendor' : vendor, - 'Main-Class' : getProperty('mainClass'), - // Add dependencies to manifest, remove version - 'Class-Path' : configurations.compile.resolvedConfiguration.resolvedArtifacts.collect { - 'lib/' + - it.name + - it.classifier != null ? '-' + it.classifier : '' + - '.' + it.extension }.join(' ') - ) - } -} - -task dist (dependsOn: ['build', ':jme3-jogl:jar', ':jme3-bullet:jar']){ - // Copy all dependencies to ../dist/lib, remove versions from jar files - configurations.compile.resolvedConfiguration.resolvedArtifacts.each { artifact -> - copy { - from artifact.file - into '../dist/lib' - if(artifact.classifier != null){ - rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" } - } else{ - rename { "${artifact.name}.${artifact.extension}" } - } - } - } - copy { - from jar.archivePath - into '../dist' - rename { "jMonkeyEngine3.jar" } - } - // Copy JOGL packages, remove version - def config = project(':jme3-jogl').configurations.runtime.copyRecursive({ !(it instanceof ProjectDependency); }) - config.resolvedConfiguration.resolvedArtifacts.each {artifact -> - copy{ - from artifact.file - into '../dist/opt/jogl/lib' - if(artifact.classifier != null){ - rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" } - } else{ - rename { "${artifact.name}.${artifact.extension}" } - } - } - } - copy { - from project(':jme3-jogl').jar.archivePath - into '../dist/opt/jogl' - rename {project(':jme3-jogl').name+".jar"} - } - - // Copy bullet packages, remove version - copy { - from project(':jme3-bullet').jar.archivePath - into '../dist/opt/native-bullet' - rename {project(':jme3-bullet').name+".jar"} - } - copy { - from project(':jme3-bullet-native').jar.archivePath - into '../dist/opt/native-bullet' - rename {"jme3-bullet-natives.jar"} - } -} diff --git a/jme3-jbullet/build.gradle b/jme3-jbullet/build.gradle deleted file mode 100644 index bcf1660bc..000000000 --- a/jme3-jbullet/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -sourceSets { - main { - java { - srcDir 'src/main/java' - srcDir '../jme3-bullet/src/common/java' - } - } -} - -dependencies { - compile ('java3d:vecmath:1.3.1') - compile files('../lib/jbullet.jar', '../lib/stack-alloc.jar') - compile project(':jme3-core') - compile project(':jme3-terrain') -} diff --git a/jme3-jogg/build.gradle b/jme3-jogg/build.gradle deleted file mode 100644 index ca62e666b..000000000 --- a/jme3-jogg/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') - compile files('../lib/j-ogg-oggd.jar', '../lib/j-ogg-vorbisd.jar') -} diff --git a/jme3-jogl/build.gradle b/jme3-jogl/build.gradle deleted file mode 100644 index eb59191e7..000000000 --- a/jme3-jogl/build.gradle +++ /dev/null @@ -1,11 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') - compile project(':jme3-desktop') - compile 'org.jogamp.gluegen:gluegen-rt-main:2.1.3' - compile 'org.jogamp.jogl:jogl-all-main:2.1.3' - compile 'org.jogamp.joal:joal-main:2.1.3' -} diff --git a/jme3-lwjgl/build.gradle b/jme3-lwjgl/build.gradle deleted file mode 100644 index 6ed29fc60..000000000 --- a/jme3-lwjgl/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') - compile project(':jme3-desktop') - compile 'org.lwjgl.lwjgl:lwjgl:2.9.0' -} diff --git a/jme3-networking/build.gradle b/jme3-networking/build.gradle deleted file mode 100644 index 0a77d7d72..000000000 --- a/jme3-networking/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') -} diff --git a/jme3-niftygui/build.gradle b/jme3-niftygui/build.gradle deleted file mode 100644 index 06f7aeeda..000000000 --- a/jme3-niftygui/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -repositories { - maven{ - url 'http://nifty-gui.sourceforge.net/nifty-maven-repo' - } -} - -dependencies { - compile project(':jme3-core') - compile 'lessvoid:nifty:1.3.3' - compile 'lessvoid:nifty-default-controls:1.3.3' -// compile 'lessvoid:nifty-style-black:1.3.3' -} diff --git a/jme3-plugins/build.gradle b/jme3-plugins/build.gradle deleted file mode 100644 index f4857a60f..000000000 --- a/jme3-plugins/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -sourceSets { - main { - java { - srcDir 'src/ogre/java' - srcDir 'src/xml/java' - } - } -} - -dependencies { - compile project(':jme3-core') -} diff --git a/jme3-terrain/build.gradle b/jme3-terrain/build.gradle deleted file mode 100644 index 0a77d7d72..000000000 --- a/jme3-terrain/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { - compile project(':jme3-core') -} diff --git a/jme3-testdata/build.gradle b/jme3-testdata/build.gradle deleted file mode 100644 index 1df94c4d2..000000000 --- a/jme3-testdata/build.gradle +++ /dev/null @@ -1,6 +0,0 @@ -if (!hasProperty('mainClass')) { - ext.mainClass = '' -} - -dependencies { -} diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/alpha1.png b/jme3-testdata/src/main/resources/Textures/Terrain/splat/alpha1.png deleted file mode 100644 index 4179ba517..000000000 Binary files a/jme3-testdata/src/main/resources/Textures/Terrain/splat/alpha1.png and /dev/null differ diff --git a/jme3-testdata/src/main/resources/Textures/Terrain/splat/alpha2.png b/jme3-testdata/src/main/resources/Textures/Terrain/splat/alpha2.png deleted file mode 100644 index 49eacecf0..000000000 Binary files a/jme3-testdata/src/main/resources/Textures/Terrain/splat/alpha2.png and /dev/null differ diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 000000000..d5877bed2 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,40 @@ + + + org.netbeans.modules.ant.freeform + + + + jME3-SDK + + + + build + + + clean + + + run + + + clean + build + + + + + + build.xml + + + + + + + + + + + + + diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 1e8acf403..000000000 --- a/settings.gradle +++ /dev/null @@ -1,57 +0,0 @@ -rootProject.name = 'jmonkeyengine' - -/** - * You can enable or disable different subprojects of the build here. - * - * The SDK will only be built if the appropriate library folders exist, - * call the "prepareSdk" target to prepare building the SDK. - **/ - -// Core classes, should work on all java platforms -include 'jme3-core' -include 'jme3-effects' -include 'jme3-networking' -include 'jme3-plugins' -include 'jme3-terrain' - -// Desktop dependent java classes -include 'jme3-desktop' -include 'jme3-blender' -include 'jme3-jogl' -include 'jme3-lwjgl' - -// Other external dependencies -include 'jme3-jbullet' -include 'jme3-niftygui' -include 'jme3-jogg' -include 'jme3-android' - -//native builds -include 'jme3-bullet' //java -include 'jme3-bullet-native' //cpp -include 'jme3-android-native' //cpp - -// Test Data project -include 'jme3-testdata' - -// Example projects -include 'jme3-examples' - -//include 'sdk' - -// Find the directories containing a 'build.gradle' file in the root directory -// of the project. That is, every directory containing a 'build.gradle' will -// be automatically the subproject of this project. -/*def subDirs = rootDir.listFiles(new FileFilter() { - public boolean accept(File file) { - if (!file.isDirectory()) { - return false - } - - return new File(file, 'build.gradle').isFile() - } -}); - -subDirs.each { File dir -> - include dir.name -}*/ \ No newline at end of file