|
Atoms Crowd
4.1.0
|
10 #include <Atoms/Globals.h>
11 #include <AtomsCore/Hash.h>
12 #include <AtomsUtils/Logger.h>
22 class AgentTypeVariation;
23 class VariationGeometry;
24 class VariationMaterial;
26 class VariationGroupLod;
27 class VariationMaterialColor;
54 m_geometryFilter(
"*") {}
63 void setGeometryFile(
const std::string& geometryFile) { m_geometryFile = geometryFile; };
77 std::string m_geometryFile;
80 std::string m_geometryFilter;
96 void setRed(
const int red) { m_red = red > 255 ? 255 : red < 0 ? 0 : red; }
98 void setGreen(
const int green) { m_green = green > 255 ? 255 : green < 0 ? 0 : green; }
100 void setBlue(
const int blue) { m_blue = blue > 255 ? 255 : blue < 0 ? 0 : blue; }
102 unsigned int getRed()
const {
return m_red; }
103 unsigned int getGreen()
const {
return m_green; }
104 unsigned int getBlue()
const {
return m_blue; }
111 unsigned int m_green;
125 m_diffuseWeight(1.0f),
126 m_specularWeight(0.0f),
127 m_specularRollOff(0.7f),
128 m_specularEccentricity(0.3f)
130 m_diffuseFiles.resize(1);
131 m_diffuseRGBs.resize(1);
141 void setDiffuseSlotSize(
unsigned int size) {
if (size > 1) { m_diffuseFiles.resize(size); m_diffuseRGBs.resize(size); } }
147 const std::string&
getDiffuseFile(
unsigned int index = 0)
const {
return m_diffuseFiles[index]; };
156 void setMaterialFile(
const std::string& materialFile) { m_materialFile = materialFile; };
159 void setDiffuseFile(
const std::string& diffuseFile,
unsigned int index = 0) { m_diffuseFiles[index] = diffuseFile; };
162 void setSpecularFile(
const std::string& specularFile) { m_specularFile = specularFile; };
165 void setNormalMapFile(
const std::string& normalMapFile) { m_normalMapFile = normalMapFile; };
239 std::string m_materialFile;
242 std::vector<std::string> m_diffuseFiles;
245 std::string m_specularFile;
248 std::string m_normalMapFile;
251 float m_diffuseWeight;
254 float m_specularWeight;
257 float m_specularRollOff;
260 float m_specularEccentricity;
266 std::vector<VariationMaterialColor> m_diffuseRGBs;
286 inline void clear() { m_combinations.clear(); }
289 unsigned int numCombinations()
const {
return static_cast<unsigned int>(m_combinations.size()); }
292 inline bool hasCombination(
const std::string &geometryName,
const std::string &materialName);
295 void addCombination(
const std::string &geometryName,
const std::string &materialName);
298 inline const std::pair<std::string, std::string>& getCombinationAtIndex(
unsigned int index)
const;
301 inline bool removeCombinationAtIndex(
unsigned int index);
314 std::vector<std::pair<std::string, std::string>> m_combinations;
317 std::pair<std::string, std::string> m_emptyPair;
338 inline void clear() { m_combinations.clear(); }
341 unsigned int numCombinations()
const {
return static_cast<unsigned int>(m_combinations.size()); }
344 inline bool hasCombination(
const std::string &geometryName,
const std::string &materialName);
347 void addCombination(
const std::string &geometryName,
const std::string &materialName);
350 inline const std::pair<std::string, std::string>& getCombinationAtIndex(
unsigned int index)
const;
353 inline bool removeCombinationAtIndex(
unsigned int index);
356 inline std::vector<std::string> getLodNames()
const;
359 inline bool hasLod(
const std::string& name)
const {
return m_lods.find(name) != m_lods.end(); }
368 inline bool removeLod(
const std::string &name);
384 std::vector<std::pair<std::string, std::string>> m_combinations;
387 std::pair<std::string, std::string> m_emptyPair;
390 std::map<std::string, VariationGroupLod> m_lods;
392 std::string m_thumbnailPath;
416 inline std::vector<std::string> getGeometryNames()
const;
419 inline std::vector<std::string> getMaterialNames()
const;
422 inline std::vector<std::string> getGroupNames()
const;
443 inline void setLookFile(
const std::string &path) { m_lookFile = path; }
461 inline const std::string &
getLookFile()
const {
return m_lookFile; }
464 inline bool hasGeometry(
const std::string &name)
const {
return m_geos.find(name) != m_geos.end(); }
467 inline bool hasMaterial(
const std::string &name)
const {
return m_mats.find(name) != m_mats.end(); }
470 inline bool hasGroup(
const std::string &name)
const {
return m_groups.find(name) != m_groups.end(); }
473 inline bool removeGeometry(
const std::string &name);
476 inline bool removeMaterial(
const std::string &name);
479 inline bool removeGroup(
const std::string &name);
482 inline bool removeAllGroups();
490 std::map<std::string, VariationGeometry> m_geos;
493 std::map<std::string, VariationMaterial> m_mats;
496 std::map<std::string, VariationGroup> m_groups;
499 std::string m_clothSetup;
502 std::string m_lookFile;
519 void clear() { m_agentTypeVariations.clear(); };
522 inline std::vector<std::string> getAgentTypeNames()
const;
534 inline bool hasAgentTypeVariation(
const std::string &agentTypeName) {
return m_agentTypeVariations.find(agentTypeName) != m_agentTypeVariations.end(); }
537 inline bool removeAgentTypeVariation(
const std::string &agentTypeName);
543 std::string
toString(
const bool prettyprint =
false);
548 inline size_t size()
const;
553 std::map<std::string, AgentTypeVariation> m_agentTypeVariations;
557 #include <Atoms/Variations.impl.h>
void setSpecularColorRed(const int red)
Sets the specular red value.
Definition: Variations.h:204
const std::string & getDiffuseFile(unsigned int index=0) const
Gets the diffuse texture path.
Definition: Variations.h:147
void setLod(const std::string &name, const VariationGroupLod &v)
Sets a lod.
Definition: Variations.h:371
VariationGroupLod * VariationGroupLodPtr
variation group lod pointer
Definition: Variations.h:34
const std::string & getGeometryFilter() const
Gets the geometry filter.
Definition: Variations.h:66
Variation Material.
Definition: Variations.h:121
void setNormalMapFile(const std::string &normalMapFile)
Sets the normal file path.
Definition: Variations.h:165
void clear()
Clears all combinations.
Definition: Variations.h:338
VariationGroup(AgentTypeVariationCPtr agentTypeVariation)
Constructor.
Definition: Variations.h:329
void setSpecularColorBlue(const int blue)
Sets the specular blue value.
Definition: Variations.h:210
Agent type variation class.
Definition: Variations.h:401
~AgentTypeVariation()
Destructor.
Definition: Variations.h:407
unsigned int getSpecularColorRed() const
Gets the specular red value.
Definition: Variations.h:195
Variations * VariationsPtr
variations pointer
Definition: Variations.h:27
void setGeometryFilter(const std::string &filter)
Sets the geometry file path.
Definition: Variations.h:69
AgentTypeVariation()
Constructor.
Definition: Variations.h:404
void setDiffuseColorRed(const int red)
Sets the diffuse red value.
Definition: Variations.h:183
float getDiffuseWeight() const
Gets the diffuse weight.
Definition: Variations.h:214
Variations()
Constructor.
Definition: Variations.h:513
unsigned int getDiffuseSlotSize() const
Set diffuse slot size.
Definition: Variations.h:144
const VariationMaterialColor & getDiffuseColor(unsigned int index=0) const
Gets the diffuse color.
Definition: Variations.h:168
const std::string & getSpecularFile() const
Gets the specural file path.
Definition: Variations.h:150
void addCombination(const std::string &geometryName, const std::string &materialName)
Adds a combination.
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
void setDiffuseColorGreen(const int green)
Sets the diffuse green value.
Definition: Variations.h:186
float getSpecularRollOff() const
Gets the specular rolloff.
Definition: Variations.h:224
void setDiffuseSlotSize(unsigned int size)
Set diffuse slot size.
Definition: Variations.h:141
Variations class.
Definition: Variations.h:509
void setSpecularEccentricity(float value)
Sets the specular eccentricity.
Definition: Variations.h:231
Variation Material Color.
Definition: Variations.h:87
void setAgentTypeVariation(const std::string &agentTypeName, const AgentTypeVariation &atv)
Sets an agent type variation.
Definition: Variations.h:528
bool writeToFile(const std::string &filePath)
Write the agent variations map to a file.
const VariationGeometry * VariationGeometryCPtr
variation geometry const pointer
Definition: Variations.h:39
unsigned int getDiffuseColorRed() const
Gets the diffuse red value.
Definition: Variations.h:174
bool hasLod(const std::string &name) const
Checks if a lod exists.
Definition: Variations.h:359
bool hasGeometry(const std::string &name) const
Checks if this object contains a geometry.
Definition: Variations.h:464
void setGreen(const int green)
Sets the diffuse green value.
Definition: Variations.h:98
bool hasGroup(const std::string &name) const
Checks if this object contains a group.
Definition: Variations.h:470
void setDiffuseColorBlue(const int blue)
Sets the diffuse blue value.
Definition: Variations.h:189
const std::string & getMaterialFile() const
Gets the material file path.
Definition: Variations.h:138
VariationGeometry()
Constructor.
Definition: Variations.h:53
VariationMaterial & getMaterial(const std::string &name)
Gets a material.
Definition: Variations.h:428
VariationGroup & getGroup(const std::string &name)
Gets a group.
VariationGeometry & getGeometry(const std::string &name)
Gets a geometry.
Definition: Variations.h:425
const VariationGroup * VariationGroupCPtr
variation group const pointer
Definition: Variations.h:41
const Variations * VariationsCPtr
variations const pointer
Definition: Variations.h:37
unsigned int getSpecularColorBlue() const
Gets the specular blue value.
Definition: Variations.h:201
bool hasAgentTypeVariation(const std::string &agentTypeName)
Checks if an agent type variation exists.
Definition: Variations.h:534
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
float getSpecularEccentricity() const
Gets the specular eccentricity.
Definition: Variations.h:229
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
~VariationMaterial()
Destructor.
Definition: Variations.h:135
void setRed(const int red)
Sets the diffuse red value.
Definition: Variations.h:96
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
void addCombination(const std::string &geometryName, const std::string &materialName)
Adds a combination.
VariationGroup(AgentTypeVariationCPtr agentTypeVariation, const VariationGroup &vg)
Constructor.
void setSpecularWeight(float value)
Sets the specular weight.
Definition: Variations.h:221
AgentTypeVariation * AgentTypeVariationPtr
agent type variation pointer
Definition: Variations.h:30
Atoms namespace.
Definition: Agent.h:28
void setBlue(const int blue)
Sets the diffuse blue value.
Definition: Variations.h:100
const std::string & getNormalMapFile() const
Gets the normal file path.
Definition: Variations.h:153
const std::string & getGeometryFile() const
Gets the geometry file path.
Definition: Variations.h:60
void setLookFile(const std::string &path)
Sets look file.
Definition: Variations.h:443
~Variations()
Destructor.
Definition: Variations.h:516
~VariationGroup()
Destructor.
Definition: Variations.h:335
void setSpecularRollOff(float value)
Sets the specular rolloff.
Definition: Variations.h:226
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
~VariationGeometry()
Destructor.
Definition: Variations.h:57
void setMaterialFile(const std::string &materialFile)
Sets the material file path.
Definition: Variations.h:156
unsigned int numCombinations() const
Gets the number of combinations.
Definition: Variations.h:341
void setGroup(const std::string &name, const VariationGroup &v)
Sets a group.
Definition: Variations.h:446
void setSpecularFile(const std::string &specularFile)
Sets the specural file path.
Definition: Variations.h:162
const std::string & getLookFile() const
Gets look file.
Definition: Variations.h:461
VariationGroupLod(AgentTypeVariationCPtr agentTypeVariation)
Constructor.
Definition: Variations.h:277
unsigned int numCombinations() const
Gets the number of combinations.
Definition: Variations.h:289
Variation group lod class.
Definition: Variations.h:274
VariationMaterial * VariationMaterialPtr
variation material pointer
Definition: Variations.h:32
const VariationMaterial * VariationMaterialCPtr
variation material const pointer
Definition: Variations.h:40
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
const VariationMaterialColor * VariationMaterialColorCPtr
variation material color const pointer
Definition: Variations.h:43
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
void setMaterial(const std::string &name, const VariationMaterial &v)
Sets a material.
Definition: Variations.h:437
bool hasMaterial(const std::string &name) const
Checks if this object contains a material.
Definition: Variations.h:467
const AgentTypeVariation * AgentTypeVariationCPtr
agent type const pointer
Definition: Variations.h:38
void setGeometryFile(const std::string &geometryFile)
Sets the geometry file path.
Definition: Variations.h:63
VariationMaterial()
Constructor.
Definition: Variations.h:124
VariationGroupLod & getLod(const std::string &name)
Gets a lod variation group.
VariationGroupLod(AgentTypeVariationCPtr agentTypeVariation, const VariationGroupLod &lod)
Constructor.
void setDiffuseFile(const std::string &diffuseFile, unsigned int index=0)
Sets the diffuse texture path.
Definition: Variations.h:159
~VariationGroupLod()
Destructor.
Definition: Variations.h:283
void setSpecularColorGreen(const int green)
Sets the specular green value.
Definition: Variations.h:207
void setGeometry(const std::string &name, const VariationGeometry &v)
Sets a geometry.
Definition: Variations.h:434
void clear()
Removes the agents variations.
Definition: Variations.h:519
const VariationGroupLod * VariationGroupLodCPtr
variation group lod const pointer
Definition: Variations.h:42
unsigned int getDiffuseColorBlue() const
Gets the diffuse blue value.
Definition: Variations.h:180
float getSpecularWeight() const
Gets the specular weight.
Definition: Variations.h:219
std::string toString(const bool prettyprint=false)
Converts the agent variations map to a string.
VariationGeometry * VariationGeometryPtr
variation geometry pointer
Definition: Variations.h:31
void setDiffuseWeight(float value)
Sets the diffuse weight.
Definition: Variations.h:216
VariationGroup * VariationGroupPtr
variation group pointer
Definition: Variations.h:33
unsigned int getDiffuseColorGreen() const
Gets the diffuse green value.
Definition: Variations.h:177
void clear()
Clear all combinations.
Definition: Variations.h:286
const std::string & getClothSetup() const
Gets cloth setup file.
Definition: Variations.h:458
unsigned int getSpecularColorGreen() const
Gets the specular green value.
Definition: Variations.h:198
AgentTypeVariation & getAgentTypeVariation(const std::string &agentTypeName)
Gets an agent type variation.
Definition: Variations.h:525
VariationMaterialColor * VariationMaterialColorPtr
variation material color pointer
Definition: Variations.h:35
AgentTypeVariation(const AgentTypeVariation &atv)
Copy constructor.
void setClothSetup(const std::string &path)
Sets cloth setup file.
Definition: Variations.h:440
Variation group class.
Definition: Variations.h:326
VariationGeometry class.
Definition: Variations.h:50
VariationMaterialColor & getSpecularColor()
Gets the specular color.
Definition: Variations.h:192