MCPcopy Create free account
hub / github.com/beefytech/Beef / Res_SerializeModel

Function Res_SerializeModel

BeefySysLib/gfx/ModelDef.cpp:733–775  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

731}
732
733BF_EXPORT StringView BF_CALLTYPE Res_SerializeModel(ModelDef* modelDef)
734{
735 DynMemStream ms;
736 ms.Write((int)0xBEEF0001);
737
738 for (auto& mesh : modelDef->mMeshes)
739 {
740 for (auto& prims : mesh.mPrimitives)
741 {
742 ms.Write((int)prims.mFlags);
743 ms.Write(prims.mTexPaths.mSize);
744 for (auto& path : prims.mTexPaths)
745 ms.Write(path);
746
747 ms.Write((int)prims.mIndices.mSize);
748 ms.Write(prims.mIndices.mVals, prims.mIndices.mSize * 2);
749
750 ms.Write((int)prims.mVertices.mSize);
751
752 for (int i = 0; i < prims.mVertices.mSize; i++)
753 {
754 auto& vtx = prims.mVertices[i];
755 if ((prims.mFlags & ModelPrimitives::Flags_Vertex_Position) != 0)
756 ms.WriteT(vtx.mPosition);
757 if ((prims.mFlags & ModelPrimitives::Flags_Vertex_Tex0) != 0)
758 ms.WriteT(vtx.mTexCoords);
759 if ((prims.mFlags & ModelPrimitives::Flags_Vertex_Tex1) != 0)
760 ms.WriteT(vtx.mBumpTexCoords);
761 if ((prims.mFlags & ModelPrimitives::Flags_Vertex_Color) != 0)
762 ms.WriteT(vtx.mColor);
763 if ((prims.mFlags & ModelPrimitives::Flags_Vertex_Normal) != 0)
764 ms.WriteT(vtx.mNormal);
765 if ((prims.mFlags & ModelPrimitives::Flags_Vertex_Tangent) != 0)
766 ms.WriteT(vtx.mTangent);
767 }
768 }
769 }
770
771 String& outString = *gModelDef_TLStrReturn.Get();
772 outString.Clear();
773 outString.Append((char*)ms.GetPtr(), ms.GetSize());
774 return outString;
775}

Callers

nothing calls this directly

Calls 7

AppendMethod · 0.80
WriteMethod · 0.45
WriteTMethod · 0.45
GetMethod · 0.45
ClearMethod · 0.45
GetPtrMethod · 0.45
GetSizeMethod · 0.45

Tested by

no test coverage detected