Tool Design
From K-3D
By design, K-3D plugins do not expose any user interface or interactive behavior - a plugin is a "black box" that exposes some set of properties and interfaces. This ensures that plugins are easy to author, are independent of any particular UI toolkit, and will be compatible with any UI plugins that exist / evolve.
In the Next Generation User Interface, a "Tool" is an object that layers interactive behavior on top of a plugin. As an example, the Move Tool allows the user to click-and-drag in a viewport to interactively move nodes and points. In this case a transformation modifier is doing the work, while the Move Tool in the UI layer is mapping mouse movement to changes in the modifier properties. It is anticipated that some plugins will have dedicated Tools, some plugins may have more than one Tool, and some plugins may have no Tool, in which case their properties will only be editable through the general-purpose Node Properties Panel. Conversely, there is no reason why some special-purpose Tool might not modify the properties of more than one underlying plugin. Tools are not limited to modifying node properties - they may create nodes, make-and-break connections between properties, and destroy nodes, depending on their purpose.
Currently, the following behaviors apply to Tools in the NGUI:
- There is always only one Tool active at a time.
- The active Tool applies to all viewports (there are no per-viewport Tools).
- The default Tool is the Selection Tool.
- For the majority of Tools, viewport navigation works normally while the Tool is active.
- In some cases, a Tool may need to override some-or-all viewport navigation events for its own needs.
- In some cases, a Tool will need to draw graphics and/or text into the viewports, for manipulators, on-screen-display, etc.
- In some cases, a Tool will need to have hotspots that respond to input events.
- In some cases, a Tool will need support for interactive picking of on-screen objects from any viewport. Ideally this should also allow for picking objects from the Node List Panel, Node History Panel, Visualization Pipeline, etc.
- In most cases, a Tool will display a custom cursor or cursors while active.