This commit is contained in:
aozhiwei 2023-02-07 12:09:24 +08:00
parent efbef8c795
commit 54a3bf530c
2 changed files with 18 additions and 0 deletions

View File

@ -35,6 +35,10 @@ namespace mc
void Collider::Read(std::shared_ptr<a8::XObject> xobj) void Collider::Read(std::shared_ptr<a8::XObject> xobj)
{ {
ca_type = xobj->At("ca_type")->AsXValue();
if (ca_type < kCA_Floor || ca_type > kCA_Other) {
abort();
}
enabled = xobj->At("enabled")->AsXValue(); enabled = xobj->At("enabled")->AsXValue();
is_trigger = xobj->At("is_trigger")->AsXValue(); is_trigger = xobj->At("is_trigger")->AsXValue();
Bounds_Read(bounds, xobj->At("bounds")); Bounds_Read(bounds, xobj->At("bounds"));
@ -79,6 +83,7 @@ namespace mc
case kBoxCollider: case kBoxCollider:
{ {
Collider* c = new BoxCollider(); Collider* c = new BoxCollider();
c->type = kBoxCollider;
c->Read(collider_union_xobj->At("box")); c->Read(collider_union_xobj->At("box"));
colliders.push_back(c); colliders.push_back(c);
} }
@ -86,6 +91,7 @@ namespace mc
case kMeshCollider: case kMeshCollider:
{ {
Collider* c = new MeshCollider(); Collider* c = new MeshCollider();
c->type = kMeshCollider;
c->Read(collider_union_xobj->At("mesh")); c->Read(collider_union_xobj->At("mesh"));
colliders.push_back(c); colliders.push_back(c);
} }

View File

@ -13,6 +13,17 @@ namespace mc
kMeshCollider = 2 kMeshCollider = 2
}; };
enum ColliderAssembly_e
{
kCA_Floor = 0,//地板
kCA_Wall = 1,//墙壁
kCA_Roof = 2,//屋顶
kCA_FloororRoof = 3,//屋顶+上层地板
kCA_stairs = 4,//楼梯
kCA_Window = 9,//窗,主要为了射击穿透
kCA_Other = 10,//其他,装饰品
};
struct Bounds struct Bounds
{ {
glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f); glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f);
@ -37,6 +48,7 @@ namespace mc
struct Collider struct Collider
{ {
int type = kNoneCollider; int type = kNoneCollider;
int ca_type = 0;
bool enabled = false; bool enabled = false;
bool is_trigger = false; bool is_trigger = false;
Bounds bounds; Bounds bounds;