/********************************************************************** This script is provided as part of the Daz Script Documentation. The contents of this script, and\or any portion thereof, may only be used in accordance with the following license: Creative Commons Attribution 3.0 Unported (CC BY 3.0) - http://creativecommons.org/licenses/by/3.0 To contact Daz 3D or for more information about Daz Script visit the Daz 3D website: - http://www.daz3d.com **********************************************************************/ // Source: /public/software/dazstudio/4/referenceguide/scripting/api_reference/samples/elements/callback_property_current_value_changed/start // 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 a property if( !oSender || !oSender.inherits( "DzProperty" ) ){ // We are done... return; } // oScript, sBasePath, oElement 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 ); // 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 if( !oProperty ){ // We are done... return; } // Get the value of the sender var vValue = oSender.getValue(); // If the value of the target is the same as the source if( oProperty.getValue() != vValue ){ // Update the value of the target with the sender's value oProperty.setValue( vValue ); } // Finalize the function and invoke })();