Merge pull request #2281 from assimp/kimkulling-dev

Kimkulling dev
pull/2284/head^2
Kim Kulling 2018-12-26 09:49:58 +01:00 committed by GitHub
commit 9e35f4c5b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 263 additions and 292 deletions

View File

@ -54,6 +54,26 @@ import java.util.List;
* {@link AiMesh} for a description and comparison of these APIs. * {@link AiMesh} for a description and comparison of these APIs.
*/ */
public final class AiAnimation { public final class AiAnimation {
/**
* Name.
*/
private final String m_name;
/**
* Duration.
*/
private final double m_duration;
/**
* Ticks per second.
*/
private final double m_ticksPerSecond;
/**
* Bone animation channels.
*/
private final List<AiNodeAnim> m_nodeAnims = new ArrayList<AiNodeAnim>();
/** /**
* Constructor. * Constructor.
* *
@ -152,28 +172,4 @@ public final class AiAnimation {
public List<AiMeshAnim> getMeshChannels() { public List<AiMeshAnim> getMeshChannels() {
throw new UnsupportedOperationException("not implemented yet"); throw new UnsupportedOperationException("not implemented yet");
} }
/**
* Name.
*/
private final String m_name;
/**
* Duration.
*/
private final double m_duration;
/**
* Ticks per second.
*/
private final double m_ticksPerSecond;
/**
* Bone animation channels.
*/
private final List<AiNodeAnim> m_nodeAnims = new ArrayList<AiNodeAnim>();
} }

View File

@ -55,6 +55,24 @@ import java.util.List;
* writable and may be modified. * writable and may be modified.
*/ */
public final class AiBone { public final class AiBone {
/**
* Name of the bone.
*/
private String m_name;
/**
* Bone weights.
*/
private final List<AiBoneWeight> m_boneWeights =
new ArrayList<AiBoneWeight>();
/**
* Offset matrix.
*/
private Object m_offsetMatrix;
/** /**
* Constructor. * Constructor.
*/ */
@ -115,23 +133,4 @@ public final class AiBone {
return (M4) m_offsetMatrix; return (M4) m_offsetMatrix;
} }
/**
* Name of the bone.
*/
private String m_name;
/**
* Bone weights.
*/
private final List<AiBoneWeight> m_boneWeights =
new ArrayList<AiBoneWeight>();
/**
* Offset matrix.
*/
private Object m_offsetMatrix;
} }

View File

@ -139,10 +139,8 @@ public class AiClassLoaderIOSystem implements AiIOSystem<AiInputStreamIOStream>
{ {
return false; return false;
} }
else
{ return true;
return true;
}
} }

View File

@ -50,6 +50,16 @@ import java.nio.ByteBuffer;
* modify the underlying mesh. * modify the underlying mesh.
*/ */
public final class AiColor { public final class AiColor {
/**
* Wrapped buffer.
*/
private final ByteBuffer m_buffer;
/**
* Offset into m_buffer.
*/
private final int m_offset;
/** /**
* Constructor. * Constructor.
* *
@ -147,16 +157,4 @@ public final class AiColor {
return "[" + getRed() + ", " + getGreen() + ", " + getBlue() + ", " + return "[" + getRed() + ", " + getGreen() + ", " + getBlue() + ", " +
getAlpha() + "]"; getAlpha() + "]";
} }
/**
* Wrapped buffer.
*/
private final ByteBuffer m_buffer;
/**
* Offset into m_buffer.
*/
private final int m_offset;
} }

View File

