64 lines
1.5 KiB
C++
64 lines
1.5 KiB
C++
#include "WaterCoveragePreviewRenderer.h"
|
|
|
|
#include "BasePreview.h"
|
|
#include "Scenery.h"
|
|
#include "TerrainDefinition.h"
|
|
#include "WaterRenderer.h"
|
|
|
|
WaterCoveragePreviewRenderer::WaterCoveragePreviewRenderer(WaterDefinition* definition):
|
|
TerrainShapePreviewRenderer(new TerrainDefinition(NULL)), definition(definition)
|
|
{
|
|
highlight = true;
|
|
}
|
|
|
|
WaterCoveragePreviewRenderer::~WaterCoveragePreviewRenderer()
|
|
{
|
|
delete TerrainShapePreviewRenderer::_terrain;
|
|
}
|
|
|
|
void WaterCoveragePreviewRenderer::setTerrain(TerrainDefinition *terrain)
|
|
{
|
|
terrain->copy(TerrainShapePreviewRenderer::_terrain);
|
|
getScenery()->setTerrain(terrain);
|
|
}
|
|
|
|
void WaterCoveragePreviewRenderer::bindEvent(BasePreview* preview)
|
|
{
|
|
TerrainShapePreviewRenderer::bindEvent(preview);
|
|
|
|
// TODO Translation
|
|
preview->addToggle("highlight", "Coverage highlight", true);
|
|
|
|
// TODO Keep camera above center (for reflections)
|
|
}
|
|
|
|
void WaterCoveragePreviewRenderer::toggleChangeEvent(const std::string &key, bool value)
|
|
{
|
|
if (key == "highlight")
|
|
{
|
|
highlight = value;
|
|
}
|
|
}
|
|
|
|
void WaterCoveragePreviewRenderer::updateEvent()
|
|
{
|
|
getScenery()->setWater(definition);
|
|
|
|
TerrainShapePreviewRenderer::updateEvent();
|
|
}
|
|
|
|
Color WaterCoveragePreviewRenderer::getWaterColor(double x, double y, double)
|
|
{
|
|
Color base;
|
|
|
|
base = getWaterRenderer()->getResult(x, y).final;
|
|
|
|
if (highlight)
|
|
{
|
|
Color mask = {0.5, 0.5, 1.0, 0.5};
|
|
base.mask(mask);
|
|
}
|
|
|
|
return base;
|
|
}
|