paysages3d/src/definition/VegetationModelDefinition.h
Michaël Lemaire 4a710c0977 Merge branch 'master' into vegetation
Conflicts:
	src/interface/commandline/tests.cpp
	src/render/opengl/OpenGLPart.h
	src/render/opengl/OpenGLRenderer.cpp
	src/render/opengl/OpenGLRenderer.h
	src/render/opengl/OpenGLShaderProgram.h
	src/render/opengl/OpenGLSharedState.h
	src/render/software/SoftwareCanvasRenderer.h
2015-12-13 17:16:26 +01:00

61 lines
1.5 KiB
C++

#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.
*/
class DEFINITIONSHARED_EXPORT VegetationModelDefinition : public DefinitionNode {
public:
VegetationModelDefinition(DefinitionNode *parent);
virtual ~VegetationModelDefinition();
inline const SurfaceMaterial &getSolidMaterial() const {
return *solid_material;
}
inline const SurfaceMaterial &getFoliageMaterial() const {
return *foliage_material;
}
inline const vector<CappedCylinder> &getSolidVolumes() const {
return solid_volumes;
}
inline const vector<Sphere> &getFoliageGroups() const {
return foliage_groups;
}
inline const vector<Disk> &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(RandomGenerator &random = RandomGeneratorDefault);
private:
SurfaceMaterial *solid_material;
SurfaceMaterial *foliage_material;
vector<CappedCylinder> solid_volumes;
vector<Sphere> foliage_groups;
vector<Disk> foliage_items;
};
}
}
#endif // VEGETATIONMODELDEFINITION_H