diff --git a/server/gameserver/mapinstance.cc b/server/gameserver/mapinstance.cc index 0725045..8956eca 100644 --- a/server/gameserver/mapinstance.cc +++ b/server/gameserver/mapinstance.cc @@ -280,7 +280,7 @@ int MapInstance::AllocUniid() void MapInstance::OutputObjFile() { std::vector vertexs; - std::vector> faces; + std::vector> faces; vertexs.reserve(10000); for (auto& pair : uniid_hash_) { for (ColliderComponent* collider : *pair.second->GetColliders()) { @@ -299,13 +299,21 @@ void MapInstance::OutputObjFile() vert.y -= aabb_box->_max.y - aabb_box->_min.y; vertexs.push_back(vert); } + //0 1 2 faces.push_back (std::make_tuple ( - vertexs.size() - 1, - vertexs.size() - 2, - vertexs.size() - 3, - vertexs.size() - 4 + vertexs.size() - 4 + 1, + vertexs.size() - 3 + 1, + vertexs.size() - 2 + 1 + )); + //0 2 3 + faces.push_back + (std::make_tuple + ( + vertexs.size() - 4 + 1, + vertexs.size() - 2 + 1, + vertexs.size() - 1 + 1 )); } } @@ -313,20 +321,57 @@ void MapInstance::OutputObjFile() { std::string filename = a8::Format("%s.obj", {map_tpl_name_}); FILE* fp = fopen(filename.c_str(), "wb"); + #if 1 + { + vertexs.clear(); + faces.clear(); + { + a8::Vec2 vert; + vert.x = 0 - map_meta_->i->map_width() / 2.0f; + vert.y = 0 - map_meta_->i->map_height() / 2.0f; + + vertexs.push_back(vert); + vert.y += map_meta_->i->map_height(); + vertexs.push_back(vert); + vert.x += map_meta_->i->map_width(); + vertexs.push_back(vert); + vert.y -= map_meta_->i->map_height(); + vertexs.push_back(vert); + + //0 1 2 + faces.push_back + (std::make_tuple + ( + vertexs.size() - 4 + 1, + vertexs.size() - 3 + 1, + vertexs.size() - 2 + 1 + )); + //0 2 3 + faces.push_back + (std::make_tuple + ( + vertexs.size() - 4 + 1, + vertexs.size() - 2 + 1, + vertexs.size() - 1 + 1 + )); + } + } + #endif for (auto& vert : vertexs) { std::string data = a8::Format("v %f %f %f\r\n", { vert.x, + -10, vert.y, - 0 }); fwrite(data.data(), 1, data.size(), fp); } for (auto& tuple : faces) { - std::string data = a8::Format("f %d %d %d %d\r\n", + std::string data = a8::Format("f %d %d %d\r\n", { std::get<0>(tuple), std::get<1>(tuple), + std::get<2>(tuple) }); fwrite(data.data(), 1, data.size(), fp); }