diff options
Diffstat (limited to 'src/mesh/assimp-master/port/dAssimp/assimp')
16 files changed, 0 insertions, 5031 deletions
diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/animation.d b/src/mesh/assimp-master/port/dAssimp/assimp/animation.d deleted file mode 100644 index 9a36940..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/animation.d +++ /dev/null @@ -1,240 +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. ---------------------------------------------------------------------------- -*/ - -/** - * The data structures which are used to store the imported animation data. - */ -module assimp.animation; - -import assimp.math; -import assimp.types; - -extern ( C ) { - /** - * A time-value pair specifying a certain 3D vector for the given time. - */ - struct aiVectorKey { - /** - * The time of this key. - */ - double mTime; - - /** - * The value of this key. - */ - aiVector3D mValue; - } - - /** - * A time-value pair specifying a rotation for the given time. For joint - * animations, the rotation is usually expressed using a quaternion. - */ - struct aiQuatKey { - /** - * The time of this key. - */ - double mTime; - - /** - * The value of this key. - */ - aiQuaternion mValue; - } - - /** - * Defines how an animation channel behaves outside the defined time - * range. This corresponds to <code>aiNodeAnim.mPreState</code> and - * <code>aiNodeAnim.mPostState</code>. - */ - enum aiAnimBehaviour : uint { - /** - * The value from the default node transformation is used. - */ - DEFAULT = 0x0, - - /** - * The nearest key value is used without interpolation. - */ - CONSTANT = 0x1, - - /** - * The value of the nearest two keys is linearly extrapolated for the - * current time value. - */ - LINEAR = 0x2, - - /** - * The animation is repeated. - * - * If the animation key go from n to m and the current time is t, use the - * value at (t-n) % (|m-n|). - */ - REPEAT = 0x3 - } - - /** - * Describes the animation of a single node. - * - * The name specifies the bone/node which is affected by this animation - * channel. The keyframes are given in three separate series of values, one - * each for position, rotation and scaling. The transformation matrix - * computed from these values replaces the node's original transformation - * matrix at a specific time. This means all keys are absolute and not - * relative to the bone default pose. - * - * The order in which the transformations are applied is – - * as usual – scaling, rotation, translation. - * - * Note: All keys are returned in their correct, chronological order. - * Duplicate keys don't pass the validation step. Most likely there will - * be no negative time values, but they are not forbidden (so - * implementations need to cope with them!). - */ - struct aiNodeAnim { - /** - * The name of the node affected by this animation. The node must exist - * and it must be unique. - */ - aiString mNodeName; - - /** - * The number of position keys. - */ - uint mNumPositionKeys; - - /** - * The position keys of this animation channel. Positions are specified - * as 3D vectors. The array is <code>mNumPositionKeys</code> in size. - * - * If there are position keys, there will also be at least one scaling - * and one rotation key. - */ - aiVectorKey* mPositionKeys; - - /** - * The number of rotation keys. - */ - uint mNumRotationKeys; - - /** - * The rotation keys of this animation channel. Rotations are given as - * quaternions. The array is <code>mNumRotationKeys</code> in size. - * - * If there are rotation keys, there will also be at least one scaling - * and one position key. - */ - aiQuatKey* mRotationKeys; - - - /** - * The number of scaling keys. - */ - uint mNumScalingKeys; - - /** - * The scaling keys of this animation channel. Scalings are specified as - * 3D vectors. The array is <code>mNumScalingKeys</code> in size. - * - * If there are scaling keys, there will also be at least one position - * and one rotation key. - */ - aiVectorKey* mScalingKeys; - - - /** - * Defines how the animation behaves before the first key is encountered. - * - * The default value is <code>aiAnimBehaviour.DEFAULT</code> (the original - * transformation matrix of the affected node is used). - */ - aiAnimBehaviour mPreState; - - /** - * Defines how the animation behaves after the last key was processed. - * - * The default value is <code>aiAnimBehaviour.DEFAULT</code> (the original - * transformation matrix of the affected node is used). - */ - aiAnimBehaviour mPostState; - } - - /** - * An animation consists of keyframe data for a number of nodes. - * - * For each node affected by the animation, a separate series of data is - * given. - */ - struct aiAnimation { - /** - * The name of the animation. - * - * If the modeling package this data was - * exported from does support only a single animation channel, this - * name is usually empty (length is zero). - */ - aiString mName; - - /** - * Duration of the animation in ticks. - */ - double mDuration; - - /** - * Ticks per second. 0 if not specified in the imported file. - */ - double mTicksPerSecond; - - /** - * The number of bone animation channels. - * - * Each channel affects a single node. - */ - uint mNumChannels; - - /** - * The node animation channels. The array is <code>mNumChannels</code> - * in size. - * - * Each channel affects a single node. - */ - aiNodeAnim** mChannels; - } -}
\ No newline at end of file diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/api.d b/src/mesh/assimp-master/port/dAssimp/assimp/api.d deleted file mode 100644 index bc7a157..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/api.d +++ /dev/null @@ -1,686 +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. ---------------------------------------------------------------------------- -*/ - -/** - * The C-style interface to the Open Asset import library. - * - * All functions of the C API have been collected in this module as function - * pointers, which are set by the dynamic library loader - * (<code>assimp.loader</code>). - */ -module assimp.api; - -import assimp.fileIO; -import assimp.material; -import assimp.math; -import assimp.scene; -import assimp.types; - -extern ( C ) { - /** - * Reads the given file and returns its content. - * - * If the call succeeds, the imported data is returned in an <code>aiScene</code> - * structure. The data is intended to be read-only, it stays property of the - * Assimp library and will be stable until <code>aiReleaseImport()</code> is - * called. After you're done with it, call <code>aiReleaseImport()</code> to - * free the resources associated with this file. - * - * If an error is encountered, null is returned instead. Call - * <code>aiGetErrorString()</code> to retrieve a human-readable error - * description. - * - * Params: - * pFile = Path and filename of the file to be imported, - * expected to be a null-terminated C-string. null is not a valid value. - * pFlags = Optional post processing steps to be executed after a - * successful import. Provide a bitwise combination of the - * <code>aiPostProcessSteps</code> flags. If you wish to inspect the - * imported scene first in order to fine-tune your post-processing - * setup, consider to use <code>aiApplyPostProcessing()</code>. - * - * Returns: - * A pointer to the imported data, null if the import failed. - */ - aiScene* function( char* pFile, uint pFile ) aiImportFile; - - /** - * Reads the given file using user-defined I/O functions and returns its - * content. - * - * If the call succeeds, the imported data is returned in an <code>aiScene</code> - * structure. The data is intended to be read-only, it stays property of the - * Assimp library and will be stable until <code>aiReleaseImport()</code> is - * called. After you're done with it, call <code>aiReleaseImport()</code> to - * free the resources associated with this file. - * - * If an error is encountered, null is returned instead. Call - * <code>aiGetErrorString()</code> to retrieve a human-readable error - * description. - * - * Params: - * pFile = Path and filename of the file to be imported, - * expected to be a null-terminated C-string. null is not a valid value. - * pFlags = Optional post processing steps to be executed after a - * successful import. Provide a bitwise combination of the - * <code>aiPostProcessSteps</code> flags. If you wish to inspect the - * imported scene first in order to fine-tune your post-processing - * setup, consider to use <code>aiApplyPostProcessing()</code>. - * pFS = An aiFileIO which will be used to open the model file itself - * and any other files the loader needs to open. - * - * Returns: - * A pointer to the imported data, null if the import failed. - */ - aiScene* function( char* pFile, uint pFlags, aiFileIO* pFS ) aiImportFileEx; - - /** - * Reads the scene from the given memory buffer. - * - * Reads the given file using user-defined I/O functions and returns its - * content. - * - * If the call succeeds, the imported data is returned in an <code>aiScene</code> - * structure. The data is intended to be read-only, it stays property of the - * Assimp library and will be stable until <code>aiReleaseImport()</code> is - * called. After you're done with it, call <code>aiReleaseImport()</code> to - * free the resources associated with this file. - * - * If an error is encountered, null is returned instead. Call - * <code>aiGetErrorString()</code> to retrieve a human-readable error - * description. - * - * Params: - * pBuffer = Pointer to the scene data. - * pLength = Size of pBuffer in bytes. - * pFlags = Optional post processing steps to be executed after a - * successful import. Provide a bitwise combination of the - * <code>aiPostProcessSteps</code> flags. If you wish to inspect the - * imported scene first in order to fine-tune your post-processing - * setup, consider to use <code>aiApplyPostProcessing()</code>. - * pHint = An additional hint to the library. If this is a non empty - * string, the library looks for a loader to support the file - * extension specified and passes the file to the first matching - * loader. If this loader is unable to complete the request, the - * library continues and tries to determine the file format on its - * own, a task that may or may not be successful. - * - * Returns: - * A pointer to the imported data, null if the import failed. - * - * Note: - * This is a straightforward way to decode models from memory buffers, - * but it doesn't handle model formats spreading their data across - * multiple files or even directories. Examples include OBJ or MD3, which - * outsource parts of their material stuff into external scripts. If you - * need the full functionality, provide a custom IOSystem to make Assimp - * find these files. - */ - aiScene* function( - char* pBuffer, - uint pLength, - uint pFlags, - char* pHint - ) aiImportFileFromMemory; - - /** - * Apply post-processing to an already-imported scene. - * - * This is strictly equivalent to calling <code>aiImportFile()</code> or - * <code>aiImportFileEx()</code> with the same flags. However, you can use - * this separate function to inspect the imported scene first to fine-tune - * your post-processing setup. - * - * Params: - * pScene = Scene to work on. - * pFlags = Provide a bitwise combination of the - * <code>aiPostProcessSteps</code> flags. - * - * Returns: - * A pointer to the post-processed data. Post processing is done in-place, - * meaning this is still the same <code>aiScene</code> which you passed - * for pScene. However, if post-processing failed, the scene could now be - * null. That's quite a rare case, post processing steps are not really - * designed to fail. To be exact, <code>aiProcess.ValidateDS</code> is - * currently the only post processing step which can actually cause the - * scene to be reset to null. - */ - aiScene* function( aiScene* pScene, uint pFlags ) aiApplyPostProcessing; - - /** - * Get one of the predefined log streams. This is the quick'n'easy solution - * to access Assimp's log system. Attaching a log stream can slightly reduce - * Assimp's overall import performance. - * - * Examples: - * --- - * aiLogStream stream = aiGetPredefinedLogStream( - * aiDefaultLogStream.FILE, "assimp.log.txt" ); - * if ( stream.callback !is null ) { - * aiAttachLogStream( &stream ); - * } - * --- - * - * Params: - * pStreams = The log stream destination. - * file = Solely for the <code>aiDefaultLogStream.FILE</code> flag: - * specifies the file to write to. Pass null for all other flags. - * - * Returns: - * The log stream, null if something went wrong. - */ - aiLogStream function( aiDefaultLogStream pStreams, char* file ) aiGetPredefinedLogStream; - - /** - * Attach a custom log stream to the libraries' logging system. - * - * Attaching a log stream can slightly reduce Assimp's overall import - * performance. Multiple log-streams can be attached. - * - * Params: - * stream = Describes the new log stream. - * - * Note: To ensure proper destruction of the logging system, you need to - * manually call <code>aiDetachLogStream()</code> on every single log - * stream you attach. Alternatively, <code>aiDetachAllLogStreams()</code> - * is provided. - */ - void function( aiLogStream* stream ) aiAttachLogStream; - - /** - * Enable verbose logging. - * - * Verbose logging includes debug-related stuff and detailed import - * statistics. This can have severe impact on import performance and memory - * consumption. However, it might be useful to find out why a file is not - * read correctly. - * - * Param: - * d = Whether verbose logging should be enabled. - */ - void function( aiBool d ) aiEnableVerboseLogging; - - /** - * Detach a custom log stream from the libraries' logging system. - * - * This is the counterpart of #aiAttachPredefinedLogStream. If you attached a stream, - * don't forget to detach it again. - * - * Params: - * stream = The log stream to be detached. - * - * Returns: - * <code>aiReturn.SUCCESS</code> if the log stream has been detached - * successfully. - * - * See: <code>aiDetachAllLogStreams</code> - */ - aiReturn function( aiLogStream* stream ) aiDetachLogStream; - - /** - * Detach all active log streams from the libraries' logging system. - * - * This ensures that the logging system is terminated properly and all - * resources allocated by it are actually freed. If you attached a stream, - * don't forget to detach it again. - * - * See: <code>aiAttachLogStream</code>, <code>aiDetachLogStream</code> - */ - void function() aiDetachAllLogStreams; - - /** - * Releases all resources associated with the given import process. - * - * Call this function after you're done with the imported data. - * - * Params: - * pScene = The imported data to release. null is a valid value. - */ - void function( aiScene* pScene ) aiReleaseImport; - - /** - * Returns the error text of the last failed import process. - * - * Returns: - * A textual description of the error that occurred at the last importing - * process. null if there was no error. There can't be an error if you - * got a non-null <code>aiScene</code> from - * <code>aiImportFile()/aiImportFileEx()/aiApplyPostProcessing()</code>. - */ - char* function() aiGetErrorString; - - /** - * Returns whether a given file extension is supported by this Assimp build. - * - * Params: - * szExtension = Extension for which to query support. Must include a - * leading dot '.'. Example: ".3ds", ".md3" - * - * Returns: - * <code>TRUE</code> if the file extension is supported. - */ - aiBool function( char* szExtension ) aiIsExtensionSupported; - - /** - * Gets a list of all file extensions supported by ASSIMP. - * - * Format of the list: "*.3ds;*.obj;*.dae". - * - * If a file extension is contained in the list this does, of course, not - * mean that Assimp is able to load all files with this extension. - * - * Params: - * szOut = String to receive the extension list. null is not a valid - * parameter. - */ - void function( aiString* szOut ) aiGetExtensionList; - - /** - * Gets the storage required by an imported asset - * - * Params: - * pIn = Asset to query storage size for. - * info = Data structure to be filled. - */ - void function( aiScene* pIn, aiMemoryInfo* info ) aiGetMemoryRequirements; - - /** - * Sets an integer property. - * - * Properties are always shared by all imports. It is not possible to - * specify them per import. - * - * Params: - * szName = Name of the configuration property to be set. All supported - * public properties are defined in the <code>config</code> module. - * value = New value for the property. - */ - void function( char* szName, int value ) aiSetImportPropertyInteger; - - /** - * Sets a floating-point property. - * - * Properties are always shared by all imports. It is not possible to - * specify them per import. - * - * Params: - * szName = Name of the configuration property to be set. All supported - * public properties are defined in the <code>config</code> module. - * value = New value for the property. - */ - void function( char* szName, float value ) aiSetImportPropertyFloat; - - /** - * Sets a string property. - * - * Properties are always shared by all imports. It is not possible to - * specify them per import. - * - * Params: - * szName = Name of the configuration property to be set. All supported - * public properties are defined in the <code>config</code> module. - * st = New value for the property. - */ - void function( char* szName, aiString* st ) aiSetImportPropertyString; - - - /* - * Mathematical helper functions. - */ - - /** - * Constructs a quaternion from a 3x3 rotation matrix. - * - * Params: - * quat = Receives the output quaternion. - * mat = Matrix to 'quaternionize'. - */ - void function( aiQuaternion* quat, aiMatrix3x3* mat ) aiCreateQuaternionFromMatrix; - - /** - * Decomposes a transformation matrix into its rotational, translational and - * scaling components. - * - * Params: - * mat = Matrix to decompose. - * scaling = Receives the scaling component. - * rotation = Receives the rotational component. - * position = Receives the translational component. - */ - void function( - aiMatrix4x4* mat, - aiVector3D* scaling, - aiQuaternion* rotation, - aiVector3D* position - ) aiDecomposeMatrix; - - /** - * Transposes a 4x4 matrix (in-place). - * - * Params: - * mat = The matrix to be transposed. - */ - void function( aiMatrix4x4* mat ) aiTransposeMatrix4; - - /** - * Transposes a 3x3 matrix (in-place). - * - * Params: - * mat = The matrix to be transposed. - */ - void function( aiMatrix3x3* mat ) aiTransposeMatrix3; - - /** - * Transforms a vector by a 3x3 matrix (in-place). - * - * Params: - * vec = Vector to be transformed. - * mat = Matrix to transform the vector with. - */ - void function( aiVector3D* vec, aiMatrix3x3* mat ) aiTransformVecByMatrix3; - - /** - * Transforms a vector by a 4x4 matrix (in-place). - * - * Params: - * vec = Vector to be transformed. - * mat = Matrix to transform the vector with. - */ - void function( aiVector3D* vec, aiMatrix4x4* mat ) aiTransformVecByMatrix4; - - /** - * Multiplies two 4x4 matrices. - * - * Params: - * dst = First factor, receives result. - * src = Matrix to be multiplied with 'dst'. - */ - void function( aiMatrix4x4* dst, aiMatrix4x4* src ) aiMultiplyMatrix4; - - /** - * Multiplies two 3x3 matrices. - * - * Params: - * dst = First factor, receives result. - * src = Matrix to be multiplied with 'dst'. - */ - void function( aiMatrix3x3* dst, aiMatrix3x3* src ) aiMultiplyMatrix3; - - /** - * Constructs a 3x3 identity matrix. - * - * Params: - * mat = Matrix to receive its personal identity. - */ - void function( aiMatrix3x3* mat ) aiIdentityMatrix3; - - /** - * Constructs a 4x4 identity matrix. - * - * Params: - * mat = Matrix to receive its personal identity. - */ - void function( aiMatrix4x4* mat ) aiIdentityMatrix4; - - - /* - * Material system functions. - */ - - /** - * Retrieves a material property with a specific key from the material. - * - * Params: - * pMat = Pointer to the input material. May not be null. - * pKey = Key to search for. One of the <code>AI_MATKEY_XXX</code> - * constants. - * type = Specifies the <code>aiTextureType</code> of the texture to be - * retrieved, 0 for non-texture properties. - * index = Index of the texture to be retrieved, - * 0 for non-texture properties. - * pPropOut = Pointer to receive a pointer to a valid - * <code>aiMaterialProperty</code> structure or null if the key has - * not been found. - */ - aiReturn function( - aiMaterial* pMat, - char* pKey, - uint type, - uint index, - aiMaterialProperty** pPropOut - ) aiGetMaterialProperty; - - /** - * Retrieves a single float value or an array of float values from the - * material. - * - * Examples: - * --- - * const FLOATS_IN_UV_TRANSFORM = ( aiUVTransform.sizeof / float.sizeof ); - * uint valuesRead = FLOATS_IN_UV_TRANSFORM; - * bool success = - * ( aiGetMaterialFloatArray( &material, AI_MATKEY_UVTRANSFORM, - * aiTextureType.DIFFUSE, 0, cast( float* ) &trafo, &valuesRead ) == - * aiReturn.SUCCESS ) && - * ( valuesRead == FLOATS_IN_UV_TRANSFORM ); - * --- - * - * Params: - * pMat = Pointer to the input material. May not be null. - * pKey = Key to search for. One of the AI_MATKEY_XXX constants. - * type = Specifies the <code>aiTextureType</code> of the texture to be - * retrieved, 0 for non-texture properties. - * index = Index of the texture to be retrieved, - * 0 for non-texture properties. - * pOut = Pointer to a buffer to receive the result. - * pMax = Specifies the size of the given buffer in floats. Receives the - * number of values (not bytes!) read. null to read a scalar property. - * - * Returns: - * Specifies whether the key has been found. If not, the output arrays - * remains unmodified and pMax is set to 0. - */ - aiReturn function( - aiMaterial* pMat, - char* pKey, - uint type, - uint index, - float* pOut, - uint* pMax = null - ) aiGetMaterialFloatArray; - - /** - * Convenience alias for <code>aiGetMaterialFloatArray()</code>. - */ - alias aiGetMaterialFloatArray aiGetMaterialFloat; - - /** - * Retrieves a single integer value or an array of integer values from the - * material. - * - * See: <code>aiGetMaterialFloatArray()</code> - */ - aiReturn function( - aiMaterial* pMat, - char* pKey, - uint type, - uint index, - int* pOut, - uint* pMax = null - ) aiGetMaterialIntegerArray; - - /** - * Convenience alias for <code>aiGetMaterialIntegerArray()</code>. - */ - alias aiGetMaterialIntegerArray aiGetMaterialInteger; - - /** - * Retrieves a color value from the material. - * - * See: <code>aiGetMaterialFloatArray()</code> - */ - aiReturn function( - aiMaterial* pMat, - char* pKey, - uint type, - uint index, - aiColor4D* pOut - ) aiGetMaterialColor; - - /** - * Retrieves a string value from the material. - * - * See: <code>aiGetMaterialFloatArray()</code> - */ - aiReturn function( - aiMaterial* pMat, - char* pKey, - uint type, - uint index, - aiString* pOut - ) aiGetMaterialString; - - /** - * Get the number of textures for a particular texture type. - * - * Params: - * pMat = Pointer to the input material. May not be NULL - * type = Texture type to check for - * - * Returns: - * Number of textures for this type. - */ - uint function( aiMaterial* pMat, aiTextureType type ) aiGetMaterialTextureCount; - - /** - * Helper function to get all values pertaining to a particular texture slot - * from a material structure. - * - * This function is provided just for convenience. You could also read the - * texture by parsing all of its properties manually. This function bundles - * all of them in a huge function monster. - * - * Params: - * mat = Pointer to the input material. May not be null. - * type = Specifies the texture stack (<code>aiTextureType</code>) to - * read from. - * index = Index of the texture. The function fails if the requested - * index is not available for this texture type. - * <code>aiGetMaterialTextureCount()</code> can be used to determine - * the number of textures in a particular texture stack. - * path = Receives the output path. null is not a valid value. - * mapping = Receives the texture mapping mode to be used. - * Pass null if you are not interested in this information. - * uvindex = For UV-mapped textures: receives the index of the UV source - * channel. Unmodified otherwise. Pass null if you are not interested - * in this information. - * blend = Receives the blend factor for the texture. - * Pass null if you are not interested in this information. - * op = Receives the texture blend operation to be perform between this - * texture and the previous texture. Pass null if you are not - * interested in this information. - * mapmode = Receives the mapping modes to be used for the texture. Pass - * a pointer to an array of two aiTextureMapMode's (one for each axis, - * UV order) or null if you are not interested in this information. - * - * Returns: - * <code>aiReturn.SUCCESS</code> on success, otherwise something else. - */ - aiReturn function( - aiMaterial* mat, - aiTextureType type, - uint index, - aiString* path, - aiTextureMapping* mapping = null, - uint* uvindex = null, - float* blend = null, - aiTextureOp* op = null, - aiTextureMapMode* mapmode = null - ) aiGetMaterialTexture; - - - /* - * Versioning functions. - */ - - /** - * Returns a string with legal copyright and licensing information about - * Assimp. - * - * The string may include multiple lines. - * - * Returns: - * Pointer to static string. - */ - char* function() aiGetLegalString; - - /** - * Returns the current minor version number of the Assimp library. - * - * Returns: - * Minor version of the Assimp library. - */ - uint function() aiGetVersionMinor; - - /** - * Returns the current major version number of the Assimp library. - * - * Returns: - * Major version of the Assimp library. - */ - uint function() aiGetVersionMajor; - - /** - * Returns the repository revision of the Assimp library. - * - * Returns: - * SVN Repository revision number of the Assimp library. - */ - uint function() aiGetVersionRevision; - - /** - * Returns the flags Assimp was compiled with. - * - * Returns: - * Any bitwise combination of the ASSIMP_CFLAGS_xxx constants. - */ - uint function() aiGetCompileFlags; -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/assimp.d b/src/mesh/assimp-master/port/dAssimp/assimp/assimp.d deleted file mode 100644 index a147ee2..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/assimp.d +++ /dev/null @@ -1,63 +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. ---------------------------------------------------------------------------- -*/ - -/** - * Include-all module provided for convenience. - */ -module assimp.assimp; - -public { - import assimp.animation; - import assimp.api; - import assimp.camera; - import assimp.config; - import assimp.fileIO; - import assimp.light; - import assimp.loader; - import assimp.material; - import assimp.math; - import assimp.mesh; - import assimp.postprocess; - import assimp.scene; - import assimp.texture; - import assimp.types; - import assimp.versionInfo; -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/camera.d b/src/mesh/assimp-master/port/dAssimp/assimp/camera.d deleted file mode 100644 index 5567be2..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/camera.d +++ /dev/null @@ -1,182 +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 structure which is used to store the imported information - * about the virtual cameras in the scene. - */ -module assimp.camera; - -import assimp.math; -import assimp.types; - -extern ( C ) { - /** - * Helper structure to describe a virtual camera. - * - * Cameras have a representation in the node graph and can be animated. - * An important aspect is that the camera itself is also part of the - * scenegraph. This means, any values such as the look-at vector are not - * absolute, they're <em>relative</em> to the coordinate system defined - * by the node which corresponds to the camera. This allows for camera - * animations. Static cameras parameters like the look-at or up vectors are - * usually specified directly in the class members, but beware, they could - * also be encoded in the node transformation. The following (pseudo)code - * sample shows how to do it. - * - * Examples: - * --- - * // Get the camera matrix for a camera at a specific time - * // if the node hierarchy for the camera does not contain - * // at least one animated node this is a static computation - * get-camera-matrix (node sceneRoot, camera cam) : matrix - * { - * node cnd = find-node-for-camera(cam) - * matrix cmt = identity() - * - * // as usual - get the absolute camera transformation for this frame - * for each node nd in hierarchy from sceneRoot to cnd - * matrix cur - * if (is-animated(nd)) - * cur = eval-animation(nd) - * else cur = nd->mTransformation; - * cmt = mult-matrices( cmt, cur ) - * end for - * - * // now multiply with the camera's own local transform - * cam = mult-matrices (cam, get-camera-matrix(cmt) ) - * } - * --- - * - * Note: Some file formats (such as 3DS, ASE) export a "target point" – the - * point the camera is looking at (it can even be animated). Assimp - * writes the target point as a subnode of the camera's main node, called - * "<camName>.Target". However, this is just additional information; the - * transformation applied to the main camera node already makes the - * camera face the right direction. - */ - struct aiCamera { - /** - * The name of the camera. - * - * There must be a node in the scenegraph with the same name. This node - * specifies the position of the camera in the scene hierarchy and can - * be animated. - */ - aiString mName; - - - /** - * Position of the camera relative to the coordinate space defined by the - * corresponding node. - * - * The default value is 0|0|0. - */ - aiVector3D mPosition; - - /** - * Up vector of the camera coordinate system relative to the - * coordinate space defined by the corresponding node. - * - * The right vector of the camera coordinate system is the cross - * product of the up and lookAt vectors. - * - * The default value is 0|1|0. The vector may be normalized, but it - * needn't. - */ - aiVector3D mUp; - - /** - * Look-at vector of the camera coordinate system relative to the - * coordinate space defined by the corresponding node. - * - * This is the viewing direction of the user. - * - * The default value is 0|0|1. The vector may be normalized, but it - * needn't. - */ - aiVector3D mLookAt; - - - /** - * Half horizontal field of view angle, in radians. - * - * The field of view angle is the angle between the center line of the - * screen and the left or right border. - * - * The default value is PI/4. - */ - float mHorizontalFOV; - - /** - * Distance of the near clipping plane from the camera. - * - * The value may not be 0.f (for arithmetic reasons to prevent - * a division through zero). - * - * The default value is 0.1f. - */ - float mClipPlaneNear; - - /** - * Distance of the far clipping plane from the camera. - * - * The far clipping plane must, of course, be further away than the - * near clipping plane. The ratio between the near and the far plane - * should not be too large (between 1000-10000 should be ok) to avoid - * floating-point inaccuracies which could lead to z-fighting. - * - * The default value is 1000.f. - */ - float mClipPlaneFar; - - /** - * Screen aspect ratio. - * - * This is the ration between the width and the height of the - * screen. Typical values are 4/3, 1/2 or 1/1. This value is - * 0 if the aspect ratio is not defined in the source file. - * - * 0 is also the default value. - */ - float mAspect; - } -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/config.d b/src/mesh/assimp-master/port/dAssimp/assimp/config.d deleted file mode 100644 index 761156b..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/config.d +++ /dev/null @@ -1,705 +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. ---------------------------------------------------------------------------- -*/ - -/** - * Defines constants for configurable properties for the library. - * - * These are set via <code>aiSetImportPropertyInteger()</code>, - * <code>aiSetImportPropertyFloat()</code> and - * <code>aiSetImportPropertyString()</code>. - */ -module assimp.config; - -extern ( C ) { - /* - * Library settings. - * - * General, global settings. - */ - - /** - * Enables time measurements. - * - * If enabled, measures the time needed for each part of the loading - * process (i.e. IO time, importing, postprocessing, ..) and dumps these - * timings to the DefaultLogger. See the performance page in the main - * Assimp docs information on this topic. - * - * Property type: bool. Default value: false. - */ - const char* AI_CONFIG_GLOB_MEASURE_TIME = "GLOB_MEASURE_TIME"; - - version( none ) { // not implemented yet - /** - * Set Assimp's multithreading policy. - * - * This setting is ignored if Assimp was built without boost.thread support - * (<code>ASSIMP_BUILD_NO_THREADING</code>, which is implied by - * <code>ASSIMP_BUILD_BOOST_WORKAROUND</code>). - * - * Possible values are: -1 to let Assimp decide what to do, 0 to disable - * multithreading entirely and any number larger than 0 to force a specific - * number of threads. Assimp is always free to ignore this settings, which - * is merely a hint. Usually, the default value (-1) will be fine. However, - * if Assimp is used concurrently from multiple user threads, it might be - * useful to limit each Importer instance to a specific number of cores. - * - * For more information, see the threading page in the main Assimp docs. - * - * Property type: int, default value: -1. - */ - const char* AI_CONFIG_GLOB_MULTITHREADING = "GLOB_MULTITHREADING"; - } - - - /* - * Post processing settings. - * - * Various options to fine-tune the behavior of a specific post processing step. - */ - - /** - * Specifies the maximum angle that may be between two vertex tangents that - * their tangents and bitangents are smoothed. - * - * This applies to the <code>CalcTangentSpace</code> step. The angle is - * specified in degrees, so 180 corresponds to PI radians. - * - * The default value is 45, the maximum value is 175. - * - * Property type: float. - */ - const char* AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE = "PP_CT_MAX_SMOOTHING_ANGLE"; - - /** - * Specifies the maximum angle that may be between two face normals at the - * same vertex position that their are smoothed together. Sometimes referred - * to as 'crease angle'. - * - * This applies to the <code>GenSmoothNormals</code> step. The angle is - * specified in degrees, so 180 corresponds to PI radians. - * - * The default value is 175 degrees (all vertex normals are smoothed), the - * maximum value is 175, too. - * - * Property type: float. - * - * Warning: - * Setting this option may cause a severe loss of performance. The - * performance is unaffected if the <code>AI_CONFIG_FAVOUR_SPEED</code> - * flag is set but the output quality may be reduced. - */ - const char* AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE = "PP_GSN_MAX_SMOOTHING_ANGLE"; - - /** - * Sets the colormap (= palette) to be used to decode embedded textures in - * MDL (Quake or 3DGS) files. - * - * This must be a valid path to a file. The file is 768 (256*3) bytes large - * and contains RGB triplets for each of the 256 palette entries. The - * default value is colormap.lmp. If the file is not found, a default - * palette (from Quake 1) is used. - * - * Property type: string. - */ - const char* AI_CONFIG_IMPORT_MDL_COLORMAP = "IMPORT_MDL_COLORMAP"; - - /** - * Configures the <code>RemoveRedundantMaterials</code> step to keep - * materials matching a name in a given list. - * - * This is a list of 1 to n strings, ' ' serves as delimiter character. - * Identifiers containing whitespaces must be enclosed in <em>single</em> - * quotation marks. For example: <code> - * "keep-me and_me_to anotherMaterialToBeKept \'name with whitespace\'"</code>. - * Linefeeds, tabs or carriage returns are treated as whitespace. - * - * If a material matches on of these names, it will not be modified or - * removed by the postprocessing step nor will other materials be replaced - * by a reference to it. - * - * This option might be useful if you are using some magic material names - * to pass additional semantics through the content pipeline. This ensures - * they won't be optimized away, but a general optimization is still - * performed for materials not contained in the list. - * - * Default value: n/a - * - * Property type: string. - * - * Note: Material names are case sensitive. - */ - const char* AI_CONFIG_PP_RRM_EXCLUDE_LIST = "PP_RRM_EXCLUDE_LIST"; - - /** - * Configures the <code>PretransformVertices</code> step to keep the scene - * hierarchy. Meshes are moved to worldspace, but no optimization is - * performed (meshes with equal materials are not joined, the total number - * of meshes will not change). - * - * This option could be of use for you if the scene hierarchy contains - * important additional information which you intend to parse. - * For rendering, you can still render all meshes in the scene without - * any transformations. - * - * Default value: false. - * - * Property type: bool. - */ - const char* AI_CONFIG_PP_PTV_KEEP_HIERARCHY = "PP_PTV_KEEP_HIERARCHY"; - - /** - * Configures the <code>PretransformVertices</code> step to normalize all - * vertex components into the -1...1 range. That is, a bounding box for the - * whole scene is computed, the maximum component is taken and all meshes - * are scaled appropriately (uniformly of course!). - * - * This might be useful if you don't know the spatial dimension of the input - * data. - */ - const char* AI_CONFIG_PP_PTV_NORMALIZE = "PP_PTV_NORMALIZE"; - - /** - * Configures the <code>FindDegenerates</code> step to remove degenerated - * primitives from the import – immediately. - * - * The default behaviour converts degenerated triangles to lines and - * degenerated lines to points. See the documentation to the - * <code>FindDegenerates</code> step for a detailed example of the various - * ways to get rid of these lines and points if you don't want them. - * - * Default value: false. - * - * Property type: bool. - */ - const char* AI_CONFIG_PP_FD_REMOVE = "PP_FD_REMOVE"; - - /** - * Configures the <code>OptimizeGraph</code> step to preserve nodes matching - * a name in a given list. - * - * This is a list of 1 to n strings, ' ' serves as delimiter character. - * Identifiers containing whitespaces must be enclosed in <em>single</em> - * quotation marks. For example: <code> - * "keep-me and_me_to anotherMaterialToBeKept \'name with whitespace\'"</code>. - * Linefeeds, tabs or carriage returns are treated as whitespace. - * - * If a node matches on of these names, it will not be modified or - * removed by the postprocessing step. - * - * This option might be useful if you are using some magic node names - * to pass additional semantics through the content pipeline. This ensures - * they won't be optimized away, but a general optimization is still - * performed for nodes not contained in the list. - * - * Default value: n/a - * - * Property type: string. - * - * Note: Node names are case sensitive. - */ - const char* AI_CONFIG_PP_OG_EXCLUDE_LIST = "PP_OG_EXCLUDE_LIST"; - - /** - * Sets the maximum number of triangles in a mesh. - * - * This is used by the <code>SplitLargeMeshes</code> step to determine - * whether a mesh must be split or not. - * - * Default value: AI_SLM_DEFAULT_MAX_TRIANGLES. - * - * Property type: integer. - */ - const char* AI_CONFIG_PP_SLM_TRIANGLE_LIMIT = "PP_SLM_TRIANGLE_LIMIT"; - - /** - * The default value for the AI_CONFIG_PP_SLM_TRIANGLE_LIMIT setting. - */ - const AI_SLM_DEFAULT_MAX_TRIANGLES = 1000000; - - /** - * Sets the maximum number of vertices in a mesh. - * - * This is used by the <code>SplitLargeMeshes</code> step to determine - * whether a mesh must be split or not. - * - * Default value: AI_SLM_DEFAULT_MAX_VERTICES - * - * Property type: integer. - */ - const char* AI_CONFIG_PP_SLM_VERTEX_LIMIT = "PP_SLM_VERTEX_LIMIT"; - - /** - * The default value for the AI_CONFIG_PP_SLM_VERTEX_LIMIT setting. - */ - const AI_SLM_DEFAULT_MAX_VERTICES = 1000000; - - /** - * Sets the maximum number of bones affecting a single vertex. - * - * This is used by the <code>LimitBoneWeights</code> step. - * - * Default value: AI_LBW_MAX_WEIGHTS - * - * Property type: integer. - */ - const char* AI_CONFIG_PP_LBW_MAX_WEIGHTS = "PP_LBW_MAX_WEIGHTS"; - - /** - * The default value for the AI_CONFIG_PP_LBW_MAX_WEIGHTS setting. - */ - const AI_LMW_MAX_WEIGHTS = 0x4; - - /** - * Sets the size of the post-transform vertex cache to optimize the - * vertices for. This configures the <code>ImproveCacheLocality</code> step. - * - * The size is given in vertices. Of course you can't know how the vertex - * format will exactly look like after the import returns, but you can still - * guess what your meshes will probably have. - * - * The default value results in slight performance improvements for most - * nVidia/AMD cards since 2002. - * - * Default value: PP_ICL_PTCACHE_SIZE - * - * Property type: integer. - */ - const char* AI_CONFIG_PP_ICL_PTCACHE_SIZE = "PP_ICL_PTCACHE_SIZE"; - - /** - * The default value for the AI_CONFIG_PP_ICL_PTCACHE_SIZE config option. - */ - const PP_ICL_PTCACHE_SIZE = 12; - - /** - * Components of the <code>aiScene</code> and <code>aiMesh</code> data - * structures that can be excluded from the import by using the - * <code>RemoveComponent</code> step. - * - * See the documentation to <code>RemoveComponent</code> for more details. - */ - enum aiComponent : uint { - /** - * Normal vectors. - */ - NORMALS = 0x2, - - /** - * Tangents and bitangents. - */ - TANGENTS_AND_BITANGENTS = 0x4, - - /** - * <em>All</em> color sets. - * - * Use aiComponent_COLORSn( N ) to specify the N'th set. - */ - COLORS = 0x8, - - /** - * <em>All</em> texture UV coordinate sets. - * - * Use aiComponent_TEXCOORDn( N ) to specify the N'th set. - */ - TEXCOORDS = 0x10, - - /** - * Bone weights from all meshes. - * - * The corresponding scenegraph nodes are <em>not</em> removed. Use the - * <code>OptimizeGraph</code> step to do this. - */ - BONEWEIGHTS = 0x20, - - /** - * Node animations (<code>aiScene.mAnimations</code>). - * - * The corresponding scenegraph nodes are <em>not</em> removed. Use the - * <code>OptimizeGraph</code> step to do this. - */ - ANIMATIONS = 0x40, - - /** - * Embedded textures (<code>aiScene.mTextures</code>). - */ - TEXTURES = 0x80, - - /** - * Light sources (<code>aiScene.mLights</code>). - * - * The corresponding scenegraph nodes are <em>not</em> removed. Use the - * <code>OptimizeGraph</code> step to do this. - */ - LIGHTS = 0x100, - - /** - * Cameras (<code>aiScene.mCameras</code>). - * - * The corresponding scenegraph nodes are <em>not</em> removed. Use the - * <code>OptimizeGraph</code> step to do this. - */ - CAMERAS = 0x200, - - /** - * Meshes (<code>aiScene.mMeshes</code>). - */ - MESHES = 0x400, - - /** Materials. - * - * One default material will be generated, so - * <code>aiScene.mNumMaterials</code> will be 1. - */ - MATERIALS = 0x800 - } - - /** - * Specifies a certain color channel to remove. - */ - uint aiComponent_COLORSn( uint n ) { return 1u << ( n + 20u ); } - - /** - * Specifies a certain UV coordinate channel to remove. - */ - uint aiComponent_TEXCOORDSn( uint n ) { return 1u << ( n + 25u ); } - - /** - * Input parameter to the <code>RemoveComponent</code> step: - * Specifies the parts of the data structure to be removed. - * - * See the documentation to this step for further details. - * - * Default value: 0 - * - * Property type: integer (bitwise combination of <code>aiComponent</code> - * flags). - * - * Note: If no valid mesh is remaining after the step has been executed, the - * import <em>fails</em>, because there is no data to work on anymore. - */ - const char* AI_CONFIG_PP_RVC_FLAGS = "PP_RVC_FLAGS"; - - /** - * Input parameter to the <code>SortByPType</code> step: - * Specifies which primitive types are removed by the step. - * - * This is a bitwise combination of the <code>aiPrimitiveType</code> flags. - * Specifying all of them is illegal, of course. A typical use would be to - * exclude all line and point meshes from the import. - * - * Default value: 0 - * - * Property type: integer. - */ - const char* AI_CONFIG_PP_SBP_REMOVE = "PP_SBP_REMOVE"; - - /** - * Input parameter to the <code>FindInvalidData</code> step: - * Specifies the floating-point accuracy for animation values. - * - * The step checks for animation tracks where all frame values are - * absolutely equal and removes them. This tweakable controls the epsilon - * for floating-point comparisons – two keys are considered equal if the - * invariant abs(n0-n1) > epsilon holds true for all vector respectively - * quaternion components. - * - * Default value: 0 (exact comparison). - * - * Property type: float. - */ - const char* AI_CONFIG_PP_FID_ANIM_ACCURACY = "PP_FID_ANIM_ACCURACY"; - - /** - * The <code>TransformUVCoords</code> step evaluates UV scalings. - */ - const AI_UVTRAFO_SCALING = 0x1; - - /** - * The <code>TransformUVCoords</code> step evaluates UV rotations. - */ - const AI_UVTRAFO_ROTATION = 0x2; - - /** - * The <code>TransformUVCoords</code> step evaluates UV translation. - */ - const AI_UVTRAFO_TRANSLATION = 0x4; - - /** - * The <code>TransformUVCoords</code> step evaluates all UV translations. - */ - const AI_UVTRAFO_ALL = - AI_UVTRAFO_SCALING - | AI_UVTRAFO_ROTATION - | AI_UVTRAFO_TRANSLATION; - - /** - * Input parameter to the <code>TransformUVCoords</code> step: Specifies - * which UV transformations are evaluated. - * - * Default value: AI_UVTRAFO_ALL. - * - * Property type: integer (bitwise combination of the - * <code>AI_UVTRAFO_XXX<code> flag). - */ - const char* AI_CONFIG_PP_TUV_EVALUATE = "PP_TUV_EVALUATE"; - - /** - * A hint to assimp to favour speed against import quality. - * - * Enabling this option may result in faster loading, but it needn't. - * It represents just a hint to loaders and post-processing steps to use - * faster code paths, if possible. - * - * Default value: false. - * - * Property type: bool. - */ - const char* AI_CONFIG_FAVOUR_SPEED = "FAVOUR_SPEED"; - - - /* - * Importer settings. - * - * Various stuff to fine-tune the behaviour of specific importer plugins. - */ - - /** - * Set the vertex animation keyframe to be imported. - * - * Assimp does not support vertex keyframes (only bone animation is - * supported). The library reads only one frame of models with vertex - * animations. - * - * Default value: 0 (first frame). - * - * Property type: integer. - * - * Note: This option applies to all importers. However, it is also possible - * to override the global setting for a specific loader. You can use the - * AI_CONFIG_IMPORT_XXX_KEYFRAME options (where XXX is a placeholder for - * the file format for which you want to override the global setting). - */ - const char* AI_CONFIG_IMPORT_GLOBAL_KEYFRAME = "IMPORT_GLOBAL_KEYFRAME"; - - const char* AI_CONFIG_IMPORT_MD3_KEYFRAME = "IMPORT_MD3_KEYFRAME"; - const char* AI_CONFIG_IMPORT_MD2_KEYFRAME = "IMPORT_MD2_KEYFRAME"; - const char* AI_CONFIG_IMPORT_MDL_KEYFRAME = "IMPORT_MDL_KEYFRAME"; - const char* AI_CONFIG_IMPORT_MDC_KEYFRAME = "IMPORT_MDC_KEYFRAME"; - const char* AI_CONFIG_IMPORT_SMD_KEYFRAME = "IMPORT_SMD_KEYFRAME"; - const char* AI_CONFIG_IMPORT_UNREAL_KEYFRAME = "IMPORT_UNREAL_KEYFRAME"; - - - /** - * Configures the AC loader to collect all surfaces which have the - * "Backface cull" flag set in separate meshes. - * - * Default value: true. - * - * Property type: bool. - */ - const char* AI_CONFIG_IMPORT_AC_SEPARATE_BFCULL = "IMPORT_AC_SEPARATE_BFCULL"; - - /** - * Configures the UNREAL 3D loader to separate faces with different surface - * flags (e.g. two-sided vs. single-sided). - * - * Default value: true. - * - * Property type: bool. - */ - const char* AI_CONFIG_IMPORT_UNREAL_HANDLE_FLAGS = "UNREAL_HANDLE_FLAGS"; - - /** - * Configures the terragen import plugin to compute uv's for terrains, if - * not given. Furthermore, a default texture is assigned. - * - * UV coordinates for terrains are so simple to compute that you'll usually - * want to compute them on your own, if you need them. This option is intended - * for model viewers which want to offer an easy way to apply textures to - * terrains. - * - * Default value: false. - * - * Property type: bool. - */ - const char* AI_CONFIG_IMPORT_TER_MAKE_UVS = "IMPORT_TER_MAKE_UVS"; - - /** - * Configures the ASE loader to always reconstruct normal vectors basing on - * the smoothing groups loaded from the file. - * - * Many ASE files have invalid normals (they're not orthonormal). - * - * Default value: true. - * - * Property type: bool. - */ - const char* AI_CONFIG_IMPORT_ASE_RECONSTRUCT_NORMALS = "IMPORT_ASE_RECONSTRUCT_NORMALS"; - - /** - * Configures the M3D loader to detect and process multi-part Quake player - * models. - * - * These models usually consist of three files, <code>lower.md3</code>, - * <code>upper.md3</code> and <code>head.md3</code>. If this property is set - * to true, Assimp will try to load and combine all three files if one of - * them is loaded. - * - * Default value: true. - * - * Property type: bool. - */ - const char* AI_CONFIG_IMPORT_MD3_HANDLE_MULTIPART = "IMPORT_MD3_HANDLE_MULTIPART"; - - /** - * Tells the MD3 loader which skin files to load. - * - * When loading MD3 files, Assimp checks whether a file - * <code><md3_file_name>_<skin_name>.skin</code> is existing. These files - * are used by Quake 3 to be able to assign different skins (e.g. red and - * blue team) to models. 'default', 'red', 'blue' are typical skin names. - * - * Default value: "default". - * - * Property type: string. - */ - const char* AI_CONFIG_IMPORT_MD3_SKIN_NAME = "IMPORT_MD3_SKIN_NAME"; - - /** - * Specify the Quake 3 shader file to be used for a particular MD3 file. - * This can also be a search path. - * - * By default Assimp's behaviour is as follows: If a MD3 file - * <code>[any_path]/models/[any_q3_subdir]/[model_name]/[file_name].md3</code> - * is loaded, the library tries to locate the corresponding shader file in - * <code>[any_path]/scripts/[model_name].shader</code>. This property - * overrides this behaviour. It can either specify a full path to the shader - * to be loaded or alternatively the path (relative or absolute) to the - * directory where the shaders for all MD3s to be loaded reside. Assimp - * attempts to open <code>[dir]/[model_name].shader</code> first, - * <code>[dir]/[file_name].shader</code> is the fallback file. Note that - * <code>[dir]</code> should have a terminal (back)slash. - * - * Default value: n/a. - * - * Property type: string. - */ - const char* AI_CONFIG_IMPORT_MD3_SHADER_SRC = "IMPORT_MD3_SHADER_SRC"; - - /** - * Configures the LWO loader to load just one layer from the model. - * - * LWO files consist of layers and in some cases it could be useful to load - * only one of them. This property can be either a string – which specifies - * the name of the layer – or an integer – the index of the layer. If the - * property is not set the whole LWO model is loaded. Loading fails if the - * requested layer is not available. The layer index is zero-based and the - * layer name may not be empty. - * - * Default value: all layers are loaded. - * - * Property type: integer/string. - */ - const char* AI_CONFIG_IMPORT_LWO_ONE_LAYER_ONLY = "IMPORT_LWO_ONE_LAYER_ONLY"; - - /** - * Configures the MD5 loader to not load the MD5ANIM file for a MD5MESH file - * automatically. - * - * The default strategy is to look for a file with the same name but the - * MD5ANIM extension in the same directory. If it is found, it is loaded - * and combined with the MD5MESH file. This configuration option can be - * used to disable this behaviour. - * - * Default value: false. - * - * Property type: bool. - */ - const char* AI_CONFIG_IMPORT_MD5_NO_ANIM_AUTOLOAD = "IMPORT_MD5_NO_ANIM_AUTOLOAD"; - - /** - * Defines the begin of the time range for which the LWS loader evaluates - * animations and computes <code>aiNodeAnim</code>s. - * - * Assimp provides full conversion of LightWave's envelope system, including - * pre and post conditions. The loader computes linearly subsampled animation - * chanels with the frame rate given in the LWS file. This property defines - * the start time. Note: animation channels are only generated if a node - * has at least one envelope with more tan one key assigned. This property. - * is given in frames, '0' is the first frame. By default, if this property - * is not set, the importer takes the animation start from the input LWS - * file ('FirstFrame' line). - * - * Default value: read from file. - * - * Property type: integer. - * - * See: <code>AI_CONFIG_IMPORT_LWS_ANIM_END</code> – end of the imported - * time range - */ - const char* AI_CONFIG_IMPORT_LWS_ANIM_START = "IMPORT_LWS_ANIM_START"; - const char* AI_CONFIG_IMPORT_LWS_ANIM_END = "IMPORT_LWS_ANIM_END"; - - /** - * Defines the output frame rate of the IRR loader. - * - * IRR animations are difficult to convert for Assimp and there will always - * be a loss of quality. This setting defines how many keys per second are - * returned by the converter. - * - * Default value: 100. - * - * Property type: integer. - */ - const char* AI_CONFIG_IMPORT_IRR_ANIM_FPS = "IMPORT_IRR_ANIM_FPS"; - - /** - * Ogre Importer will try to load this material file. - * - * Ogre Mehs contain only the material name, not the material file. If there - * is no material file with the same name as the material, Ogre Importer - * will try to load this file and search the material in it. - * - * Property type: string. Default value: "Scene.material". - */ - const char* AI_CONFIG_IMPORT_OGRE_MATERIAL_FILE = "IMPORT_OGRE_MATERIAL_FILE"; -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/fileIO.d b/src/mesh/assimp-master/port/dAssimp/assimp/fileIO.d deleted file mode 100644 index 108d883..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/fileIO.d +++ /dev/null @@ -1,140 +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. ---------------------------------------------------------------------------- -*/ - -/** - * The data structures necessary to use Assimip with a custom IO system. - */ -module assimp.fileIO; - -import assimp.types; - -extern ( C ) { - // aiFile callbacks - alias size_t function( aiFile*, char*, size_t, size_t ) aiFileWriteProc; - alias size_t function( aiFile*, char*, size_t, size_t ) aiFileReadProc; - alias size_t function( aiFile* ) aiFileTellProc; - alias void function( aiFile* ) aiFileFlushProc; - alias aiReturn function( aiFile*, size_t, aiOrigin ) aiFileSeek; - - // aiFileIO callbacks - alias aiFile* function( aiFileIO*, char*, char* ) aiFileOpenProc; - alias void function( aiFileIO*, aiFile* ) aiFileCloseProc; - - /** - * Represents user-defined data. - */ - alias char* aiUserData; - - /** - * File system callbacks. - * - * Provided are functions to open and close files. Supply a custom structure - * to the import function. If you don't, a default implementation is used. - * Use custom file systems to enable reading from other sources, such as - * ZIPs or memory locations. - */ - struct aiFileIO { - /** - * Function used to open a new file - */ - aiFileOpenProc OpenProc; - - /** - * Function used to close an existing file - */ - aiFileCloseProc CloseProc; - - /** - * User-defined, opaque data. - */ - aiUserData UserData; - } - - /** - * File callbacks. - * - * Actually, it's a data structure to wrap a set of <code>fXXXX</code> - * (e.g <code>fopen()</code>) replacement functions. - * - * The default implementation of the functions utilizes the <code>fXXX</code> - * functions from the CRT. However, you can supply a custom implementation - * to Assimp by passing a custom <code>aiFileIO</code>. Use this to enable - * reading from other sources such as ZIP archives or memory locations. - */ - struct aiFile { - /** - * Callback to read from a file. - */ - aiFileReadProc ReadProc; - - /** - * Callback to write to a file. - */ - aiFileWriteProc WriteProc; - - /** - * Callback to retrieve the current position of the file cursor - * (<code>ftell()</code>). - */ - aiFileTellProc TellProc; - - /** - * Callback to retrieve the size of the file, in bytes. - */ - aiFileTellProc FileSizeProc; - - /** - * Callback to set the current position of the file cursor - * (<code>fseek()</code>). - */ - aiFileSeek SeekProc; - - /** - * Callback to flush the file contents. - */ - aiFileFlushProc FlushProc; - - /** - * User-defined, opaque data. - */ - aiUserData UserData; - } -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/light.d b/src/mesh/assimp-master/port/dAssimp/assimp/light.d deleted file mode 100644 index 0842d67..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/light.d +++ /dev/null @@ -1,215 +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 which are used to store the imported information - * about the light sources in the scene. - */ -module assimp.light; - -import assimp.math; -import assimp.types; - -extern ( C ) { - /** - * Enumerates all supported types of light sources. - */ - enum aiLightSourceType : uint { - UNDEFINED = 0x0, - - /** - * A directional light source has a well-defined direction but is - * infinitely far away. That's quite a good approximation for sun light. - */ - DIRECTIONAL = 0x1, - - /** - * A point light source has a well-defined position in space but no - * direction – it emits light in all directions. A normal bulb is a point - * light. - */ - POINT = 0x2, - - /** - * A spot light source emits light in a specific angle. It has a position - * and a direction it is pointing to. A good example for a spot light is - * a light spot in sport arenas. - */ - SPOT = 0x3 - } - - /** - * Helper structure to describe a light source. - * - * Assimp supports multiple sorts of light sources, including directional, - * point and spot lights. All of them are defined with just a single - * structure and distinguished by their parameters. - * - * Note: Some file formats (such as 3DS, ASE) export a "target point" – the - * point a spot light is looking at (it can even be animated). Assimp - * writes the target point as a subnode of a spotlights's main node, called - * <code>[spotName].Target</code>. However, this is just additional - * information then, the transformation tracks of the main node make the - * spot light already point in the right direction. - */ - struct aiLight { - /** - * The name of the light source. - * - * There must be a node in the scenegraph with the same name. This node - * specifies the position of the light in the scenehierarchy and can be - * animated. - */ - aiString mName; - - /** - * The type of the light source. - * - * <code>aiLightSource.UNDEFINED</code> is not a valid value for this - * member. - */ - aiLightSourceType mType; - - /** - * Position of the light source in space. Relative to the transformation - * of the node corresponding to the light. - * - * The position is undefined for directional lights. - */ - aiVector3D mPosition; - - /** - * Direction of the light source in space. Relative to the transformation - * of the node corresponding to the light. - * - * The direction is undefined for point lights. The vector may be - * normalized, but it needn't. - */ - aiVector3D mDirection; - - /** - * Constant light attenuation factor. - * - * The intensity of the light source at a given distance - * <code>d</code> from the light's position is - * <code>1/( att0 + att1 * d + att2 * d * d )</code>. This member - * corresponds to the <code>att0</code> variable in the equation. - * - * Naturally undefined for directional lights. - */ - float mAttenuationConstant; - - /** - * Linear light attenuation factor. - * - * The intensity of the light source at a given distance - * <code>d</code> from the light's position is - * <code>1/( att0 + att1 * d + att2 * d * d )</code>. This member - * corresponds to the <code>att1</code> variable in the equation. - * - * Naturally undefined for directional lights. - */ - float mAttenuationLinear; - - /** - * Quadratic light attenuation factor. - * - * The intensity of the light source at a given distance - * <code>d</code> from the light's position is - * <code>1/( att0 + att1 * d + att2 * d * d )</code>. This member - * corresponds to the <code>att2</code> variable in the equation. - * - * Naturally undefined for directional lights. - */ - float mAttenuationQuadratic; - - /** - * Diffuse color of the light source - * - * The diffuse light color is multiplied with the diffuse material color - * to obtain the final color that contributes to the diffuse shading term. - */ - aiColor3D mColorDiffuse; - - /** - * Specular color of the light source - * - * The specular light color is multiplied with the specular material - * color to obtain the final color that contributes to the specular - * shading term. - */ - aiColor3D mColorSpecular; - - /** - * Ambient color of the light source - * - * The ambient light color is multiplied with the ambient material color - * to obtain the final color that contributes to the ambient shading term. - * - * Most renderers will ignore this value it, is just a remaining of the - * fixed-function pipeline that is still supported by quite many file - * formats. - */ - aiColor3D mColorAmbient; - - /** - * Inner angle of a spot light's light cone. - * - * The spot light has maximum influence on objects inside this angle. The - * angle is given in radians. It is 2PI for point lights and undefined - * for directional lights. - */ - float mAngleInnerCone; - - /** - * Outer angle of a spot light's light cone. - * - * The spot light does not affect objects outside this angle. The angle - * is given in radians. It is 2PI for point lights and undefined for - * directional lights. The outer angle must be greater than or equal to - * the inner angle. - * - * It is assumed that the application uses a smooth interpolation between - * the inner and the outer cone of the spot light. - */ - float mAngleOuterCone; - } -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/loader.d b/src/mesh/assimp-master/port/dAssimp/assimp/loader.d deleted file mode 100644 index 279f0a7..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/loader.d +++ /dev/null @@ -1,193 +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. ---------------------------------------------------------------------------- -*/ - -/** - * Provides facilities for dynamically loading the Assimp library. - * - * Currently requires Tango, but there is no reason why Phobos could not be - * supported too. - */ -module assimp.loader; - -import assimp.api; -import tango.io.Stdout; -import tango.sys.SharedLib; - -const uint ASSIMP_BINDINGS_MAJOR = 2; -const uint ASSIMP_BINDINGS_MINOR = 0; - -/** - * Loader class for dynamically loading the Assimp library. - * - * The library is »reference-counted«, meaning that the library is not - * unloaded on a call to <code>unload()</code> if there are still other - * references to it. - */ -struct Assimp { -public: - /** - * Loads the library if it is not already loaded and increases the - * reference counter. - * - * The library file (<code>libassimp.so</code> on POSIX systems, - * <code>Assimp32.dll</code> on Win32) is loaded via Tango's SharedLib - * class. - */ - static void load() { - if ( m_sRefCount == 0 ) { - version ( Posix ) { - version ( OSX ) { - m_sLibrary = SharedLib.load( "libassimp.dylib" ); - } else { - m_sLibrary = SharedLib.load( "libassimp.so" ); - } - } - version ( Win32 ) { - m_sLibrary = SharedLib.load( "Assimp32.dll" ); - } - - // Versioning - mixin( bindCode( "aiGetLegalString" ) ); - mixin( bindCode( "aiGetVersionMinor" ) ); - mixin( bindCode( "aiGetVersionMajor" ) ); - mixin( bindCode( "aiGetVersionRevision" ) ); - mixin( bindCode( "aiGetCompileFlags" ) ); - - // Check for version mismatch between the external, dynamically loaded - // library and the version the bindings were created against. - uint libMajor = aiGetVersionMajor(); - uint libMinor = aiGetVersionMinor(); - - if ( ( libMajor < ASSIMP_BINDINGS_MAJOR ) || - ( libMinor < ASSIMP_BINDINGS_MINOR ) ) { - Stdout.format( - "WARNING: Assimp version too old (loaded library: {}.{}, " ~ - "bindings: {}.{})!", - libMajor, - libMinor, - ASSIMP_BINDINGS_MAJOR, - ASSIMP_BINDINGS_MINOR - ).newline; - } - - if ( libMajor > ASSIMP_BINDINGS_MAJOR ) { - Stdout.format( - "WARNING: Assimp version too new (loaded library: {}.{}, " ~ - "bindings: {}.{})!", - libMajor, - libMinor, - ASSIMP_BINDINGS_MAJOR, - ASSIMP_BINDINGS_MINOR - ).newline; - } - - // General API - mixin( bindCode( "aiImportFile" ) ); - mixin( bindCode( "aiImportFileEx" ) ); - mixin( bindCode( "aiImportFileFromMemory" ) ); - mixin( bindCode( "aiApplyPostProcessing" ) ); - mixin( bindCode( "aiGetPredefinedLogStream" ) ); - mixin( bindCode( "aiAttachLogStream" ) ); - mixin( bindCode( "aiEnableVerboseLogging" ) ); - mixin( bindCode( "aiDetachLogStream" ) ); - mixin( bindCode( "aiDetachAllLogStreams" ) ); - mixin( bindCode( "aiReleaseImport" ) ); - mixin( bindCode( "aiGetErrorString" ) ); - mixin( bindCode( "aiIsExtensionSupported" ) ); - mixin( bindCode( "aiGetExtensionList" ) ); - mixin( bindCode( "aiGetMemoryRequirements" ) ); - mixin( bindCode( "aiSetImportPropertyInteger" ) ); - mixin( bindCode( "aiSetImportPropertyFloat" ) ); - mixin( bindCode( "aiSetImportPropertyString" ) ); - - // Mathematical functions - mixin( bindCode( "aiCreateQuaternionFromMatrix" ) ); - mixin( bindCode( "aiDecomposeMatrix" ) ); - mixin( bindCode( "aiTransposeMatrix4" ) ); - mixin( bindCode( "aiTransposeMatrix3" ) ); - mixin( bindCode( "aiTransformVecByMatrix3" ) ); - mixin( bindCode( "aiTransformVecByMatrix4" ) ); - mixin( bindCode( "aiMultiplyMatrix4" ) ); - mixin( bindCode( "aiMultiplyMatrix3" ) ); - mixin( bindCode( "aiIdentityMatrix3" ) ); - mixin( bindCode( "aiIdentityMatrix4" ) ); - - // Material system - mixin( bindCode( "aiGetMaterialProperty" ) ); - mixin( bindCode( "aiGetMaterialFloatArray" ) ); - mixin( bindCode( "aiGetMaterialIntegerArray" ) ); - mixin( bindCode( "aiGetMaterialColor" ) ); - mixin( bindCode( "aiGetMaterialString" ) ); - mixin( bindCode( "aiGetMaterialTextureCount" ) ); - mixin( bindCode( "aiGetMaterialTexture" ) ); - } - ++m_sRefCount; - } - - /** - * Decreases the reference counter and unloads the library if this was the - * last reference. - */ - static void unload() { - assert( m_sRefCount > 0 ); - --m_sRefCount; - - if ( m_sRefCount == 0 ) { - m_sLibrary.unload(); - } - } - -private: - /// Current number of references to the library. - static uint m_sRefCount; - - /// Library handle. - static SharedLib m_sLibrary; -} - -/** - * Private helper function which constructs the bind command for a symbol to - * keep the code DRY. - */ -private char[] bindCode( char[] symbol ) { - return symbol ~ " = cast( typeof( " ~ symbol ~ - " ) )m_sLibrary.getSymbol( `" ~ symbol ~ "` );"; -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/material.d b/src/mesh/assimp-master/port/dAssimp/assimp/material.d deleted file mode 100644 index f0eae86..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/material.d +++ /dev/null @@ -1,641 +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 material system which stores the imported material information. - */ -module assimp.material; - -import assimp.math; -import assimp.types; - -extern ( C ) { - /** - * Default material names for meshes without UV coordinates. - */ - const char* AI_DEFAULT_MATERIAL_NAME = "aiDefaultMat"; - - /** - * Default material names for meshes with UV coordinates. - */ - const char* AI_DEFAULT_TEXTURED_MATERIAL_NAME = "TexturedDefaultMaterial"; - - /** - * Defines how the Nth texture of a specific type is combined with the - * result of all previous layers. - * - * Example (left: key, right: value): - * <pre> DiffColor0 - gray - * DiffTextureOp0 - aiTextureOpMultiply - * DiffTexture0 - tex1.png - * DiffTextureOp0 - aiTextureOpAdd - * DiffTexture1 - tex2.png</pre> - * Written as equation, the final diffuse term for a specific pixel would be: - * <pre>diffFinal = DiffColor0 * sampleTex( DiffTexture0, UV0 ) + - * sampleTex( DiffTexture1, UV0 ) * diffContrib;</pre> - * where <code>diffContrib</code> is the intensity of the incoming light for - * that pixel. - */ - enum aiTextureOp : uint { - /** - * <code>T = T1 * T2</code> - */ - Multiply = 0x0, - - /** - * <code>T = T1 + T2</code> - */ - Add = 0x1, - - /** - * <code>T = T1 - T2</code> - */ - Subtract = 0x2, - - /** - * <code>T = T1 / T2</code> - */ - Divide = 0x3, - - /** - * <code>T = ( T1 + T2 ) - ( T1 * T2 )</code> - */ - SmoothAdd = 0x4, - - /** - * <code>T = T1 + ( T2 - 0.5 )</code> - */ - SignedAdd = 0x5 - } - - /** - * Defines how UV coordinates outside the <code>[0..1]</code> range are - * handled. - * - * Commonly referred to as 'wrapping mode'. - */ - enum aiTextureMapMode : uint { - /** - * A texture coordinate <code>u | v</code> is translated to - * <code>(u%1) | (v%1)</code>. - */ - Wrap = 0x0, - - /** - * Texture coordinates are clamped to the nearest valid value. - */ - Clamp = 0x1, - - /** - * If the texture coordinates for a pixel are outside - * <code>[0..1]</code>, the texture is not applied to that pixel. - */ - Decal = 0x3, - - /** - * A texture coordinate <code>u | v</code> becomes - * <code>(u%1) | (v%1)</code> if <code>(u-(u%1))%2</code> is - * zero and <code>(1-(u%1)) | (1-(v%1))</code> otherwise. - */ - Mirror = 0x2 - } - - /** - * Defines how the mapping coords for a texture are generated. - * - * Real-time applications typically require full UV coordinates, so the use of - * the <code>aiProcess.GenUVCoords</code> step is highly recommended. It - * generates proper UV channels for non-UV mapped objects, as long as an - * accurate description how the mapping should look like (e.g spherical) is - * given. See the <code>AI_MATKEY_MAPPING</code> property for more details. - */ - enum aiTextureMapping : uint { - /** - * The mapping coordinates are taken from an UV channel. - * - * The <code>AI_MATKEY_UVSRC</code> key specifies from which (remember, - * meshes can have more than one UV channel). - */ - UV = 0x0, - - /** - * Spherical mapping. - */ - SPHERE = 0x1, - - /** - * Cylindrical mapping. - */ - CYLINDER = 0x2, - - /** - * Cubic mapping. - */ - BOX = 0x3, - - /** - * Planar mapping. - */ - PLANE = 0x4, - - /** - * Undefined mapping. - */ - OTHER = 0x5 - } - - /** - * Defines the purpose of a texture - * - * This is a very difficult topic. Different 3D packages support different - * kinds of textures. For very common texture types, such as bumpmaps, the - * rendering results depend on implementation details in the rendering - * pipelines of these applications. Assimp loads all texture references from - * the model file and tries to determine which of the predefined texture - * types below is the best choice to match the original use of the texture - * as closely as possible. - * - * In content pipelines you'll usually define how textures have to be - * handled, and the artists working on models have to conform to this - * specification, regardless which 3D tool they're using. - */ - enum aiTextureType : uint { - /** - * No texture, but the value to be used for - * <code>aiMaterialProperty.mSemantic</code> for all material properties - * <em>not</em> related to textures. - */ - NONE = 0x0, - - /** - * The texture is combined with the result of the diffuse lighting - * equation. - */ - DIFFUSE = 0x1, - - /** - * The texture is combined with the result of the specular lighting - * equation. - */ - SPECULAR = 0x2, - - /** - * The texture is combined with the result of the ambient lighting - * equation. - */ - AMBIENT = 0x3, - - /** - * The texture is added to the result of the lighting calculation. It - * isn't influenced by incoming light. - */ - EMISSIVE = 0x4, - - /** - * The texture is a height map. - * - * By convention, higher grey-scale values stand for higher elevations - * from the base height. - */ - HEIGHT = 0x5, - - /** - * The texture is a (tangent space) normal-map. - * - * Again, there are several conventions for tangent-space normal maps. - * Assimp does (intentionally) not differenciate here. - */ - NORMALS = 0x6, - - /** - * The texture defines the glossiness of the material. - * - * The glossiness is in fact the exponent of the specular (phong) - * lighting equation. Usually there is a conversion function defined to - * map the linear color values in the texture to a suitable exponent. - */ - SHININESS = 0x7, - - /** - * The texture defines per-pixel opacity. - * - * Usually white means opaque and black means transparent. - */ - OPACITY = 0x8, - - /** - * Displacement texture. - * - * The exact purpose and format is application-dependent. Higher color - * values stand for higher vertex displacements. - */ - DISPLACEMENT = 0x9, - - /** - * Lightmap or ambient occlusion texture. - * - * Both lightmaps and dedicated ambient occlusion maps are covered by - * this material property. The texture contains a scaling value for the - * final color value of a pixel. Its intensity is not affected by - * incoming light. - */ - LIGHTMAP = 0xA, - - /** - * Reflection texture. - * - * Contains the color of a perfect mirror reflection. Rarely used, almost - * never for real-time applications. - */ - REFLECTION = 0xB, - - /** - * Unknown texture. - * - * A texture reference that does not match any of the definitions above is - * considered to be 'unknown'. It is still imported, but is excluded from - * any further postprocessing. - */ - UNKNOWN = 0xC - } - - /** - * Defines all shading models supported by the library - * - * The list of shading modes has been taken from Blender. See Blender - * documentation for more information. The API does not distinguish between - * "specular" and "diffuse" shaders (thus the specular term for diffuse - * shading models like Oren-Nayar remains undefined). - * - * Again, this value is just a hint. Assimp tries to select the shader whose - * most common implementation matches the original rendering results of the - * 3D modeller which wrote a particular model as closely as possible. - */ - enum aiShadingMode : uint { - /** - * Flat shading. - * - * Shading is done on per-face base diffuse only. Also known as - * »faceted shading«. - */ - Flat = 0x1, - - /** - * Simple Gouraud shading. - */ - Gouraud = 0x2, - - /** - * Phong-Shading. - */ - Phong = 0x3, - - /** - * Phong-Blinn-Shading. - */ - Blinn = 0x4, - - /** - * Per-pixel toon shading. - * - * Often referred to as »comic shading«. - */ - Toon = 0x5, - - /** - * Per-pixel Oren-Nayar shading. - * - * Extension to standard Lambertian shading, taking the roughness of the - * material into account. - */ - OrenNayar = 0x6, - - /** - * Per-pixel Minnaert shading. - * - * Extension to standard Lambertian shading, taking the "darkness" of the - * material into account. - */ - Minnaert = 0x7, - - /** - * Per-pixel Cook-Torrance shading. - * - * Special shader for metallic surfaces. - */ - CookTorrance = 0x8, - - /** - * No shading at all. - * - * Constant light influence of 1. - */ - NoShading = 0x9, - - /** - * Fresnel shading. - */ - Fresnel = 0xa - } - - /** - * Defines some mixed flags for a particular texture. - * - * Usually you'll instruct your cg artists how textures have to look like - * and how they will be processed in your application. However, if you use - * Assimp for completely generic loading purposes you might also need to - * process these flags in order to display as many 'unknown' 3D models as - * possible correctly. - * - * This corresponds to the <code>AI_MATKEY_TEXFLAGS</code> property. - */ - enum aiTextureFlags : uint { - /** - * The texture's color values have to be inverted (i.e. <code>1-n</code> - * component-wise). - */ - Invert = 0x1, - - /** - * Explicit request to the application to process the alpha channel of the - * texture. - * - * Mutually exclusive with <code>IgnoreAlpha</code>. These flags are - * set if the library can say for sure that the alpha channel is used/is - * not used. If the model format does not define this, it is left to the - * application to decide whether the texture alpha channel – if any – is - * evaluated or not. - */ - UseAlpha = 0x2, - - /** - * Explicit request to the application to ignore the alpha channel of the - * texture. - * - * Mutually exclusive with <code>UseAlpha</code>. - */ - IgnoreAlpha = 0x4 - } - - - /** - * Defines alpha-blend flags. - * - * If you're familiar with OpenGL or D3D, these flags aren't new to you. - * They define how the final color value of a pixel is computed, based on - * the previous color at that pixel and the new color value from the - * material. - * - * The basic blending formula is - * <code>SourceColor * SourceBlend + DestColor * DestBlend</code>, - * where <code>DestColor</code> is the previous color in the framebuffer at - * this position and <code>SourceColor</code> is the material color before - * the transparency calculation. - * - * This corresponds to the <code>AI_MATKEY_BLEND_FUNC</code> property. - */ - enum aiBlendMode :uint { - /** - * Formula: - * <code>SourceColor * SourceAlpha + DestColor * (1 - SourceAlpha)</code> - */ - Default = 0x0, - - /** - * Additive blending. - * - * Formula: <code>SourceColor*1 + DestColor*1</code> - */ - Additive = 0x1 - } - - /** - * Defines how an UV channel is transformed. - * - * This is just a helper structure for the <code>AI_MATKEY_UVTRANSFORM</code> - * key. See its documentation for more details. - */ - struct aiUVTransform { - align ( 1 ) : - /** - * Translation on the u and v axes. - * - * The default value is (0|0). - */ - aiVector2D mTranslation; - - /** - * Scaling on the u and v axes. - * - * The default value is (1|1). - */ - aiVector2D mScaling; - - /** - * Rotation - in counter-clockwise direction. - * - * The rotation angle is specified in radians. The rotation center is - * 0.5|0.5. The default value is 0. - */ - float mRotation; - } - - /** - * A very primitive RTTI system to store the data type of a material - * property. - */ - enum aiPropertyTypeInfo : uint { - /** - * Array of single-precision (32 bit) floats. - * - * It is possible to use <code>aiGetMaterialInteger[Array]()</code> to - * query properties stored in floating-point format. The material system - * performs the type conversion automatically. - */ - Float = 0x1, - - /** - * aiString property. - * - * Arrays of strings aren't possible, <code>aiGetMaterialString()</code> - * must be used to query a string property. - */ - String = 0x3, - - /** - * Array of (32 bit) integers. - * - * It is possible to use <code>aiGetMaterialFloat[Array]()</code> to - * query properties stored in integer format. The material system - * performs the type conversion automatically. - */ - Integer = 0x4, - - /** - * Simple binary buffer, content undefined. Not convertible to anything. - */ - Buffer = 0x5 - } - - /** - * Data structure for a single material property. - * - * As an user, you'll probably never need to deal with this data structure. - * Just use the provided <code>aiGetMaterialXXX()</code> functions to query - * material properties easily. Processing them manually is faster, but it is - * not the recommended way. It isn't worth the effort. - * - * Material property names follow a simple scheme: - * - * <code>$[name]</code>: A public property, there must be a corresponding - * AI_MATKEY_XXX constant. - * - * <code>?[name]</code>: Also public, but ignored by the - * <code>aiProcess.RemoveRedundantMaterials</code> post-processing step. - * - * <code>~[name]</code>: A temporary property for internal use. - */ - struct aiMaterialProperty { - /** - * Specifies the name of the property (key). - * - * Keys are generally case insensitive. - */ - aiString mKey; - - /** - * For texture properties, this specifies the exact usage semantic. - * - * For non-texture properties, this member is always 0 (or rather - * <code>aiTextureType.NONE</code>). - */ - uint mSemantic; - - /** - * For texture properties, this specifies the index of the texture. - * - * For non-texture properties, this member is always 0. - */ - uint mIndex; - - /** - * Size of the buffer <code>mData</code> is pointing to (in bytes). - * - * This value may not be 0. - */ - uint mDataLength; - - /** - * Type information for the property. - * - * Defines the data layout inside the data buffer. This is used by the - * library internally to perform debug checks and to utilize proper type - * conversions. - */ - aiPropertyTypeInfo mType; - - /** - * Binary buffer to hold the property's value. - * - * The size of the buffer is always <code>mDataLength</code>. - */ - char* mData; - } - - /** - * Data structure for a material - * - * Material data is stored using a key-value structure. A single key-value - * pair is called a <em>material property</em>. The properties can be - * queried using the <code>aiMaterialGetXXX</code> family of functions. The - * library defines a set of standard keys (AI_MATKEY_XXX). - */ - struct aiMaterial { - /** - * List of all material properties loaded. - */ - aiMaterialProperty** mProperties; - - /** - * Number of properties loaded. - */ - uint mNumProperties; - uint mNumAllocated; /// ditto - } - - /** - * Standard material property keys. Always pass 0 for texture type and index - * when querying these keys. - */ - const char* AI_MATKEY_NAME = "?mat.name"; - const char* AI_MATKEY_TWOSIDED = "$mat.twosided"; /// ditto - const char* AI_MATKEY_SHADING_MODEL = "$mat.shadingm"; /// ditto - const char* AI_MATKEY_ENABLE_WIREFRAME = "$mat.wireframe"; /// ditto - const char* AI_MATKEY_BLEND_FUNC = "$mat.blend"; /// ditto - const char* AI_MATKEY_OPACITY = "$mat.opacity"; /// ditto - const char* AI_MATKEY_BUMPSCALING = "$mat.bumpscaling"; /// ditto - const char* AI_MATKEY_SHININESS = "$mat.shininess"; /// ditto - const char* AI_MATKEY_REFLECTIVITY = "$mat.reflectivity"; /// ditto - const char* AI_MATKEY_SHININESS_STRENGTH = "$mat.shinpercent"; /// ditto - const char* AI_MATKEY_REFRACTI = "$mat.refracti"; /// ditto - const char* AI_MATKEY_COLOR_DIFFUSE = "$clr.diffuse"; /// ditto - const char* AI_MATKEY_COLOR_AMBIENT = "$clr.ambient"; /// ditto - const char* AI_MATKEY_COLOR_SPECULAR = "$clr.specular"; /// ditto - const char* AI_MATKEY_COLOR_EMISSIVE = "$clr.emissive"; /// ditto - const char* AI_MATKEY_COLOR_TRANSPARENT = "$clr.transparent"; /// ditto - const char* AI_MATKEY_COLOR_REFLECTIVE = "$clr.reflective"; /// ditto - const char* AI_MATKEY_GLOBAL_BACKGROUND_IMAGE = "?bg.global"; /// ditto - - /** - * Texture material property keys. Do not forget to specify texture type and - * index for these keys. - */ - const char* AI_MATKEY_TEXTURE = "$tex.file"; - const char* AI_MATKEY_UVWSRC = "$tex.uvwsrc"; /// ditto - const char* AI_MATKEY_TEXOP = "$tex.op"; /// ditto - const char* AI_MATKEY_MAPPING = "$tex.mapping"; /// ditto - const char* AI_MATKEY_TEXBLEND = "$tex.blend"; /// ditto - const char* AI_MATKEY_MAPPINGMODE_U = "$tex.mapmodeu"; /// ditto - const char* AI_MATKEY_MAPPINGMODE_V = "$tex.mapmodev"; /// ditto - const char* AI_MATKEY_TEXMAP_AXIS = "$tex.mapaxis"; /// ditto - const char* AI_MATKEY_UVTRANSFORM = "$tex.uvtrafo"; /// ditto - const char* AI_MATKEY_TEXFLAGS = "$tex.flags"; /// ditto -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/math.d b/src/mesh/assimp-master/port/dAssimp/assimp/math.d deleted file mode 100644 index 057bbd5..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/math.d +++ /dev/null @@ -1,155 +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. ---------------------------------------------------------------------------- -*/ - -/** - * Mathematical structures in which the imported data is stored. - */ -module assimp.math; - -extern( C ) { - /** - * Represents a two-dimensional vector. - */ - struct aiVector2D { - align ( 1 ): - float x, y; - } - - /** - * Represents a three-dimensional vector. - */ - struct aiVector3D { - align ( 1 ): - float x, y, z; - } - - /** - * Represents a quaternion. - */ - struct aiQuaternion { - float w, x, y, z; - } - - /** - * Represents a row-major 3x3 matrix - * - * There is much confusion about matrix layouts (column vs. row order). This - * is <em>always</em> a row-major matrix, even when using the - * <code>ConvertToLeftHanded</code> post processing step. - */ - struct aiMatrix3x3 { - float a1, a2, a3; - float b1, b2, b3; - float c1, c2, c3; - } - - /** - * Represents a row-major 3x3 matrix - * - * There is much confusion about matrix layouts (column vs. row order). This - * is <em>always</em> a row-major matrix, even when using the - * <code>ConvertToLeftHanded</code> post processing step. - */ - struct aiMatrix4x4 { - align ( 1 ): - float a1, a2, a3, a4; - float b1, b2, b3, b4; - float c1, c2, c3, c4; - float d1, d2, d3, d4; - } - - /** - * Represents a plane in a three-dimensional, euclidean space - */ - struct aiPlane { - align ( 1 ): - /** - * Coefficients of the plane equation (<code>ax + by + cz = d</code>). - */ - float a; - float b; /// ditto - float c; /// ditto - float d; /// ditto - } - - /** - * Represents a ray. - */ - struct aiRay { - align ( 1 ): - /** - * Origin of the ray. - */ - aiVector3D pos; - - /** - * Direction of the ray. - */ - aiVector3D dir; - } - - /** - * Represents a color in RGB space. - */ - struct aiColor3D { - align ( 1 ): - /** - * Red, green and blue values. - */ - float r; - float g; /// ditto - float b; /// ditto - } - - /** - * Represents a color in RGB space including an alpha component. - */ - struct aiColor4D { - align ( 1 ): - /** - * Red, green, blue and alpha values. - */ - float r; - float g; /// ditto - float b; /// ditto - float a; /// ditto - } -} 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; - } -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/postprocess.d b/src/mesh/assimp-master/port/dAssimp/assimp/postprocess.d deleted file mode 100644 index 343bb36..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/postprocess.d +++ /dev/null @@ -1,597 +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. ---------------------------------------------------------------------------- -*/ - -/** - * Definitions for import post processing steps. - */ -module assimp.postprocess; - -extern ( C ) { - /** - * Defines the flags for all possible post processing steps. - * - * See: <code>aiImportFile</code>, <code>aiImportFileEx</code> - */ - enum aiPostProcessSteps { - /** - * Calculates the tangents and bitangents for the imported meshes. - * - * Does nothing if a mesh does not have normals. You might want this post - * processing step to be executed if you plan to use tangent space - * calculations such as normal mapping applied to the meshes. There is a - * config setting, <code>AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE</code>, - * which allows you to specify a maximum smoothing angle for the - * algorithm. However, usually you will want to use the default value. - */ - CalcTangentSpace = 0x1, - - /** - * Identifies and joins identical vertex data sets within all imported - * meshes. - * - * After this step is run each mesh does contain only unique vertices - * anymore, so a vertex is possibly used by multiple faces. You usually - * want to use this post processing step. If your application deals with - * indexed geometry, this step is compulsory or you will just waste - * rendering time. <em>If this flag is not specified</em>, no vertices - * are referenced by more than one face and <em>no index buffer is - * required</em> for rendering. - */ - JoinIdenticalVertices = 0x2, - - /** - * Converts all the imported data to a left-handed coordinate space. - * - * By default the data is returned in a right-handed coordinate space - * which for example OpenGL prefers. In this space, +X points to the - * right, +Z points towards the viewer and and +Y points upwards. In the - * DirectX coordinate space +X points to the right, +Y points upwards and - * +Z points away from the viewer. - * - * You will probably want to consider this flag if you use Direct3D for - * rendering. The <code>ConvertToLeftHanded</code> flag supersedes this - * setting and bundles all conversions typically required for D3D-based - * applications. - */ - MakeLeftHanded = 0x4, - - /** - * Triangulates all faces of all meshes. - * - * By default the imported mesh data might contain faces with more than 3 - * indices. For rendering you'll usually want all faces to be triangles. - * This post processing step splits up all higher faces to triangles. - * Line and point primitives are <em>not</em> modified!. - * - * If you want »triangles only« with no other kinds of primitives, - * specify both <code>Triangulate</code> and <code>SortByPType</code> and - * ignore all point and line meshes when you process Assimp's output. - */ - Triangulate = 0x8, - - /** - * Removes some parts of the data structure (animations, materials, light - * sources, cameras, textures, vertex components). - * - * The components to be removed are specified in a separate configuration - * option, <code>AI_CONFIG_PP_RVC_FLAGS</code>. This is quite useful if - * you don't need all parts of the output structure. Especially vertex - * colors are rarely used today. - * - * Calling this step to remove unrequired stuff from the pipeline as - * early as possible results in an increased performance and a better - * optimized output data structure. - * - * This step is also useful if you want to force Assimp to recompute - * normals or tangents since the corresponding steps don't recompute them - * if they have already been loaded from the source asset. - * - * This flag is a poor one, mainly because its purpose is usually - * misunderstood. Consider the following case: a 3d model has been exported - * from a CAD app, it has per-face vertex colors. Because of the vertex - * colors (which are not even used by most apps), - * <code>JoinIdenticalVertices</code> cannot join vertices at the same - * position. By using this step, unneeded components are excluded as - * early as possible thus opening more room for internal optimzations. - */ - RemoveComponent = 0x10, - - /** - * Generates normals for all faces of all meshes. - * - * This is ignored if normals are already there at the time where this - * flag is evaluated. Model importers try to load them from the source - * file, so they are usually already there. Face normals are shared - * between all points of a single face, so a single point can have - * multiple normals, which, in other words, enforces the library to - * duplicate vertices in some cases. <code>JoinIdenticalVertices</code> - * is <em>useless</em> then. - * - * This flag may not be specified together with - * <code>GenSmoothNormals</code>. - */ - GenNormals = 0x20, - - /** - * Generates smooth normals for all vertices in the mesh. - * - * This is ignored if normals are already there at the time where this - * flag is evaluated. Model importers try to load them from the source file, so - * they are usually already there. - * - * There is a configuration option, - * <code>AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE</code> which allows you to - * specify an angle maximum for the normal smoothing algorithm. Normals - * exceeding this limit are not smoothed, resulting in a »hard« seam - * between two faces. Using a decent angle here (e.g. 80°) results in - * very good visual appearance. - */ - GenSmoothNormals = 0x40, - - /** - * Splits large meshes into smaller submeshes. - * - * This is quite useful for realtime rendering where the number of triangles - * which can be maximally processed in a single draw-call is usually limited - * by the video driver/hardware. The maximum vertex buffer is usually limited, - * too. Both requirements can be met with this step: you may specify both a - * triangle and vertex limit for a single mesh. - * - * The split limits can (and should!) be set through the - * <code>AI_CONFIG_PP_SLM_VERTEX_LIMIT</code> and - * <code>AI_CONFIG_PP_SLM_TRIANGLE_LIMIT</code> settings. The default - * values are <code>AI_SLM_DEFAULT_MAX_VERTICES</code> and - * <code>AI_SLM_DEFAULT_MAX_TRIANGLES</code>. - * - * Note that splitting is generally a time-consuming task, but not if - * there's nothing to split. The use of this step is recommended for most - * users. - */ - SplitLargeMeshes = 0x80, - - /** - * Removes the node graph and pre-transforms all vertices with the local - * transformation matrices of their nodes. - * - * The output scene does still contain nodes, however, there is only a - * root node with children, each one referencing only one mesh, each - * mesh referencing one material. For rendering, you can simply render - * all meshes in order, you don't need to pay attention to local - * transformations and the node hierarchy. Animations are removed during - * this step. - * - * This step is intended for applications that have no scenegraph. - * - * The step <em>can</em> cause some problems: if e.g. a mesh of the asset - * contains normals and another, using the same material index, does not, - * they will be brought together, but the first meshes's part of the - * normal list is zeroed. However, these artifacts are rare. - * - * Note: The <code>AI_CONFIG_PP_PTV_NORMALIZE</code> configuration - * property can be set to normalize the scene's spatial dimension - * to the -1...1 range. - */ - PreTransformVertices = 0x100, - - /** - * Limits the number of bones simultaneously affecting a single vertex to - * a maximum value. - * - * If any vertex is affected by more than that number of bones, the least - * important vertex weights are removed and the remaining vertex weights - * are renormalized so that the weights still sum up to 1. - * - * The default bone weight limit is 4 (<code>AI_LMW_MAX_WEIGHTS</code>), - * but you can use the <code>#AI_CONFIG_PP_LBW_MAX_WEIGHTS</code> setting - * to supply your own limit to the post processing step. - * - * If you intend to perform the skinning in hardware, this post processing - * step might be of interest for you. - */ - LimitBoneWeights = 0x200, - - /** - * Validates the imported scene data structure. - * - * This makes sure that all indices are valid, all animations and - * bones are linked correctly, all material references are correct, etc. - * - * It is recommended to capture Assimp's log output if you use this flag, - * so you can easily find ot what's actually wrong if a file fails the - * validation. The validator is quite rude and will find <em>all</em> - * inconsistencies in the data structure. - * - * Plugin developers are recommended to use it to debug their loaders. - * - * There are two types of validation failures: - * <ul> - * <li>Error: There's something wrong with the imported data. Further - * postprocessing is not possible and the data is not usable at all. - * The import fails, see <code>aiGetErrorString()</code> for the - * error message.</li> - * <li>Warning: There are some minor issues (e.g. 1000000 animation - * keyframes with the same time), but further postprocessing and use - * of the data structure is still safe. Warning details are written - * to the log file, <code>AI_SCENE_FLAGS_VALIDATION_WARNING</code> is - * set in <code>aiScene::mFlags</code></li> - * </ul> - * - * This post-processing step is not time-consuming. It's use is not - * compulsory, but recommended. - */ - ValidateDataStructure = 0x400, - - /** - * Reorders triangles for better vertex cache locality. - * - * The step tries to improve the ACMR (average post-transform vertex cache - * miss ratio) for all meshes. The implementation runs in O(n) and is - * roughly based on the 'tipsify' algorithm (see - * <tt>http://www.cs.princeton.edu/gfx/pubs/Sander_2007_%3ETR/tipsy.pdf</tt>). - * - * If you intend to render huge models in hardware, this step might - * be of interest for you. The <code>AI_CONFIG_PP_ICL_PTCACHE_SIZE</code> - * config setting can be used to fine-tune the cache optimization. - */ - ImproveCacheLocality = 0x800, - - /** - * Searches for redundant/unreferenced materials and removes them. - * - * This is especially useful in combination with the - * <code>PretransformVertices</code> and <code>OptimizeMeshes</code> - * flags. Both join small meshes with equal characteristics, but they - * can't do their work if two meshes have different materials. Because - * several material settings are always lost during Assimp's import - * filters, (and because many exporters don't check for redundant - * materials), huge models often have materials which are are defined - * several times with exactly the same settings. - * - * Several material settings not contributing to the final appearance of - * a surface are ignored in all comparisons; the material name is one of - * them. So, if you are passing additional information through the - * content pipeline (probably using »magic« material names), don't - * specify this flag. Alternatively take a look at the - * <code>AI_CONFIG_PP_RRM_EXCLUDE_LIST</code> setting. - */ - RemoveRedundantMaterials = 0x1000, - - /** - * This step tries to determine which meshes have normal vectors that are - * acing inwards. - * - * The algorithm is simple but effective: The bounding box of all - * vertices and their normals is compared against the volume of the - * bounding box of all vertices without their normals. This works well - * for most objects, problems might occur with planar surfaces. However, - * the step tries to filter such cases. - * - * The step inverts all in-facing normals. Generally it is recommended to - * enable this step, although the result is not always correct. - */ - FixInfacingNormals = 0x2000, - - /** - * This step splits meshes with more than one primitive type in - * homogeneous submeshes. - * - * The step is executed after the triangulation step. After the step - * returns, just one bit is set in <code>aiMesh.mPrimitiveTypes</code>. - * This is especially useful for real-time rendering where point and line - * primitives are often ignored or rendered separately. - * - * You can use the <code>AI_CONFIG_PP_SBP_REMOVE</code> option to - * specify which primitive types you need. This can be used to easily - * exclude lines and points, which are rarely used, from the import. - */ - SortByPType = 0x8000, - - /** - * This step searches all meshes for degenerated primitives and converts - * them to proper lines or points. - * - * A face is »degenerated« if one or more of its points are identical. - * To have the degenerated stuff not only detected and collapsed but also - * removed, try one of the following procedures: - * - * <b>1.</b> (if you support lines and points for rendering but don't - * want the degenerates) - * <ul> - * <li>Specify the <code>FindDegenerates</code> flag.</li> - * <li>Set the <code>AI_CONFIG_PP_FD_REMOVE</code> option to 1. This will - * cause the step to remove degenerated triangles from the import - * as soon as they're detected. They won't pass any further - * pipeline steps.</li> - * </ul> - * - * <b>2.</b>(if you don't support lines and points at all ...) - * <ul> - * <li>Specify the <code>FindDegenerates</code> flag.</li> - * <li>Specify the <code>SortByPType</code> flag. This moves line and - * point primitives to separate meshes.</li> - * <li>Set the <code>AI_CONFIG_PP_SBP_REMOVE</codet> option to - * <code>aiPrimitiveType_POINTS | aiPrimitiveType_LINES</code> - * to cause SortByPType to reject point and line meshes from the - * scene.</li> - * </ul> - * - * Note: Degenerated polygons are not necessarily bad and that's why - * they're not removed by default. There are several file formats - * which don't support lines or points. Some exporters bypass the - * format specification and write them as degenerated triangle - * instead. - */ - FindDegenerates = 0x10000, - - /** - * This step searches all meshes for invalid data, such as zeroed normal - * vectors or invalid UV coords and removes/fixes them. This is intended - * to get rid of some common exporter errors. - * - * This is especially useful for normals. If they are invalid, and the - * step recognizes this, they will be removed and can later be - * recomputed, e.g. by the <code>GenSmoothNormals</code> step. - * - * The step will also remove meshes that are infinitely small and reduce - * animation tracks consisting of hundreds if redundant keys to a single - * key. The <code>AI_CONFIG_PP_FID_ANIM_ACCURACY</code> config property - * decides the accuracy of the check for duplicate animation tracks. - */ - FindInvalidData = 0x20000, - - /** - * This step converts non-UV mappings (such as spherical or cylindrical - * mapping) to proper texture coordinate channels. - * - * Most applications will support UV mapping only, so you will probably - * want to specify this step in every case. Note tha Assimp is not always - * able to match the original mapping implementation of the 3d app which - * produced a model perfectly. It's always better to let the father app - * compute the UV channels, at least 3ds max, maja, blender, lightwave, - * modo, ... are able to achieve this. - * - * Note: If this step is not requested, you'll need to process the - * <code>AI_MATKEY_MAPPING</code> material property in order to - * display all assets properly. - */ - GenUVCoords = 0x40000, - - /** - * This step applies per-texture UV transformations and bakes them to - * stand-alone vtexture coordinate channelss. - * - * UV transformations are specified per-texture – see the - * <code>AI_MATKEY_UVTRANSFORM</code> material key for more information. - * This step processes all textures with transformed input UV coordinates - * and generates new (pretransformed) UV channel which replace the old - * channel. Most applications won't support UV transformations, so you - * will probably want to specify this step. - * - * Note: UV transformations are usually implemented in realtime apps by - * transforming texture coordinates at vertex shader stage with a 3x3 - * (homogenous) transformation matrix. - */ - TransformUVCoords = 0x80000, - - /** - * This step searches for duplicate meshes and replaces duplicates with - * references to the first mesh. - * - * This step takes a while, don't use it if you have no time. Its main - * purpose is to workaround the limitation that many export file formats - * don't support instanced meshes, so exporters need to duplicate meshes. - * This step removes the duplicates again. Please note that Assimp does - * currently not support per-node material assignment to meshes, which - * means that identical meshes with differnent materials are currently - * <em>not</em> joined, although this is planned for future versions. - */ - FindInstances = 0x100000, - - /** - * A postprocessing step to reduce the number of meshes. - * - * In fact, it will reduce the number of drawcalls. - * - * This is a very effective optimization and is recommended to be used - * together with <code>OptimizeGraph</code>, if possible. The flag is - * fully compatible with both <code>SplitLargeMeshes</code> and - * <code>SortByPType</code>. - */ - OptimizeMeshes = 0x200000, - - /** - * A postprocessing step to optimize the scene hierarchy. - * - * Nodes with no animations, bones, lights or cameras assigned are - * collapsed and joined. - * - * Node names can be lost during this step. If you use special tag nodes - * to pass additional information through your content pipeline, use the - * <code>AI_CONFIG_PP_OG_EXCLUDE_LIST</code> setting to specify a list of - * node names you want to be kept. Nodes matching one of the names in - * this list won't be touched or modified. - * - * Use this flag with caution. Most simple files will be collapsed to a - * single node, complex hierarchies are usually completely lost. That's - * note the right choice for editor environments, but probably a very - * effective optimization if you just want to get the model data, convert - * it to your own format and render it as fast as possible. - * - * This flag is designed to be used with <code>OptimizeMeshes</code> for - * best results. - * - * Note: »Crappy« scenes with thousands of extremely small meshes packed - * in deeply nested nodes exist for almost all file formats. - * <code>OptimizeMeshes</code> in combination with - * <code>OptimizeGraph</code> usually fixes them all and makes them - * renderable. - */ - OptimizeGraph = 0x400000, - - /** This step flips all UV coordinates along the y-axis and adjusts - * material settings and bitangents accordingly. - * - * Output UV coordinate system: - * <pre> 0y|0y ---------- 1x|0y - * | | - * | | - * | | - * 0x|1y ---------- 1x|1y</pre> - * You'll probably want to consider this flag if you use Direct3D for - * rendering. The <code>AI_PROCESS_CONVERT_TO_LEFT_HANDED</code> flag - * supersedes this setting and bundles all conversions typically required - * for D3D-based applications. - */ - FlipUVs = 0x800000, - - /** - * This step adjusts the output face winding order to be clockwise. - * - * The default face winding order is counter clockwise. - * - * Output face order: - * <pre> x2 - * - * x0 - * x1</pre> - */ - FlipWindingOrder = 0x1000000 - } - - /** - * Abbrevation for convenience. - */ - alias aiPostProcessSteps aiProcess; - - /** - * Shortcut flag for Direct3D-based applications. - * - * Combines the <code>MakeLeftHanded</code>, <code>FlipUVs</code> and - * <code>FlipWindingOrder</code> flags. The output data matches Direct3D's - * conventions: left-handed geometry, upper-left origin for UV coordinates - * and clockwise face order, suitable for CCW culling. - */ - const aiPostProcessSteps AI_PROCESS_CONVERT_TO_LEFT_HANDED = - aiProcess.MakeLeftHanded | - aiProcess.FlipUVs | - aiProcess.FlipWindingOrder; - - /** - * Default postprocess configuration optimizing the data for real-time rendering. - * - * Applications would want to use this preset to load models on end-user - * PCs, maybe for direct use in game. - * - * If you're using DirectX, don't forget to combine this value with - * the <code>ConvertToLeftHanded</code> step. If you don't support UV - * transformations in your application, apply the - * <code>TransformUVCoords</code> step, too. - * - * Note: Please take the time to read the doc for the steps enabled by this - * preset. Some of them offer further configurable properties, some of - * them might not be of use for you so it might be better to not specify - * them. - */ - const aiPostProcessSteps AI_PROCESS_PRESET_TARGET_REALTIME_FAST = - aiProcess.CalcTangentSpace | - aiProcess.GenNormals | - aiProcess.JoinIdenticalVertices | - aiProcess.Triangulate | - aiProcess.GenUVCoords | - aiProcess.SortByPType; - - /** - * Default postprocess configuration optimizing the data for real-time - * rendering. - * - * Unlike <code>AI_PROCESS_PRESET_TARGET_REALTIME_FAST</code>, this - * configuration performs some extra optimizations to improve rendering - * speed and to minimize memory usage. It could be a good choice for a - * level editor environment where import speed is not so important. - * - * If you're using DirectX, don't forget to combine this value with - * the <code>ConvertToLeftHanded</code> step. If you don't support UV - * transformations in your application, apply the - * <code>TransformUVCoords</code> step, too. - * - * Note: Please take the time to read the doc for the steps enabled by this - * preset. Some of them offer further configurable properties, some of - * them might not be of use for you so it might be better to not specify - * them. - */ - const aiPostProcessSteps AI_PROCESS_PRESET_TARGET_REALTIME_QUALITY = - aiProcess.CalcTangentSpace | - aiProcess.GenSmoothNormals | - aiProcess.JoinIdenticalVertices | - aiProcess.ImproveCacheLocality | - aiProcess.LimitBoneWeights | - aiProcess.RemoveRedundantMaterials | - aiProcess.SplitLargeMeshes | - aiProcess.Triangulate | - aiProcess.GenUVCoords | - aiProcess.SortByPType | - aiProcess.FindDegenerates | - aiProcess.FindInvalidData; - - /** - * Default postprocess configuration optimizing the data for real-time - * rendering. - * - * This preset enables almost every optimization step to achieve perfectly - * optimized data. It's your choice for level editor environments where - * import speed is not important. - * - * If you're using DirectX, don't forget to combine this value with - * the <code>ConvertToLeftHanded</code> step. If you don't support UV - * transformations in your application, apply the - * <code>TransformUVCoords</code> step, too. - * - * Note: Please take the time to read the doc for the steps enabled by this - * preset. Some of them offer further configurable properties, some of - * them might not be of use for you so it might be better to not specify - * them. - */ - const aiPostProcessSteps AI_PROCESS_PRESET_TARGET_REALTIME_MAX_QUALITY = - AI_PROCESS_PRESET_TARGET_REALTIME_QUALITY | - aiProcess.FindInstances | - aiProcess.ValidateDataStructure | - aiProcess.OptimizeMeshes; -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/scene.d b/src/mesh/assimp-master/port/dAssimp/assimp/scene.d deleted file mode 100644 index deee75a..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/scene.d +++ /dev/null @@ -1,306 +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 which store the hierarchy fo the imported data. - */ -module assimp.scene; - -import assimp.animation; -import assimp.camera; -import assimp.light; -import assimp.math; -import assimp.mesh; -import assimp.material; -import assimp.texture; -import assimp.types; - -extern ( C ) { - /** - * A node in the imported hierarchy. - * - * Each node has name, a parent node (except for the root node), a - * transformation relative to its parent and possibly several child nodes. - * Simple file formats don't support hierarchical structures, for these - * formats the imported scene does consist of only a single root node with - * no childs. - */ - struct aiNode { - /** - * The name of the node. - * - * The name might be empty (length of zero) but all nodes which need to - * be accessed afterwards by bones or animations are usually named. - * Multiple nodes may have the same name, but nodes which are accessed - * by bones (see <code>aiBone</code> and <code>aiMesh.mBones</code>) - * <em>must</em> be unique. - * - * Cameras and lights are assigned to a specific node name – if there are - * multiple nodes with this name, they are assigned to each of them. - * - * There are no limitations regarding the characters contained in this - * string. You should be able to handle stuff like whitespace, tabs, - * linefeeds, quotation marks, ampersands, … - */ - aiString mName; - - /** - * The transformation relative to the node's parent. - */ - aiMatrix4x4 mTransformation; - - /** - * Parent node. - * - * null if this node is the root node. - */ - aiNode* mParent; - - /** - * The number of child nodes of this node. - */ - uint mNumChildren; - - /** - * The child nodes of this node. - * - * null if <code>mNumChildren</code> is 0. - */ - aiNode** mChildren; - - /** - * The number of meshes of this node. - */ - int mNumMeshes; - - /** - * The meshes of this node. - * - * Each entry is an index for <code>aiScene.mMeshes</code>. - */ - uint* mMeshes; - } - - /** - * Flags which are combinated in <code>aiScene.mFlags</code> to store - * auxiliary information about the imported scene. - */ - enum aiSceneFlags : uint { - /** - * Specifies that the scene data structure that was imported is not - * complete. - * - * This flag bypasses some internal validations and allows the import of - * animation skeletons, material libraries or camera animation paths - * using Assimp. Most applications won't support such data. - */ - INCOMPLETE = 0x1, - - /** - * This flag is set by the validation post-processing step - * (<code>aiProcess.ValidateDS</code>) if the validation was successful. - * - * In a validated scene you can be sure that any cross references in the - * data structure (e.g. vertex indices) are valid. - */ - VALIDATED = 0x2, - - /** - * This flag is set by the validation post-processing step - * (<code>aiProcess.ValidateDS</code>) if the validation is successful - * but some issues have been found. - * - * This can for example mean that a texture that does not exist is - * referenced by a material or that the bone weights for a vertex don't - * sum to 1. In most cases you should still be able to use the import. - * - * This flag could be useful for applications which don't capture - * Assimp's log output. - */ - VALIDATION_WARNING = 0x4, - - /** - * This flag is currently only set by the - * <code>aiProcess.JoinIdenticalVertices</code> post-processing step. It - * indicates that the vertices of the output meshes aren't in the - * internal verbose format anymore. In the verbose format all vertices - * are unique, no vertex is ever referenced by more than one face. - */ - NON_VERBOSE_FORMAT = 0x8, - - /** - * Denotes pure height-map terrain data. Pure terrains usually consist of - * quads, sometimes triangles, in a regular grid. The x,y coordinates of - * all vertex positions refer to the x,y coordinates on the terrain - * height map, the z-axis stores the elevation at a specific point. - * - * TER (Terragen) and HMP (3D Game Studio) are height map formats. - * - * Note: Assimp is probably not the best choice for loading <em>huge</em> - * terrains – fully triangulated data takes extremely much storage - * space and should be avoided as long as possible (typically you will - * perform the triangulation when you actually need to render it). - */ - FLAGS_TERRAIN = 0x10 - } - - /** - * The root structure of the imported data. - * - * Everything that was imported from the given file can be accessed from here. - * Objects of this class are generally maintained and owned by Assimp, not - * by the caller. You shouldn't want to instance it, nor should you ever try to - * delete a given scene on your own. - */ - struct aiScene { - /** - * Any combination of the <code>aiSceneFlags</code>. By default, this - * value is 0, no flags are set. - * - * Most applications will want to reject all scenes with the - * <code>aiSceneFlags.INCOMPLETE</code> bit set. - */ - uint mFlags; - - /** - * The root node of the hierarchy. - * - * There will always be at least the root node if the import was - * successful (and no special flags have been set). Presence of further - * nodes depends on the format and contents of the imported file. - */ - aiNode* mRootNode; - - /** - * The number of meshes in the scene. - */ - uint mNumMeshes; - - /** - * The array of meshes. - * - * Use the indices given in the <code>aiNode</code> structure to access - * this array. The array is <code>mNumMeshes</code> in size. - * - * If the <code>aiSceneFlags.INCOMPLETE</code> flag is not set, there - * will always be at least one mesh. - */ - aiMesh** mMeshes; - - /** - * The number of materials in the scene. - */ - uint mNumMaterials; - - /** - * The array of meshes. - * - * Use the indices given in the <code>aiMesh</code> structure to access - * this array. The array is <code>mNumMaterials</code> in size. - * - * If the <code>aiSceneFlags.INCOMPLETE</code> flag is not set, there - * will always be at least one material. - */ - aiMaterial** mMaterials; - - /** - * The number of animations in the scene. - */ - uint mNumAnimations; - - /** - * The array of animations. - * - * All animations imported from the given file are listed here. The array - * is <code>mNumAnimations</code> in size. - */ - aiAnimation** mAnimations; - - /** - * The number of textures embedded into the file. - */ - uint mNumTextures; - - /** - * The array of embedded textures. - * - * Not many file formats embed their textures into the file. An example - * is Quake's <code>MDL</code> format (which is also used by some - * GameStudio versions). - */ - aiTexture** mTextures; - - /** - * The number of light sources in the scene. - * - * Light sources are fully optional, in most cases this attribute will be - * 0. - */ - uint mNumLights; - - /** - * The array of light sources. - * - * All light sources imported from the given file are listed here. The - * array is <code>mNumLights</code> in size. - */ - aiLight** mLights; - - /** - * The number of cameras in the scene. - * - * Cameras are fully optional, in most cases this attribute - * will be 0. - */ - uint mNumCameras; - - /** - * The array of cameras. - * - * All cameras imported from the given file are listed here. The array is - * <code>mNumCameras</code> in size. - * - * The first camera in the array (if existing) is the default camera view - * at the scene. - */ - aiCamera** mCameras; - } -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/texture.d b/src/mesh/assimp-master/port/dAssimp/assimp/texture.d deleted file mode 100644 index 83453b9..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/texture.d +++ /dev/null @@ -1,122 +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 helper structures to handle textures in Assimp. - * - * Used for file formats which embed their textures into the model file. - * Supported are both normal textures, which are stored as uncompressed pixels, - * and "compressed" textures, which are stored in a file format such as PNG or - * TGA. - */ -module assimp.texture; - -extern ( C ) { - /** - * Helper structure to represent a texel in a ARGB8888 format. - * - * Used by aiTexture. - */ - struct aiTexel { - align ( 1 ): - ubyte b, g, r, a; - } - - /** - * Helper structure to describe an embedded texture. - * - * Usually textures are contained in external files but some file formats - * embed them directly in the model file. There are two types of - * embedded textures: - * - * <em>1. Uncompressed textures</em>: The color data is given in an - * uncompressed format. - * - * <em>2. Compressed textures</em> stored in a file format like PNG or JPEG. - * The raw file bytes are given so the application must utilize an image - * decoder (e.g. DevIL) to get access to the actual color data. - */ - struct aiTexture { - /** - * Width of the texture, in pixels. - * - * If <code>mHeight</code> is zero the texture is compressed in a format - * like JPEG. In this case, this value specifies the size of the memory - * area <code>pcData</code> is pointing to, in bytes. - */ - uint mWidth; - - /** - * Height of the texture, in pixels. - * - * If this value is zero, <code>pcData</code> points to an compressed - * texture in any format (e.g. JPEG). - */ - uint mHeight; - - /** - * A hint from the loader to make it easier for applications to determine - * the type of embedded compressed textures. - * - * If <code>mHeight</code> is not 0, this member is undefined. Otherwise - * it is set set to '\0\0\0\0' if the loader has no additional - * information about the texture file format used, or the file extension - * of the format without a trailing dot. If there are multiple file - * extensions for a format, the shortest extension is chosen (JPEG maps - * to 'jpg', not to 'jpeg'). E.g. 'dds\0', 'pcx\0', 'jpg\0'. All - * characters are lower-case. The fourth byte will always be '\0'. - */ - char achFormatHint[4]; - - /** - * Data of the texture. - * - * Points to an array of <code>mWidth * mHeight</code> - * <code>aiTexel</code>s. The format of the texture data is always - * ARGB8888 to make the implementation for user of the library as easy as - * possible. - * - * If <code>mHeight</code> is 0, this is a pointer to a memory buffer of - * size <code>mWidth</code> containing the compressed texture data. - */ - aiTexel* pcData; - } -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/types.d b/src/mesh/assimp-master/port/dAssimp/assimp/types.d deleted file mode 100644 index 5aa4d54..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/types.d +++ /dev/null @@ -1,249 +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 miscellaneous types used in Assimp's C API. - */ -module assimp.types; - -extern ( C ) { - /** - * Our own C boolean type. - */ - enum aiBool : int { - FALSE = 0, - TRUE = 1 - } - - /** - * Type definition for log stream callback function pointers. - */ - alias void function( char* message, char* user ) aiLogStreamCallback; - - /** - * Represents a log stream. A log stream receives all log messages and - * streams them somewhere. - * - * See: <code>aiGetPredefinedLogStream</code>, - * <code>aiAttachLogStream</code> and <code>aiDetachLogStream</code>. - */ - struct aiLogStream { - /** - * Callback function to be called when a new message arrives. - */ - aiLogStreamCallback callback; - - /** - * User data to be passed to the callback. - */ - char* user; - } - - /** - * Maximum dimension for <code>aiString</code>s. - * - * Assimp strings are zero terminated. - */ - const size_t MAXLEN = 1024; - - /** - * Represents an UTF-8 string, zero byte terminated. - * - * The length of such a string is limited to <code>MAXLEN</code> bytes - * (excluding the terminal \0). - * - * The character set of an aiString is explicitly defined to be UTF-8. This - * Unicode transformation was chosen in the belief that most strings in 3d - * model files are limited to ASCII characters, thus the character set - * needed to be ASCII compatible. - * - * Most text file loaders provide proper Unicode input file handling, - * special unicode characters are correctly transcoded to UTF-8 and are kept - * throughout the libraries' import pipeline. - * - * For most applications, it will be absolutely sufficient to interpret the - * aiString as ASCII data and work with it as one would work with a plain - * char[]. - * - * To access an aiString from D you might want to use something like the - * following piece of code: - * --- - * char[] importAiString( aiString* s ) { - * return s.data[ 0 .. s.length ]; - * } - * --- - */ - struct aiString { - /** - * Length of the string (excluding the terminal \0). - * - * This is <em>not</em> the logical length of strings containing UTF-8 - * multibyte sequences, but the number of bytes from the beginning of the - * string to its end. - */ - size_t length; - - /** - * String buffer. - * - * Size limit is <code>MAXLEN</code>. - */ - char data[ MAXLEN ]; - } - - /** - * Standard return type for some library functions. - */ - enum aiReturn : uint { - /** - * Indicates that a function was successful. - */ - SUCCESS = 0x0, - - /** - * Indicates that a function failed. - */ - FAILURE = -0x1, - - /** - * Indicates that not enough memory was available to perform the - * requested operation. - */ - OUTOFMEMORY = -0x3 - } - - /** - * Seek origins (for the virtual file system API). - */ - enum aiOrigin : uint { - /** - * Beginning of the file. - */ - SET = 0x0, - - /** - * Current position of the file pointer. - */ - CUR = 0x1, - - /** - * End of the file. - * - * Offsets must be negative. - */ - END = 0x2 - } - - /** - * Enumerates predefined log streaming destinations. - * - * Logging to these streams can be enabled with a single call to - * <code>aiAttachPredefinedLogStream()</code>. - */ - enum aiDefaultLogStream :uint { - /** - * Stream the log to a file. - */ - FILE = 0x1, - - /** - * Stream the log to standard output. - */ - STDOUT = 0x2, - - /** - * Stream the log to standard error. - */ - STDERR = 0x4, - - /** - * MSVC only: Stream the log the the debugger (this relies on - * <code>OutputDebugString</code> from the Win32 SDK). - */ - DEBUGGER = 0x8 - } - - /** - * Stores the memory requirements for different components (e.g. meshes, - * materials, animations) of an import. All sizes are in bytes. - */ - struct aiMemoryInfo { - /** - * Storage allocated for texture data. - */ - uint textures; - - /** - * Storage allocated for material data. - */ - uint materials; - - /** - * Storage allocated for mesh data. - */ - uint meshes; - - /** - * Storage allocated for node data. - */ - uint nodes; - - /** - * Storage allocated for animation data. - */ - uint animations; - - /** - * Storage allocated for camera data. - */ - uint cameras; - - /** - * Storage allocated for light data. - */ - uint lights; - - /** - * Total storage allocated for the full import. - */ - uint total; - } -} diff --git a/src/mesh/assimp-master/port/dAssimp/assimp/versionInfo.d b/src/mesh/assimp-master/port/dAssimp/assimp/versionInfo.d deleted file mode 100644 index 5a7e9b9..0000000 --- a/src/mesh/assimp-master/port/dAssimp/assimp/versionInfo.d +++ /dev/null @@ -1,72 +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. ---------------------------------------------------------------------------- -*/ - -/** - * Flags returned by <code>aiGetCompileFlags()</code>. - */ -module assimp.versionInfo; - -extern ( C ) { - /** - * Assimp was compiled as a shared object (Windows: DLL). - */ - const uint ASSIMP_CFLAGS_SHARED = 0x1; - - /** - * Assimp was compiled against STLport. - */ - const uint ASSIMP_CFLAGS_STLPORT = 0x2; - - /** - * Assimp was compiled as a debug build. - */ - const uint ASSIMP_CFLAGS_DEBUG = 0x4; - - /** - * Assimp was compiled with ASSIMP_BUILD_BOOST_WORKAROUND defined. - */ - const uint ASSIMP_CFLAGS_NOBOOST = 0x8; - - /** - * Assimp was compiled with ASSIMP_BUILD_SINGLETHREADED defined. - */ - const uint ASSIMP_CFLAGS_SINGLETHREADED = 0x10; -} |