paysages : Small fixes.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@401 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
0ab0bd9475
commit
42daf819df
1 changed files with 42 additions and 6 deletions
|
@ -121,11 +121,31 @@ double heightmapGetValue(HeightMap* heightmap, double x, double z)
|
||||||
{
|
{
|
||||||
int xmax = heightmap->resolution_x - 1;
|
int xmax = heightmap->resolution_x - 1;
|
||||||
int zmax = heightmap->resolution_z - 1;
|
int zmax = heightmap->resolution_z - 1;
|
||||||
int xlow = floor(x * xmax);
|
int xlow;
|
||||||
int zlow = floor(z * zmax);
|
int zlow;
|
||||||
double stencil[16];
|
double stencil[16];
|
||||||
int ix, iz, cx, cz;
|
int ix, iz, cx, cz;
|
||||||
|
|
||||||
|
if (x < 0.0)
|
||||||
|
{
|
||||||
|
x = 0.0;
|
||||||
|
}
|
||||||
|
else if (x > 1.0)
|
||||||
|
{
|
||||||
|
x = 1.0;
|
||||||
|
}
|
||||||
|
if (z < 0.0)
|
||||||
|
{
|
||||||
|
z = 0.0;
|
||||||
|
}
|
||||||
|
else if (z > 1.0)
|
||||||
|
{
|
||||||
|
z = 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
xlow = floor(x * xmax);
|
||||||
|
zlow = floor(z * zmax);
|
||||||
|
|
||||||
for (ix = xlow - 1; ix <= xlow + 2; ix++)
|
for (ix = xlow - 1; ix <= xlow + 2; ix++)
|
||||||
{
|
{
|
||||||
for (iz = zlow - 1; iz <= zlow + 2; iz++)
|
for (iz = zlow - 1; iz <= zlow + 2; iz++)
|
||||||
|
@ -152,22 +172,38 @@ static inline void _getBrushBoundaries(HeightMapBrush* brush, int rx, int rz, in
|
||||||
*x2 = (int)ceil(cx + sx);
|
*x2 = (int)ceil(cx + sx);
|
||||||
*z1 = (int)floor(cz - sz);
|
*z1 = (int)floor(cz - sz);
|
||||||
*z2 = (int)ceil(cz + sz);
|
*z2 = (int)ceil(cz + sz);
|
||||||
if (*x1 < 0)
|
if (*x1 < 0)
|
||||||
{
|
{
|
||||||
*x1 = 0;
|
*x1 = 0;
|
||||||
}
|
}
|
||||||
if (*x1 > rx)
|
else if (*x1 > rx)
|
||||||
{
|
{
|
||||||
*x1 = rx;
|
*x1 = rx;
|
||||||
}
|
}
|
||||||
if (*z1 < 0)
|
if (*x2 < 0)
|
||||||
|
{
|
||||||
|
*x2 = 0;
|
||||||
|
}
|
||||||
|
else if (*x2 > rx)
|
||||||
|
{
|
||||||
|
*x2 = rx;
|
||||||
|
}
|
||||||
|
if (*z1 < 0)
|
||||||
{
|
{
|
||||||
*z1 = 0;
|
*z1 = 0;
|
||||||
}
|
}
|
||||||
if (*z1 > rz)
|
else if (*z1 > rz)
|
||||||
{
|
{
|
||||||
*z1 = rz;
|
*z1 = rz;
|
||||||
}
|
}
|
||||||
|
if (*z2 < 0)
|
||||||
|
{
|
||||||
|
*z2 = 0;
|
||||||
|
}
|
||||||
|
else if (*z2 > rz)
|
||||||
|
{
|
||||||
|
*z2 = rz;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef double (*BrushCallback)(HeightMap* heightmap, HeightMapBrush* brush, double x, double z, double basevalue, double influence, double force, void* data);
|
typedef double (*BrushCallback)(HeightMap* heightmap, HeightMapBrush* brush, double x, double z, double basevalue, double influence, double force, void* data);
|
||||||
|
|
Loading…
Reference in a new issue