This commit is contained in:
aozhiwei 2023-04-01 20:38:51 +08:00
parent ebc75c7de0
commit 170c5c8365
2 changed files with 23 additions and 1 deletions

View File

@ -577,7 +577,10 @@ void MapInstance::MarkMapAreaPolys()
for (int ii = 0; ii < poly->vertCount; ++ii) {
const float* vc = &tile->verts[poly->verts[ii]*3];
grass_pos_hash_.push_back
(glm::vec3(vc[0], vc[1], vc[2]));
(glm::vec3(vc[0] / GetMapMeta()->scale(),
vc[1],
vc[2] / GetMapMeta()->scale()
));
}
}
poly_ext_datas_.push_back(ext_flag);
@ -1085,3 +1088,21 @@ bool MapInstance::SceneRaycast(const glm::vec3& orig,
}
return result;
}
bool MapInstance::GetNearestGrass(const glm::vec3& center, glm::vec3& out_pt)
{
float nearest_distance = FLT_MAX;
glm::vec3* nearest_pt = nullptr;
for (auto& pt : grass_pos_hash_) {
float distance = std::fabs(pt.x - center.x) + std::fabs(pt.z - center.z);
if (distance < nearest_distance) {
nearest_distance = distance;
nearest_pt = & pt;
}
}
if (nearest_pt) {
out_pt = *nearest_pt;
return true;
}
return false;
}

View File

@ -57,6 +57,7 @@ class MapInstance : public std::enable_shared_from_this<MapInstance>
bool PtInHouse(const glm::vec3& pt, glm::vec3& nearest_pt);
bool SceneRaycast(const glm::vec3& orig, const glm::vec3& dir, float max_distance,
glm::vec3& hit_pos, float& ray_length);
bool GetNearestGrass(const glm::vec3& center, glm::vec3& out_pt);
private:
void LoadHouse();