From 8654276b07a01bd1ad9c3dbb66b067d155e898af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Mon, 23 Jul 2012 21:14:26 +0000 Subject: [PATCH] paysages : Small changes. git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@398 b1fd45b6-86a6-48da-8261-f70d1f35bdcc --- lib_paysages/heightmap.c | 2 +- lib_paysages/heightmap.h | 2 +- lib_paysages/terrain.c | 2 +- lib_paysages/terraincanvas.c | 14 +++++++++----- lib_paysages/terraincanvas.h | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib_paysages/heightmap.c b/lib_paysages/heightmap.c index cc253e1..1a98c16 100644 --- a/lib_paysages/heightmap.c +++ b/lib_paysages/heightmap.c @@ -87,7 +87,7 @@ void heightmapChangeResolution(HeightMap* heightmap, int resolution_x, int resol } } -double heightmapGetLimits(HeightMap* heightmap, double* ymin, double* ymax) +void heightmapGetLimits(HeightMap* heightmap, double* ymin, double* ymax) { double y; int i; diff --git a/lib_paysages/heightmap.h b/lib_paysages/heightmap.h index 5c89e6f..2683119 100644 --- a/lib_paysages/heightmap.h +++ b/lib_paysages/heightmap.h @@ -32,7 +32,7 @@ void heightmapValidate(HeightMap* heightmap); void heightmapSave(PackStream* stream, HeightMap* heightmap); void heightmapLoad(PackStream* stream, HeightMap* heightmap); -double heightmapGetLimits(HeightMap* heightmap, double* ymin, double* ymax); +void heightmapGetLimits(HeightMap* heightmap, double* ymin, double* ymax); double heightmapGetRawValue(HeightMap* heightmap, double x, double z); double heightmapGetValue(HeightMap* heightmap, double x, double z); diff --git a/lib_paysages/terrain.c b/lib_paysages/terrain.c index 592bb3f..141d0cf 100644 --- a/lib_paysages/terrain.c +++ b/lib_paysages/terrain.c @@ -156,7 +156,7 @@ Color terrainLightFilter(TerrainDefinition* definition, Renderer* renderer, Colo double inc_value, inc_base, inc_factor, height, diff, light_factor, smoothing, length; direction_to_light = v3Normalize(direction_to_light); - if (fabs(direction_to_light.x) < 0.0001 && fabs(direction_to_light.z) < 0.0001) + if ((fabs(direction_to_light.x) < 0.0001 && fabs(direction_to_light.z) < 0.0001) || definition->height_factor < 0.001) { return light; } diff --git a/lib_paysages/terraincanvas.c b/lib_paysages/terraincanvas.c index 8de4260..7f82edf 100644 --- a/lib_paysages/terraincanvas.c +++ b/lib_paysages/terraincanvas.c @@ -18,9 +18,10 @@ TerrainCanvas* terrainCanvasCreate() heightmapChangeResolution(&result->height_map, 256, 256); result->height_factor = 1.0; result->detail_noise = noiseCreateGenerator(); - noiseAddLevelsSimple(result->detail_noise, 6, 1.0, 1.0); - result->detail_height_factor = 0.002; - result->detail_scaling = 0.002; + noiseGenerateBaseNoise(result->detail_noise, 1048576); + noiseAddLevelsSimple(result->detail_noise, 5, 1.0, 1.0); + result->detail_height_factor = 0.2; + result->detail_scaling = 0.4; result->mask.mode = INTEGRATIONMASK_MODE_CIRCLE; result->mask.smoothing = 0.1; @@ -107,9 +108,12 @@ void terrainCanvasLoad(PackStream* stream, TerrainCanvas* canvas) packReadDouble(stream, &canvas->mask.smoothing); } -double terrainCanvasGetLimits(TerrainCanvas* canvas, double* ymin, double* ymax) +void terrainCanvasGetLimits(TerrainCanvas* canvas, double* ymin, double* ymax) { - return heightmapGetLimits(&canvas->height_map, ymin, ymax); + double noise_max = noiseGetMaxValue(canvas->detail_noise) * canvas->detail_height_factor; + heightmapGetLimits(&canvas->height_map, ymin, ymax); + *ymin -= noise_max; + *ymax += noise_max; } void terrainCanvasRevertToTerrain(TerrainCanvas* canvas, TerrainDefinition* terrain, int only_masked) diff --git a/lib_paysages/terraincanvas.h b/lib_paysages/terraincanvas.h index 47ffdcc..835160e 100644 --- a/lib_paysages/terraincanvas.h +++ b/lib_paysages/terraincanvas.h @@ -52,7 +52,7 @@ LayerType terrainCanvasGetLayerType(); void terrainCanvasSave(PackStream* stream, TerrainCanvas* canvas); void terrainCanvasLoad(PackStream* stream, TerrainCanvas* canvas); -double terrainCanvasGetLimits(TerrainCanvas* canvas, double* ymin, double* ymax); +void terrainCanvasGetLimits(TerrainCanvas* canvas, double* ymin, double* ymax); void terrainCanvasRevertToTerrain(TerrainCanvas* canvas, TerrainDefinition* terrain, int only_masked); Vector3 terrainCanvasApply(TerrainCanvas* canvas, Vector3 location);