Prepared for buildings spawning
This commit is contained in:
@@ -272,5 +272,62 @@ public:
|
||||
{
|
||||
return map_sites[site].pos;
|
||||
}
|
||||
HashMap<int, PoolVector<Vector2> > polygon_cache_2d;
|
||||
inline PoolVector<Vector2> get_site_polygon_2d(int site)
|
||||
{
|
||||
if (polygon_cache_2d.has(site))
|
||||
return polygon_cache_2d[site];
|
||||
int count = 0, i;
|
||||
int psize = map_sites[site].polygon_ind.size();
|
||||
PoolVector<Vector2> polygon;
|
||||
polygon.resize(psize);
|
||||
int prev = -1;
|
||||
for (i = 0; i < psize; i++) {
|
||||
int idx = map_sites[site].polygon_ind[i];
|
||||
if (idx == prev)
|
||||
continue;
|
||||
polygon.write()[count++] = diagram_vertices[idx];
|
||||
prev = idx;
|
||||
}
|
||||
polygon.resize(count);
|
||||
polygon_cache_2d[site] = polygon;
|
||||
return polygon;
|
||||
}
|
||||
HashMap<int, PoolVector<Vector3> > polygon_cache_3d;
|
||||
inline PoolVector<Vector3> get_site_polygon_3d(int site)
|
||||
{
|
||||
if (polygon_cache_3d.has(site))
|
||||
return polygon_cache_3d[site];
|
||||
int count = 0, i;
|
||||
int psize = map_sites[site].polygon_ind.size();
|
||||
PoolVector<Vector3> polygon;
|
||||
polygon.resize(psize);
|
||||
int prev = -1;
|
||||
for (i = 0; i < psize; i++) {
|
||||
int idx = map_sites[site].polygon_ind[i];
|
||||
if (idx == prev)
|
||||
continue;
|
||||
polygon.write()[count++] = vertices[idx];
|
||||
prev = idx;
|
||||
}
|
||||
polygon.resize(count);
|
||||
polygon_cache_3d[site] = polygon;
|
||||
return polygon;
|
||||
}
|
||||
inline PoolVector<int> get_here_sites(const Vector3 &position)
|
||||
{
|
||||
PoolVector<int> ret;
|
||||
int i;
|
||||
Rect2i xpos;
|
||||
xpos.position = Vector2i((int)position.x, (int)position.z);
|
||||
xpos.grow(300);
|
||||
for (i = 0; i < map_sites.size(); i++) {
|
||||
if (xpos.intersects(map_sites[i].rect))
|
||||
ret.push_back(i);
|
||||
if (xpos.encloses(map_sites[i].rect))
|
||||
ret.push_back(i);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user