Atoms Crowd  4.1.0
Variations.impl.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 namespace Atoms
11 {
12  bool Variations::removeAgentTypeVariation(const std::string &agentTypeName)
13  {
14  std::map<std::string, AgentTypeVariation>::iterator it = m_agentTypeVariations.find(agentTypeName);
15  if (it != m_agentTypeVariations.end())
16  {
17  m_agentTypeVariations.erase(it);
18  return true;
19  }
20  return false;
21  }
22 
23  std::vector<std::string> Variations::getAgentTypeNames() const
24  {
25  std::vector<std::string> names;
26  names.reserve(m_agentTypeVariations.size());
27  for (auto it = m_agentTypeVariations.cbegin(); it != m_agentTypeVariations.cend(); it++)
28  names.push_back(it->first);
29  return names;
30  }
31 
32  AgentTypeVariationCPtr Variations::getAgentTypeVariationPtr(const std::string &agentTypeName) const
33  {
34  std::map<std::string, AgentTypeVariation>::const_iterator it = m_agentTypeVariations.find(agentTypeName);
35  if (it != m_agentTypeVariations.cend())
36  return &it->second;
37  return nullptr;
38  }
39 
40  inline VariationGeometryCPtr AgentTypeVariation::getGeometryPtr(const std::string &name) const
41  {
42  std::map<std::string, VariationGeometry>::const_iterator it = m_geos.find(name);
43  if (it != m_geos.cend())
44  return &it->second;
45  return nullptr;
46  }
47 
48  inline VariationMaterialCPtr AgentTypeVariation::getMaterialPtr(const std::string &name) const
49  {
50  std::map<std::string, VariationMaterial>::const_iterator it = m_mats.find(name);
51  if (it != m_mats.cend())
52  return &it->second;
53  return nullptr;
54  }
55 
56  inline VariationGroupCPtr AgentTypeVariation::getGroupPtr(const std::string &name) const
57  {
58  std::map<std::string, VariationGroup>::const_iterator it = m_groups.find(name);
59  if (it != m_groups.cend())
60  return &it->second;
61  return nullptr;
62  }
63 
65  {
66  m_geos.clear();
67  m_mats.clear();
68  m_groups.clear();
69  }
70 
71  std::vector<std::string> AgentTypeVariation::getGeometryNames() const
72  {
73  std::vector<std::string> names;
74  names.reserve(m_geos.size());
75  for (auto it = m_geos.cbegin(); it != m_geos.cend(); it++)
76  names.push_back(it->first);
77  return names;
78  }
79 
80  std::vector<std::string> AgentTypeVariation::getMaterialNames() const
81  {
82  std::vector<std::string> names;
83  names.reserve(m_mats.size());
84  for (auto it = m_mats.cbegin(); it != m_mats.cend(); it++)
85  names.push_back(it->first);
86  return names;
87  }
88 
89  std::vector<std::string> AgentTypeVariation::getGroupNames() const
90  {
91  std::vector<std::string> names;
92  names.reserve(m_groups.size());
93  for (auto it = m_groups.cbegin(); it != m_groups.cend(); it++)
94  names.push_back(it->first);
95  return names;
96  }
97 
98  bool AgentTypeVariation::removeGeometry(const std::string &name)
99  {
100  std::map<std::string, VariationGeometry>::iterator it = m_geos.find(name);
101  if (it != m_geos.end())
102  {
103  m_geos.erase(it);
104  return true;
105  }
106  return false;
107  }
108 
109  bool AgentTypeVariation::removeMaterial(const std::string &name)
110  {
111  std::map<std::string, VariationMaterial>::iterator it = m_mats.find(name);
112  if (it != m_mats.end())
113  {
114  m_mats.erase(it);
115  return true;
116  }
117  return false;
118  }
119 
120  bool AgentTypeVariation::removeGroup(const std::string &name)
121  {
122  std::map<std::string, VariationGroup>::iterator it = m_groups.find(name);
123  if (it != m_groups.end())
124  {
125  m_groups.erase(it);
126  return true;
127  }
128  return false;
129  }
130 
132  {
133  m_groups.clear();
134  return true;
135  }
136 
137  inline VariationGroupLodCPtr VariationGroup::getLodPtr(const std::string &name) const
138  {
139  std::map<std::string, VariationGroupLod>::const_iterator it = m_lods.find(name);
140  if (it != m_lods.cend())
141  return &it->second;
142  return nullptr;
143  }
144 
145  inline bool VariationGroup::hasCombination(const std::string &geometryName, const std::string &materialName)
146  {
147  return std::find(m_combinations.begin(), m_combinations.end(), std::pair<std::string, std::string>(geometryName, materialName)) != m_combinations.end();
148  }
149 
150  bool VariationGroup::removeLod(const std::string &name)
151  {
152  std::map<std::string, VariationGroupLod>::iterator it = m_lods.find(name);
153  if (it != m_lods.end())
154  {
155  m_lods.erase(it);
156  return true;
157  }
158  return false;
159  }
160 
161  const std::pair<std::string, std::string>& VariationGroup::getCombinationAtIndex(unsigned int index) const
162  {
163  if (index < m_combinations.size())
164  return m_combinations[index];
165  return m_emptyPair;
166  }
167 
169  {
170  if (index < m_combinations.size())
171  {
172  m_combinations.erase(m_combinations.begin() + index);
173  return true;
174  }
175  return false;
176  }
177 
178  inline const std::pair<std::string, std::string>& VariationGroupLod::getCombinationAtIndex(unsigned int index) const
179  {
180  if (index < m_combinations.size())
181  return m_combinations[index];
182  return m_emptyPair;
183  }
184 
185  inline bool VariationGroupLod::hasCombination(const std::string &geometryName, const std::string &materialName)
186  {
187  return std::find(m_combinations.begin(), m_combinations.end(), std::pair<std::string, std::string>(geometryName, materialName)) != m_combinations.end();
188  }
189 
190  inline bool VariationGroupLod::removeCombinationAtIndex(unsigned int index)
191  {
192  if (index < m_combinations.size())
193  {
194  m_combinations.erase(m_combinations.begin() + index);
195  return true;
196  }
197  return false;
198  }
199 
200  std::vector<std::string> VariationGroup::getLodNames() const
201  {
202  std::vector<std::string> names;
203  names.reserve(m_lods.size());
204  for (auto it = m_lods.cbegin(); it != m_lods.cend(); it++)
205  names.push_back(it->first);
206  return names;
207  }
208 
209  size_t Variations::size() const
210  {
211  return m_agentTypeVariations.size();
212  }
213 }
Atoms::VariationMaterial
Variation Material.
Definition: Variations.h:121
Atoms::VariationGroup::getLodNames
std::vector< std::string > getLodNames() const
Gets all lod names stored.
Definition: Variations.impl.h:200
Atoms::AgentTypeVariation
Agent type variation class.
Definition: Variations.h:401
Atoms::VariationGroup::getLodPtr
VariationGroupLodCPtr getLodPtr(const std::string &name) const
Gets a lod variation group.
Definition: Variations.impl.h:137
Atoms::Variations::getAgentTypeVariationPtr
AgentTypeVariationCPtr getAgentTypeVariationPtr(const std::string &agentTypeName) const
Gets an agent type variation.
Definition: Variations.impl.h:32
Atoms::VariationGroup::hasCombination
bool hasCombination(const std::string &geometryName, const std::string &materialName)
Checks if this object contains this combination.
Definition: Variations.impl.h:145
Atoms::AgentTypeVariation::clear
void clear()
Clear the greomeitres, materials and variaiton groups.
Definition: Variations.impl.h:64
Atoms::AgentTypeVariation::getGroupNames
std::vector< std::string > getGroupNames() const
Gets the group names.
Definition: Variations.impl.h:89
Atoms::VariationGroup::getCombinationAtIndex
const std::pair< std::string, std::string > & getCombinationAtIndex(unsigned int index) const
Gets a combination.
Definition: Variations.impl.h:161
Atoms::VariationGroupLod::getCombinationAtIndex
const std::pair< std::string, std::string > & getCombinationAtIndex(unsigned int index) const
Gets a combination.
Definition: Variations.impl.h:178
Atoms::AgentTypeVariation::removeGroup
bool removeGroup(const std::string &name)
Removes a group.
Definition: Variations.impl.h:120
Atoms::AgentTypeVariation::removeGeometry
bool removeGeometry(const std::string &name)
Removes a geometry.
Definition: Variations.impl.h:98
Atoms::AgentTypeVariation::getGroupPtr
VariationGroupCPtr getGroupPtr(const std::string &name) const
Gets a group.
Definition: Variations.impl.h:56
Atoms::VariationGroupLod::removeCombinationAtIndex
bool removeCombinationAtIndex(unsigned int index)
Removes a combination.
Definition: Variations.impl.h:190
Atoms::AgentTypeVariation::getMaterialNames
std::vector< std::string > getMaterialNames() const
Gets the material names.
Definition: Variations.impl.h:80
Atoms::AgentTypeVariation::getMaterialPtr
VariationMaterialCPtr getMaterialPtr(const std::string &name) const
Gets a material.
Definition: Variations.impl.h:48
Atoms
Atoms namespace.
Definition: Agent.h:28
Atoms::AgentTypeVariation::getGeometryNames
std::vector< std::string > getGeometryNames() const
Gets the geometry names.
Definition: Variations.impl.h:71
Atoms::VariationGroup::removeLod
bool removeLod(const std::string &name)
Removes a lod.
Definition: Variations.impl.h:150
Atoms::AgentTypeVariation::getGeometryPtr
VariationGeometryCPtr getGeometryPtr(const std::string &name) const
Gets a geometry.
Definition: Variations.impl.h:40
Atoms::VariationGroupLod
Variation group lod class.
Definition: Variations.h:274
Atoms::Variations::removeAgentTypeVariation
bool removeAgentTypeVariation(const std::string &agentTypeName)
Removes an agent type variation.
Definition: Variations.impl.h:12
Atoms::AgentTypeVariation::removeAllGroups
bool removeAllGroups()
Removes all groups.
Definition: Variations.impl.h:131
Atoms::Variations::getAgentTypeNames
std::vector< std::string > getAgentTypeNames() const
Gets the agent type names.
Definition: Variations.impl.h:23
Atoms::VariationGroup::removeCombinationAtIndex
bool removeCombinationAtIndex(unsigned int index)
Removes a combination.
Definition: Variations.impl.h:168
Atoms::VariationGroupLod::hasCombination
bool hasCombination(const std::string &geometryName, const std::string &materialName)
Checks if this object contains this combination.
Definition: Variations.impl.h:185
Atoms::AgentTypeVariation::removeMaterial
bool removeMaterial(const std::string &name)
Removes a material.
Definition: Variations.impl.h:109
Atoms::VariationGroup
Variation group class.
Definition: Variations.h:326
Atoms::VariationGeometry
VariationGeometry class.
Definition: Variations.h:50