mirror of
https://github.com/ApfelTeeSaft/vb01.git
synced 2026-08-26 19:33:45 +00:00
57 lines
2.7 KiB
C++
Executable File
57 lines
2.7 KiB
C++
Executable File
#ifndef MATERIAL_H
|
|
#define MATERIAL_H
|
|
|
|
#include "shader.h"
|
|
#include "texture.h"
|
|
#include "vector.h"
|
|
#include "animatable.h"
|
|
|
|
#include <vector>
|
|
|
|
namespace vb01{
|
|
class Material : public Animatable{
|
|
public:
|
|
enum Type{MATERIAL_2D, MATERIAL_PARTICLE, MATERIAL_SKYBOX, MATERIAL_GUI, MATERIAL_POST, MATERIAL_TEXT};
|
|
|
|
Material(Type = MATERIAL_2D);
|
|
~Material();
|
|
void update();
|
|
inline void addDiffuseMap(Texture *texture){diffuseMapTextures.push_back(texture);}
|
|
inline void addDiffuseMap(std::string diffuseMap[6]){diffuseMapTextures.push_back(new Texture(diffuseMap));}
|
|
inline void addNormalMap(Texture *texture){normalMapTextures.push_back(texture);}
|
|
inline void addSpecularMap(Texture *texture){specularMapTextures.push_back(texture);}
|
|
inline void addParallaxMap(Texture *texture){parallaxMapTextures.push_back(texture);}
|
|
inline void setDiffuseColor(Vector4 diffuse){this->diffuseColor = diffuse;}
|
|
inline void setSpecularColor(Vector4 specular){this->specularColor = specular;}
|
|
inline void setLightingEnabled(bool lighting){this->lightingEnabled = lighting;}
|
|
inline void setTexturingEnabled(bool texturing){this->texturingEnabled = texturing;}
|
|
inline void setDiffuseColorEnabled(bool diffuseColor){this->diffuseColorEnabled = diffuseColor;}
|
|
inline void setNormalMapEnabled(bool enabled){this->normalMapEnabled = enabled;}
|
|
inline void setSpecularMapEnabled(bool enabled){this->specularMapEnabled = enabled;}
|
|
inline void setParallaxMapEnabled(bool enabled){this->parallaxMapEnabled = enabled;}
|
|
inline void setShinyness(int shinyness){this->shinyness = shinyness;}
|
|
inline void setSpecularStrength(float specStr){this->specularStrength = specStr;}
|
|
inline bool isLightingEnabled(){return lightingEnabled;}
|
|
inline bool isTexturingEnabled(){return texturingEnabled;}
|
|
inline bool isDiffuseColorEnabled(){return diffuseColorEnabled;}
|
|
inline Texture* getDiffuseMap(int i){return diffuseMapTextures[i];}
|
|
inline Texture* getNormalMap(int i){return normalMapTextures[i];}
|
|
inline Texture* getSpecularMap(int i){return specularMapTextures[i];}
|
|
inline Shader* getShader(){return shader;}
|
|
inline Type getType(){return type;}
|
|
private:
|
|
Type type;
|
|
int shinyness = 32;
|
|
float specularStrength = .5;
|
|
bool lightingEnabled = false, texturingEnabled = true, diffuseColorEnabled = false, normalMapEnabled = false, specularMapEnabled = false, parallaxMapEnabled = false;
|
|
std::vector<Texture*> diffuseMapTextures, normalMapTextures, specularMapTextures, parallaxMapTextures;
|
|
Vector4 diffuseColor = Vector4::VEC_IJKL, specularColor = Vector4::VEC_ZERO;
|
|
Shader *shader = nullptr;
|
|
|
|
void initShader();
|
|
void animate(float, KeyframeChannel);
|
|
};
|
|
}
|
|
|
|
#endif
|