1 #ifndef LWPP_LIGHT_HANDLER
2 #define LWPP_LIGHT_HANDLER
22 Context =
static_cast<LWItemID
>(context);
27 return (LWLIGHTTYPEF_NO_PHOTONS | LWLIGHTTYPEF_NO_RAYILLUM);
29 virtual LWError
NewFrame (
const LWFrameInfo* frameinfo,
unsigned int* maxilluminations,
const LWLightAccess* lightaccess) = 0;
30 virtual int Evaluate (
const LWDVector spot,
double fractime, LWIllumination illumination[],
const LWLightAccess* lightaccess) = 0;
31 virtual unsigned int GetPhotons (
unsigned int maxphotons, LWPhoton photons[],
const LWLightAccess* lightaccess) {
return 0;}
32 virtual unsigned int GetRayIlluminations (LWDVector raystart, LWDVector raydir,
double farclip,
unsigned int maxrayilluminations, LWRayIllumination rayilluminations[],
const LWLightAccess* lightaccess) {
return 0;}
33 virtual const LWPreviewLight*
Preview() {
return 0;}
40 template <
class T,
int maxVersion,
int minVersion>
49 static int Activate (
int version, GlobalFunc *global, LWInstance inst,
void *serverData)
54 if ( version > maxVersion )
return AFUNC_BADVERSION;
55 if ( version < minVersion )
return AFUNC_BADVERSION;
57 LWLightHandler *plugin =
static_cast<LWLightHandler *
>(inst);
62 plugin->evaluate = LightAdaptor::Evaluate;
63 plugin->flags = LightAdaptor::Flags;
64 plugin->newFrame = LightAdaptor::NewFrame;
65 plugin->getPhotons = LightAdaptor::GetPhotons;
66 plugin->getRayIlluminations = LightAdaptor::GetRayIlluminations;
67 plugin->preview = LightAdaptor::Preview;
70 catch (std::exception &e)
77 static LWError NewFrame (LWInstance instance,
const LWFrameInfo* frameinfo,
unsigned int* maxilluminations,
const LWLightAccess* lightaccess)
81 T *plugin = (T *) instance;
82 return plugin->NewFrame(frameinfo, maxilluminations, lightaccess);
84 catch (std::exception &e)
90 static int Evaluate (LWInstance instance,
const LWDVector spot,
double fractime, LWIllumination illumination[],
const LWLightAccess* lightaccess)
94 T *plugin = (T *) instance;
95 return plugin->Evaluate(spot, fractime, illumination, lightaccess);
97 catch (std::exception &e)
103 static unsigned int GetPhotons (LWInstance instance,
unsigned int maxphotons, LWPhoton photons[],
const LWLightAccess* lightaccess)
107 T *plugin = (T *) instance;
108 return plugin->GetPhotons(maxphotons, photons, lightaccess);
110 catch (std::exception &e)
117 static unsigned int GetRayIlluminations (LWInstance instance, LWDVector raystart, LWDVector raydir,
double farclip,
unsigned int maxrayilluminations, LWRayIllumination rayilluminations[],
const LWLightAccess* lightaccess)
121 T *plugin = (T *) instance;
122 return plugin->GetRayIlluminations(raystart, raydir, farclip, maxrayilluminations, rayilluminations, lightaccess);
124 catch (std::exception &e)
131 static const LWPreviewLight* Preview (LWInstance instance)
135 T *plugin = (T *) instance;
136 return plugin->Preview();
138 catch (std::exception &e)
146 static unsigned int Flags (LWInstance instance)
150 T *plugin = (T *) instance;
151 return plugin->Flags();
153 catch (std::exception &e)
168 #endif // LWSDK version check
169 #endif // LWPP_LIGHT_HANDLER