diff --git a/server/gameserver/mapcollider.h b/server/gameserver/mapcollider.h index 40b87c47..d83a57b6 100644 --- a/server/gameserver/mapcollider.h +++ b/server/gameserver/mapcollider.h @@ -88,6 +88,7 @@ namespace mc { glm::vec3 center = glm::vec3(0.0f, 0.0f, 0.0f); glm::vec3 size = glm::vec3(0.0f, 0.0f, 0.0f); + std::vector triangles; virtual void Read(std::shared_ptr xobj) override; }; diff --git a/server/gameserver/mapinstance.cc b/server/gameserver/mapinstance.cc index 80b7484f..97f65997 100644 --- a/server/gameserver/mapinstance.cc +++ b/server/gameserver/mapinstance.cc @@ -849,7 +849,19 @@ void MapInstance::LoadHouse() tri.max_y += 1.0f; map_service_->AddTriangle(&tri); }//end for i - }//end if + } else if (c->type == mc::kBoxCollider) { + mc::BoxCollider* box_collider = (mc::BoxCollider*)c; + std::vector new_points; + mc::RotateBounds(box_collider->center, + box_collider->size, + node->transform.local_rotation, + new_points + ); + box_collider->triangles.reserve(2 * 6); + auto& tri = a8::FastAppend(box_collider->triangles); + tri.node = node; + map_service_->AddTriangle(&tri); + }//endif }//end forc things_.push_back(node); }