paysages3d/src/definition/Zone.h

51 lines
1.2 KiB
C++

#ifndef ZONE_H
#define ZONE_H
#include "definition_global.h"
#include "BaseDefinition.h"
namespace paysages {
namespace definition {
class DEFINITIONSHARED_EXPORT Zone : public BaseDefinition
{
public:
Zone(BaseDefinition *parent = 0);
virtual ~Zone();
virtual void save(PackStream* stream) const override;
virtual void load(PackStream* stream) override;
virtual void copy(BaseDefinition* destination) const override;
void clear();
void setAbsoluteHeight();
void setRelativeHeight(double min, double middle, double max);
void getHeightCurve(Curve* curve) const;
void setHeightCurve(Curve* curve);
void addHeightRangeQuick(double value, double hardmin, double softmin, double softmax, double hardmax);
void getSlopeCurve(Curve* curve) const;
void setSlopeCurve(Curve* curve);
void addSlopeRangeQuick(double value, double hardmin, double softmin, double softmax, double hardmax);
double getValue(const Vector3 &location, const Vector3 &normal) const;
private:
int absolute_height;
double relative_height_min;
double relative_height_middle;
double relative_height_max;
Curve* value_by_height;
Curve* value_by_slope;
};
}
}
#endif // ZONE_H