2013-11-16 18:12:42 +00:00
|
|
|
#ifndef ZONE_H
|
|
|
|
#define ZONE_H
|
|
|
|
|
|
|
|
#include "definition_global.h"
|
|
|
|
|
2015-08-12 20:21:10 +00:00
|
|
|
#include "DefinitionNode.h"
|
2013-11-16 18:12:42 +00:00
|
|
|
|
|
|
|
namespace paysages {
|
|
|
|
namespace definition {
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
class DEFINITIONSHARED_EXPORT Zone : public DefinitionNode {
|
|
|
|
public:
|
2015-08-12 20:21:10 +00:00
|
|
|
Zone(DefinitionNode *parent = 0);
|
2013-11-16 18:12:42 +00:00
|
|
|
virtual ~Zone();
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
virtual void save(PackStream *stream) const override;
|
|
|
|
virtual void load(PackStream *stream) override;
|
2013-11-16 18:12:42 +00:00
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
virtual void copy(DefinitionNode *destination) const override;
|
2013-11-16 18:12:42 +00:00
|
|
|
|
|
|
|
void clear();
|
|
|
|
|
|
|
|
void setAbsoluteHeight();
|
|
|
|
void setRelativeHeight(double min, double middle, double max);
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
void getHeightCurve(Curve *curve) const;
|
|
|
|
void setHeightCurve(Curve *curve);
|
2013-11-16 18:12:42 +00:00
|
|
|
void addHeightRangeQuick(double value, double hardmin, double softmin, double softmax, double hardmax);
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
void getSlopeCurve(Curve *curve) const;
|
|
|
|
void setSlopeCurve(Curve *curve);
|
2013-11-16 18:12:42 +00:00
|
|
|
void addSlopeRangeQuick(double value, double hardmin, double softmin, double softmax, double hardmax);
|
|
|
|
|
|
|
|
double getValue(const Vector3 &location, const Vector3 &normal) const;
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
private:
|
2013-11-16 18:12:42 +00:00
|
|
|
int absolute_height;
|
|
|
|
double relative_height_min;
|
|
|
|
double relative_height_middle;
|
|
|
|
double relative_height_max;
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
Curve *value_by_height;
|
|
|
|
Curve *value_by_slope;
|
2013-11-16 18:12:42 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // ZONE_H
|