@ -70,6 +70,17 @@ import java.util.Set;
* properties (i.e., properties starting with <code>TEX_</code>). * properties (i.e., properties starting with <code>TEX_</code>).
*/ */
public final class AiMaterial { public final class AiMaterial {
/**
* List of properties.
*/
private final List<Property> m_properties = new ArrayList<Property>();
/**
* Number of textures for each type.
*/
private final Map<AiTextureType, Integer> m_numTextures =
new EnumMap<AiTextureType, Integer>(AiTextureType.class);
/** /**
* Enumerates all supported material properties. * Enumerates all supported material properties.
*/ */
@ -317,7 +328,36 @@ public final class AiMaterial {
* properties easily. * properties easily.
*/ */
public static final class Property { public static final class Property {
/**
* Key.
*/
private final String m_key;
/** /**
* Semantic.
*/
private final int m_semantic;
/**
* Index.
*/
private final int m_index;
/**
* Type.
*/
private final PropertyType m_type;
/**
* Data.
*/
private final Object m_data;
/**
* Constructor. * Constructor.
* *
* @param key * @param key
@ -417,39 +457,9 @@ public final class AiMaterial {
* *
* @return the data * @return the data
*/ */
Object getData() { private Object getData() {
return m_data; return m_data;
} }
/**
* Key.
*/
private final String m_key;
/**
* Semantic.
*/
private final int m_semantic;
/**
* Index.
*/
private final int m_index;
/**
* Type.
*/
private final PropertyType m_type;
/**
* Data.
*/
private final Object m_data;
} }
@ -1186,17 +1196,4 @@ public final class AiMaterial {
private void setTextureNumber(int type, int number) { private void setTextureNumber(int type, int number) {
m_numTextures.put(AiTextureType.fromRawValue(type), number); m_numTextures.put(AiTextureType.fromRawValue(type), number);
} }
/**
* List of properties.
*/
private final List<Property> m_properties = new ArrayList<Property>();
/**
* Number of textures for each type.
*/
private final Map<AiTextureType, Integer> m_numTextures =
new EnumMap<AiTextureType, Integer>(AiTextureType.class);
} }

View File

@ -153,6 +153,89 @@ public final class AiMesh {
private final int SIZEOF_V3D = Jassimp.NATIVE_AIVEKTOR3D_SIZE; private final int SIZEOF_V3D = Jassimp.NATIVE_AIVEKTOR3D_SIZE;
/**
* The primitive types used by this mesh.
*/
private final Set<AiPrimitiveType> m_primitiveTypes =
EnumSet.noneOf(AiPrimitiveType.class);
/**
* Number of vertices in this mesh.
*/
private int m_numVertices = 0;
/**
* Number of faces in this mesh.
*/
private int m_numFaces = 0;
/**
* Material used by this mesh.
*/
private int m_materialIndex = -1;
/**
* The name of the mesh.
*/
private String m_name = "";
/**
* Buffer for vertex position data.
*/
private ByteBuffer m_vertices = null;
/**
* Buffer for faces/ indices.
*/
private ByteBuffer m_faces = null;
/**
* Index structure for m_faces.<p>
*
* Only used by meshes that are not pure triangular
*/
private ByteBuffer m_faceOffsets = null;
/**
* Buffer for normals.
*/
private ByteBuffer m_normals = null;
/**
* Buffer for tangents.
*/
private ByteBuffer m_tangents = null;
/**
* Buffer for bitangents.
*/
private ByteBuffer m_bitangents = null;
/**
* Vertex colors.
*/
private ByteBuffer[] m_colorsets =
new ByteBuffer[JassimpConfig.MAX_NUMBER_COLORSETS];
/**
* Number of UV components for each texture coordinate set.
*/
private int[] m_numUVComponents = new int[JassimpConfig.MAX_NUMBER_TEXCOORDS];
/**
* Texture coordinates.
*/
private ByteBuffer[] m_texcoords =
new ByteBuffer[JassimpConfig.MAX_NUMBER_TEXCOORDS];
/**
* Bones.
*/
private final List<AiBone> m_bones = new ArrayList<AiBone>();
/** /**
* This class is instantiated via JNI, no accessible constructor. * This class is instantiated via JNI, no accessible constructor.
*/ */
@ -1335,99 +1418,4 @@ public final class AiMesh {
} }
} }
// }} // }}
/**
* The primitive types used by this mesh.
*/
private final Set<AiPrimitiveType> m_primitiveTypes =
EnumSet.noneOf(AiPrimitiveType.class);
/**
* Number of vertices in this mesh.
*/
private int m_numVertices = 0;
/**
* Number of faces in this mesh.
*/
private int m_numFaces = 0;
/**
* Material used by this mesh.
*/
private int m_materialIndex = -1;
/**
* The name of the mesh.
*/
private String m_name = "";
/**
* Buffer for vertex position data.
*/
private ByteBuffer m_vertices = null;
/**
* Buffer for faces/ indices.
*/
private ByteBuffer m_faces = null;
/**
* Index structure for m_faces.<p>
*
* Only used by meshes that are not pure triangular
*/
private ByteBuffer m_faceOffsets = null;
/**
* Buffer for normals.
*/
private ByteBuffer m_normals = null;
/**
* Buffer for tangents.
*/
private ByteBuffer m_tangents = null;
/**
* Buffer for bitangents.
*/
private ByteBuffer m_bitangents = null;
/**
* Vertex colors.
*/
private ByteBuffer[] m_colorsets =
new ByteBuffer[JassimpConfig.MAX_NUMBER_COLORSETS];
/**
* Number of UV components for each texture coordinate set.
*/
private int[] m_numUVComponents = new int[JassimpConfig.MAX_NUMBER_TEXCOORDS];
/**
* Texture coordinates.
*/
private ByteBuffer[] m_texcoords =
new ByteBuffer[JassimpConfig.MAX_NUMBER_TEXCOORDS];
/**
* Bones.
*/
private final List<AiBone> m_bones = new ArrayList<AiBone>();
} }

