TDME2  1.9.200
Material.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <string>
5 
6 #include <tdme/tdme.h>
9 #include <tdme/math/Matrix3x3.h>
10 
11 using std::string;
12 using std::unique_ptr;
13 
17 
18 /**
19  * Represents a material
20  * @author andreas.drewke
21  */
23 {
24 private:
26  STATIC_DLL_IMPEXT static unique_ptr<Material> defaultMaterial;
27 
28 public:
29 
30  /**
31  * @return default material
32  */
33  inline static Material* getDefaultMaterial() {
34  return defaultMaterial.get();
35  }
36 
37 private:
38  string id;
39  unique_ptr<SpecularMaterialProperties> specularMaterialProperties;
40  unique_ptr<PBRMaterialProperties> pbrMaterialProperties;
41  bool doubleSided { false };
43 
44 public:
45  // forbid class copy
47 
48  /**
49  * Public constructor
50  * @param id id
51  */
52  Material(const string& id);
53 
54  /**
55  * @return material id
56  */
57  inline const string& getId() const {
58  return id;
59  }
60 
61  /**
62  * @return specular material properties
63  */
65  return specularMaterialProperties.get();
66  }
67 
68  /**
69  * @return specular material properties
70  */
72  return specularMaterialProperties.get();
73  }
74 
75  /**
76  * @return PBR material properties
77  */
79  return pbrMaterialProperties.get();
80  }
81 
82  /**
83  * @return PBR material properties
84  */
86  return pbrMaterialProperties.get();
87  }
88 
89  /**
90  * Set specular material properties
91  * @param specularMaterialProperties specular material properties
92  */
94 
95  /**
96  * Set PBR material properties
97  * @param pbrMaterialProperties PBR material properties
98  */
100 
101  /**
102  * @return is double sided
103  */
104  inline bool isDoubleSided() const {
105  return doubleSided;
106  }
107 
108  /**
109  * Set double sided
110  * @param texture matrix
111  */
112  inline void setDoubleSided(bool doubleSided) {
113  this->doubleSided = doubleSided;
114  }
115 
116  /**
117  * @return texture matrix
118  */
119  inline const Matrix3x3& getTextureMatrix() const {
120  return textureMatrix;
121  }
122 
123  /**
124  * Set texture matrix
125  * @param textureMatrix texture matrix
126  */
128  this->textureMatrix = textureMatrix;
129  }
130 
131 };
Represents a material.
Definition: Material.h:23
void setSpecularMaterialProperties(SpecularMaterialProperties *specularMaterialProperties)
Set specular material properties.
Definition: Material.cpp:28
static Material * getDefaultMaterial()
Definition: Material.h:33
void setPBRMaterialProperties(PBRMaterialProperties *pbrMaterialProperties)
Set PBR material properties.
Definition: Material.cpp:32
const PBRMaterialProperties * getPBRMaterialProperties() const
Definition: Material.h:78
static STATIC_DLL_IMPEXT string defaultMaterialId
Definition: Material.h:25
const SpecularMaterialProperties * getSpecularMaterialProperties() const
Definition: Material.h:64
static STATIC_DLL_IMPEXT unique_ptr< Material > defaultMaterial
Definition: Material.h:26
unique_ptr< PBRMaterialProperties > pbrMaterialProperties
Definition: Material.h:40
Material(const string &id)
Public constructor.
Definition: Material.cpp:21
const string & getId() const
Definition: Material.h:57
const Matrix3x3 & getTextureMatrix() const
Definition: Material.h:119
unique_ptr< SpecularMaterialProperties > specularMaterialProperties
Definition: Material.h:39
void setDoubleSided(bool doubleSided)
Set double sided.
Definition: Material.h:112
void setTextureMatrix(const Matrix3x3 &textureMatrix)
Set texture matrix.
Definition: Material.h:127
PBRMaterialProperties * getPBRMaterialProperties()
Definition: Material.h:85
SpecularMaterialProperties * getSpecularMaterialProperties()
Definition: Material.h:71
Represents specular material properties.
Represents specular material properties.
Matrix3x3 class representing matrix3x3 mathematical structure and operations for 2d space.
Definition: Matrix3x3.h:20
#define STATIC_DLL_IMPEXT
Definition: tdme.h:15
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6