Merge pull request #1365 from ihmcrobotics/feature/custom-library-loader
Feature/custom library loaderpull/1370/head
commit
36425677c7
|
@ -1,5 +1,6 @@
|
||||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
|
#include <stdlib.h>
|
||||||
/* Header for class jassimp_Jassimp */
|
/* Header for class jassimp_Jassimp */
|
||||||
|
|
||||||
#ifndef _Included_jassimp_Jassimp
|
#ifndef _Included_jassimp_Jassimp
|
||||||
|
|
|
@ -140,17 +140,17 @@ public final class AiMesh {
|
||||||
/**
|
/**
|
||||||
* Number of bytes per float value.
|
* Number of bytes per float value.
|
||||||
*/
|
*/
|
||||||
private static final int SIZEOF_FLOAT = Jassimp.NATIVE_FLOAT_SIZE;
|
private final int SIZEOF_FLOAT = Jassimp.NATIVE_FLOAT_SIZE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of bytes per int value.
|
* Number of bytes per int value.
|
||||||
*/
|
*/
|
||||||
private static final int SIZEOF_INT = Jassimp.NATIVE_INT_SIZE;
|
private final int SIZEOF_INT = Jassimp.NATIVE_INT_SIZE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Size of an AiVector3D in the native world.
|
* Size of an AiVector3D in the native world.
|
||||||
*/
|
*/
|
||||||
private static final int SIZEOF_V3D = Jassimp.NATIVE_AIVEKTOR3D_SIZE;
|
private final int SIZEOF_V3D = Jassimp.NATIVE_AIVEKTOR3D_SIZE;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -70,17 +70,17 @@ public final class AiNodeAnim {
|
||||||
/**
|
/**
|
||||||
* Size of one position key entry.
|
* Size of one position key entry.
|
||||||
*/
|
*/
|
||||||
private static final int POS_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE;
|
private final int POS_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Size of one rotation key entry.
|
* Size of one rotation key entry.
|
||||||
*/
|
*/
|
||||||
private static final int ROT_KEY_SIZE = Jassimp.NATIVE_AIQUATKEY_SIZE;
|
private final int ROT_KEY_SIZE = Jassimp.NATIVE_AIQUATKEY_SIZE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Size of one scaling key entry.
|
* Size of one scaling key entry.
|
||||||
*/
|
*/
|
||||||
private static final int SCALE_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE;
|
private final int SCALE_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -91,6 +91,8 @@ public final class Jassimp {
|
||||||
public static AiScene importFile(String filename,
|
public static AiScene importFile(String filename,
|
||||||
Set<AiPostProcessSteps> postProcessing) throws IOException {
|
Set<AiPostProcessSteps> postProcessing) throws IOException {
|
||||||
|
|
||||||
|
loadLibrary();
|
||||||
|
|
||||||
return aiImportFile(filename, AiPostProcessSteps.toRawValue(
|
return aiImportFile(filename, AiPostProcessSteps.toRawValue(
|
||||||
postProcessing));
|
postProcessing));
|
||||||
}
|
}
|
||||||
|
@ -177,6 +179,11 @@ public final class Jassimp {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void setLibraryLoader(JassimpLibraryLoader libraryLoader) {
|
||||||
|
s_libraryLoader = libraryLoader;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method for wrapping a matrix.<p>
|
* Helper method for wrapping a matrix.<p>
|
||||||
*
|
*
|
||||||
|
@ -264,6 +271,35 @@ public final class Jassimp {
|
||||||
return s_wrapperProvider.wrapSceneNode(parent, matrix, meshRefs, name);
|
return s_wrapperProvider.wrapSceneNode(parent, matrix, meshRefs, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to load the library using the provided JassimpLibraryLoader.<p>
|
||||||
|
*
|
||||||
|
* Synchronized to avoid race conditions.
|
||||||
|
*/
|
||||||
|
private static void loadLibrary()
|
||||||
|
{
|
||||||
|
if(!s_libraryLoaded)
|
||||||
|
{
|
||||||
|
synchronized(s_libraryLoadingLock)
|
||||||
|
{
|
||||||
|
if(!s_libraryLoaded)
|
||||||
|
{
|
||||||
|
s_libraryLoader.loadLibrary();
|
||||||
|
NATIVE_AIVEKTORKEY_SIZE = getVKeysize();
|
||||||
|
NATIVE_AIQUATKEY_SIZE = getQKeysize();
|
||||||
|
NATIVE_AIVEKTOR3D_SIZE = getV3Dsize();
|
||||||
|
NATIVE_FLOAT_SIZE = getfloatsize();
|
||||||
|
NATIVE_INT_SIZE = getintsize();
|
||||||
|
NATIVE_UINT_SIZE = getuintsize();
|
||||||
|
NATIVE_DOUBLE_SIZE = getdoublesize();
|
||||||
|
NATIVE_LONG_SIZE = getlongsize();
|
||||||
|
|
||||||
|
s_libraryLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The native interface.
|
* The native interface.
|
||||||
|
@ -284,6 +320,25 @@ public final class Jassimp {
|
||||||
new AiBuiltInWrapperProvider();
|
new AiBuiltInWrapperProvider();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The library loader to load the native library.
|
||||||
|
*/
|
||||||
|
private static JassimpLibraryLoader s_libraryLoader =
|
||||||
|
new JassimpLibraryLoader();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Status flag if the library is loaded.
|
||||||
|
*
|
||||||
|
* Volatile to avoid problems with double checked locking.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static volatile boolean s_libraryLoaded = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lock for library loading.
|
||||||
|
*/
|
||||||
|
private static final Object s_libraryLoadingLock = new Object();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pure static class, no accessible constructor.
|
* Pure static class, no accessible constructor.
|
||||||
*/
|
*/
|
||||||
|
@ -291,24 +346,13 @@ public final class Jassimp {
|
||||||
/* nothing to do */
|
/* nothing to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final int NATIVE_AIVEKTORKEY_SIZE;
|
public static int NATIVE_AIVEKTORKEY_SIZE;
|
||||||
public static final int NATIVE_AIQUATKEY_SIZE;
|
public static int NATIVE_AIQUATKEY_SIZE;
|
||||||
public static final int NATIVE_AIVEKTOR3D_SIZE;
|
public static int NATIVE_AIVEKTOR3D_SIZE;
|
||||||
public static final int NATIVE_FLOAT_SIZE;
|
public static int NATIVE_FLOAT_SIZE;
|
||||||
public static final int NATIVE_INT_SIZE;
|
public static int NATIVE_INT_SIZE;
|
||||||
public static final int NATIVE_UINT_SIZE;
|
public static int NATIVE_UINT_SIZE;
|
||||||
public static final int NATIVE_DOUBLE_SIZE;
|
public static int NATIVE_DOUBLE_SIZE;
|
||||||
public static final int NATIVE_LONG_SIZE;
|
public static int NATIVE_LONG_SIZE;
|
||||||
|
|
||||||
static {
|
|
||||||
System.loadLibrary("jassimp");
|
|
||||||
NATIVE_AIVEKTORKEY_SIZE = getVKeysize();
|
|
||||||
NATIVE_AIQUATKEY_SIZE = getQKeysize();
|
|
||||||
NATIVE_AIVEKTOR3D_SIZE = getV3Dsize();
|
|
||||||
NATIVE_FLOAT_SIZE = getfloatsize();
|
|
||||||
NATIVE_INT_SIZE = getintsize();
|
|
||||||
NATIVE_UINT_SIZE = getuintsize();
|
|
||||||
NATIVE_DOUBLE_SIZE = getdoublesize();
|
|
||||||
NATIVE_LONG_SIZE = getlongsize();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
Open Asset Import Library - Java Binding (jassimp)
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2006-2012, assimp team
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use of this software 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 the assimp team, nor the names of its
|
||||||
|
contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior
|
||||||
|
written permission of the assimp team.
|
||||||
|
|
||||||
|
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 jassimp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Library loader for the jassimp library.<p>
|
||||||
|
*
|
||||||
|
* The default implementation uses "System.loadLibrary" to
|
||||||
|
* load the jassimp native library. <p>
|
||||||
|
*
|
||||||
|
* Custom implementations should override the loadLibrary()
|
||||||
|
* function.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class JassimpLibraryLoader
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Function to load the native jassimp library.
|
||||||
|
*
|
||||||
|
* Called the first time Jassimp.importFile() is
|
||||||
|
* called.
|
||||||
|
*/
|
||||||
|
public void loadLibrary()
|
||||||
|
{
|
||||||
|
System.loadLibrary("jassimp");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue