miniassimp

diff include/miniassimp/config.h @ 0:879c81d94345

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 28 Jan 2019 18:19:26 +0200
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/include/miniassimp/config.h	Mon Jan 28 18:19:26 2019 +0200
     1.3 @@ -0,0 +1,992 @@
     1.4 +/*
     1.5 +---------------------------------------------------------------------------
     1.6 +Open Asset Import Library (assimp)
     1.7 +---------------------------------------------------------------------------
     1.8 +
     1.9 +Copyright (c) 2006-2018, assimp team
    1.10 +
    1.11 +
    1.12 +All rights reserved.
    1.13 +
    1.14 +Redistribution and use of this software in source and binary forms,
    1.15 +with or without modification, are permitted provided that the following
    1.16 +conditions are met:
    1.17 +
    1.18 +* Redistributions of source code must retain the above
    1.19 +  copyright notice, this list of conditions and the
    1.20 +  following disclaimer.
    1.21 +
    1.22 +* Redistributions in binary form must reproduce the above
    1.23 +  copyright notice, this list of conditions and the
    1.24 +  following disclaimer in the documentation and/or other
    1.25 +  materials provided with the distribution.
    1.26 +
    1.27 +* Neither the name of the assimp team, nor the names of its
    1.28 +  contributors may be used to endorse or promote products
    1.29 +  derived from this software without specific prior
    1.30 +  written permission of the assimp team.
    1.31 +
    1.32 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    1.33 +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    1.34 +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    1.35 +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    1.36 +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    1.37 +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    1.38 +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    1.39 +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    1.40 +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    1.41 +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    1.42 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    1.43 +---------------------------------------------------------------------------
    1.44 +*/
    1.45 +
    1.46 +/** @file config.h
    1.47 + *  @brief Defines constants for configurable properties for the library
    1.48 + *
    1.49 + *  Typically these properties are set via
    1.50 + *  #Assimp::Importer::SetPropertyFloat,
    1.51 + *  #Assimp::Importer::SetPropertyInteger or
    1.52 + *  #Assimp::Importer::SetPropertyString,
    1.53 + *  depending on the data type of a property. All properties have a
    1.54 + *  default value. See the doc for the mentioned methods for more details.
    1.55 + *
    1.56 + *  <br><br>
    1.57 + *  The corresponding functions for use with the plain-c API are:
    1.58 + *  #aiSetImportPropertyInteger,
    1.59 + *  #aiSetImportPropertyFloat,
    1.60 + *  #aiSetImportPropertyString
    1.61 + */
    1.62 +#pragma once
    1.63 +#ifndef AI_CONFIG_H_INC
    1.64 +#define AI_CONFIG_H_INC
    1.65 +
    1.66 +
    1.67 +// ###########################################################################
    1.68 +// LIBRARY SETTINGS
    1.69 +// General, global settings
    1.70 +// ###########################################################################
    1.71 +
    1.72 +// ---------------------------------------------------------------------------
    1.73 +/** @brief Enables time measurements.
    1.74 + *
    1.75 + *  If enabled, measures the time needed for each part of the loading
    1.76 + *  process (i.e. IO time, importing, postprocessing, ..) and dumps
    1.77 + *  these timings to the DefaultLogger. See the @link perf Performance
    1.78 + *  Page@endlink for more information on this topic.
    1.79 + *
    1.80 + * Property type: bool. Default value: false.
    1.81 + */
    1.82 +#define AI_CONFIG_GLOB_MEASURE_TIME  \
    1.83 +    "GLOB_MEASURE_TIME"
    1.84 +
    1.85 +
    1.86 +// ---------------------------------------------------------------------------
    1.87 +/** @brief Global setting to disable generation of skeleton dummy meshes
    1.88 + *
    1.89 + * Skeleton dummy meshes are generated as a visualization aid in cases which
    1.90 + * the input data contains no geometry, but only animation data.
    1.91 + * Property data type: bool. Default value: false
    1.92 + */
    1.93 +// ---------------------------------------------------------------------------
    1.94 +#define AI_CONFIG_IMPORT_NO_SKELETON_MESHES \
    1.95 +    "IMPORT_NO_SKELETON_MESHES"
    1.96 +
    1.97 +
    1.98 +
    1.99 +# if 0 // not implemented yet
   1.100 +// ---------------------------------------------------------------------------
   1.101 +/** @brief Set Assimp's multithreading policy.
   1.102 + *
   1.103 + * This setting is ignored if Assimp was built without boost.thread
   1.104 + * support (ASSIMP_BUILD_NO_THREADING, which is implied by ASSIMP_BUILD_BOOST_WORKAROUND).
   1.105 + * Possible values are: -1 to let Assimp decide what to do, 0 to disable
   1.106 + * multithreading entirely and any number larger than 0 to force a specific
   1.107 + * number of threads. Assimp is always free to ignore this settings, which is
   1.108 + * merely a hint. Usually, the default value (-1) will be fine. However, if
   1.109 + * Assimp is used concurrently from multiple user threads, it might be useful
   1.110 + * to limit each Importer instance to a specific number of cores.
   1.111 + *
   1.112 + * For more information, see the @link threading Threading page@endlink.
   1.113 + * Property type: int, default value: -1.
   1.114 + */
   1.115 +#define AI_CONFIG_GLOB_MULTITHREADING  \
   1.116 +    "GLOB_MULTITHREADING"
   1.117 +#endif
   1.118 +
   1.119 +// ###########################################################################
   1.120 +// POST PROCESSING SETTINGS
   1.121 +// Various stuff to fine-tune the behavior of a specific post processing step.
   1.122 +// ###########################################################################
   1.123 +
   1.124 +
   1.125 +// ---------------------------------------------------------------------------
   1.126 +/** @brief Maximum bone count per mesh for the SplitbyBoneCount step.
   1.127 + *
   1.128 + * Meshes are split until the maximum number of bones is reached. The default
   1.129 + * value is AI_SBBC_DEFAULT_MAX_BONES, which may be altered at
   1.130 + * compile-time.
   1.131 + * Property data type: integer.
   1.132 + */
   1.133 +// ---------------------------------------------------------------------------
   1.134 +#define AI_CONFIG_PP_SBBC_MAX_BONES \
   1.135 +    "PP_SBBC_MAX_BONES"
   1.136 +
   1.137 +
   1.138 +// default limit for bone count
   1.139 +#if (!defined AI_SBBC_DEFAULT_MAX_BONES)
   1.140 +#   define AI_SBBC_DEFAULT_MAX_BONES        60
   1.141 +#endif
   1.142 +
   1.143 +
   1.144 +// ---------------------------------------------------------------------------
   1.145 +/** @brief  Specifies the maximum angle that may be between two vertex tangents
   1.146 + *         that their tangents and bi-tangents are smoothed.
   1.147 + *
   1.148 + * This applies to the CalcTangentSpace-Step. The angle is specified
   1.149 + * in degrees. The maximum value is 175.
   1.150 + * Property type: float. Default value: 45 degrees
   1.151 + */
   1.152 +#define AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE \
   1.153 +    "PP_CT_MAX_SMOOTHING_ANGLE"
   1.154 +
   1.155 +// ---------------------------------------------------------------------------
   1.156 +/** @brief Source UV channel for tangent space computation.
   1.157 + *
   1.158 + * The specified channel must exist or an error will be raised.
   1.159 + * Property type: integer. Default value: 0
   1.160 + */
   1.161 +// ---------------------------------------------------------------------------
   1.162 +#define AI_CONFIG_PP_CT_TEXTURE_CHANNEL_INDEX \
   1.163 +    "PP_CT_TEXTURE_CHANNEL_INDEX"
   1.164 +
   1.165 +// ---------------------------------------------------------------------------
   1.166 +/** @brief  Specifies the maximum angle that may be between two face normals
   1.167 + *          at the same vertex position that their are smoothed together.
   1.168 + *
   1.169 + * Sometimes referred to as 'crease angle'.
   1.170 + * This applies to the GenSmoothNormals-Step. The angle is specified
   1.171 + * in degrees, so 180 is PI. The default value is 175 degrees (all vertex
   1.172 + * normals are smoothed). The maximum value is 175, too. Property type: float.
   1.173 + * Warning: setting this option may cause a severe loss of performance. The
   1.174 + * performance is unaffected if the #AI_CONFIG_FAVOUR_SPEED flag is set but
   1.175 + * the output quality may be reduced.
   1.176 + */
   1.177 +#define AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE \
   1.178 +    "PP_GSN_MAX_SMOOTHING_ANGLE"
   1.179 +
   1.180 +
   1.181 +// ---------------------------------------------------------------------------
   1.182 +/** @brief Sets the colormap (= palette) to be used to decode embedded
   1.183 + *         textures in MDL (Quake or 3DGS) files.
   1.184 + *
   1.185 + * This must be a valid path to a file. The file is 768 (256*3) bytes
   1.186 + * large and contains RGB triplets for each of the 256 palette entries.
   1.187 + * The default value is colormap.lmp. If the file is not found,
   1.188 + * a default palette (from Quake 1) is used.
   1.189 + * Property type: string.
   1.190 + */
   1.191 +#define AI_CONFIG_IMPORT_MDL_COLORMAP       \
   1.192 +    "IMPORT_MDL_COLORMAP"
   1.193 +
   1.194 +// ---------------------------------------------------------------------------
   1.195 +/** @brief Configures the #aiProcess_RemoveRedundantMaterials step to
   1.196 + *  keep materials matching a name in a given list.
   1.197 + *
   1.198 + * This is a list of 1 to n strings, ' ' serves as delimiter character.
   1.199 + * Identifiers containing whitespaces must be enclosed in *single*
   1.200 + * quotation marks. For example:<tt>
   1.201 + * "keep-me and_me_to anotherMaterialToBeKept \'name with whitespace\'"</tt>.
   1.202 + * If a material matches on of these names, it will not be modified or
   1.203 + * removed by the postprocessing step nor will other materials be replaced
   1.204 + * by a reference to it. <br>
   1.205 + * This option might be useful if you are using some magic material names
   1.206 + * to pass additional semantics through the content pipeline. This ensures
   1.207 + * they won't be optimized away, but a general optimization is still
   1.208 + * performed for materials not contained in the list.
   1.209 + * Property type: String. Default value: n/a
   1.210 + * @note Linefeeds, tabs or carriage returns are treated as whitespace.
   1.211 + *   Material names are case sensitive.
   1.212 + */
   1.213 +#define AI_CONFIG_PP_RRM_EXCLUDE_LIST   \
   1.214 +    "PP_RRM_EXCLUDE_LIST"
   1.215 +
   1.216 +// ---------------------------------------------------------------------------
   1.217 +/** @brief Configures the #aiProcess_PreTransformVertices step to
   1.218 + *  keep the scene hierarchy. Meshes are moved to worldspace, but
   1.219 + *  no optimization is performed (read: meshes with equal materials are not
   1.220 + *  joined. The total number of meshes won't change).
   1.221 + *
   1.222 + * This option could be of use for you if the scene hierarchy contains
   1.223 + * important additional information which you intend to parse.
   1.224 + * For rendering, you can still render all meshes in the scene without
   1.225 + * any transformations.
   1.226 + * Property type: bool. Default value: false.
   1.227 + */
   1.228 +#define AI_CONFIG_PP_PTV_KEEP_HIERARCHY     \
   1.229 +    "PP_PTV_KEEP_HIERARCHY"
   1.230 +
   1.231 +// ---------------------------------------------------------------------------
   1.232 +/** @brief Configures the #aiProcess_PreTransformVertices step to normalize
   1.233 + *  all vertex components into the [-1,1] range. That is, a bounding box
   1.234 + *  for the whole scene is computed, the maximum component is taken and all
   1.235 + *  meshes are scaled appropriately (uniformly of course!).
   1.236 + *  This might be useful if you don't know the spatial dimension of the input
   1.237 + *  data*/
   1.238 +#define AI_CONFIG_PP_PTV_NORMALIZE  \
   1.239 +    "PP_PTV_NORMALIZE"
   1.240 +
   1.241 +// ---------------------------------------------------------------------------
   1.242 +/** @brief Configures the #aiProcess_PreTransformVertices step to use
   1.243 + *  a users defined matrix as the scene root node transformation before
   1.244 + *  transforming vertices.
   1.245 + *  Property type: bool. Default value: false.
   1.246 + */
   1.247 +#define AI_CONFIG_PP_PTV_ADD_ROOT_TRANSFORMATION    \
   1.248 +    "PP_PTV_ADD_ROOT_TRANSFORMATION"
   1.249 +
   1.250 +// ---------------------------------------------------------------------------
   1.251 +/** @brief Configures the #aiProcess_PreTransformVertices step to use
   1.252 + *  a users defined matrix as the scene root node transformation before
   1.253 + *  transforming vertices. This property correspond to the 'a1' component
   1.254 + *  of the transformation matrix.
   1.255 + *  Property type: aiMatrix4x4.
   1.256 + */
   1.257 +#define AI_CONFIG_PP_PTV_ROOT_TRANSFORMATION    \
   1.258 +    "PP_PTV_ROOT_TRANSFORMATION"
   1.259 +
   1.260 +// ---------------------------------------------------------------------------
   1.261 +/** @brief Configures the #aiProcess_FindDegenerates step to
   1.262 + *  remove degenerated primitives from the import - immediately.
   1.263 + *
   1.264 + * The default behaviour converts degenerated triangles to lines and
   1.265 + * degenerated lines to points. See the documentation to the
   1.266 + * #aiProcess_FindDegenerates step for a detailed example of the various ways
   1.267 + * to get rid of these lines and points if you don't want them.
   1.268 + * Property type: bool. Default value: false.
   1.269 + */
   1.270 +#define AI_CONFIG_PP_FD_REMOVE \
   1.271 +    "PP_FD_REMOVE"
   1.272 +
   1.273 +// ---------------------------------------------------------------------------
   1.274 +/**
   1.275 + *  @brief  Configures the #aiProcess_FindDegenerates to check the area of a
   1.276 + *  trinagle to be greates than e-6. If this is not the case the triangle will
   1.277 + *  be removed if #AI_CONFIG_PP_FD_REMOVE is set to true.
   1.278 + */
   1.279 +#define AI_CONFIG_PP_FD_CHECKAREA \
   1.280 +    "PP_FD_CHECKAREA"
   1.281 +
   1.282 +// ---------------------------------------------------------------------------
   1.283 +/** @brief Configures the #aiProcess_OptimizeGraph step to preserve nodes
   1.284 + * matching a name in a given list.
   1.285 + *
   1.286 + * This is a list of 1 to n strings, ' ' serves as delimiter character.
   1.287 + * Identifiers containing whitespaces must be enclosed in *single*
   1.288 + * quotation marks. For example:<tt>
   1.289 + * "keep-me and_me_to anotherNodeToBeKept \'name with whitespace\'"</tt>.
   1.290 + * If a node matches on of these names, it will not be modified or
   1.291 + * removed by the postprocessing step.<br>
   1.292 + * This option might be useful if you are using some magic node names
   1.293 + * to pass additional semantics through the content pipeline. This ensures
   1.294 + * they won't be optimized away, but a general optimization is still
   1.295 + * performed for nodes not contained in the list.
   1.296 + * Property type: String. Default value: n/a
   1.297 + * @note Linefeeds, tabs or carriage returns are treated as whitespace.
   1.298 + *   Node names are case sensitive.
   1.299 + */
   1.300 +#define AI_CONFIG_PP_OG_EXCLUDE_LIST    \
   1.301 +    "PP_OG_EXCLUDE_LIST"
   1.302 +
   1.303 +// ---------------------------------------------------------------------------
   1.304 +/** @brief  Set the maximum number of triangles in a mesh.
   1.305 + *
   1.306 + * This is used by the "SplitLargeMeshes" PostProcess-Step to determine
   1.307 + * whether a mesh must be split or not.
   1.308 + * @note The default value is AI_SLM_DEFAULT_MAX_TRIANGLES
   1.309 + * Property type: integer.
   1.310 + */
   1.311 +#define AI_CONFIG_PP_SLM_TRIANGLE_LIMIT \
   1.312 +    "PP_SLM_TRIANGLE_LIMIT"
   1.313 +
   1.314 +// default value for AI_CONFIG_PP_SLM_TRIANGLE_LIMIT
   1.315 +#if (!defined AI_SLM_DEFAULT_MAX_TRIANGLES)
   1.316 +#   define AI_SLM_DEFAULT_MAX_TRIANGLES     1000000
   1.317 +#endif
   1.318 +
   1.319 +// ---------------------------------------------------------------------------
   1.320 +/** @brief  Set the maximum number of vertices in a mesh.
   1.321 + *
   1.322 + * This is used by the "SplitLargeMeshes" PostProcess-Step to determine
   1.323 + * whether a mesh must be split or not.
   1.324 + * @note The default value is AI_SLM_DEFAULT_MAX_VERTICES
   1.325 + * Property type: integer.
   1.326 + */
   1.327 +#define AI_CONFIG_PP_SLM_VERTEX_LIMIT \
   1.328 +    "PP_SLM_VERTEX_LIMIT"
   1.329 +
   1.330 +// default value for AI_CONFIG_PP_SLM_VERTEX_LIMIT
   1.331 +#if (!defined AI_SLM_DEFAULT_MAX_VERTICES)
   1.332 +#   define AI_SLM_DEFAULT_MAX_VERTICES      1000000
   1.333 +#endif
   1.334 +
   1.335 +// ---------------------------------------------------------------------------
   1.336 +/** @brief Set the maximum number of bones affecting a single vertex
   1.337 + *
   1.338 + * This is used by the #aiProcess_LimitBoneWeights PostProcess-Step.
   1.339 + * @note The default value is AI_LMW_MAX_WEIGHTS
   1.340 + * Property type: integer.*/
   1.341 +#define AI_CONFIG_PP_LBW_MAX_WEIGHTS    \
   1.342 +    "PP_LBW_MAX_WEIGHTS"
   1.343 +
   1.344 +// default value for AI_CONFIG_PP_LBW_MAX_WEIGHTS
   1.345 +#if (!defined AI_LMW_MAX_WEIGHTS)
   1.346 +#   define AI_LMW_MAX_WEIGHTS   0x4
   1.347 +#endif // !! AI_LMW_MAX_WEIGHTS
   1.348 +
   1.349 +// ---------------------------------------------------------------------------
   1.350 +/** @brief Lower the deboning threshold in order to remove more bones.
   1.351 + *
   1.352 + * This is used by the #aiProcess_Debone PostProcess-Step.
   1.353 + * @note The default value is AI_DEBONE_THRESHOLD
   1.354 + * Property type: float.*/
   1.355 +#define AI_CONFIG_PP_DB_THRESHOLD \
   1.356 +    "PP_DB_THRESHOLD"
   1.357 +
   1.358 +// default value for AI_CONFIG_PP_LBW_MAX_WEIGHTS
   1.359 +#if (!defined AI_DEBONE_THRESHOLD)
   1.360 +#   define AI_DEBONE_THRESHOLD  1.0f
   1.361 +#endif // !! AI_DEBONE_THRESHOLD
   1.362 +
   1.363 +// ---------------------------------------------------------------------------
   1.364 +/** @brief Require all bones qualify for deboning before removing any
   1.365 + *
   1.366 + * This is used by the #aiProcess_Debone PostProcess-Step.
   1.367 + * @note The default value is 0
   1.368 + * Property type: bool.*/
   1.369 +#define AI_CONFIG_PP_DB_ALL_OR_NONE \
   1.370 +    "PP_DB_ALL_OR_NONE"
   1.371 +
   1.372 +/** @brief Default value for the #AI_CONFIG_PP_ICL_PTCACHE_SIZE property
   1.373 + */
   1.374 +#ifndef PP_ICL_PTCACHE_SIZE
   1.375 +#   define PP_ICL_PTCACHE_SIZE 12
   1.376 +#endif
   1.377 +
   1.378 +// ---------------------------------------------------------------------------
   1.379 +/** @brief Set the size of the post-transform vertex cache to optimize the
   1.380 + *    vertices for. This configures the #aiProcess_ImproveCacheLocality step.
   1.381 + *
   1.382 + * The size is given in vertices. Of course you can't know how the vertex
   1.383 + * format will exactly look like after the import returns, but you can still
   1.384 + * guess what your meshes will probably have.
   1.385 + * @note The default value is #PP_ICL_PTCACHE_SIZE. That results in slight
   1.386 + * performance improvements for most nVidia/AMD cards since 2002.
   1.387 + * Property type: integer.
   1.388 + */
   1.389 +#define AI_CONFIG_PP_ICL_PTCACHE_SIZE   "PP_ICL_PTCACHE_SIZE"
   1.390 +
   1.391 +// ---------------------------------------------------------------------------
   1.392 +/** @brief Enumerates components of the aiScene and aiMesh data structures
   1.393 + *  that can be excluded from the import using the #aiProcess_RemoveComponent step.
   1.394 + *
   1.395 + *  See the documentation to #aiProcess_RemoveComponent for more details.
   1.396 + */
   1.397 +enum aiComponent
   1.398 +{
   1.399 +    /** Normal vectors */
   1.400 +#ifdef SWIG
   1.401 +    aiComponent_NORMALS = 0x2,
   1.402 +#else
   1.403 +    aiComponent_NORMALS = 0x2u,
   1.404 +#endif
   1.405 +
   1.406 +    /** Tangents and bitangents go always together ... */
   1.407 +#ifdef SWIG
   1.408 +    aiComponent_TANGENTS_AND_BITANGENTS = 0x4,
   1.409 +#else
   1.410 +    aiComponent_TANGENTS_AND_BITANGENTS = 0x4u,
   1.411 +#endif
   1.412 +
   1.413 +    /** ALL color sets
   1.414 +     * Use aiComponent_COLORn(N) to specify the N'th set */
   1.415 +    aiComponent_COLORS = 0x8,
   1.416 +
   1.417 +    /** ALL texture UV sets
   1.418 +     * aiComponent_TEXCOORDn(N) to specify the N'th set  */
   1.419 +    aiComponent_TEXCOORDS = 0x10,
   1.420 +
   1.421 +    /** Removes all bone weights from all meshes.
   1.422 +     * The scenegraph nodes corresponding to the bones are NOT removed.
   1.423 +     * use the #aiProcess_OptimizeGraph step to do this */
   1.424 +    aiComponent_BONEWEIGHTS = 0x20,
   1.425 +
   1.426 +    /** Removes all node animations (aiScene::mAnimations).
   1.427 +     * The corresponding scenegraph nodes are NOT removed.
   1.428 +     * use the #aiProcess_OptimizeGraph step to do this */
   1.429 +    aiComponent_ANIMATIONS = 0x40,
   1.430 +
   1.431 +    /** Removes all embedded textures (aiScene::mTextures) */
   1.432 +    aiComponent_TEXTURES = 0x80,
   1.433 +
   1.434 +    /** Removes all light sources (aiScene::mLights).
   1.435 +     * The corresponding scenegraph nodes are NOT removed.
   1.436 +     * use the #aiProcess_OptimizeGraph step to do this */
   1.437 +    aiComponent_LIGHTS = 0x100,
   1.438 +
   1.439 +    /** Removes all cameras (aiScene::mCameras).
   1.440 +     * The corresponding scenegraph nodes are NOT removed.
   1.441 +     * use the #aiProcess_OptimizeGraph step to do this */
   1.442 +    aiComponent_CAMERAS = 0x200,
   1.443 +
   1.444 +    /** Removes all meshes (aiScene::mMeshes). */
   1.445 +    aiComponent_MESHES = 0x400,
   1.446 +
   1.447 +    /** Removes all materials. One default material will
   1.448 +     * be generated, so aiScene::mNumMaterials will be 1. */
   1.449 +    aiComponent_MATERIALS = 0x800,
   1.450 +
   1.451 +
   1.452 +    /** This value is not used. It is just there to force the
   1.453 +     *  compiler to map this enum to a 32 Bit integer. */
   1.454 +#ifndef SWIG
   1.455 +    _aiComponent_Force32Bit = 0x9fffffff
   1.456 +#endif
   1.457 +};
   1.458 +
   1.459 +// Remove a specific color channel 'n'
   1.460 +#define aiComponent_COLORSn(n) (1u << (n+20u))
   1.461 +
   1.462 +// Remove a specific UV channel 'n'
   1.463 +#define aiComponent_TEXCOORDSn(n) (1u << (n+25u))
   1.464 +
   1.465 +// ---------------------------------------------------------------------------
   1.466 +/** @brief Input parameter to the #aiProcess_RemoveComponent step:
   1.467 + *  Specifies the parts of the data structure to be removed.
   1.468 + *
   1.469 + * See the documentation to this step for further details. The property
   1.470 + * is expected to be an integer, a bitwise combination of the
   1.471 + * #aiComponent flags defined above in this header. The default
   1.472 + * value is 0. Important: if no valid mesh is remaining after the
   1.473 + * step has been executed (e.g you thought it was funny to specify ALL
   1.474 + * of the flags defined above) the import FAILS. Mainly because there is
   1.475 + * no data to work on anymore ...
   1.476 + */
   1.477 +#define AI_CONFIG_PP_RVC_FLAGS              \
   1.478 +    "PP_RVC_FLAGS"
   1.479 +
   1.480 +// ---------------------------------------------------------------------------
   1.481 +/** @brief Input parameter to the #aiProcess_SortByPType step:
   1.482 + *  Specifies which primitive types are removed by the step.
   1.483 + *
   1.484 + *  This is a bitwise combination of the aiPrimitiveType flags.
   1.485 + *  Specifying all of them is illegal, of course. A typical use would
   1.486 + *  be to exclude all line and point meshes from the import. This
   1.487 + *  is an integer property, its default value is 0.
   1.488 + */
   1.489 +#define AI_CONFIG_PP_SBP_REMOVE             \
   1.490 +    "PP_SBP_REMOVE"
   1.491 +
   1.492 +// ---------------------------------------------------------------------------
   1.493 +/** @brief Input parameter to the #aiProcess_FindInvalidData step:
   1.494 + *  Specifies the floating-point accuracy for animation values. The step
   1.495 + *  checks for animation tracks where all frame values are absolutely equal
   1.496 + *  and removes them. This tweakable controls the epsilon for floating-point
   1.497 + *  comparisons - two keys are considered equal if the invariant
   1.498 + *  abs(n0-n1)>epsilon holds true for all vector respectively quaternion
   1.499 + *  components. The default value is 0.f - comparisons are exact then.
   1.500 + */
   1.501 +#define AI_CONFIG_PP_FID_ANIM_ACCURACY              \
   1.502 +    "PP_FID_ANIM_ACCURACY"
   1.503 +
   1.504 +// ---------------------------------------------------------------------------
   1.505 +/** @brief Input parameter to the #aiProcess_FindInvalidData step:
   1.506 + *  Set to true to ignore texture coordinates. This may be useful if you have
   1.507 + *  to assign different kind of textures like one for the summer or one for the winter.
   1.508 + */
   1.509 +#define AI_CONFIG_PP_FID_IGNORE_TEXTURECOORDS        \
   1.510 +    "PP_FID_IGNORE_TEXTURECOORDS"
   1.511 +
   1.512 +// TransformUVCoords evaluates UV scalings
   1.513 +#define AI_UVTRAFO_SCALING 0x1
   1.514 +
   1.515 +// TransformUVCoords evaluates UV rotations
   1.516 +#define AI_UVTRAFO_ROTATION 0x2
   1.517 +
   1.518 +// TransformUVCoords evaluates UV translation
   1.519 +#define AI_UVTRAFO_TRANSLATION 0x4
   1.520 +
   1.521 +// Everything baked together -> default value
   1.522 +#define AI_UVTRAFO_ALL (AI_UVTRAFO_SCALING | AI_UVTRAFO_ROTATION | AI_UVTRAFO_TRANSLATION)
   1.523 +
   1.524 +// ---------------------------------------------------------------------------
   1.525 +/** @brief Input parameter to the #aiProcess_TransformUVCoords step:
   1.526 + *  Specifies which UV transformations are evaluated.
   1.527 + *
   1.528 + *  This is a bitwise combination of the AI_UVTRAFO_XXX flags (integer
   1.529 + *  property, of course). By default all transformations are enabled
   1.530 + * (AI_UVTRAFO_ALL).
   1.531 + */
   1.532 +#define AI_CONFIG_PP_TUV_EVALUATE               \
   1.533 +    "PP_TUV_EVALUATE"
   1.534 +
   1.535 +// ---------------------------------------------------------------------------
   1.536 +/** @brief A hint to assimp to favour speed against import quality.
   1.537 + *
   1.538 + * Enabling this option may result in faster loading, but it needn't.
   1.539 + * It represents just a hint to loaders and post-processing steps to use
   1.540 + * faster code paths, if possible.
   1.541 + * This property is expected to be an integer, != 0 stands for true.
   1.542 + * The default value is 0.
   1.543 + */
   1.544 +#define AI_CONFIG_FAVOUR_SPEED              \
   1.545 + "FAVOUR_SPEED"
   1.546 +
   1.547 +
   1.548 +// ###########################################################################
   1.549 +// IMPORTER SETTINGS
   1.550 +// Various stuff to fine-tune the behaviour of specific importer plugins.
   1.551 +// ###########################################################################
   1.552 +
   1.553 +
   1.554 +// ---------------------------------------------------------------------------
   1.555 +/** @brief Set whether the fbx importer will merge all geometry layers present
   1.556 + *    in the source file or take only the first.
   1.557 + *
   1.558 + * The default value is true (1)
   1.559 + * Property type: bool
   1.560 + */
   1.561 +#define AI_CONFIG_IMPORT_FBX_READ_ALL_GEOMETRY_LAYERS \
   1.562 +    "IMPORT_FBX_READ_ALL_GEOMETRY_LAYERS"
   1.563 +
   1.564 +// ---------------------------------------------------------------------------
   1.565 +/** @brief Set whether the fbx importer will read all materials present in the
   1.566 + *    source file or take only the referenced materials.
   1.567 + *
   1.568 + * This is void unless IMPORT_FBX_READ_MATERIALS=1.
   1.569 + *
   1.570 + * The default value is false (0)
   1.571 + * Property type: bool
   1.572 + */
   1.573 +#define AI_CONFIG_IMPORT_FBX_READ_ALL_MATERIALS \
   1.574 +    "IMPORT_FBX_READ_ALL_MATERIALS"
   1.575 +
   1.576 +// ---------------------------------------------------------------------------
   1.577 +/** @brief Set whether the fbx importer will read materials.
   1.578 + *
   1.579 + * The default value is true (1)
   1.580 + * Property type: bool
   1.581 + */
   1.582 +#define AI_CONFIG_IMPORT_FBX_READ_MATERIALS \
   1.583 +    "IMPORT_FBX_READ_MATERIALS"
   1.584 +
   1.585 +// ---------------------------------------------------------------------------
   1.586 +/** @brief Set whether the fbx importer will read embedded textures.
   1.587 + *
   1.588 + * The default value is true (1)
   1.589 + * Property type: bool
   1.590 + */
   1.591 +#define AI_CONFIG_IMPORT_FBX_READ_TEXTURES \
   1.592 +    "IMPORT_FBX_READ_TEXTURES"
   1.593 +
   1.594 +// ---------------------------------------------------------------------------
   1.595 +/** @brief Set whether the fbx importer will read cameras.
   1.596 + *
   1.597 + * The default value is true (1)
   1.598 + * Property type: bool
   1.599 + */
   1.600 +#define AI_CONFIG_IMPORT_FBX_READ_CAMERAS \
   1.601 +    "IMPORT_FBX_READ_CAMERAS"
   1.602 +
   1.603 +// ---------------------------------------------------------------------------
   1.604 +/** @brief Set whether the fbx importer will read light sources.
   1.605 + *
   1.606 + * The default value is true (1)
   1.607 + * Property type: bool
   1.608 + */
   1.609 +#define AI_CONFIG_IMPORT_FBX_READ_LIGHTS \
   1.610 +    "IMPORT_FBX_READ_LIGHTS"
   1.611 +
   1.612 +// ---------------------------------------------------------------------------
   1.613 +/** @brief Set whether the fbx importer will read animations.
   1.614 + *
   1.615 + * The default value is true (1)
   1.616 + * Property type: bool
   1.617 + */
   1.618 +#define AI_CONFIG_IMPORT_FBX_READ_ANIMATIONS \
   1.619 +    "IMPORT_FBX_READ_ANIMATIONS"
   1.620 +
   1.621 +// ---------------------------------------------------------------------------
   1.622 +/** @brief Set whether the fbx importer will act in strict mode in which only
   1.623 + *    FBX 2013 is supported and any other sub formats are rejected. FBX 2013
   1.624 + *    is the primary target for the importer, so this format is best
   1.625 + *    supported and well-tested.
   1.626 + *
   1.627 + * The default value is false (0)
   1.628 + * Property type: bool
   1.629 + */
   1.630 +#define AI_CONFIG_IMPORT_FBX_STRICT_MODE \
   1.631 +    "IMPORT_FBX_STRICT_MODE"
   1.632 +
   1.633 +// ---------------------------------------------------------------------------
   1.634 +/** @brief Set whether the fbx importer will preserve pivot points for
   1.635 + *    transformations (as extra nodes). If set to false, pivots and offsets
   1.636 + *    will be evaluated whenever possible.
   1.637 + *
   1.638 + * The default value is true (1)
   1.639 + * Property type: bool
   1.640 + */
   1.641 +#define AI_CONFIG_IMPORT_FBX_PRESERVE_PIVOTS \
   1.642 +    "IMPORT_FBX_PRESERVE_PIVOTS"
   1.643 +
   1.644 +// ---------------------------------------------------------------------------
   1.645 +/** @brief Specifies whether the importer will drop empty animation curves or
   1.646 + *    animation curves which match the bind pose transformation over their
   1.647 + *    entire defined range.
   1.648 + *
   1.649 + * The default value is true (1)
   1.650 + * Property type: bool
   1.651 + */
   1.652 +#define AI_CONFIG_IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES \
   1.653 +    "IMPORT_FBX_OPTIMIZE_EMPTY_ANIMATION_CURVES"
   1.654 +
   1.655 +// ---------------------------------------------------------------------------
   1.656 +/** @brief Set whether the fbx importer will use the legacy embedded texture naming.
   1.657 +*
   1.658 +* The default value is false (0)
   1.659 +* Property type: bool
   1.660 +*/
   1.661 +#define AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING \
   1.662 +	"AI_CONFIG_IMPORT_FBX_EMBEDDED_TEXTURES_LEGACY_NAMING"
   1.663 +	
   1.664 +// ---------------------------------------------------------------------------
   1.665 +/** @brief  Set the vertex animation keyframe to be imported
   1.666 + *
   1.667 + * ASSIMP does not support vertex keyframes (only bone animation is supported).
   1.668 + * The library reads only one frame of models with vertex animations.
   1.669 + * By default this is the first frame.
   1.670 + * \note The default value is 0. This option applies to all importers.
   1.671 + *   However, it is also possible to override the global setting
   1.672 + *   for a specific loader. You can use the AI_CONFIG_IMPORT_XXX_KEYFRAME
   1.673 + *   options (where XXX is a placeholder for the file format for which you
   1.674 + *   want to override the global setting).
   1.675 + * Property type: integer.
   1.676 + */
   1.677 +#define AI_CONFIG_IMPORT_GLOBAL_KEYFRAME    "IMPORT_GLOBAL_KEYFRAME"
   1.678 +
   1.679 +#define AI_CONFIG_IMPORT_MD3_KEYFRAME       "IMPORT_MD3_KEYFRAME"
   1.680 +#define AI_CONFIG_IMPORT_MD2_KEYFRAME       "IMPORT_MD2_KEYFRAME"
   1.681 +#define AI_CONFIG_IMPORT_MDL_KEYFRAME       "IMPORT_MDL_KEYFRAME"
   1.682 +#define AI_CONFIG_IMPORT_MDC_KEYFRAME       "IMPORT_MDC_KEYFRAME"
   1.683 +#define AI_CONFIG_IMPORT_SMD_KEYFRAME       "IMPORT_SMD_KEYFRAME"
   1.684 +#define AI_CONFIG_IMPORT_UNREAL_KEYFRAME    "IMPORT_UNREAL_KEYFRAME"
   1.685 +
   1.686 +// ---------------------------------------------------------------------------
   1.687 +/** Smd load multiple animations
   1.688 + *
   1.689 + *  Property type: bool. Default value: true.
   1.690 + */
   1.691 +#define AI_CONFIG_IMPORT_SMD_LOAD_ANIMATION_LIST "IMPORT_SMD_LOAD_ANIMATION_LIST"
   1.692 +
   1.693 +// ---------------------------------------------------------------------------
   1.694 +/** @brief  Configures the AC loader to collect all surfaces which have the
   1.695 + *    "Backface cull" flag set in separate meshes.
   1.696 + *
   1.697 + *  Property type: bool. Default value: true.
   1.698 + */
   1.699 +#define AI_CONFIG_IMPORT_AC_SEPARATE_BFCULL \
   1.700 +    "IMPORT_AC_SEPARATE_BFCULL"
   1.701 +
   1.702 +// ---------------------------------------------------------------------------
   1.703 +/** @brief  Configures whether the AC loader evaluates subdivision surfaces (
   1.704 + *  indicated by the presence of the 'subdiv' attribute in the file). By
   1.705 + *  default, Assimp performs the subdivision using the standard
   1.706 + *  Catmull-Clark algorithm
   1.707 + *
   1.708 + * * Property type: bool. Default value: true.
   1.709 + */
   1.710 +#define AI_CONFIG_IMPORT_AC_EVAL_SUBDIVISION    \
   1.711 +    "IMPORT_AC_EVAL_SUBDIVISION"
   1.712 +
   1.713 +// ---------------------------------------------------------------------------
   1.714 +/** @brief  Configures the UNREAL 3D loader to separate faces with different
   1.715 + *    surface flags (e.g. two-sided vs. single-sided).
   1.716 + *
   1.717 + * * Property type: bool. Default value: true.
   1.718 + */
   1.719 +#define AI_CONFIG_IMPORT_UNREAL_HANDLE_FLAGS \
   1.720 +    "UNREAL_HANDLE_FLAGS"
   1.721 +
   1.722 +// ---------------------------------------------------------------------------
   1.723 +/** @brief Configures the terragen import plugin to compute uv's for
   1.724 + *  terrains, if not given. Furthermore a default texture is assigned.
   1.725 + *
   1.726 + * UV coordinates for terrains are so simple to compute that you'll usually
   1.727 + * want to compute them on your own, if you need them. This option is intended
   1.728 + * for model viewers which want to offer an easy way to apply textures to
   1.729 + * terrains.
   1.730 + * * Property type: bool. Default value: false.
   1.731 + */
   1.732 +#define AI_CONFIG_IMPORT_TER_MAKE_UVS \
   1.733 +    "IMPORT_TER_MAKE_UVS"
   1.734 +
   1.735 +// ---------------------------------------------------------------------------
   1.736 +/** @brief  Configures the ASE loader to always reconstruct normal vectors
   1.737 + *  basing on the smoothing groups loaded from the file.
   1.738 + *
   1.739 + * Some ASE files have carry invalid normals, other don't.
   1.740 + * * Property type: bool. Default value: true.
   1.741 + */
   1.742 +#define AI_CONFIG_IMPORT_ASE_RECONSTRUCT_NORMALS    \
   1.743 +    "IMPORT_ASE_RECONSTRUCT_NORMALS"
   1.744 +
   1.745 +// ---------------------------------------------------------------------------
   1.746 +/** @brief  Configures the M3D loader to detect and process multi-part
   1.747 + *    Quake player models.
   1.748 + *
   1.749 + * These models usually consist of 3 files, lower.md3, upper.md3 and
   1.750 + * head.md3. If this property is set to true, Assimp will try to load and
   1.751 + * combine all three files if one of them is loaded.
   1.752 + * Property type: bool. Default value: true.
   1.753 + */
   1.754 +#define AI_CONFIG_IMPORT_MD3_HANDLE_MULTIPART \
   1.755 +    "IMPORT_MD3_HANDLE_MULTIPART"
   1.756 +
   1.757 +// ---------------------------------------------------------------------------
   1.758 +/** @brief  Tells the MD3 loader which skin files to load.
   1.759 + *
   1.760 + * When loading MD3 files, Assimp checks whether a file
   1.761 + * [md3_file_name]_[skin_name].skin is existing. These files are used by
   1.762 + * Quake III to be able to assign different skins (e.g. red and blue team)
   1.763 + * to models. 'default', 'red', 'blue' are typical skin names.
   1.764 + * Property type: String. Default value: "default".
   1.765 + */
   1.766 +#define AI_CONFIG_IMPORT_MD3_SKIN_NAME \
   1.767 +    "IMPORT_MD3_SKIN_NAME"
   1.768 +
   1.769 +// ---------------------------------------------------------------------------
   1.770 +/** @brief  Specify the Quake 3 shader file to be used for a particular
   1.771 + *  MD3 file. This can also be a search path.
   1.772 + *
   1.773 + * By default Assimp's behaviour is as follows: If a MD3 file
   1.774 + * <tt>any_path/models/any_q3_subdir/model_name/file_name.md3</tt> is
   1.775 + * loaded, the library tries to locate the corresponding shader file in
   1.776 + * <tt>any_path/scripts/model_name.shader</tt>. This property overrides this
   1.777 + * behaviour. It can either specify a full path to the shader to be loaded
   1.778 + * or alternatively the path (relative or absolute) to the directory where
   1.779 + * the shaders for all MD3s to be loaded reside. Assimp attempts to open
   1.780 + * <tt>IMPORT_MD3_SHADER_SRC/model_name.shader</tt> first, <tt>IMPORT_MD3_SHADER_SRC/file_name.shader</tt>
   1.781 + * is the fallback file. Note that IMPORT_MD3_SHADER_SRC should have a terminal (back)slash.
   1.782 + * Property type: String. Default value: n/a.
   1.783 + */
   1.784 +#define AI_CONFIG_IMPORT_MD3_SHADER_SRC \
   1.785 +    "IMPORT_MD3_SHADER_SRC"
   1.786 +
   1.787 +// ---------------------------------------------------------------------------
   1.788 +/** @brief  Configures the LWO loader to load just one layer from the model.
   1.789 + *
   1.790 + * LWO files consist of layers and in some cases it could be useful to load
   1.791 + * only one of them. This property can be either a string - which specifies
   1.792 + * the name of the layer - or an integer - the index of the layer. If the
   1.793 + * property is not set the whole LWO model is loaded. Loading fails if the
   1.794 + * requested layer is not available. The layer index is zero-based and the
   1.795 + * layer name may not be empty.<br>
   1.796 + * Property type: Integer. Default value: all layers are loaded.
   1.797 + */
   1.798 +#define AI_CONFIG_IMPORT_LWO_ONE_LAYER_ONLY         \
   1.799 +    "IMPORT_LWO_ONE_LAYER_ONLY"
   1.800 +
   1.801 +// ---------------------------------------------------------------------------
   1.802 +/** @brief  Configures the MD5 loader to not load the MD5ANIM file for
   1.803 + *  a MD5MESH file automatically.
   1.804 + *
   1.805 + * The default strategy is to look for a file with the same name but the
   1.806 + * MD5ANIM extension in the same directory. If it is found, it is loaded
   1.807 + * and combined with the MD5MESH file. This configuration option can be
   1.808 + * used to disable this behaviour.
   1.809 + *
   1.810 + * * Property type: bool. Default value: false.
   1.811 + */
   1.812 +#define AI_CONFIG_IMPORT_MD5_NO_ANIM_AUTOLOAD           \
   1.813 +    "IMPORT_MD5_NO_ANIM_AUTOLOAD"
   1.814 +
   1.815 +// ---------------------------------------------------------------------------
   1.816 +/** @brief Defines the begin of the time range for which the LWS loader
   1.817 + *    evaluates animations and computes aiNodeAnim's.
   1.818 + *
   1.819 + * Assimp provides full conversion of LightWave's envelope system, including
   1.820 + * pre and post conditions. The loader computes linearly subsampled animation
   1.821 + * chanels with the frame rate given in the LWS file. This property defines
   1.822 + * the start time. Note: animation channels are only generated if a node
   1.823 + * has at least one envelope with more tan one key assigned. This property.
   1.824 + * is given in frames, '0' is the first frame. By default, if this property
   1.825 + * is not set, the importer takes the animation start from the input LWS
   1.826 + * file ('FirstFrame' line)<br>
   1.827 + * Property type: Integer. Default value: taken from file.
   1.828 + *
   1.829 + * @see AI_CONFIG_IMPORT_LWS_ANIM_END - end of the imported time range
   1.830 + */
   1.831 +#define AI_CONFIG_IMPORT_LWS_ANIM_START         \
   1.832 +    "IMPORT_LWS_ANIM_START"
   1.833 +#define AI_CONFIG_IMPORT_LWS_ANIM_END           \
   1.834 +    "IMPORT_LWS_ANIM_END"
   1.835 +
   1.836 +// ---------------------------------------------------------------------------
   1.837 +/** @brief Defines the output frame rate of the IRR loader.
   1.838 + *
   1.839 + * IRR animations are difficult to convert for Assimp and there will
   1.840 + * always be a loss of quality. This setting defines how many keys per second
   1.841 + * are returned by the converter.<br>
   1.842 + * Property type: integer. Default value: 100
   1.843 + */
   1.844 +#define AI_CONFIG_IMPORT_IRR_ANIM_FPS               \
   1.845 +    "IMPORT_IRR_ANIM_FPS"
   1.846 +
   1.847 +// ---------------------------------------------------------------------------
   1.848 +/** @brief Ogre Importer will try to find referenced materials from this file.
   1.849 + *
   1.850 + * Ogre meshes reference with material names, this does not tell Assimp the file
   1.851 + * where it is located in. Assimp will try to find the source file in the following
   1.852 + * order: <material-name>.material, <mesh-filename-base>.material and
   1.853 + * lastly the material name defined by this config property.
   1.854 + * <br>
   1.855 + * Property type: String. Default value: Scene.material.
   1.856 + */
   1.857 +#define AI_CONFIG_IMPORT_OGRE_MATERIAL_FILE \
   1.858 +    "IMPORT_OGRE_MATERIAL_FILE"
   1.859 +
   1.860 +// ---------------------------------------------------------------------------
   1.861 +/** @brief Ogre Importer detect the texture usage from its filename.
   1.862 + *
   1.863 + * Ogre material texture units do not define texture type, the textures usage
   1.864 + * depends on the used shader or Ogre's fixed pipeline. If this config property
   1.865 + * is true Assimp will try to detect the type from the textures filename postfix:
   1.866 + * _n, _nrm, _nrml, _normal, _normals and _normalmap for normal map, _s, _spec,
   1.867 + * _specular and _specularmap for specular map, _l, _light, _lightmap, _occ
   1.868 + * and _occlusion for light map, _disp and _displacement for displacement map.
   1.869 + * The matching is case insensitive. Post fix is taken between the last
   1.870 + * underscore and the last period.
   1.871 + * Default behavior is to detect type from lower cased texture unit name by
   1.872 + * matching against: normalmap, specularmap, lightmap and displacementmap.
   1.873 + * For both cases if no match is found aiTextureType_DIFFUSE is used.
   1.874 + * <br>
   1.875 + * Property type: Bool. Default value: false.
   1.876 + */
   1.877 +#define AI_CONFIG_IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME \
   1.878 +    "IMPORT_OGRE_TEXTURETYPE_FROM_FILENAME"
   1.879 +
   1.880 + /** @brief Specifies whether the Android JNI asset extraction is supported.
   1.881 +  *
   1.882 +  * Turn on this option if you want to manage assets in native
   1.883 +  * Android application without having to keep the internal directory and asset
   1.884 +  * manager pointer.
   1.885 +  */
   1.886 + #define AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT "AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT"
   1.887 +
   1.888 +// ---------------------------------------------------------------------------
   1.889 +/** @brief Specifies whether the IFC loader skips over IfcSpace elements.
   1.890 + *
   1.891 + * IfcSpace elements (and their geometric representations) are used to
   1.892 + * represent, well, free space in a building storey.<br>
   1.893 + * Property type: Bool. Default value: true.
   1.894 + */
   1.895 +#define AI_CONFIG_IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS "IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS"
   1.896 +
   1.897 +// ---------------------------------------------------------------------------
   1.898 +/** @brief Specifies whether the IFC loader will use its own, custom triangulation
   1.899 + *   algorithm to triangulate wall and floor meshes.
   1.900 + *
   1.901 + * If this property is set to false, walls will be either triangulated by
   1.902 + * #aiProcess_Triangulate or will be passed through as huge polygons with
   1.903 + * faked holes (i.e. holes that are connected with the outer boundary using
   1.904 + * a dummy edge). It is highly recommended to set this property to true
   1.905 + * if you want triangulated data because #aiProcess_Triangulate is known to
   1.906 + * have problems with the kind of polygons that the IFC loader spits out for
   1.907 + * complicated meshes.
   1.908 + * Property type: Bool. Default value: true.
   1.909 + */
   1.910 +#define AI_CONFIG_IMPORT_IFC_CUSTOM_TRIANGULATION "IMPORT_IFC_CUSTOM_TRIANGULATION"
   1.911 +
   1.912 +// ---------------------------------------------------------------------------
   1.913 +/** @brief  Set the tessellation conic angle for IFC smoothing curves.
   1.914 + *
   1.915 + * This is used by the IFC importer to determine the tessellation parameter
   1.916 + * for smoothing curves.
   1.917 + * @note The default value is AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE and the
   1.918 + * accepted values are in range [5.0, 120.0].
   1.919 + * Property type: Float.
   1.920 + */
   1.921 +#define AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE "IMPORT_IFC_SMOOTHING_ANGLE"
   1.922 +
   1.923 +// default value for AI_CONFIG_IMPORT_IFC_SMOOTHING_ANGLE
   1.924 +#if (!defined AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE)
   1.925 +#   define AI_IMPORT_IFC_DEFAULT_SMOOTHING_ANGLE 10.0f
   1.926 +#endif
   1.927 +
   1.928 +// ---------------------------------------------------------------------------
   1.929 +/** @brief  Set the tessellation for IFC cylindrical shapes.
   1.930 + *
   1.931 + * This is used by the IFC importer to determine the tessellation parameter
   1.932 + * for cylindrical shapes, i.e. the number of segments used to approximate a circle.
   1.933 + * @note The default value is AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION and the
   1.934 + * accepted values are in range [3, 180].
   1.935 + * Property type: Integer.
   1.936 + */
   1.937 +#define AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION "IMPORT_IFC_CYLINDRICAL_TESSELLATION"
   1.938 +
   1.939 +// default value for AI_CONFIG_IMPORT_IFC_CYLINDRICAL_TESSELLATION
   1.940 +#if (!defined AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION)
   1.941 +#   define AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION 32
   1.942 +#endif
   1.943 +
   1.944 +// ---------------------------------------------------------------------------
   1.945 +/** @brief Specifies whether the Collada loader will ignore the provided up direction.
   1.946 + *
   1.947 + * If this property is set to true, the up direction provided in the file header will
   1.948 + * be ignored and the file will be loaded as is.
   1.949 + * Property type: Bool. Default value: false.
   1.950 + */
   1.951 +#define AI_CONFIG_IMPORT_COLLADA_IGNORE_UP_DIRECTION "IMPORT_COLLADA_IGNORE_UP_DIRECTION"
   1.952 +
   1.953 +// ---------------------------------------------------------------------------
   1.954 +/** @brief Specifies whether the Collada loader should use Collada names as node names.
   1.955 + *
   1.956 + * If this property is set to true, the Collada names will be used as the
   1.957 + * node name. The default is to use the id tag (resp. sid tag, if no id tag is present)
   1.958 + * instead.
   1.959 + * Property type: Bool. Default value: false.
   1.960 + */
   1.961 +#define AI_CONFIG_IMPORT_COLLADA_USE_COLLADA_NAMES "IMPORT_COLLADA_USE_COLLADA_NAMES"
   1.962 +
   1.963 +// ---------- All the Export defines ------------
   1.964 +
   1.965 +/** @brief Specifies the xfile use double for real values of float
   1.966 + *
   1.967 + * Property type: Bool. Default value: false.
   1.968 + */
   1.969 +
   1.970 +#define AI_CONFIG_EXPORT_XFILE_64BIT "EXPORT_XFILE_64BIT"
   1.971 +
   1.972 +/**
   1.973 + *
   1.974 + */
   1.975 +#define AI_CONFIG_EXPORT_POINT_CLOUDS "EXPORT_POINT_CLOUDS"
   1.976 +
   1.977 +/**
   1.978 + *  @brief  Specifies a gobal key factor for scale, float value
   1.979 + */
   1.980 +#define AI_CONFIG_GLOBAL_SCALE_FACTOR_KEY "GLOBAL_SCALE_FACTOR"
   1.981 +
   1.982 +#if (!defined AI_CONFIG_GLOBAL_SCALE_FACTOR_DEFAULT)
   1.983 +#   define AI_CONFIG_GLOBAL_SCALE_FACTOR_DEFAULT  1.0f
   1.984 +#endif // !! AI_DEBONE_THRESHOLD
   1.985 +
   1.986 +// ---------- All the Build/Compile-time defines ------------
   1.987 +
   1.988 +/** @brief Specifies if double precision is supported inside assimp
   1.989 + *
   1.990 + * Property type: Bool. Default value: undefined.
   1.991 + */
   1.992 +
   1.993 +/* #undef ASSIMP_DOUBLE_PRECISION */
   1.994 +
   1.995 +#endif // !! AI_CONFIG_H_INC