11 #include <Atoms/LayoutGenerators/DynamicLayoutGenerator.h>
12 #include <AtomsUtils/Mesh.h>
13 #include <AtomsUtils/Image.h>
34 virtual std::vector<Atoms::AgentInitData>
generate(
double time)
41 inline void setDefaultRadius(
double radius){m_defaultRadius = radius;}
42 inline void setDensityMap(
AtomsUtils::Image* densityMap){m_densityMap = densityMap;}
43 inline void setMaxRadius(
double radius){m_maxRadius = radius;}
44 inline void setUseDensityMap(
bool state){m_useDensityMap = state;}
45 inline void setRandomizeRadius(
bool state){m_randomizeRadius = state;}
46 inline void setIterations(
int iterations){m_iterations = iterations;}
47 inline void setDirection(
const AtomsMath::Vector3f &direction){m_direction = direction;}
48 inline void setRandomDirection(
const AtomsMath::Vector3f &randomDirection) { m_randomDirection = randomDirection; }
49 inline void setUpVector(
const AtomsMath::Vector3f &direction) { m_upVector = direction; }
50 inline void setScale(
const AtomsMath::Vector3f &direction) { m_scale = direction; }
51 inline void setMeshMatrix(
const AtomsMath::Matrix &matrix){m_meshMatrix = matrix;}
52 inline void setRandomSeed(
unsigned int seed){m_randomSeed = seed;}
53 inline void setEraseMap(
AtomsUtils::Image* densityMap) { m_eraseMap = densityMap; }
54 inline void setEraseThreshold(
double radius) { m_eraseThreshold = radius; }
55 inline void setUseEraseMap(
bool state) { m_useEraseMap = state; }
56 inline void useNormalAsUpVector(
bool value) { m_useNormalAsUp = value; }
57 inline void setUseNavMesh(
bool value) { m_useNavMesh = value; }
58 inline void setNavMeshName(
const std::string & value) { m_navMeshName = value; };
59 inline void setClamp(
const bool useClampVector,
const AtomsCore::Vector3 &clampVector,
const double clampAngle) { m_useClampVector = useClampVector; m_clampVector = clampVector; m_clampAngle = clampAngle;}
60 inline void setOtherSamples(
const std::vector<AtomsCore::Vector3> &otherSamples) { m_otherSamples = otherSamples; }
61 inline void setAgentMaxNum(
const int agentMaxNum) { m_agentMaxNum = agentMaxNum; }
63 inline const std::map<int, std::string>& agentTypeOverride()
const {
return m_agentTypeOverride; };
65 inline void setAgentTypeOverride(
const std::map<int, std::string>& value) { m_agentTypeOverride = value; }
67 inline const std::map<int, AtomsCore::Vector3>& directionOverride()
const {
return m_directionOverride; };
69 inline void setDirectionOverride(
const std::map<int, AtomsCore::Vector3>& value) { m_directionOverride = value; }
71 inline const std::map<int, AtomsCore::Vector3>& upVectorOverride()
const {
return m_upVectorOverride; };
73 inline void setUpVectorOverride(
const std::map<int, AtomsCore::Vector3>& value) { m_upVectorOverride = value; }
75 inline const std::map<int, AtomsCore::Vector3>& scaleOverride()
const {
return m_scaleOverride; };
77 inline void setScaleOverride(
const std::map<int, AtomsCore::Vector3>& value) { m_scaleOverride = value; }
79 inline const char*
typeName()
override {
return "meshScatter"; };
84 double m_defaultRadius;
86 double m_eraseThreshold;
90 AtomsMath::Vector3 m_direction;
91 AtomsMath::Vector3 m_randomDirection;
92 AtomsMath::Vector3 m_upVector;
93 AtomsMath::Vector3 m_scale;
94 AtomsMath::Vector3 m_clampVector;
95 AtomsMath::Matrix m_meshMatrix;
97 unsigned int m_randomSeed;
99 bool m_randomizeRadius;
100 bool m_useDensityMap;
102 bool m_useNormalAsUp;
104 bool m_useClampVector;
105 std::string m_navMeshName;
107 AtomsCore::Rand48 m_random;
109 std::vector<AtomsCore::Vector3> m_otherSamples;
110 std::map<int, std::string> m_agentTypeOverride;
111 std::map<int, AtomsCore::Vector3> m_directionOverride;
112 std::map<int, AtomsCore::Vector3> m_upVectorOverride;
113 std::map<int, AtomsCore::Vector3> m_scaleOverride;