summaryrefslogtreecommitdiff
path: root/src/mesh/assimp-master/port/dAssimp/assimp/mesh.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesh/assimp-master/port/dAssimp/assimp/mesh.d')
-rw-r--r--src/mesh/assimp-master/port/dAssimp/assimp/mesh.d465
1 files changed, 0 insertions, 465 deletions
diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/mesh.d b/src/mesh/assimp-master/port/dAssimp/assimp/mesh.d
deleted file mode 100644
index 48162b7..0000000
--- a/src/mesh/assimp-master/port/dAssimp/assimp/mesh.d
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
----------------------------------------------------------------------------
-Open Asset Import Library (ASSIMP)
----------------------------------------------------------------------------
-
-Copyright (c) 2006-2020, ASSIMP Development 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 Development 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.
----------------------------------------------------------------------------
-*/
-
-/**
- * Contains the data structures in which the imported geometry is returned by
- * Assimp.
- */
-module assimp.mesh;
-
-import assimp.math;
-import assimp.types;
-
-extern ( C ) {
- /*
- * These limits are required to match the settings Assimp was compiled
- * against. Therefore, do not redefine them unless you build the library
- * from source using the same definitions.
- */
-
- /**
- * Maximum number of indices per face (polygon).
- */
- const AI_MAX_FACE_INDICES = 0x7fff;
-
- /**
- * Maximum number of indices per face (polygon).
- */
- const AI_MAX_BONE_WEIGHTS = 0x7fffffff;
-
- /**
- * Maximum number of vertices per mesh.
- */
- const AI_MAX_VERTICES = 0x7fffffff;
-
- /**
- * Maximum number of faces per mesh.
- */
- const AI_MAX_FACES = 0x7fffffff;
-
- /**
- * Supported number of vertex color sets per mesh.
- */
- const AI_MAX_NUMBER_OF_COLOR_SETS = 0x4;
-
- /**
- * Supported number of texture coord sets (UV(W) channels) per mesh.
- */
- const AI_MAX_NUMBER_OF_TEXTURECOORDS = 0x4;
-
-
- /**
- * A single face in a mesh, referring to multiple vertices.
- *
- * If <code>mNumIndices</code> is 3, we call the face <em>triangle</em>, for
- * for <code>mNumIndices > 3</code> it's called <em>polygon</em>.
- *
- * <code>aiMesh.mPrimitiveTypes</code> can be queried to quickly examine
- * which types of primitive are actually present in a mesh. The
- * <code>aiProcess.SortByPType</code> flag post-processing step splits
- * meshes containing different primitive types (e.g. lines and triangles) in
- * several "clean" submeshes.
- *
- * Furthermore, there is a configuration option
- * (<code>AI_CONFIG_PP_SBP_REMOVE</code>) to force <code>SortByPType</code>
- * to completely remove specific kinds of primitives from the imported scene.
- * In many cases you'll probably want to set this setting to
- * <code>aiPrimitiveType.LINE | aiPrimitiveType.POINT</code>. Together with
- * the <code>aiProcess.Triangulate</code> flag you can then be sure that
- * <code>mNumIndices</code> is always 3.
- */
- struct aiFace {
- /**
- * Number of indices defining this face.
- *
- * The maximum value for this member is <code>AI_MAX_FACE_INDICES</code>.
- */
- uint mNumIndices;
-
- /**
- * Array of the indices defining the face.
- *
- * The size is given in <code>mNumIndices</code>.
- */
- uint* mIndices;
- }
-
- /**
- * A single influence of a bone on a vertex.
- */
- struct aiVertexWeight {
- /**
- * Index of the vertex which is influenced by the bone.
- */
- uint mVertexId;
-
- /**
- * The strength of the influence in the range <code>[0..1]</code>.
- *
- * The influence from all bones at one vertex sums up to 1.
- */
- float mWeight;
- }
-
- /**
- * A single bone of a mesh.
- *
- * A bone has a name by which it can be found in the frame hierarchy and by
- * which it can be addressed by animations. In addition it has a number of
- * influences on vertices.
- */
- struct aiBone {
- /**
- * The name of the bone.
- */
- aiString mName;
-
- /**
- * The number of vertices affected by this bone.
- *
- * The maximum value for this member is <code>AI_MAX_BONE_WEIGHTS</code>.
- */
- uint mNumWeights;
-
- /**
- * The vertices affected by this bone.
- *
- * This array is <code>mNumWeights</code> entries in size.
- */
- aiVertexWeight* mWeights;
-
- /**
- * Matrix that transforms from mesh space to bone space (in the bind
- * pose).
- */
- aiMatrix4x4 mOffsetMatrix;
- }
-
- /**
- * Enumerates the types of geometric primitives supported by Assimp.
- *
- * See: <code>aiFace</code>, <code>aiProcess.SortByPType</code>,
- * <code>aiProcess.Triangulate</code>,
- * <code>AI_CONFIG_PP_SBP_REMOVE</code>.
- */
- enum aiPrimitiveType : uint {
- /** A point primitive.
- *
- * This is just a single vertex in the virtual world,
- * <code>aiFace</code> contains just one index for such a primitive.
- */
- POINT = 0x1,
-
- /** A line primitive.
- *
- * This is a line defined through a start and an end position.
- * <code>aiFace</code> contains exactly two indices for such a primitive.
- */
- LINE = 0x2,
-
- /** A triangular primitive.
- *
- * A triangle consists of three indices.
- */
- TRIANGLE = 0x4,
-
- /** A higher-level polygon with more than 3 edges.
- *
- * A triangle is a polygon, but in this context, polygon means
- * "all polygons that are not triangles". The <code>Triangulate</code>
- * post processing step is provided for your convenience, it splits all
- * polygons in triangles (which are much easier to handle).
- */
- POLYGON = 0x8
- }
-
- // Note: The AI_PRIMITIVE_TYPE_FOR_N_INDICES(n) macro from the C headers is
- // missing since there is probably not much use for it when just reading
- // scene files.
-
- /**
- * NOT CURRENTLY IN USE. An AnimMesh is an attachment to an #aiMesh stores
- * per-vertex animations for a particular frame.
- *
- * You may think of an <code>aiAnimMesh</code> as a `patch` for the host
- * mesh, which replaces only certain vertex data streams at a particular
- * time.
- *
- * Each mesh stores n attached attached meshes (<code>aiMesh.mAnimMeshes</code>).
- * The actual relationship between the time line and anim meshes is
- * established by #aiMeshAnim, which references singular mesh attachments
- * by their ID and binds them to a time offset.
- */
- struct aiAnimMesh {
- /**
- * Replacement for aiMesh.mVertices.
- *
- * If this array is non-null, it *must* contain mNumVertices entries.
- * The corresponding array in the host mesh must be non-null as well -
- * animation meshes may neither add or nor remove vertex components (if
- * a replacement array is NULL and the corresponding source array is
- * not, the source data is taken instead).
- */
- aiVector3D* mVertices;
-
- /// Replacement for <code>aiMesh.mNormals</code>.
- aiVector3D* mNormals;
-
- /// Replacement for <code>aiMesh.mTangents</code>.
- aiVector3D* mTangents;
-
- /// Replacement for <code>aiMesh.mBitangents</code>.
- aiVector3D* mBitangents;
-
- /// Replacement for <code>aiMesh.mColors</code>.
- aiColor4D* mColors[ AI_MAX_NUMBER_OF_COLOR_SETS ];
-
- /// Replacement for <code>aiMesh.mTextureCoords</code>.
- aiVector3D* mTextureCoords[ AI_MAX_NUMBER_OF_TEXTURECOORDS ];
-
- /**
- * The number of vertices in the aiAnimMesh, and thus the length of all
- * the member arrays.
- *
- * This has always the same value as the mNumVertices property in the
- * corresponding aiMesh. It is duplicated here merely to make the length
- * of the member arrays accessible even if the aiMesh is not known, e.g.
- * from language bindings.
- */
- uint mNumVertices;
- }
-
- /**
- * A mesh represents a geometry or model with a single material.
- *
- * It usually consists of a number of vertices and a series
- * primitives/faces referencing the vertices. In addition there might be a
- * series of bones, each of them addressing a number of vertices with a
- * certain weight. Vertex data is presented in channels with each channel
- * containing a single per-vertex information such as a set of texture
- * coords or a normal vector. If a data pointer is non-null, the
- * corresponding data stream is present.
- *
- * A mesh uses only a single material which is referenced by a material ID.
- *
- * Note: The <code>mPositions</code> member is usually not optional.
- * However, vertex positions <em>could</em> be missing if the
- * <code>AI_SCENE_FLAGS_INCOMPLETE</code> flag is set in
- * <code>aiScene.mFlags</code>.
- */
- struct aiMesh {
- /**
- * Bitwise combination of <code>aiPrimitiveType</code> members.
- *
- * This specifies which types of primitives are present in the mesh.
- * The <code>SortByPrimitiveType</code> post processing step can be used
- * to make sure the output meshes consist of one primitive type each.
- */
- uint mPrimitiveTypes;
-
- /**
- * The number of vertices in this mesh.
- *
- * This is also the size of all of the per-vertex data arrays. The
- * maximum value for this member is <code>AI_MAX_VERTICES</code>.
- */
- uint mNumVertices;
-
- /**
- * The number of primitives (triangles, polygons, lines) in this mesh.
- *
- * This is also the size of the <code>mFaces</code> array. The maximum
- * value for this member is <code>AI_MAX_FACES</code>.
- */
- uint mNumFaces;
-
- /**
- * Vertex positions.
- *
- * This array is always present in a mesh. The array is
- * <code>mNumVertices</code> in size.
- */
- aiVector3D* mVertices;
-
- /**
- * Vertex normals.
- *
- * The array contains normalized vectors, null if not present.
- * The array is <code>mNumVertices</code> in size.
- *
- * Normals are undefined for point and line primitives. A mesh
- * consisting of points and lines only may not have normal vectors.
- * Meshes with mixed primitive types (i.e. lines and triangles) may have
- * normals, but the normals for vertices that are only referenced by
- * point or line primitives are undefined and set to <code>QNAN</code>.
- *
- * Note: Normal vectors computed by Assimp are always unit-length.
- * However, this needn't apply for normals that have been taken
- * directly from the model file.
- */
- aiVector3D* mNormals;
-
- /**
- * Vertex tangents.
- *
- * The tangent of a vertex points in the direction of the positive x
- * texture axis. The array contains normalized vectors, null if
- * not present. The array is <code>mNumVertices</code> in size.
- *
- * A mesh consisting of points and lines only may not have normal
- * vectors. Meshes with mixed primitive types (i.e. lines and triangles)
- * may have normals, but the normals for vertices that are only
- * referenced by point or line primitives are undefined and set to
- * <code>QNAN</code>.
- *
- * Note: If the mesh contains tangents, it automatically also contains
- * bitangents (the bitangent is just the cross product of tangent and
- * normal vectors).
- */
- aiVector3D* mTangents;
-
- /**
- * Vertex bitangents.
- *
- * The bitangent of a vertex points in the direction of the positive Y
- * texture axis. The array contains normalized vectors, null if not
- * present. The array is <code>mNumVertices</code> in size.
- *
- * Note: If the mesh contains tangents, it automatically also contains
- * bitangents.
- */
- aiVector3D* mBitangents;
-
- /**
- * Vertex color sets.
- *
- * A mesh may contain 0 to <code>AI_MAX_NUMBER_OF_COLOR_SETS</code>
- * vertex colors per vertex. null if not present.
- *
- * Each array is <code>mNumVertices</code> in size if present.
- */
- aiColor4D* mColors[ AI_MAX_NUMBER_OF_COLOR_SETS ];
-
- /**
- * Vertex texture coords, also known as UV channels.
- * A mesh may contain 0 to <code>AI_MAX_NUMBER_OF_TEXTURECOORDS</code>
- * per vertex. null if not present.
- *
- * Each array is <code>mNumVertices</code> in size.
- */
- aiVector3D* mTextureCoords[ AI_MAX_NUMBER_OF_TEXTURECOORDS ];
-
- /**
- * Specifies the number of components for a given UV channel.
- *
- * Up to three channels are supported (UVW, for accessing volume or cube
- * maps). If the value is 2 for a given channel <code>n</code>, the
- * component <code>p.z</code> of <code>mTextureCoords[n][p]</code> is set
- * to 0. If the value is 1 for a given channel, <code>p.y</code> is set
- * to 0, too. If this value is 0, 2 should be assumed.
- *
- * Note: 4D coords are not supported.
- */
- uint mNumUVComponents[ AI_MAX_NUMBER_OF_TEXTURECOORDS ];
-
- /**
- * The faces the mesh is contstructed from.
- *
- * Each face refers to a number of vertices by their indices.
- * This array is always present in a mesh, its size is given
- * in <code>mNumFaces</code>. If the
- * <code>AI_SCENE_FLAGS_NON_VERBOSE_FORMAT</code> is <em>not</em> set,
- * each face references an unique set of vertices.
- */
- aiFace* mFaces;
-
- /**
- * The number of bones this mesh contains.
- *
- * Can be 0, in which case the <code>mBones</code> array is null.
- */
- uint mNumBones;
-
- /**
- * The bones of this mesh.
- *
- * A bone consists of a name by which it can be found in the frame
- * hierarchy and a set of vertex weights.
- */
- aiBone** mBones;
-
- /**
- * The material used by this mesh.
- *
- * A mesh does use only a single material. If an imported model uses
- * multiple materials, the import splits up the mesh. Use this value as
- * index into the scene's material list.
- */
- uint mMaterialIndex;
-
- /**
- * Name of the mesh.
- *
- * Meshes can be named, but this is not a requirement and leaving this
- * field empty is totally fine.
- *
- * There are mainly three uses for mesh names:
- * - Some formats name nodes and meshes independently.
- * - Importers tend to split meshes up to meet the one-material-per-mesh
- * requirement. Assigning the same (dummy) name to each of the result
- * meshes aids the caller at recovering the original mesh partitioning.
- * - Vertex animations refer to meshes by their names.
- */
- aiString mName;
-
- /// NOT CURRENTLY IN USE. The number of attachment meshes.
- uint mNumAnimMeshes;
-
- /**
- * NOT CURRENTLY IN USE. Attachment meshes for this mesh, for vertex-
- * based animation.
- *
- * Attachment meshes carry replacement data for some of the mesh's
- * vertex components (usually positions, normals).
- */
- aiAnimMesh** mAnimMeshes;
- }
-}