All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorMaterialData.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Interiors.h"
6 #include "LayerIds.h"
7 #include "VectorMath.h"
8 
9 #include <string>
10 #include <vector>
11 #include <unordered_map>
12 
13 namespace Eegeo
14 {
15  namespace Resources
16  {
17  namespace Interiors
18  {
20  {
21  public:
22 
23  typedef std::pair<std::string, std::string> SemanticStringPair;
24  typedef std::pair<std::string, v4> SemanticColorPair;
25  typedef std::pair<std::string, float> SemanticScalarPair;
26  typedef std::pair<std::string, bool> SemanticBooleanPair;
27 
28 
30  static InteriorMaterialData Make(const std::string& materialName,
31  Rendering::LayerIds::Values renderableLayer,
32  int renderableDepth);
33 
35  static InteriorMaterialData Make(const std::string& materialName,
36  Rendering::LayerIds::Values renderableLayer,
37  int renderableDepth,
38  const std::vector<SemanticStringPair>& strings,
39  const std::vector<SemanticColorPair>& colors,
40  const std::vector<SemanticScalarPair>& scalars);
41 
42  static InteriorMaterialData Make(const std::string& materialName);
43 
44  static InteriorMaterialData Make(const std::string& materialName,
45  const std::vector<SemanticStringPair>& strings,
46  const std::vector<SemanticColorPair>& colors,
47  const std::vector<SemanticScalarPair>& scalars);
48 
49  static InteriorMaterialData Make(const std::string& materialName,
50  const std::vector<SemanticStringPair>& strings,
51  const std::vector<SemanticColorPair>& colors,
52  const std::vector<SemanticScalarPair>& scalars,
53  const std::vector<SemanticBooleanPair>& booleans);
54 
56 
57 
58 
59  std::string MaterialName() const { return m_materialName; }
60 
61  bool HasString(const std::string& semantic) const;
62  bool HasColor(const std::string& semantic) const;
63  bool HasScalar(const std::string& semantic) const;
64  bool HasBoolean(const std::string& semantic) const;
65 
66  std::string GetString(const std::string& semantic) const;
67  v4 GetColor(const std::string& semantic) const;
68  float GetScalar(const std::string& semantic) const;
69  bool GetBoolean(const std::string& semantic) const;
70 
71  std::string GetStringOrDefault(const std::string& semantic, const std::string& defaultValue) const;
72  v4 GetColorOrDefault(const std::string& semantic, const v4& defaultValue) const;
73  float GetScalarOrDefault(const std::string& semantic, const float defaultValue) const;
74  bool GetBooleanOrDefault(const std::string& semantic, const bool defaultValue) const;
75 
76  const std::unordered_map<std::string, std::string>& GetStrings() const { return m_strings; }
77  const std::unordered_map<std::string, v4>& GetColors() const { return m_colors; }
78  const std::unordered_map<std::string, float>& GetScalars() const { return m_scalars; }
79  const std::unordered_map<std::string, bool>& GetBooleans() const { return m_booleans; }
80 
81  private:
83  const std::string& materialName,
84  const std::unordered_map<std::string, std::string>& strings,
85  const std::unordered_map<std::string, v4>& colors,
86  const std::unordered_map<std::string, float>& scalars,
87  const std::unordered_map<std::string, bool>& booleans);
88 
89  std::string m_materialName;
90 
91  std::unordered_map<std::string, std::string> m_strings;
92  std::unordered_map<std::string, v4> m_colors;
93  std::unordered_map<std::string, float> m_scalars;
94  std::unordered_map<std::string, bool> m_booleans;
95  };
96 
97  }
98  }
99 }