...
Code Block | ||
---|---|---|
| ||
class CbaseExtension { MXparamList *priv; void setPrivateExtensionData( MXparamList* pL ) const; public: CbaseExtension(); CbaseExtension( const CbaseExtension &orig ); CbaseExtension& operator=( const CbaseExtension& voidother internalCreation (); void void internalCreation setPrivateExtensionData( MXparamList* pL ); const; virtual ~CbaseExtension(); virtual CbaseExtension* clone() const = 0; virtual const char* getName() const = 0; virtual const unsigned int getVersion() const = 0; virtual void setExtensionData( MXparamList* p ) const = 0; //User Implemented Optional Methods virtual void getFileDependencies( dword& numDependencies, char** &paths ) { numDependencies = 0; }; virtual void handleEvent( const char* event , void* param ) {}; virtual bool initializeForRendering( Cmaxwell* pMaxwell ) = 0; virtual void cleanup( Cmaxwell* pMaxwell ) {}; virtual bool initializePreview( Cmaxwell* pMaxwell ) { return ( true ); } virtual void freePreview( void ) { } //Interface Methods MXparamList* getExtensionData( void ) const; void setEnabled( const bool enable ); bool isEnabled( void ) const; }; |
For example, getFileDependenciesis useful when the extension depends on one or more files. Studio calls this function when doing a "Pack & Go" to retrieve and copy all the dependencies of a given scene. Mxnetwork also calls this function to check all the dependencies of a scene before sending it to the render nodes.
initializeForRendering is called just before rendering starts, and the incoming pMaxwell (always check != NULL ) is useful for accessing the scene, so it is handy to store it as a class member.
The following functions are called exclusively from Studio.: initializePreview and freePreview mainly reset and free the arrays allocated in getProxyDisplay*. Keep a copy of the allocated pointers as members of the class and free them in freePreview.
...
virtual bool initializeForRendering( Cmaxwell* pMaxwell ) = 0;
Called at the initial stage before rendering starts. Useful for pre-allocating everything that will be needed during the render. This is especially important for Procedural Geometry extensions.
Arguments
Cmaxwell* pMaxwell
: input, pointer to the scene.
Returns
true
on success, false
otherwise. false
aborts the render.
getFileDependencies
virtual void getFileDependencies( dword& numDependencies, char**& paths );
This function returns all the paths of the files that the extension depends on.
Arguments
dword& numDependencies
: output, number of paths.
char**& paths
: output, array of paths. On entry, the pointer is NULL. Allocate with malloc.
Returns
nothing.
initializePreview
virtual bool initializePreview( Cmaxwell* pMaxwell );
Reset all the pointers allocated in getProxyDisplay* and make them ready for reuse.
Arguments
Cmaxwell* pMaxwell
: input, pointer to the scene.
Returns
true
on success, false
otherwise.
freePreview
virtual void
freePreview( void );
Free the allocated pointers in getProxyDisplay*.
Arguments
none.
Returns
nothing.