00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __OBJ_Ambient_h__
00021 #define __OBJ_Ambient_h__
00022
00023 #include "OBJ_API.h"
00024 #include "OBJ_Camera.h"
00025
00026 class obj_Scene;
00027 class IFD_LightParms;
00028 class RE_Light;
00029
00030 enum OBJ_AmbIndex
00031 {
00032 I_DIMMER = I_N_CAM_INDICES,
00033
00034 I_N_AMB_INDICES
00035 };
00036
00037
00038
00039 class OBJ_API OBJ_Ambient : public OBJ_Camera
00040 {
00041 public:
00042 OBJ_Ambient(OP_Network *, const char *, OP_Operator *);
00043 virtual ~OBJ_Ambient();
00044
00045 static PRM_Template *getObsolete();
00046
00047 virtual void getIFDParms(IFD_ObjectParms &parms, float t,
00048 const char *);
00049 virtual void getIFDParms(IFD_LightParms &parms, float t,
00050 const char *);
00051 virtual void getIFDParms(IFD_CameraParms &parms, float t,
00052 const char *);
00053 virtual RE_Light *getLightValue();
00054 virtual void updateLightValue(float t);
00055 virtual int isAmbient();
00056
00057 void getColor(float &r, float &g, float &b, fpreal t)
00058 {
00059 fpreal dim = DIMMER(t);
00060 r = CR(t)*dim;
00061 g = CG(t)*dim;
00062 b = CB(t)*dim;
00063 }
00064 virtual OBJ_OBJECT_TYPE getObjectType() const;
00065
00066 virtual void rmanBestShader(UT_String &str, float t) = 0;
00067 virtual void vexBestShader(UT_String &str, float t) = 0;
00068 virtual void vexBestShadow(UT_String &str, float t) = 0;
00069
00070 static PRM_Template *getTemplateList();
00071
00072 virtual OBJ_Ambient *castToOBJAmbient() { return this; }
00073
00074 fpreal DIMMER(fpreal t);
00075 void SHADER(UT_String &str, fpreal t);
00076 void RISHADER(UT_String &str, fpreal t);
00077 fpreal CR(fpreal t);
00078 fpreal CG(fpreal t);
00079 fpreal CB(fpreal t);
00080 int BIND_OGL_LIGHT(fpreal t);
00081
00082 virtual int collectPropertiesFromChannels(
00083 PI_EditScriptedParms &editparms,
00084 UT_BitArray &selection,
00085 const CH_ChannelList &channels);
00086 virtual int collectPropertiesFromParms(
00087 PI_EditScriptedParms &editparms,
00088 UT_StringArray &names,
00089 PRM_ParmNameMap &nmap);
00090
00091 protected:
00092
00093
00094 virtual int *getIndirect() const
00095 { return ambientIndirect; }
00096
00097 RE_Light *myRELight;
00098 private:
00099
00100 static int *ambientIndirect;
00101 };
00102
00103 #endif