Plugin.UserData

Introduced

v6.01

Description

Sets or returns Variant data inside the Plugin object. Softimage does not care about the content or meaning of the data. You can store a wide variety of data, including simple types, Arrays and object references. Once added the data remains active as long as Softimage is running or until you manually unload the plug-in. The user data is not persisted.

Note: Plugin.UserData is commonly used for storing a value that can be accessed locally in the plug-in module or globally by other plug-ins. For scripted plug-ins, it is strongly recommended to use Plugin.UserData as instead of using global variables defined in the plug-in module. This is particularly important in the context of rendering operations where plug-ins get executed in multiple threads. When a plug-in gets executed in a different thread, Softimage makes a copy of its running scripting engine and parses the plug-in file again which re-initializes any plug-in global variables that are referred to in the plug-in implementation. Plugin.UserData on the other hand ensures the data integrity across threads.

C# Syntax

// get accessor
Object rtn = Plugin.UserData;
// set accessor
Plugin.UserData = Object;

Examples

Python Example

# How to access a plug-in user data
from win32com.client.dynamic import Dispatch 
# Optional global variable to speed up data access
g_userdata = None
def GetUserData():
	if ( g_userdata == None ):
		# Dictionary not defined yet
		# Get the plug-in object storing the dictionary
		myPlugin = Application.Plugins("My plugin");
		if ( myPlugin.UserData == None ):		
			# Dictionary not defined yet, create it and add some object
			dict = Dispatch( "Scripting.Dictionary" )
			dict[ 'SurfPos' ] = XSIMath.CreateVector3()
			dict[ 'OutPos' ] = XSIMath.CreateVector3()
			# Store the new dictionary in the plug-in
			myPlugin.UserData = dict
		# Cache the dictionary in this module for fast access
		g_userdata = myPlugin.UserData
	return g_userdata

See Also

XSIApplication.UnloadPlugin PluginRegistrar.UserData