Atoms Crowd  4.1.0
Variations.h
1 #pragma once
2 // ===========================================================================
3 // Copyright (c) 2015 Toolchefs Ltd. All rights reserved.
4 //
5 // Use of this software is subject to the terms of the Toolchefs license
6 // agreement provided at the time of installation or download, or which
7 // otherwise accompanies this software in either electronic or hard copy form.
8 // ===========================================================================
9 
10 #include <Atoms/Globals.h>
11 #include <AtomsCore/Hash.h>
12 #include <AtomsUtils/Logger.h>
13 
14 #include <vector>
15 #include <map>
16 #include <algorithm>
17 #include <numeric>
18 
19 namespace Atoms
20 {
21  class Variations;
22  class AgentTypeVariation;
23  class VariationGeometry;
24  class VariationMaterial;
25  class VariationGroup;
26  class VariationGroupLod;
27  class VariationMaterialColor;
28 
36 
37  typedef const Variations* VariationsCPtr;
44 
46 
49  class ATOMS_EXPORT VariationGeometry
50  {
51  public:
54  m_geometryFilter("*") {}
55 
58 
60  const std::string& getGeometryFile() const { return m_geometryFile; };
61 
63  void setGeometryFile(const std::string& geometryFile) { m_geometryFile = geometryFile; };
64 
66  const std::string& getGeometryFilter() const { return m_geometryFilter; };
67 
69  void setGeometryFilter(const std::string& filter) { m_geometryFilter = filter; };
70 
72  void hash(AtomsCore::MurmurHash3& hasher) const;
73 
74  private:
75 
77  std::string m_geometryFile;
78 
80  std::string m_geometryFilter;
81  };
82 
84  /* This class stores material color rgb values.
85  */
86  class ATOMS_EXPORT VariationMaterialColor
87  {
88  public:
90  m_red(0),
91  m_green(0),
92  m_blue(0)
93  {}
94 
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; }
101 
102  unsigned int getRed() const { return m_red; }
103  unsigned int getGreen() const { return m_green; }
104  unsigned int getBlue() const { return m_blue; }
105 
107  void hash(AtomsCore::MurmurHash3& hasher) const;
108 
109  private:
110  unsigned int m_red;
111  unsigned int m_green;
112  unsigned int m_blue;
113  };
114 
115 
117  /* This class Stores a material file path used by the renderers.
118  * It also stores some diffuse/specular/normal attributes used for previsualization inside the DCC
119  */
120  class ATOMS_EXPORT VariationMaterial
121  {
122  public:
125  m_diffuseWeight(1.0f),
126  m_specularWeight(0.0f),
127  m_specularRollOff(0.7f),
128  m_specularEccentricity(0.3f)
129  {
130  m_diffuseFiles.resize(1);
131  m_diffuseRGBs.resize(1);
132  };
133 
136 
138  const std::string& getMaterialFile() const { return m_materialFile; };
139 
141  void setDiffuseSlotSize(unsigned int size) { if (size > 1) { m_diffuseFiles.resize(size); m_diffuseRGBs.resize(size); } }
142 
144  unsigned int getDiffuseSlotSize() const { return static_cast<unsigned int>(m_diffuseFiles.size()); }
145 
147  const std::string& getDiffuseFile(unsigned int index = 0) const { return m_diffuseFiles[index]; };
148 
150  const std::string& getSpecularFile() const { return m_specularFile; };
151 
153  const std::string& getNormalMapFile() const { return m_normalMapFile; };
154 
156  void setMaterialFile(const std::string& materialFile) { m_materialFile = materialFile; };
157 
159  void setDiffuseFile(const std::string& diffuseFile, unsigned int index = 0) { m_diffuseFiles[index] = diffuseFile; };
160 
162  void setSpecularFile(const std::string& specularFile) { m_specularFile = specularFile; };
163 
165  void setNormalMapFile(const std::string& normalMapFile) { m_normalMapFile = normalMapFile; };
166 
168  const VariationMaterialColor& getDiffuseColor(unsigned int index = 0) const { return m_diffuseRGBs[index]; }
169  VariationMaterialColor& getDiffuseColor(unsigned int index = 0) { return m_diffuseRGBs[index]; }
170 
171  VariationMaterialColorCPtr getDiffuseColorPtr(unsigned int index = 0) { return &(m_diffuseRGBs[index]); }
172 
174  unsigned int getDiffuseColorRed() const { return m_diffuseRGBs[0].getRed(); }
175 
177  unsigned int getDiffuseColorGreen() const { return m_diffuseRGBs[0].getGreen(); }
178 
180  unsigned int getDiffuseColorBlue() const { return m_diffuseRGBs[0].getBlue(); }
181 
183  void setDiffuseColorRed(const int red) { m_diffuseRGBs[0].setRed(red); }
184 
186  void setDiffuseColorGreen(const int green) { m_diffuseRGBs[0].setGreen(green); }
187 
189  void setDiffuseColorBlue(const int blue) { m_diffuseRGBs[0].setBlue(blue); }
190 
192  VariationMaterialColor& getSpecularColor() { return m_specularRGB; }
193 
195  unsigned int getSpecularColorRed() const { return m_specularRGB.getRed(); }
196 
198  unsigned int getSpecularColorGreen() const { return m_specularRGB.getGreen(); }
199 
201  unsigned int getSpecularColorBlue() const { return m_specularRGB.getBlue(); }
202 
204  void setSpecularColorRed(const int red) { m_specularRGB.setRed(red); }
205 
207  void setSpecularColorGreen(const int green) { m_specularRGB.setGreen(green); }
208 
210  void setSpecularColorBlue(const int blue) { m_specularRGB.setBlue(blue); }
211 
212 
214  float getDiffuseWeight() const { return m_diffuseWeight; }
216  void setDiffuseWeight(float value) { m_diffuseWeight = value; }
217 
219  float getSpecularWeight() const { return m_specularWeight; }
221  void setSpecularWeight(float value) { m_specularWeight = value; }
222 
224  float getSpecularRollOff() const { return m_specularRollOff; }
226  void setSpecularRollOff(float value) { m_specularRollOff = value; }
227 
229  float getSpecularEccentricity() const { return m_specularEccentricity; }
231  void setSpecularEccentricity(float value) { m_specularEccentricity = value; }
232 
234  void hash(AtomsCore::MurmurHash3& hasher) const;
235 
236  private:
237 
239  std::string m_materialFile;
240 
242  std::vector<std::string> m_diffuseFiles;
243 
245  std::string m_specularFile;
246 
248  std::string m_normalMapFile;
249 
251  float m_diffuseWeight;
252 
254  float m_specularWeight;
255 
257  float m_specularRollOff;
258 
260  float m_specularEccentricity;
261 
263  VariationMaterialColor m_specularRGB;
264 
266  std::vector<VariationMaterialColor> m_diffuseRGBs;
267  };
268 
270  /* A variation group contains multiple combinations of geoemtry-material.
271  * This class is used to store a variation group for a lod definition of an agent type variation
272  */
273  class ATOMS_EXPORT VariationGroupLod
274  {
275  public:
277  VariationGroupLod(AgentTypeVariationCPtr agentTypeVariation) : m_atVariation(agentTypeVariation) {}
278 
281 
284 
286  inline void clear() { m_combinations.clear(); }
287 
289  unsigned int numCombinations() const { return static_cast<unsigned int>(m_combinations.size()); }
290 
292  inline bool hasCombination(const std::string &geometryName, const std::string &materialName);
293 
295  void addCombination(const std::string &geometryName, const std::string &materialName);
296 
298  inline const std::pair<std::string, std::string>& getCombinationAtIndex(unsigned int index) const;
299 
301  inline bool removeCombinationAtIndex(unsigned int index);
302 
304  void hash(AtomsCore::MurmurHash3& hasher) const;
305 
306  private:
307 
309 
311  AgentTypeVariationCPtr m_atVariation;
312 
314  std::vector<std::pair<std::string, std::string>> m_combinations;
315 
317  std::pair<std::string, std::string> m_emptyPair;
318  };
319 
321  /* A variation group contains multiple combinations of geoemtry-material.
322  * This class is used to store a variation group of an agent type variation and
323  * the variation groups of lods
324  */
325  class ATOMS_EXPORT VariationGroup
326  {
327  public:
329  VariationGroup(AgentTypeVariationCPtr agentTypeVariation) : m_atVariation(agentTypeVariation) {}
330 
332  VariationGroup(AgentTypeVariationCPtr agentTypeVariation, const VariationGroup &vg);
333 
336 
338  inline void clear() { m_combinations.clear(); }
339 
341  unsigned int numCombinations() const { return static_cast<unsigned int>(m_combinations.size()); }
342 
344  inline bool hasCombination(const std::string &geometryName, const std::string &materialName);
345 
347  void addCombination(const std::string &geometryName, const std::string &materialName);
348 
350  inline const std::pair<std::string, std::string>& getCombinationAtIndex(unsigned int index) const;
351 
353  inline bool removeCombinationAtIndex(unsigned int index);
354 
356  inline std::vector<std::string> getLodNames() const;
357 
359  inline bool hasLod(const std::string& name) const { return m_lods.find(name) != m_lods.end(); }
360 
362  VariationGroupLod& getLod(const std::string& name);
363 
365  inline VariationGroupLodCPtr getLodPtr(const std::string &name) const;
366 
368  inline bool removeLod(const std::string &name);
369 
371  inline void setLod(const std::string &name, const VariationGroupLod& v) { m_lods.insert(std::make_pair(name, VariationGroupLod(m_atVariation, v))); }
372 
374  void hash(AtomsCore::MurmurHash3& hasher) const;
375 
376  private:
377 
379 
381  AgentTypeVariationCPtr m_atVariation;
382 
384  std::vector<std::pair<std::string, std::string>> m_combinations;
385 
387  std::pair<std::string, std::string> m_emptyPair;
388 
390  std::map<std::string, VariationGroupLod> m_lods;
391 
392  std::string m_thumbnailPath;
393  };
394 
396  /* This class stores a list geometries file path and materials file path and
397  * a list of variations groups. Each variation group uses the geometries and materials to define
398  * an agent variation.
399  */
400  class ATOMS_EXPORT AgentTypeVariation
401  {
402  public:
405 
408 
411 
413  inline void clear();
414 
416  inline std::vector<std::string> getGeometryNames() const;
417 
419  inline std::vector<std::string> getMaterialNames() const;
420 
422  inline std::vector<std::string> getGroupNames() const;
423 
425  inline VariationGeometry& getGeometry(const std::string &name) { return m_geos[name]; }
426 
428  inline VariationMaterial& getMaterial(const std::string &name) { return m_mats[name]; }
429 
431  VariationGroup& getGroup(const std::string &name);
432 
434  inline void setGeometry(const std::string &name, const VariationGeometry& v) { m_geos[name] = v; }
435 
437  inline void setMaterial(const std::string &name, const VariationMaterial& v) { m_mats[name] = v; }
438 
440  inline void setClothSetup(const std::string &path) { m_clothSetup = path; }
441 
443  inline void setLookFile(const std::string &path) { m_lookFile = path; }
444 
446  inline void setGroup(const std::string &name, const VariationGroup& v) { m_groups.insert(std::make_pair(name, VariationGroup(this, v))); }
447 
449  inline VariationGeometryCPtr getGeometryPtr(const std::string &name) const;
450 
452  inline VariationMaterialCPtr getMaterialPtr(const std::string &name) const;
453 
455  inline VariationGroupCPtr getGroupPtr(const std::string &name) const;
456 
458  inline const std::string &getClothSetup() const { return m_clothSetup; }
459 
461  inline const std::string &getLookFile() const { return m_lookFile; }
462 
464  inline bool hasGeometry(const std::string &name) const { return m_geos.find(name) != m_geos.end(); }
465 
467  inline bool hasMaterial(const std::string &name) const { return m_mats.find(name) != m_mats.end(); }
468 
470  inline bool hasGroup(const std::string &name) const { return m_groups.find(name) != m_groups.end(); }
471 
473  inline bool removeGeometry(const std::string &name);
474 
476  inline bool removeMaterial(const std::string &name);
477 
479  inline bool removeGroup(const std::string &name);
480 
482  inline bool removeAllGroups();
483 
485  void hash(AtomsCore::MurmurHash3& hasher) const;
486 
487  private:
488 
490  std::map<std::string, VariationGeometry> m_geos;
491 
493  std::map<std::string, VariationMaterial> m_mats;
494 
496  std::map<std::string, VariationGroup> m_groups;
497 
499  std::string m_clothSetup;
500 
502  std::string m_lookFile;
503  };
504 
506 
508  class ATOMS_EXPORT Variations
509  {
510  public:
511 
514 
517 
519  void clear() { m_agentTypeVariations.clear(); };
520 
522  inline std::vector<std::string> getAgentTypeNames() const;
523 
525  inline AgentTypeVariation& getAgentTypeVariation(const std::string &agentTypeName) { return m_agentTypeVariations[agentTypeName]; }
526 
528  inline void setAgentTypeVariation(const std::string &agentTypeName, const AgentTypeVariation& atv) { if (agentTypeName != "") m_agentTypeVariations[agentTypeName] = atv; }
529 
531  inline AgentTypeVariationCPtr getAgentTypeVariationPtr(const std::string &agentTypeName) const;
532 
534  inline bool hasAgentTypeVariation(const std::string &agentTypeName) { return m_agentTypeVariations.find(agentTypeName) != m_agentTypeVariations.end(); }
535 
537  inline bool removeAgentTypeVariation(const std::string &agentTypeName);
538 
540  bool writeToFile(const std::string &filePath);
541 
543  std::string toString(const bool prettyprint = false);
544 
546  void hash(AtomsCore::MurmurHash3& hasher) const;
547 
548  inline size_t size() const;
549 
550  private:
551 
553  std::map<std::string, AgentTypeVariation> m_agentTypeVariations;
554  };
555 }
556 
557 #include <Atoms/Variations.impl.h>
558 
Atoms::VariationMaterial::setSpecularColorRed
void setSpecularColorRed(const int red)
Sets the specular red value.
Definition: Variations.h:204
Atoms::VariationMaterial::getDiffuseFile
const std::string & getDiffuseFile(unsigned int index=0) const
Gets the diffuse texture path.
Definition: Variations.h:147
Atoms::VariationGroup::setLod
void setLod(const std::string &name, const VariationGroupLod &v)
Sets a lod.
Definition: Variations.h:371
Atoms::VariationGroupLodPtr
VariationGroupLod * VariationGroupLodPtr
variation group lod pointer
Definition: Variations.h:34
Atoms::VariationGeometry::getGeometryFilter
const std::string & getGeometryFilter() const
Gets the geometry filter.
Definition: Variations.h:66
Atoms::VariationMaterial
Variation Material.
Definition: Variations.h:121
Atoms::VariationMaterial::setNormalMapFile
void setNormalMapFile(const std::string &normalMapFile)
Sets the normal file path.
Definition: Variations.h:165
Atoms::VariationGroup::clear
void clear()
Clears all combinations.
Definition: Variations.h:338
Atoms::VariationGroup::VariationGroup
VariationGroup(AgentTypeVariationCPtr agentTypeVariation)
Constructor.
Definition: Variations.h:329
Atoms::VariationMaterial::setSpecularColorBlue
void setSpecularColorBlue(const int blue)
Sets the specular blue value.
Definition: Variations.h:210
Atoms::AgentTypeVariation
Agent type variation class.
Definition: Variations.h:401
Atoms::AgentTypeVariation::~AgentTypeVariation
~AgentTypeVariation()
Destructor.
Definition: Variations.h:407
Atoms::VariationMaterial::getSpecularColorRed
unsigned int getSpecularColorRed() const
Gets the specular red value.
Definition: Variations.h:195
Atoms::VariationsPtr
Variations * VariationsPtr
variations pointer
Definition: Variations.h:27
Atoms::VariationGeometry::setGeometryFilter
void setGeometryFilter(const std::string &filter)
Sets the geometry file path.
Definition: Variations.h:69
Atoms::AgentTypeVariation::AgentTypeVariation
AgentTypeVariation()
Constructor.
Definition: Variations.h:404
Atoms::VariationMaterial::setDiffuseColorRed
void setDiffuseColorRed(const int red)
Sets the diffuse red value.
Definition: Variations.h:183
Atoms::VariationMaterial::getDiffuseWeight
float getDiffuseWeight() const
Gets the diffuse weight.
Definition: Variations.h:214
Atoms::Variations::Variations
Variations()
Constructor.
Definition: Variations.h:513
Atoms::VariationMaterial::getDiffuseSlotSize
unsigned int getDiffuseSlotSize() const
Set diffuse slot size.
Definition: Variations.h:144
Atoms::VariationMaterial::getDiffuseColor
const VariationMaterialColor & getDiffuseColor(unsigned int index=0) const
Gets the diffuse color.
Definition: Variations.h:168
Atoms::VariationMaterial::getSpecularFile
const std::string & getSpecularFile() const
Gets the specural file path.
Definition: Variations.h:150
Atoms::VariationGroup::addCombination
void addCombination(const std::string &geometryName, const std::string &materialName)
Adds a combination.
Atoms::VariationGeometry::hash
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
Atoms::VariationMaterial::setDiffuseColorGreen
void setDiffuseColorGreen(const int green)
Sets the diffuse green value.
Definition: Variations.h:186
Atoms::VariationMaterial::getSpecularRollOff
float getSpecularRollOff() const
Gets the specular rolloff.
Definition: Variations.h:224
Atoms::VariationMaterial::setDiffuseSlotSize
void setDiffuseSlotSize(unsigned int size)
Set diffuse slot size.
Definition: Variations.h:141
Atoms::Variations
Variations class.
Definition: Variations.h:509
Atoms::VariationMaterial::setSpecularEccentricity
void setSpecularEccentricity(float value)
Sets the specular eccentricity.
Definition: Variations.h:231
Atoms::VariationMaterialColor
Variation Material Color.
Definition: Variations.h:87
Atoms::Variations::setAgentTypeVariation
void setAgentTypeVariation(const std::string &agentTypeName, const AgentTypeVariation &atv)
Sets an agent type variation.
Definition: Variations.h:528
Atoms::Variations::writeToFile
bool writeToFile(const std::string &filePath)
Write the agent variations map to a file.
Atoms::VariationGeometryCPtr
const VariationGeometry * VariationGeometryCPtr
variation geometry const pointer
Definition: Variations.h:39
Atoms::VariationMaterial::getDiffuseColorRed
unsigned int getDiffuseColorRed() const
Gets the diffuse red value.
Definition: Variations.h:174
Atoms::VariationGroup::hasLod
bool hasLod(const std::string &name) const
Checks if a lod exists.
Definition: Variations.h:359
Atoms::AgentTypeVariation::hasGeometry
bool hasGeometry(const std::string &name) const
Checks if this object contains a geometry.
Definition: Variations.h:464
Atoms::VariationMaterialColor::setGreen
void setGreen(const int green)
Sets the diffuse green value.
Definition: Variations.h:98
Atoms::AgentTypeVariation::hasGroup
bool hasGroup(const std::string &name) const
Checks if this object contains a group.
Definition: Variations.h:470
Atoms::VariationMaterial::setDiffuseColorBlue
void setDiffuseColorBlue(const int blue)
Sets the diffuse blue value.
Definition: Variations.h:189
Atoms::VariationMaterial::getMaterialFile
const std::string & getMaterialFile() const
Gets the material file path.
Definition: Variations.h:138
Atoms::VariationGeometry::VariationGeometry
VariationGeometry()
Constructor.
Definition: Variations.h:53
Atoms::AgentTypeVariation::getMaterial
VariationMaterial & getMaterial(const std::string &name)
Gets a material.
Definition: Variations.h:428
Atoms::AgentTypeVariation::getGroup
VariationGroup & getGroup(const std::string &name)
Gets a group.
Atoms::AgentTypeVariation::getGeometry
VariationGeometry & getGeometry(const std::string &name)
Gets a geometry.
Definition: Variations.h:425
Atoms::VariationGroupCPtr
const VariationGroup * VariationGroupCPtr
variation group const pointer
Definition: Variations.h:41
Atoms::VariationsCPtr
const Variations * VariationsCPtr
variations const pointer
Definition: Variations.h:37
Atoms::VariationMaterial::getSpecularColorBlue
unsigned int getSpecularColorBlue() const
Gets the specular blue value.
Definition: Variations.h:201
Atoms::Variations::hasAgentTypeVariation
bool hasAgentTypeVariation(const std::string &agentTypeName)
Checks if an agent type variation exists.
Definition: Variations.h:534
Atoms::VariationGroup::hash
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
Atoms::VariationMaterial::getSpecularEccentricity
float getSpecularEccentricity() const
Gets the specular eccentricity.
Definition: Variations.h:229
Atoms::Variations::hash
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
Atoms::VariationMaterial::~VariationMaterial
~VariationMaterial()
Destructor.
Definition: Variations.h:135
Atoms::VariationMaterialColor::setRed
void setRed(const int red)
Sets the diffuse red value.
Definition: Variations.h:96
Atoms::VariationMaterialColor::hash
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
Atoms::VariationGroupLod::addCombination
void addCombination(const std::string &geometryName, const std::string &materialName)
Adds a combination.
Atoms::VariationGroup::VariationGroup
VariationGroup(AgentTypeVariationCPtr agentTypeVariation, const VariationGroup &vg)
Constructor.
Atoms::VariationMaterial::setSpecularWeight
void setSpecularWeight(float value)
Sets the specular weight.
Definition: Variations.h:221
Atoms::AgentTypeVariationPtr
AgentTypeVariation * AgentTypeVariationPtr
agent type variation pointer
Definition: Variations.h:30
Atoms
Atoms namespace.
Definition: Agent.h:28
Atoms::VariationMaterialColor::setBlue
void setBlue(const int blue)
Sets the diffuse blue value.
Definition: Variations.h:100
Atoms::VariationMaterial::getNormalMapFile
const std::string & getNormalMapFile() const
Gets the normal file path.
Definition: Variations.h:153
Atoms::VariationGeometry::getGeometryFile
const std::string & getGeometryFile() const
Gets the geometry file path.
Definition: Variations.h:60
Atoms::AgentTypeVariation::setLookFile
void setLookFile(const std::string &path)
Sets look file.
Definition: Variations.h:443
Atoms::Variations::~Variations
~Variations()
Destructor.
Definition: Variations.h:516
Atoms::VariationGroup::~VariationGroup
~VariationGroup()
Destructor.
Definition: Variations.h:335
Atoms::VariationMaterial::setSpecularRollOff
void setSpecularRollOff(float value)
Sets the specular rolloff.
Definition: Variations.h:226
Atoms::VariationMaterial::hash
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
Atoms::VariationGeometry::~VariationGeometry
~VariationGeometry()
Destructor.
Definition: Variations.h:57
Atoms::VariationMaterial::setMaterialFile
void setMaterialFile(const std::string &materialFile)
Sets the material file path.
Definition: Variations.h:156
Atoms::VariationGroup::numCombinations
unsigned int numCombinations() const
Gets the number of combinations.
Definition: Variations.h:341
Atoms::AgentTypeVariation::setGroup
void setGroup(const std::string &name, const VariationGroup &v)
Sets a group.
Definition: Variations.h:446
Atoms::VariationMaterial::setSpecularFile
void setSpecularFile(const std::string &specularFile)
Sets the specural file path.
Definition: Variations.h:162
Atoms::AgentTypeVariation::getLookFile
const std::string & getLookFile() const
Gets look file.
Definition: Variations.h:461
Atoms::VariationGroupLod::VariationGroupLod
VariationGroupLod(AgentTypeVariationCPtr agentTypeVariation)
Constructor.
Definition: Variations.h:277
Atoms::VariationGroupLod::numCombinations
unsigned int numCombinations() const
Gets the number of combinations.
Definition: Variations.h:289
Atoms::VariationGroupLod
Variation group lod class.
Definition: Variations.h:274
Atoms::VariationMaterialPtr
VariationMaterial * VariationMaterialPtr
variation material pointer
Definition: Variations.h:32
Atoms::VariationMaterialCPtr
const VariationMaterial * VariationMaterialCPtr
variation material const pointer
Definition: Variations.h:40
Atoms::AgentTypeVariation::hash
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
Atoms::VariationMaterialColorCPtr
const VariationMaterialColor * VariationMaterialColorCPtr
variation material color const pointer
Definition: Variations.h:43
Atoms::VariationGroupLod::hash
void hash(AtomsCore::MurmurHash3 &hasher) const
Hash.
Atoms::AgentTypeVariation::setMaterial
void setMaterial(const std::string &name, const VariationMaterial &v)
Sets a material.
Definition: Variations.h:437
Atoms::AgentTypeVariation::hasMaterial
bool hasMaterial(const std::string &name) const
Checks if this object contains a material.
Definition: Variations.h:467
Atoms::AgentTypeVariationCPtr
const AgentTypeVariation * AgentTypeVariationCPtr
agent type const pointer
Definition: Variations.h:38
Atoms::VariationGeometry::setGeometryFile
void setGeometryFile(const std::string &geometryFile)
Sets the geometry file path.
Definition: Variations.h:63
Atoms::VariationMaterial::VariationMaterial
VariationMaterial()
Constructor.
Definition: Variations.h:124
Atoms::VariationGroup::getLod
VariationGroupLod & getLod(const std::string &name)
Gets a lod variation group.
Atoms::VariationGroupLod::VariationGroupLod
VariationGroupLod(AgentTypeVariationCPtr agentTypeVariation, const VariationGroupLod &lod)
Constructor.
Atoms::VariationMaterial::setDiffuseFile
void setDiffuseFile(const std::string &diffuseFile, unsigned int index=0)
Sets the diffuse texture path.
Definition: Variations.h:159
Atoms::VariationGroupLod::~VariationGroupLod
~VariationGroupLod()
Destructor.
Definition: Variations.h:283
Atoms::VariationMaterial::setSpecularColorGreen
void setSpecularColorGreen(const int green)
Sets the specular green value.
Definition: Variations.h:207
Atoms::AgentTypeVariation::setGeometry
void setGeometry(const std::string &name, const VariationGeometry &v)
Sets a geometry.
Definition: Variations.h:434
Atoms::Variations::clear
void clear()
Removes the agents variations.
Definition: Variations.h:519
Atoms::VariationGroupLodCPtr
const VariationGroupLod * VariationGroupLodCPtr
variation group lod const pointer
Definition: Variations.h:42
Atoms::VariationMaterial::getDiffuseColorBlue
unsigned int getDiffuseColorBlue() const
Gets the diffuse blue value.
Definition: Variations.h:180
Atoms::VariationMaterial::getSpecularWeight
float getSpecularWeight() const
Gets the specular weight.
Definition: Variations.h:219
Atoms::Variations::toString
std::string toString(const bool prettyprint=false)
Converts the agent variations map to a string.
Atoms::VariationGeometryPtr
VariationGeometry * VariationGeometryPtr
variation geometry pointer
Definition: Variations.h:31
Atoms::VariationMaterial::setDiffuseWeight
void setDiffuseWeight(float value)
Sets the diffuse weight.
Definition: Variations.h:216
Atoms::VariationGroupPtr
VariationGroup * VariationGroupPtr
variation group pointer
Definition: Variations.h:33
Atoms::VariationMaterial::getDiffuseColorGreen
unsigned int getDiffuseColorGreen() const
Gets the diffuse green value.
Definition: Variations.h:177
Atoms::VariationGroupLod::clear
void clear()
Clear all combinations.
Definition: Variations.h:286
Atoms::AgentTypeVariation::getClothSetup
const std::string & getClothSetup() const
Gets cloth setup file.
Definition: Variations.h:458
Atoms::VariationMaterial::getSpecularColorGreen
unsigned int getSpecularColorGreen() const
Gets the specular green value.
Definition: Variations.h:198
Atoms::Variations::getAgentTypeVariation
AgentTypeVariation & getAgentTypeVariation(const std::string &agentTypeName)
Gets an agent type variation.
Definition: Variations.h:525
Atoms::VariationMaterialColorPtr
VariationMaterialColor * VariationMaterialColorPtr
variation material color pointer
Definition: Variations.h:35
Atoms::AgentTypeVariation::AgentTypeVariation
AgentTypeVariation(const AgentTypeVariation &atv)
Copy constructor.
Atoms::AgentTypeVariation::setClothSetup
void setClothSetup(const std::string &path)
Sets cloth setup file.
Definition: Variations.h:440
Atoms::VariationGroup
Variation group class.
Definition: Variations.h:326
Atoms::VariationGeometry
VariationGeometry class.
Definition: Variations.h:50
Atoms::VariationMaterial::getSpecularColor
VariationMaterialColor & getSpecularColor()
Gets the specular color.
Definition: Variations.h:192
AtomsCore::MurmurHash3
Definition: Hash.h:23