47 #ifndef AI_SCENE_COMBINER_H_INC
48 #define AI_SCENE_COMBINER_H_INC
51 #pragma GCC system_header
54 #include <assimp/Defines.h>
55 #include <assimp/ai_assert.h>
88 attachToNode(
nullptr) {}
91 scene(_scene), attachToNode(_attachToNode) {}
101 attachToNode(
nullptr),
106 node(_scene), attachToNode(_attachToNode), resolved(
false), src_idx(idx) {}
118 #define AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES 0x1
124 #define AI_INT_MERGE_SCENE_GEN_UNIQUE_MATNAMES 0x2
129 #define AI_INT_MERGE_SCENE_DUPLICATES_DEEP_CPY 0x4
135 #define AI_INT_MERGE_SCENE_RESOLVE_CROSS_ATTACHMENTS 0x8
142 #define AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES_IF_NECESSARY 0x10
144 typedef std::pair<aiBone *, unsigned int> BoneSrcIndex;
150 std::vector<BoneSrcIndex> pSrcBones;
164 scene(_scene), idlen(0) {
168 AI_FORCE_INLINE
aiScene *operator->()
const {
182 std::set<unsigned int> hashes;
215 unsigned int flags = 0);
232 std::vector<AttachmentInfo> &src,
233 unsigned int flags = 0);
250 std::vector<aiMesh *>::const_iterator begin,
251 std::vector<aiMesh *>::const_iterator end);
262 std::vector<aiMesh *>::const_iterator end);
276 std::vector<aiMaterial *>::const_iterator begin,
277 std::vector<aiMaterial *>::const_iterator end);
287 std::vector<aiMesh *>::const_iterator it,
288 std::vector<aiMesh *>::const_iterator end);
321 std::vector<NodeAttachmentInfo> &srcList);
323 static void AttachToGraph(
aiNode *attach,
324 std::vector<NodeAttachmentInfo> &srcList);
372 static void AddNodePrefixesChecked(
aiNode *node,
const char *prefix,
374 std::vector<SceneHelper> &input,
379 static void AddNodeHashes(
aiNode *node, std::set<unsigned int> &hashes);
383 static bool FindNameMatch(
const aiString &name,
384 std::vector<SceneHelper> &input,
unsigned int cur);
389 #endif // !! AI_SCENE_COMBINER_H_INC
static void MergeMaterials(aiMaterial **dest, std::vector< aiMaterial * >::const_iterator begin, std::vector< aiMaterial * >::const_iterator end)
Definition: SceneCombiner.h:98
static void MergeScenes(aiScene **dest, std::vector< aiScene * > &src, unsigned int flags=0)
Definition: texture.h:135
static void Copy(aiMesh **dest, const aiMesh *src)
Helper data structure for SceneCombiner.
Definition: SceneCombiner.h:85
Utility for SceneCombiner.
Definition: SceneCombiner.h:156
static void MergeScenes(aiScene **dest, aiScene *master, std::vector< AttachmentInfo > &src, unsigned int flags=0)
static void MergeBones(aiMesh *out, std::vector< aiMesh * >::const_iterator it, std::vector< aiMesh * >::const_iterator end)
static void OffsetNodeMeshIndices(aiNode *node, unsigned int offset)
Helper data structure for SceneCombiner::MergeBones.
Definition: SceneCombiner.h:149
static void AddNodePrefixes(aiNode *node, const char *prefix, unsigned int len)
Data structure for a material.
Definition: material.h:672
static void CopySceneFlat(aiScene **dest, const aiScene *source)
static void MergeMeshes(aiMesh **dest, unsigned int flags, std::vector< aiMesh * >::const_iterator begin, std::vector< aiMesh * >::const_iterator end)
static void BuildUniqueBoneList(std::list< BoneWithHash > &asBones, std::vector< aiMesh * >::const_iterator it, std::vector< aiMesh * >::const_iterator end)
A single bone of a mesh.
Definition: mesh.h:264
Static helper class providing various utilities to merge two scenes. It is intended as internal utili...
Definition: SceneCombiner.h:193
An AnimMesh is an attachment to an aiMesh stores per-vertex animations for a particular frame.
Definition: mesh.h:424
static void AttachToGraph(aiScene *master, std::vector< NodeAttachmentInfo > &srcList)
Definition: ai_assert.h:50
static void CopyScene(aiScene **dest, const aiScene *source, bool allocate=true)
enum aiMorphingMethod
Definition: mesh.h:575