paysages3d/src/render/preview/WaterCoveragePreviewRenderer.cpp

61 lines
1.4 KiB
C++
Raw Normal View History

2013-11-20 12:06:16 +00:00
#include "WaterCoveragePreviewRenderer.h"
#include "BasePreview.h"
#include "Scenery.h"
// TEMP
#include "RenderingScenery.h"
#include "terrain/public.h"
#include "water/public.h"
WaterCoveragePreviewRenderer::WaterCoveragePreviewRenderer(WaterDefinition* definition):
definition(definition)
{
highlight = true;
}
void WaterCoveragePreviewRenderer::bindEvent(BasePreview* preview)
{
preview->addOsd("geolocation");
// TODO Translation
preview->addToggle("highlight", "Coverage highlight", true);
preview->configScaling(20.0, 1000.0, 20.0, 200.0);
preview->configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0);
// TODO Keep camera above center (for reflections)
}
void WaterCoveragePreviewRenderer::updateEvent()
{
getScenery()->setTerrain(RenderingScenery::getCurrent()->getTerrain());
getScenery()->setWater(definition);
prepare();
terrainAlterPreviewRenderer(this);
}
Color WaterCoveragePreviewRenderer::getColor2D(double x, double y, double scaling)
{
double height;
height = terrain->getHeight(this, x, y, 1);
if (height > terrain->getWaterHeight(this))
{
return terrainGetPreviewColor(this, x, y, scaling);
}
else
{
Color base;
base = water->getResult(this, x, y).final;
if (highlight)
{
Color mask = {0.5, 0.5, 1.0, 0.5};
colorMask(&base, &mask);
}
return base;
}
}