This commit is contained in:
aozhiwei 2023-03-31 11:34:24 +08:00
parent 89e9679631
commit c4fb2256bd
2 changed files with 35 additions and 4 deletions

View File

@ -162,9 +162,33 @@ void MapService::AddTriangle(mc::Triangle* tri)
aabb_verts[11] = world_y + cell_width_;
}
{
glm::vec3 a[3 * 2];
a[0] = glm::vec3(0.0f, 0.0f, 0.0f);
glm::vec3 t1[3] = {tri->vert0, tri->vert1, tri->vert2};
glm::vec3 tmp_verts[4];
for (int i = 0; i < 4; ++i) {
tmp_verts[i] = glm::vec3(aabb_verts[i * 3 + 0],
aabb_verts[i * 3 + 1],
aabb_verts[i * 3 + 2]);
}
glm::vec3 t2[3] = {
tmp_verts[0],
tmp_verts[1],
tmp_verts[2]};
glm::vec3 t3[3] = {
tmp_verts[0],
tmp_verts[2],
tmp_verts[3]};
if (TriIntersect(t1, t2) || TriIntersect(t1, t3)) {
int grid_id = x + y * map_width_;
list_head* head = &map_cells_[grid_id];
CellNode* node = new CellNode();
node->tri = tri;
list_add_tail(&node->entry, head);
found = true;
}
}
#if 0
if (dtOverlapPolyPoly2D(tri_verts, 3, aabb_verts, 4)) {
@ -178,9 +202,11 @@ void MapService::AddTriangle(mc::Triangle* tri)
#endif
}
}
#if 0
if (!found) {
abort();
}
#endif
}
}
@ -204,8 +230,13 @@ void MapService::GetGridList(int grid_id, list_head* grid_list[9], int& grid_cou
}
}
bool MapService::TriIntersect(const glm::vec3 t1[3], const glm::vec3 t2[3])
bool MapService::TriIntersect(glm::vec3 t1[3], glm::vec3 t2[3])
{
return true;
for (int i = 0; i < 3; ++i) {
t1[i].y = 0.0f;
t2[i].y = 0.0f;
}
glm::vec2 bary_position;
float distance;
for (int v = 0; v < 3; ++v) {

View File

@ -27,7 +27,7 @@ class MapService
void AddTriangle(mc::Triangle* tri);
int GetGridId(float world_x, float world_y);
void GetGridList(int grid_id, list_head* grid_list[9], int& grid_count);
bool TriIntersect(const glm::vec3 t1[3], const glm::vec3 t2[3]);
bool TriIntersect(glm::vec3 t1[3], glm::vec3 t2[3]);
private:
list_head* map_cells_ = nullptr;