73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
#include "CloudsCoveragePreviewRenderer.h"
|
|
|
|
#include "BasePreview.h"
|
|
#include "Scenery.h"
|
|
#include "CloudsDefinition.h"
|
|
#include "CloudLayerDefinition.h"
|
|
#include "CloudsRenderer.h"
|
|
|
|
CloudsCoveragePreviewRenderer::CloudsCoveragePreviewRenderer(CloudLayerDefinition* layer):
|
|
layer(layer)
|
|
{
|
|
perspective = true;
|
|
|
|
render_quality = 6;
|
|
|
|
CloudsDefinition* clouds = getScenery()->getClouds();
|
|
clouds->clear();
|
|
clouds->addLayer();
|
|
}
|
|
|
|
void CloudsCoveragePreviewRenderer::bindEvent(BasePreview* preview)
|
|
{
|
|
preview->addToggle("3d", "Perspective", perspective);
|
|
preview->configScaling(100.0, 1000.0, 20.0, 200.0);
|
|
}
|
|
|
|
void CloudsCoveragePreviewRenderer::updateEvent()
|
|
{
|
|
layer->copy(getScenery()->getClouds()->getCloudLayer(0));
|
|
prepare();
|
|
}
|
|
|
|
Color CloudsCoveragePreviewRenderer::getColor2D(double x, double y, double scaling)
|
|
{
|
|
if (perspective)
|
|
{
|
|
Vector3 eye, look;
|
|
|
|
eye.x = 0.0;
|
|
eye.y = scaling;
|
|
eye.z = -10.0 * scaling;
|
|
look.x = x * 0.01 / scaling;
|
|
look.y = -(y * 0.01 - 0.3) / scaling;
|
|
look.z = 1.0;
|
|
look = look.normalize();
|
|
|
|
return getCloudsRenderer()->getColor(eye, eye.add(look.scale(1000.0)), COLOR_BLUE);
|
|
}
|
|
else
|
|
{
|
|
Vector3 start, end;
|
|
|
|
start.x = end.x = x;
|
|
start.z = end.z = y;
|
|
start.y = 1000.0;
|
|
end.y = -1000.0;
|
|
|
|
return getCloudsRenderer()->getColor(start, end, COLOR_BLUE);
|
|
}
|
|
}
|
|
|
|
void CloudsCoveragePreviewRenderer::toggleChangeEvent(const std::string &key, bool value)
|
|
{
|
|
if (key == "3d")
|
|
{
|
|
perspective = value;
|
|
}
|
|
}
|
|
|
|
Color CloudsCoveragePreviewRenderer::applyLightingToSurface(const Vector3 &, const Vector3 &, const SurfaceMaterial &)
|
|
{
|
|
return COLOR_WHITE;
|
|
}
|