2015-10-18 15:26:19 +00:00
|
|
|
#ifndef VEGETATIONMODELDEFINITION_H
|
|
|
|
#define VEGETATIONMODELDEFINITION_H
|
|
|
|
|
|
|
|
#include "definition_global.h"
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
#include "DefinitionNode.h"
|
|
|
|
#include "Sphere.h"
|
|
|
|
#include "CappedCylinder.h"
|
|
|
|
#include "Disk.h"
|
|
|
|
|
|
|
|
namespace paysages {
|
|
|
|
namespace definition {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Model of vegetation.
|
|
|
|
*/
|
2015-11-09 21:38:00 +00:00
|
|
|
class DEFINITIONSHARED_EXPORT VegetationModelDefinition : public DefinitionNode {
|
|
|
|
public:
|
2015-10-18 15:26:19 +00:00
|
|
|
VegetationModelDefinition(DefinitionNode *parent);
|
|
|
|
virtual ~VegetationModelDefinition();
|
|
|
|
|
2015-11-09 21:38:00 +00:00
|
|
|
inline const SurfaceMaterial &getSolidMaterial() const {
|
|
|
|
return *solid_material;
|
|
|
|
}
|
|
|
|
inline const SurfaceMaterial &getFoliageMaterial() const {
|
|
|
|
return *foliage_material;
|
|
|
|
}
|
|
|
|
|
2015-12-13 16:16:26 +00:00
|
|
|
inline const vector<CappedCylinder> &getSolidVolumes() const {
|
2015-11-09 21:38:00 +00:00
|
|
|
return solid_volumes;
|
|
|
|
}
|
2015-12-13 16:16:26 +00:00
|
|
|
inline const vector<Sphere> &getFoliageGroups() const {
|
2015-11-09 21:38:00 +00:00
|
|
|
return foliage_groups;
|
|
|
|
}
|
2015-12-13 16:16:26 +00:00
|
|
|
inline const vector<Disk> &getFoliageItems() const {
|
2015-11-09 21:38:00 +00:00
|
|
|
return foliage_items;
|
|
|
|
}
|
2015-10-18 15:26:19 +00:00
|
|
|
|
|
|
|
virtual void save(PackStream *stream) const override;
|
|
|
|
virtual void load(PackStream *stream) override;
|
|
|
|
virtual void copy(DefinitionNode *destination) const override;
|
|
|
|
virtual void validate() override;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Randomize the model geometry.
|
|
|
|
*/
|
2015-12-10 18:48:42 +00:00
|
|
|
void randomize(RandomGenerator &random = RandomGeneratorDefault);
|
2015-10-18 15:26:19 +00:00
|
|
|
|
2015-11-09 21:38:00 +00:00
|
|
|
private:
|
2015-10-18 15:26:19 +00:00
|
|
|
SurfaceMaterial *solid_material;
|
|
|
|
SurfaceMaterial *foliage_material;
|
2015-12-13 16:16:26 +00:00
|
|
|
vector<CappedCylinder> solid_volumes;
|
|
|
|
vector<Sphere> foliage_groups;
|
|
|
|
vector<Disk> foliage_items;
|
2015-10-18 15:26:19 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // VEGETATIONMODELDEFINITION_H
|