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

View File

@ -13,6 +13,17 @@ namespace mc
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
{
glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f);
@ -37,6 +48,7 @@ namespace mc
struct Collider
{
int type = kNoneCollider;
int ca_type = 0;
bool enabled = false;
bool is_trigger = false;
Bounds bounds;