View File

@ -55,6 +55,34 @@ import java.util.Map;
* the imported scene consists of only a single root node without children. * the imported scene consists of only a single root node without children.
*/ */
public final class AiNode { public final class AiNode {
/**
* Parent node.
*/
private final AiNode m_parent;
/**
* Mesh references.
*/
private final int[] m_meshReferences;
/**
* List of children.
*/
private final List<AiNode> m_children = new ArrayList<AiNode>();
/**
* List of metadata entries.
*/
private final Map<String, AiMetadataEntry> m_metaData = new HashMap<String, AiMetadataEntry>();
/**
* Buffer for transformation matrix.
*/
private final Object m_transformationMatrix;
/** /**
* Constructor. * Constructor.
* *
@ -215,33 +243,4 @@ public final class AiNode {
* Name. * Name.
*/ */
private final String m_name; private final String m_name;
/**
* Parent node.
*/
private final AiNode m_parent;
/**
* Mesh references.
*/
private final int[] m_meshReferences;
/**
* List of children.
*/
private final List<AiNode> m_children = new ArrayList<AiNode>();
/**
* List of metadata entries.
*/
private final Map<String, AiMetadataEntry> m_metaData = new HashMap<String, AiMetadataEntry>();
/**
* Buffer for transformation matrix.
*/
private final Object m_transformationMatrix;
} }

View File

@ -50,6 +50,17 @@ import java.nio.ByteBuffer;
* modify the underlying mesh/animation. * modify the underlying mesh/animation.
*/ */
public final class AiQuaternion { public final class AiQuaternion {
/**
* Wrapped buffer.
*/
private final ByteBuffer m_buffer;
/**
* Offset into m_buffer.
*/
private final int m_offset;
/** /**
* Constructor. * Constructor.
* *
@ -151,16 +162,4 @@ public final class AiQuaternion {
return "[" + getX() + ", " + getY() + ", " + getZ() + ", " + return "[" + getX() + ", " + getY() + ", " + getZ() + ", " +
getW() + "]"; getW() + "]";
} }
/**
* Wrapped buffer.
*/
private final ByteBuffer m_buffer;
/**
* Offset into m_buffer.
*/
private final int m_offset;
} }

View File

@ -47,6 +47,11 @@ import java.util.Set;
* Status flags for {@link AiScene}s. * Status flags for {@link AiScene}s.
*/ */
public enum AiSceneFlag { public enum AiSceneFlag {
/**
* The mapped c/c++ integer enum value.
*/
private final int m_rawValue;
/** /**
* Specifies that the scene data structure that was imported is not * Specifies that the scene data structure that was imported is not
* complete.<p> * complete.<p>
@ -144,10 +149,4 @@ public enum AiSceneFlag {
private AiSceneFlag(int rawValue) { private AiSceneFlag(int rawValue) {
m_rawValue = rawValue; m_rawValue = rawValue;
} }
/**
* The mapped c/c++ integer enum value.
*/
private final int m_rawValue;
} }

View File

@ -60,6 +60,44 @@ import java.util.Set;
*/ */
public final class Jassimp { public final class Jassimp {
/**
* The native interface.
*
* @param filename the file to load
* @param postProcessing post processing flags
* @return the loaded scene, or null if an error occurred
* @throws IOException if an error occurs
*/
private static native AiScene aiImportFile(String filename,
long postProcessing, AiIOSystem<?> ioSystem) throws IOException;
/**
* The active wrapper provider.
*/
private static AiWrapperProvider<?, ?, ?, ?, ?> s_wrapperProvider =
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();
/** /**
* The default wrapper provider using built in types. * The default wrapper provider using built in types.
*/ */
@ -327,48 +365,9 @@ public final class Jassimp {
s_libraryLoaded = true; s_libraryLoaded = true;
} }
} }
} }
} }
/**
* The native interface.
*
* @param filename the file to load
* @param postProcessing post processing flags
* @return the loaded scene, or null if an error occurred
* @throws IOException if an error occurs
*/
private static native AiScene aiImportFile(String filename,
long postProcessing, AiIOSystem<?> ioSystem) throws IOException;
/**
* The active wrapper provider.
*/
private static AiWrapperProvider<?, ?, ?, ?, ?> s_wrapperProvider =
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.
*/ */
@ -384,5 +383,4 @@ public final class Jassimp {
public static int NATIVE_UINT_SIZE; public static int NATIVE_UINT_SIZE;
public static int NATIVE_DOUBLE_SIZE; public static int NATIVE_DOUBLE_SIZE;
public static int NATIVE_LONG_SIZE; public static int NATIVE_LONG_SIZE;
} }