...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
class CubeExampleExtension : public CgeometryLoaderExtension
{
// Macro for bureaucracy. Parameters: extension name, main class in the extension, and the version number
DECLARE_EXTENSION_METHODS( "CubeExample", CubeExampleExtension, 1 )
public:
//declare internal variables for calculation, they can be public or private, and should include at least
//variables for storing extensionData values
double cubeSize;
CubeExampleExtension()
{
// create here the editable values of the extensions, they can be modified when used,
// getExtensionData returns the internal MxParamList to create new fields
// check MxParamList for all possibilities of types creation
//create parameter with name, default value, minimum value and maximum value
getExtensionData()->createDouble( "Cube size", 1.0, 0, 1000 );
}
~CubeExampleExtension()
{
//not needed to implement since we don't reserve memory.
}
bool initializeForRendering( Cmaxwell* pMaxwell )
{
//We must at least copy the extensionData values to internal variables, this will be called usually just one time,
//before maxwell needs it, and never during render time. All the heavy work must be done here.
getExtensionData()->getDouble( "Cube size", cubeSize );//Get the parameter value and store it before using it
return true;
}
bool loadMesh( Cmaxwell::Cobject &cube )
{
...
// CgeometryLoaderExtension method, will be explained in the corresponding chapter
...
}
bool getBoundingBox( Cvector &bmin, Cvector& bmax)
{
...
// CgeometryLoaderExtension method, will be explained in the corresponding chapter
...
}
}
extern "C" ALWAYSEXPORT int getSdkVersion()
{
return MAXWELL_SDK_VERSION;
}
extern "C" ALWAYSEXPORT int StartExtension( CextensionManager& extensionManager )
{
int i = 0;
if( extensionManager.registerGeometryLoaderExtension( new CubeExampleExtension ) ) i++;
return i;
} |