#ifndef __ORSHADER_SCREEN_H__
#define __ORSHADER_SCREEN_H__
#ifndef ORSDK_DLL
#define ORSDK_DLL K_DLLIMPORT
#endif
#define ORSHADERSCREEN__CLASSNAME ORShaderScreen
#define ORSHADERSCREEN__CLASSSTR "ORShaderScreen"
#define ORSHADERSCREEN__DESCSTR "OR - Shader Screen"
class ORSDK_DLL ORShaderScreen : public FBShader
{
public:
virtual bool FBCreate();
virtual void FBDestroy();
public:
virtual FBShaderModelInfo* NewShaderModelInfo(
HKModelRenderInfo pModelRenderInfo,
int pSubRegionIndex);
virtual void DestroyShaderModelInfo( FBRenderOptions* pOptions, FBShaderModelInfo* pInfo );
virtual void ShadeModel( FBRenderOptions* pRenderOptions, FBShaderModelInfo* pShaderModelInfo,
FBRenderingPass pPass );
bool FbxStore (FBFbxObject* pFbxObject);
bool FbxRetrieve(FBFbxObject* pFbxObject, FBRenderer* pRenderer);
public:
void AnimateColor1 ( bool pState ) { mColor1.SetAnimated(pState); }
void AnimateColor2 ( bool pState ) { mColor2.SetAnimated(pState); }
void AnimateIntensity ( bool pState ) { mIntensity.SetAnimated(pState); }
void KeyColor1 () { mColor1.Key(); }
void KeyColor2 () { mColor2.Key(); }
void KeyIntensity () { mIntensity.Key(); }
bool IsColor1Animated () { return mColor1.IsAnimated(); }
bool IsColor2Animated () { return mColor2.IsAnimated(); }
bool IsIntensityAnimated() { return mIntensity.IsAnimated(); }
public:
enum ORColorOp
{
eMultiply,
eAdd,
eAverage,
eSubtract1,
eSubtract2,
eColor1,
eColor2,
eColorOpCount
};
ORColorOp GetColorOp() { return mColorOp; }
void SetColorOp(ORColorOp pOp) { mColorOp = pOp; }
const char* GetColorOpName(ORColorOp pOp) { return ColorOpNames[pOp]; }
private:
static const char* ColorOpNames[eColorOpCount];
public:
void SetColor1( FBColor pValue ) { mColor1 = pValue; }
FBColor GetColor1() { return mColor1; }
void SetColor2( FBColor pValue ) { mColor2 = pValue; }
FBColor GetColor2() { return mColor2; }
void SetIntensity(double pValue) { mIntensity = pValue; }
double GetIntensity() { return mIntensity; }
private:
FBSystem mSystem;
ORColorOp mColorOp;
};
#endif