2016-07-12 17:40:45 +00:00
|
|
|
#pragma once
|
2016-01-16 14:05:01 +00:00
|
|
|
|
|
|
|
#include "software_global.h"
|
|
|
|
|
|
|
|
#include "DefinitionWatcher.h"
|
|
|
|
#include "LightSource.h"
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
namespace paysages {
|
|
|
|
namespace software {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Moon renderer.
|
|
|
|
*/
|
|
|
|
class SOFTWARESHARED_EXPORT MoonRenderer : public DefinitionWatcher, public LightSource {
|
|
|
|
public:
|
|
|
|
MoonRenderer(CelestialBodyDefinition *moon_node);
|
|
|
|
virtual ~MoonRenderer();
|
|
|
|
|
2016-01-16 16:02:39 +00:00
|
|
|
virtual void nodeChanged(const DefinitionNode *node, const DefinitionDiff *diff,
|
|
|
|
const DefinitionNode *parent) override;
|
2016-01-16 14:05:01 +00:00
|
|
|
virtual bool getLightsAt(vector<LightComponent> &result, const Vector3 &location) const override;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the final moon color, given a looking ray.
|
|
|
|
*
|
|
|
|
* The result will be lighted with *lighting*.
|
|
|
|
*/
|
|
|
|
Color getColor(const Vector3 &eye, const Vector3 &direction, LightingManager *lighting) const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
class pimpl;
|
|
|
|
unique_ptr<pimpl> impl;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|