...
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 initialize() 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 ... } } |
...