#ifndef VEGETATIONMODELDEFINITION_H #define VEGETATIONMODELDEFINITION_H #include "definition_global.h" #include #include "DefinitionNode.h" #include "Sphere.h" #include "CappedCylinder.h" #include "Disk.h" namespace paysages { namespace definition { /** * Model of vegetation. */ class DEFINITIONSHARED_EXPORT VegetationModelDefinition: public DefinitionNode { public: VegetationModelDefinition(DefinitionNode *parent); virtual ~VegetationModelDefinition(); inline const std::vector &getSolidVolumes() const {return solid_volumes;} inline const std::vector &getFoliageGroups() const {return foliage_groups;} inline const std::vector &getFoliageItems() const {return foliage_items;} 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. */ void randomize(); private: SurfaceMaterial *solid_material; SurfaceMaterial *foliage_material; std::vector solid_volumes; std::vector foliage_groups; std::vector foliage_items; }; } } #endif // VEGETATIONMODELDEFINITION_H