Softimage SDK Programmer's Guide > Customizing Softimage using the SDK > Self-Installing Plug-ins >

# Registering Plug-in Items

A self-installing plug-in can implement commands, events, filters, menus, shaders, and properties. A C++ plug-in can also implement custom displays, viewport modes and callbacks, and rendering engines.

A plug-in can contain more than one plug-in item. For a example, a plug-in could include a command, a menu that runs the command, a filter that controls when the menu is available, and a custom property that serves as the plug-in user interface.

In XSILoadPlugin, you use the following PluginRegistrar or PluginRegistrar methods to register plug-in items:

- PluginRegistrar.RegisterCommand or PluginRegistrar::RegisterCommand

- PluginRegistrar.RegisterConverterEvent or PluginRegistrar::RegisterConverterEvent

- PluginRegistrar.RegisterEvent or PluginRegistrar::RegisterEvent

- PluginRegistrar.RegisterFilter or PluginRegistrar::RegisterFilter

- PluginRegistrar.RegisterMenu or PluginRegistrar::RegisterMenu

- PluginRegistrar.RegisterOperator or PluginRegistrar::RegisterOperator

- PluginRegistrar.RegisterProperty or PluginRegistrar::RegisterProperty

- PluginRegistrar.RegisterShader or PluginRegistrar::RegisterShader

- PluginRegistrar.RegisterShaderLanguageParser or PluginRegistrar::RegisterShaderLanguageParser

- PluginRegistrar.RegisterTimerEvent or PluginRegistrar::RegisterTimerEvent

C++ plug-ins can register custom displays, display passes, and display callbacks using these PluginRegistrar member functions:

- RegisterCustomDisplay

- RegisterDisplayPass

- RegisterDisplayCallback

- RegisterRenderer

For example, the following XSILoadPlugin registers a command, a menu, property, and an event:

    // JScript
    function XSILoadPlugin( oPluginRegistrar )
    {

    	// Register command
    	var oPluginItem = oPluginRegistrar.RegisterCommand("MyCommand","MyCommand");

    	// Register a custom property
    	oPluginRegistrar.RegisterProperty( "MyProperty" );

    	// Register an event handler for changes to the selection list
    	oPluginRegistrar.RegisterEvent( "MySelectionChangeHandler", siOnSelectionChange );

    	return true;
    }

By default, Softimage uses the plug-in help as the help for plug-in items. If you want to provide a different help for each plug-in, you can use SIObject.Help or PluginItem::PutHelp to specify the name of the help file and, optionally, its location.

    // JScript
    function XSILoadPlugin( oPluginRegistrar )
    {
    	// ...

    	var oPluginItem = oPluginRegistrar.RegisterCommand("MyCommand","MyCommand");

    	oPluginItem.Help = XSIUtils.BuildPath( in_reg.OriginPath, "Doc", "MyCommand.html" );
    	oPluginItem.Categories = "Example, Command";

    	// ...
    }