Fixed water previews

This commit is contained in:
Michaël Lemaire 2013-12-15 14:41:38 +01:00
parent 97a950947a
commit 7cda1efa54
5 changed files with 35 additions and 36 deletions

View file

@ -63,6 +63,7 @@ FormWater::~FormWater()
void FormWater::revertConfig()
{
previewCoverageRenderer->setTerrain(DesktopScenery::getCurrent()->getTerrain());
DesktopScenery::getCurrent()->getWater(_definition);
BaseForm::revertConfig();
}

View file

@ -5,36 +5,7 @@
#include "WaterDefinition.h"
#include "CameraDefinition.h"
#include "WaterRenderer.h"
/*static double _getWaterHeight(Renderer*)
{
return 0.0;
}
static void _getLightingStatus(Renderer* renderer, LightStatus* status, Vector3, int)
{
LightDefinition light;
bool lighting = *(bool*)renderer->customData[0];
light.color = COLOR_WHITE;
light.direction.x = 0.0;
light.direction.y = -0.4794;
light.direction.z = -0.8776;
light.altered = 0;
if (lighting)
{
light.reflection = 1.0;
}
else
{
light.reflection = 0.0;
}
lightingPushLight(status, &light);
}
static double _getPrecision(Renderer*, Vector3)
{
return 0.000001;
}*/
#include "LightComponent.h"
WaterAspectPreviewRenderer::WaterAspectPreviewRenderer(WaterDefinition* definition):
definition(definition)
@ -64,9 +35,23 @@ void WaterAspectPreviewRenderer::updateEvent()
getScenery()->getCamera()->setTarget(VECTOR_ZERO);
prepare();
//terrain->getWaterHeight = _getWaterHeight;
//atmosphere->getLightingStatus = _getLightingStatus;
//getPrecision = _getPrecision;
LightComponent light;
std::vector<LightComponent> lights;
light.color = COLOR_WHITE;
light.direction.x = 0.0;
light.direction.y = -0.4794;
light.direction.z = -0.8776;
light.altered = 0;
if (lighting)
{
light.reflection = 1.0;
}
else
{
light.reflection = 0.0;
}
lights.push_back(light);
disableAtmosphere(lights);
}
void WaterAspectPreviewRenderer::cameraEvent(double, double, double scaling)
@ -116,6 +101,11 @@ void WaterAspectPreviewRenderer::choiceChangeEvent(const std::string &key, int p
}
}
double WaterAspectPreviewRenderer::getPrecision(const Vector3 &location)
{
return 0.000001;
}
RayCastingResult WaterAspectPreviewRenderer::rayWalking(const Vector3 &location, const Vector3 &direction, int, int, int, int)
{
RayCastingResult result;

View file

@ -21,6 +21,7 @@ public:
virtual void toggleChangeEvent(const std::string &key, bool value) override;
virtual void choiceChangeEvent(const std::string &key, int position) override;
virtual double getPrecision(const Vector3 &location) override;
virtual RayCastingResult rayWalking(const Vector3 &location, const Vector3 &direction, int terrain, int water, int sky, int clouds) override;
private:

View file

@ -16,6 +16,12 @@ 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);
@ -36,10 +42,9 @@ void WaterCoveragePreviewRenderer::toggleChangeEvent(const std::string &key, boo
void WaterCoveragePreviewRenderer::updateEvent()
{
//RenderingScenery::getCurrent()->getTerrain(_terrain);
TerrainShapePreviewRenderer::updateEvent();
getScenery()->setWater(definition);
TerrainShapePreviewRenderer::updateEvent();
}
Color WaterCoveragePreviewRenderer::getWaterColor(double x, double y, double)

View file

@ -14,6 +14,8 @@ public:
WaterCoveragePreviewRenderer(WaterDefinition* definition);
virtual ~WaterCoveragePreviewRenderer();
void setTerrain(TerrainDefinition* terrain);
virtual void bindEvent(BasePreview* preview) override;
virtual void updateEvent() override;