User Tools

Site Tools


Callback - Active Renderer Changed, Signal Property Map Changed

Summary

The script on this page is included by a script embedded within, and executed by, a DzCallBack that is connected to the activeRendererChanged(DzRenderer*) signal on DzRenderMgr. Several variables used in this script are assumed to be defined in the script that includes this script.

The purpose of this script is to find a (predefined) target DzNumericProperty on a (predefined) target DzRenderer and cause the mapChanged() signal to be emitted (thereby triggering updates between associated properties).

See Also: Element Post-Load Create Callbacks

API Areas of Interest

Example

Callback_activeRendererChanged_mapChanged.dsa
// Define an anonymous function;
// limits the scope of variables
(function(){
 
	// 'CallBack' is a global transient variable, available when
	// this script is executed by a DzCallBack
 
	// If we did not find the 'CallBack' global transient;
	// this script was executed outside the context of a DzCallBack	
	if( typeof( CallBack ) == "undefined" ){
		// We are done...
		return;
	}
 
	// Get the object that prompted the callback
	var oSender = CallBack.getSender();
	// If we do not have a sender or the sender is not the render manager
	if( !oSender || !oSender.inherits( "DzRenderMgr" ) ){
		// We are done...
		return;
	}
 
	// oScript, sBasePath, and sProperty are assumed to be defined in the script
	// that includes this script; i.e., the CallBack
	// created in Callbacks_Element_Post_Load_Create.ds*
 
	// Get the path of the FindProperty script. Doing it this way, we can debug
	// with an ascii file and ship a binary [encrypted] file with the same
	// name... without having to update the contents of the script or manually
	// handle the file extensions.
	var sFindPropertyPath = oScript.getScriptFile( "%1/FindProperty".arg( sBasePath ) );
	// If the script was not found
	if( sFindPropertyPath.isEmpty() ){
		// We are done...
		return;
	}
 
	// Include the FindProperty script
	include( sFindPropertyPath );
 
	/*********************************************************************/
	// Get the number of arguments
	var nArgs = CallBack.getArgCount();
	// If we did not get arguments
	if( nArgs < 1 ){
		// We are done...
		return;
	}
 
	// Get the first argument
	var oArg = CallBack.getArg( 0 );
	// If the argument is not a renderer
	if( !oArg.inherits( "DzRenderer" ) ){
		// We are done...
		return;
	}
 
	// If the element was not found
	if( !oElement ){
		// We are done...
		return;
	}
 
	// Find the property
	var oProperty = findElementProperty( oElement, sProperty, false );
	// If the property was not found, the property is not numeric, or the property is not mappable
	if( !oProperty || !oProperty.inherits( "DzNumericProperty" ) || !oProperty.isMappable() ){
		// We are done...
		return;
	}
 
	// Emit the signal
	oProperty.mapChanged();
 
// Finalize the function and invoke
})();