## 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