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

Function parse

src/resource/mesh_animation.cpp:139–172  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

137 }
138
139 s32 parse(MeshAnimation &ma, Buffer &buf, CompileOptions &opts)
140 {
141 TempAllocator4096 ta;
142 JsonObject obj(ta);
143 RETURN_IF_ERROR(sjson::parse(obj, buf));
144
145 // Parse skeleton.
146 DynamicString target_skeleton(ta);
147 RETURN_IF_ERROR(sjson::parse_string(target_skeleton, obj["target_skeleton"]));
148 WARN_IF_MISSING(MESH_ANIMATION, "mesh_skeleton", target_skeleton.c_str(), opts);
149 opts.add_requirement("mesh_skeleton", target_skeleton.c_str());
150 ma.target_skeleton = RETURN_IF_ERROR(sjson::parse_resource_name(obj["target_skeleton"]));
151
152 // Parse animations.
153 RETURN_IF_ERROR(sjson::parse_string(ma.stack_name, obj["stack_name"]));
154
155 DynamicString source(ta);
156 if (json_object::has(obj, "source")) {
157 RETURN_IF_ERROR(sjson::parse_string(source, obj["source"]));
158
159 RETURN_IF_FILE_MISSING(MESH_ANIMATION, source.c_str(), opts);
160 Buffer fbx_buf = opts.read(source.c_str());
161 s32 err = fbx::parse(ma, fbx_buf, opts);
162 ENSURE_OR_RETURN(MESH_ANIMATION, err == 0, opts);
163 } else {
164 RETURN_IF_FALSE(MESH_ANIMATION, false
165 , opts
166 , "Unknown source mesh '%s'"
167 , source.c_str()
168 );
169 }
170
171 return generate_sorted_keys(ma);
172 }
173
174} // namespace mesh_animation
175

Callers

nothing calls this directly

Calls 7

parse_resource_nameFunction · 0.85
generate_sorted_keysFunction · 0.85
add_requirementMethod · 0.80
parse_stringFunction · 0.50
hasFunction · 0.50
c_strMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected