MCPcopy Create free account
hub / github.com/crownengine/crown / load

Function load

src/resource/mesh_resource.cpp:82–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80namespace mesh_resource_internal
81{
82 void *load(File &file, Allocator &a)
83 {
84 BinaryReader br(file);
85
86 u32 version;
87 br.read(version);
88 CE_ASSERT(version == RESOURCE_HEADER(RESOURCE_VERSION_MESH), "Wrong version");
89
90 u32 num_geoms;
91 br.read(num_geoms);
92
93 MeshResource *mr = CE_NEW(a, MeshResource)(a);
94
95 for (u32 i = 0; i < num_geoms; ++i) {
96 u32 num_names;
97 br.read(num_names);
98
99 for (u32 j = 0; j < num_names; ++j) {
100 StringId32 name;
101 br.read(name);
102
103 array::push_back(mr->nodes, { name, i });
104 }
105
106 bgfx::VertexLayout layout;
107 BgfxReader reader(br);
108 bgfx::read(&reader, layout);
109
110 OBB obb;
111 br.read(obb);
112
113 Sphere sphere;
114 br.read(sphere);
115
116 u32 num_verts;
117 br.read(num_verts);
118
119 u32 stride;
120 br.read(stride);
121
122 u32 num_inds;
123 br.read(num_inds);
124
125 const u32 vsize = num_verts*stride;
126 const u32 isize = num_inds*sizeof(u16);
127
128 const u32 size = sizeof(MeshGeometry) + vsize + isize;
129
130 MeshGeometry *mg = (MeshGeometry *)a.allocate(size);
131 mg->obb = obb;
132 mg->sphere = sphere;
133 mg->layout = layout;
134 mg->vertex_buffer = BGFX_INVALID_HANDLE;
135 mg->index_buffer = BGFX_INVALID_HANDLE;
136 mg->vertices.num = num_verts;
137 mg->vertices.stride = stride;
138 mg->vertices.data = (char *)&mg[1];
139 mg->indices.num = num_inds;

Callers 1

has_loadedMethod · 0.70

Calls 3

readFunction · 0.50
readMethod · 0.45
allocateMethod · 0.45

Tested by

no test coverage detected