BFS Copy WIP
This commit is contained in:
parent
d03c12d1e2
commit
e6f6f9b0c5
|
@ -17,11 +17,24 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include <stack>
|
#include <queue>
|
||||||
|
|
||||||
namespace SH_COMP
|
namespace SH_COMP
|
||||||
{
|
{
|
||||||
|
|
||||||
|
SHMat4 aiTransformToMat4(aiMatrix4x4 const& inMatrx)
|
||||||
|
{
|
||||||
|
SHMat4 result;
|
||||||
|
|
||||||
|
std::memcpy(
|
||||||
|
reinterpret_cast<char*>(&result),
|
||||||
|
reinterpret_cast<char const*>(&inMatrx),
|
||||||
|
sizeof(result)
|
||||||
|
);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
Assimp::Importer MeshCompiler::aiImporter;
|
Assimp::Importer MeshCompiler::aiImporter;
|
||||||
uint32_t MeshCompiler::rigNodeIDCounter { 0 };
|
uint32_t MeshCompiler::rigNodeIDCounter { 0 };
|
||||||
|
|
||||||
|
@ -165,20 +178,6 @@ namespace SH_COMP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t MeshCompiler::RegisterNewNode(aiNode const& node, RigData& rig) noexcept
|
|
||||||
{
|
|
||||||
auto const result = rigNodeIDCounter++;
|
|
||||||
|
|
||||||
rig.nodeDataCollection[result].name = node.mName.C_Str();
|
|
||||||
std::memcpy(
|
|
||||||
&rig.nodeDataCollection[result].transform,
|
|
||||||
&node.mTransformation,
|
|
||||||
sizeof(SHMat4)
|
|
||||||
);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MeshCompiler::ParseAnimations(aiScene const& scene, std::vector<AnimData>& anims) noexcept
|
void MeshCompiler::ParseAnimations(aiScene const& scene, std::vector<AnimData>& anims) noexcept
|
||||||
{
|
{
|
||||||
// Size and read for number of animation clips
|
// Size and read for number of animation clips
|
||||||
|
@ -275,26 +274,15 @@ namespace SH_COMP
|
||||||
|
|
||||||
void MeshCompiler::BuildArmature(aiNode const& baseNode, RigData& rig) noexcept
|
void MeshCompiler::BuildArmature(aiNode const& baseNode, RigData& rig) noexcept
|
||||||
{
|
{
|
||||||
std::stack<std::pair<RigNode*, aiNode const*>> nodesQueue;
|
std::queue<std::pair<RigNodeData*, aiNode const&>> nodeQueue;
|
||||||
rig.root = new RigNode();
|
auto& collection = rig.nodeDataCollection;
|
||||||
rig.root->idRef = RegisterNewNode(**baseNode.mChildren, rig);
|
collection.clear();
|
||||||
nodesQueue.push({rig.root, *baseNode.mChildren});
|
|
||||||
|
|
||||||
while(!nodesQueue.empty())
|
//TODO FINISH BFS COPY
|
||||||
{
|
|
||||||
auto& rigNode { *nodesQueue.top().first };
|
|
||||||
auto const& dataNode { *nodesQueue.top().second };
|
|
||||||
nodesQueue.pop();
|
|
||||||
|
|
||||||
for (auto i{ 0 }; i < dataNode.mNumChildren; ++i)
|
while(!nodeQueue.empty())
|
||||||
{
|
{
|
||||||
rigNode.children.push_back(new RigNode());
|
|
||||||
rigNode.children[i]->idRef = RegisterNewNode(*dataNode.mChildren[i], rig);
|
|
||||||
nodesQueue.push({
|
|
||||||
rigNode.children[i],
|
|
||||||
dataNode.mChildren[i]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,6 @@ namespace SH_COMP
|
||||||
static void BuildHeaders(ModelRef asset) noexcept;
|
static void BuildHeaders(ModelRef asset) noexcept;
|
||||||
|
|
||||||
static void BuildArmature(aiNode const& node, RigData& rig) noexcept;
|
static void BuildArmature(aiNode const& node, RigData& rig) noexcept;
|
||||||
static uint32_t RegisterNewNode(aiNode const& node, RigData& rig) noexcept;
|
|
||||||
static void ParseAnimations(aiScene const& scene, std::vector<AnimData>& anims) noexcept;
|
static void ParseAnimations(aiScene const& scene, std::vector<AnimData>& anims) noexcept;
|
||||||
|
|
||||||
static void LoadFromFile(AssetPath path, ModelRef asset) noexcept;
|
static void LoadFromFile(AssetPath path, ModelRef asset) noexcept;
|
||||||
|
|
|
@ -16,6 +16,9 @@ namespace SH_COMP
|
||||||
|
|
||||||
struct RigNodeData
|
struct RigNodeData
|
||||||
{
|
{
|
||||||
|
RigNodeData(const char* cstr, SHMat4 mat)
|
||||||
|
:name {cstr}, transform{mat} {}
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
SHMat4 transform;
|
SHMat4 transform;
|
||||||
};
|
};
|
||||||
|
@ -28,6 +31,7 @@ namespace SH_COMP
|
||||||
|
|
||||||
struct RigData
|
struct RigData
|
||||||
{
|
{
|
||||||
|
RigDataHeader header;
|
||||||
std::map<uint32_t, RigNodeData> nodeDataCollection;
|
std::map<uint32_t, RigNodeData> nodeDataCollection;
|
||||||
RigNode* root;
|
RigNode* root;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue