* Building should work now without 'ground not flat' message
parent
4e4046f843
commit
2db419a1e0
|
@ -1716,22 +1716,22 @@ float CTerrain::GetFlatZoneRadius(Math::Vector center, float max)
|
||||||
return 0.0f;
|
return 0.0f;
|
||||||
|
|
||||||
float ref = GetFloorLevel(center, true);
|
float ref = GetFloorLevel(center, true);
|
||||||
|
Math::Point c(center.x, center.z);
|
||||||
float radius = 1.0f;
|
float radius = 1.0f;
|
||||||
|
|
||||||
while (radius <= max)
|
while (radius <= max)
|
||||||
{
|
{
|
||||||
angle = 0.0f;
|
angle = 0.0f;
|
||||||
int nb = static_cast<int>(2.0f*Math::PI*radius);
|
int nb = static_cast<int>(2.0f*Math::PI*radius);
|
||||||
if (nb < 8) nb = 8;
|
if (nb < 8) nb = 8;
|
||||||
|
|
||||||
|
Math::Point p (center.x+radius, center.z);
|
||||||
for (int i = 0; i < nb; i++)
|
for (int i = 0; i < nb; i++)
|
||||||
{
|
{
|
||||||
Math::Point c(center.x, center.z);
|
Math::Point result = Math::RotatePoint(c, angle, p);
|
||||||
Math::Point p (center.x+radius, center.z);
|
|
||||||
p = Math::RotatePoint(c, angle, p);
|
|
||||||
Math::Vector pos;
|
Math::Vector pos;
|
||||||
pos.x = p.x;
|
pos.x = result.x;
|
||||||
pos.z = p.y;
|
pos.z = result.y;
|
||||||
float h = GetFloorLevel(pos, true);
|
float h = GetFloorLevel(pos, true);
|
||||||
if ( fabs(h-ref) > 1.0f ) return radius;
|
if ( fabs(h-ref) > 1.0f ) return radius;
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ class CWater;
|
||||||
|
|
||||||
|
|
||||||
//! Limit of slope considered a flat piece of land
|
//! Limit of slope considered a flat piece of land
|
||||||
const short TERRAIN_FLATLIMIT = (5.0f*Math::PI/180.0f);
|
const float TERRAIN_FLATLIMIT = (5.0f*Math::PI/180.0f);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue