game2006/server/gameserver/mt/MapCollider.cc
aozhiwei e7990ce206 1
2023-03-06 12:22:18 +08:00

63 lines
1.6 KiB
C++

#include "precompile.h"
#include <a8/xobject.h>
#include "mt/MapCollider.h"
#include "mt/MetaMgr.h"
std::vector<mt::MapCollider*> mt::MapCollider::raw_list;
std::map<std::string, mt::MapCollider*> mt::MapCollider::name_hash;
namespace mt
{
MapCollider* MapCollider::GetByName(const std::string& name)
{
auto itr = name_hash.find(name);
return itr != name_hash.end() ? itr->second : nullptr;
}
void MapCollider::StaticPostInit()
{
}
void MapCollider::LoadAll()
{
std::vector<std::string> files = {
"main3d_map.colliders.json"
};
for (auto& filename : files) {
MapCollider* p = new MapCollider();
p->Load(filename);
raw_list.push_back(p);
name_hash[filename] = p;
}
}
void MapCollider::Load(const std::string& filename)
{
#if 0
a8::XObject xobj_root;
xobj_root.ReadFromFile(MetaMgr::Instance()->GetResDir() + filename);
auto xobj_nodes = xobj_root.At("nodes");
for (int i = 0; i < xobj_nodes->Size(); ++i) {
auto xobj_node = xobj_nodes->At(i);
mc::ColliderNode* node = new mc::ColliderNode();
node->Read(xobj_node);
if (nodes_.find(node->name) != nodes_.end()) {
abort();
}
nodes_[node->name] = node;
}
#endif
}
mc::ColliderNode* MapCollider::GetNode(const std::string& name)
{
auto itr = nodes_.find(name);
return itr != nodes_.end() ? itr->second : nullptr;
}
}