00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #pragma once
00015
00016 #include "ifnpub.h"
00017 #include "inode.h"
00018
00019
00020 class INode;
00021
00023 #define NODEMENTALRAYPROPERTIES_INTERFACE Interface_ID(0x1c763921, 0x4d542752)
00024
00025
00026
00027
00038 class INodeMentalRayProperties : public FPMixinInterface {
00039
00040 public:
00041
00042 enum DisplacementMethod {
00043 kDisplacementMethod_Fine = 0,
00044 kDisplacementMethod_Fine_NoSmoothing = 1
00045 };
00046
00047 enum CastModeFG {
00048 kCastModeFG_ObjColor = 0,
00049 kCastModeFG_Black = 1,
00050 kCastModeFG_Invisible =2
00051 };
00052
00056 static INodeMentalRayProperties* Get_INodeMentalRayProperties(INode& node);
00057
00060 virtual void CopyMentalRayPropertiesFrom(const INodeMentalRayProperties& source) = 0;
00061
00064 virtual bool MRGetDisplacementUseGlobalSettings() const = 0;
00065
00068 virtual void MRSetDisplacementUseGlobalSettings(bool useGlobal) = 0;
00069
00072 virtual DisplacementMethod MRGetDisplacementMethod() const = 0;
00073
00076 virtual void MRSetDisplacementMethod(DisplacementMethod method) = 0;
00077
00080 virtual bool MRGetIsViewDependentDisplacement() const = 0;
00081
00084 virtual void MRSetIsViewDependentDisplacement(bool viewDependent) = 0;
00085
00090 virtual float MRGetDisplacementEdgeLength() const = 0;
00091
00096 virtual void MRSetDisplacementEdgeLength(float length) = 0;
00097
00100 virtual float MRGetMaxDisplace() const = 0;
00101
00104 virtual void MRSetMaxDisplace(float maxDisplace) = 0;
00105
00108 virtual unsigned short MRGetDisplacementMaxLevel() const = 0;
00109
00112 virtual void MRSetDisplacementMaxLevel(unsigned short maxLevel) = 0;
00113
00116 virtual bool MRGetReceiveFGIllum() const = 0;
00117
00120 virtual void MRSetReceiveFGIllum(bool onOff) = 0;
00121
00124 virtual CastModeFG MRGetCastModeFGIllum() const = 0;
00125
00128 virtual void MRSetCastModeFGIllum(CastModeFG method) = 0;
00129
00132 virtual bool MRGetExcludeGlobalIllum() const = 0;
00133
00136 virtual void MRSetExcludeGlobalIllum(bool onOff) = 0;
00137
00140 virtual bool MRGetExcludeCaustics() const = 0;
00141
00144 virtual void MRSetExcludeCaustics(bool onOff) = 0;
00145
00146 private:
00147
00148
00149 void MRSetDisplacementMethod(int method);
00150 void MRSetCastModeFGIllum(int mode);
00151
00152 public:
00153
00154
00155 enum PROPERTY_ACCESSOR_ID {
00156 GET_DISPLACEMENTUSEGLOBALSETTINGS,
00157 SET_DISPLACEMENTUSEGLOBALSETTINGS,
00158 GET_DISPLACEMENTMETHOD,
00159 SET_DISPLACEMENTMETHOD,
00160 GET_VIEWDEPENDENTDISPLACEMENT,
00161 SET_VIEWDEPENDENTDISPLACEMENT,
00162 GET_DISPLACEMENTEDGELENGTH,
00163 SET_DISPLACEMENTEDGELENGTH,
00164 GET_MAXDISPLACE,
00165 SET_MAXDISPLACE,
00166 GET_DISPLACEMENTMAXLEVEL,
00167 SET_DISPLACEMENTMAXLEVEL,
00168 GET_RECEIVEFGILLUM,
00169 SET_RECEIVEFGILLUM,
00170 GET_CASTMODEFGILLUM,
00171 SET_CASTMODEFGILLUM,
00172 GET_EXCLUDEGLOBALILLUM,
00173 SET_EXCLUDEGLOBALILLUM,
00174 GET_EXCLUDECAUSTICS,
00175 SET_EXCLUDECAUSTICS
00176 };
00177
00178 #pragma warning(push)
00179 #pragma warning(disable:4244)
00180 BEGIN_FUNCTION_MAP
00181
00182 PROP_FNS(GET_DISPLACEMENTUSEGLOBALSETTINGS, MRGetDisplacementUseGlobalSettings, SET_DISPLACEMENTUSEGLOBALSETTINGS, MRSetDisplacementUseGlobalSettings, TYPE_bool);
00183 PROP_FNS(GET_DISPLACEMENTMETHOD, MRGetDisplacementMethod, SET_DISPLACEMENTMETHOD, MRSetDisplacementMethod, TYPE_ENUM);
00184 PROP_FNS(GET_VIEWDEPENDENTDISPLACEMENT, MRGetIsViewDependentDisplacement, SET_VIEWDEPENDENTDISPLACEMENT, MRSetIsViewDependentDisplacement, TYPE_bool);
00185 PROP_FNS(GET_DISPLACEMENTEDGELENGTH, MRGetDisplacementEdgeLength, SET_DISPLACEMENTEDGELENGTH, MRSetDisplacementEdgeLength, TYPE_FLOAT);
00186 PROP_FNS(GET_MAXDISPLACE, MRGetMaxDisplace, SET_MAXDISPLACE, MRSetMaxDisplace, TYPE_WORLD);
00187
00188 PROP_FNS(GET_DISPLACEMENTMAXLEVEL, MRGetDisplacementMaxLevel, SET_DISPLACEMENTMAXLEVEL, MRSetDisplacementMaxLevel, TYPE_INT);
00189 PROP_FNS(GET_RECEIVEFGILLUM, MRGetReceiveFGIllum, SET_RECEIVEFGILLUM, MRSetReceiveFGIllum, TYPE_bool);
00190 PROP_FNS(GET_CASTMODEFGILLUM, MRGetCastModeFGIllum, SET_CASTMODEFGILLUM, MRSetCastModeFGIllum, TYPE_ENUM);
00191 PROP_FNS(GET_EXCLUDEGLOBALILLUM, MRGetExcludeGlobalIllum, SET_EXCLUDEGLOBALILLUM, MRSetExcludeGlobalIllum, TYPE_bool);
00192 PROP_FNS(GET_EXCLUDECAUSTICS, MRGetExcludeCaustics, SET_EXCLUDECAUSTICS, MRSetExcludeCaustics, TYPE_bool);
00193 END_FUNCTION_MAP
00194 #pragma warning(pop)
00195 };
00196
00197 inline void INodeMentalRayProperties::MRSetDisplacementMethod(int method) {
00198
00199 return MRSetDisplacementMethod(static_cast<DisplacementMethod>(method));
00200 }
00201
00202 inline void INodeMentalRayProperties::MRSetCastModeFGIllum(int mode) {
00203 MRSetCastModeFGIllum(static_cast<CastModeFG>(mode));
00204 }
00205
00206 inline INodeMentalRayProperties* INodeMentalRayProperties::Get_INodeMentalRayProperties(INode& node) {
00207
00208 return static_cast<INodeMentalRayProperties*>(node.GetInterface(NODEMENTALRAYPROPERTIES_INTERFACE));
00209 }
00210