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

Function parse_actors

src/resource/physics_resource.cpp:696–749  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

694 }
695
696 s32 parse_actors(const char *json, Array<PhysicsActor> &objects, CompileOptions &opts)
697 {
698 CE_UNUSED(opts);
699
700 TempAllocator4096 ta;
701 JsonObject obj(ta);
702 RETURN_IF_ERROR(sjson::parse(obj, json));
703
704 auto cur = json_object::begin(obj);
705 auto end = json_object::end(obj);
706 for (; cur != end; ++cur) {
707 JSON_OBJECT_SKIP_HOLE(obj, cur);
708
709 const StringView key = cur->first;
710 const char *value = cur->second;
711
712 JsonObject actor(ta);
713 RETURN_IF_ERROR(sjson::parse_object(actor, value));
714
715 PhysicsActor pa;
716 pa.name = StringId32(key.data(), key.length());
717 pa.linear_damping = 0.0f;
718 pa.angular_damping = 0.0f;
719
720 if (json_object::has(actor, "linear_damping")) {
721 pa.linear_damping = RETURN_IF_ERROR(sjson::parse_float(actor["linear_damping"]));
722 }
723 if (json_object::has(actor, "angular_damping")) {
724 pa.angular_damping = RETURN_IF_ERROR(sjson::parse_float(actor["angular_damping"]));
725 }
726
727 pa.flags = 0;
728 if (json_object::has(actor, "dynamic")) {
729 bool val = RETURN_IF_ERROR(sjson::parse_bool(actor["dynamic"]));
730 pa.flags |= val ? CROWN_PHYSICS_ACTOR_DYNAMIC : 0u;
731 }
732 if (json_object::has(actor, "kinematic")) {
733 bool val = RETURN_IF_ERROR(sjson::parse_bool(actor["kinematic"]));
734 pa.flags |= val ? CROWN_PHYSICS_ACTOR_KINEMATIC : 0u;
735 }
736 if (json_object::has(actor, "disable_gravity")) {
737 bool val = RETURN_IF_ERROR(sjson::parse_bool(actor["disable_gravity"]));
738 pa.flags |= val ? CROWN_PHYSICS_ACTOR_DISABLE_GRAVITY : 0u;
739 }
740 if (json_object::has(actor, "trigger")) {
741 bool val = RETURN_IF_ERROR(sjson::parse_bool(actor["trigger"]));
742 pa.flags |= val ? CROWN_PHYSICS_ACTOR_TRIGGER : 0u;
743 }
744
745 array::push_back(objects, pa);
746 }
747
748 return 0;
749 }
750
751 struct CollisionFilterCompiler
752 {

Callers 1

compileFunction · 0.85

Calls 10

parseFunction · 0.70
beginFunction · 0.50
endFunction · 0.50
parse_objectFunction · 0.50
StringId32Class · 0.50
hasFunction · 0.50
parse_floatFunction · 0.50
parse_boolFunction · 0.50
dataMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected