00001 #ifndef GRMATERIAL_H
00002 #define GRMATERIAL_H
00003
00004 #include "Graphics/GRVisual.h"
00005
00006 namespace Spr {;
00007
00008 struct GRMaterialData{
00009 Vec4f diffuse;
00010 Vec4f ambient;
00011 Vec4f specular;
00012 Vec4f emissive;
00013 float power;
00014 GRMaterialData(){ power = 0.0f; }
00015 GRMaterialData(Vec4f d, Vec4f a, Vec4f s, Vec4f e, float p):
00016 diffuse(d), ambient(a), specular(s), emissive(e), power(p){}
00017 GRMaterialData(Vec4f c, float p):
00018 diffuse(c), ambient(c), specular(c), emissive(c), power(p){}
00019 GRMaterialData(Vec4f c):
00020 diffuse(c), ambient(c), specular(c), emissive(c), power(0.0f){}
00021 bool IsOpaque(){
00022 return diffuse.W() >= 1.0 && ambient.W() >= 1.0 && specular.W() >= 1.0 && emissive.W() >= 1.0;
00023 }
00024 };
00025
00026 class SPR_DLL GRMaterial:public GRVisual, public GRMaterialData{
00027 public:
00028 SGOBJECTDEFABST(GRMaterial);
00029
00030 UTString textureFilename;
00031
00032 virtual void Render(SGFrame* n, GRRender* r);
00033 };
00034
00035 }
00036 #endif