diff --git a/Assets/Models/racoon.shmodel b/Assets/Models/racoon.shmodel index 95cb9f3f..b25e8223 100644 Binary files a/Assets/Models/racoon.shmodel and b/Assets/Models/racoon.shmodel differ diff --git a/SHADE_Engine/src/Assets/Libraries/Loaders/SHModelLoader.cpp b/SHADE_Engine/src/Assets/Libraries/Loaders/SHModelLoader.cpp index 698e8d5d..b90205bc 100644 --- a/SHADE_Engine/src/Assets/Libraries/Loaders/SHModelLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/Loaders/SHModelLoader.cpp @@ -222,6 +222,34 @@ namespace SHADE file.read(reinterpret_cast(data.VertexNormals.data()), vertexVec3Byte); file.read(reinterpret_cast(data.VertexTexCoords.data()), vertexVec2Byte); file.read(reinterpret_cast(data.Indices.data()), sizeof(uint32_t) * header.indexCount); + + std::vector boneInfos(header.boneCount); + std::vector bones(header.boneCount); + + file.read(reinterpret_cast(boneInfos.data()), sizeof(MeshBoneInfo) * header.boneCount); + + for (auto i{ 0 }; i < header.boneCount; ++i) + { + auto& bone = bones[i]; + auto const& info = boneInfos[i]; + + bone.name.resize(info.charCount); + file.read(bone.name.data(), info.charCount); + file.read(reinterpret_cast(&bone.offset), sizeof(SHMatrix)); + + uint32_t weightCount; + file.read(reinterpret_cast(&weightCount), sizeof(uint32_t)); + bone.weights.resize(weightCount); + file.read(reinterpret_cast(bone.weights.data()), sizeof(BoneWeight) * weightCount); + } + + data.VertexBoneIndices.resize(header.vertexCount); + data.VertexBoneWeights.resize(header.vertexCount); + + for (auto const& bone : bones) + { + + } meshes[i] = &data; }