Tool Operation - Overview

__TOC__

The Tool Operation provides a way to integrate existing modelling tools into the procedural system. A tool creates a tool operation, that is automatically wrapped by a mesh operation, allowing it to be evaluated as part of the procedural stack. Tool Operations provide an advantage over Mesh Operations, as they allow tool handles, and access to the tool pipe.

Tool Pipe

When integrating a traditional tool into the procedural system, a tool operation generated by the tool is wrapped automatically by a mesh operation, allowing the tool operation to be evaluated whenever the mesh operation is evaluated. One of the main advantages of tools, is that multiple tools can be combined to create new and interesting operations. For example, a Sweep Effector can be combined with a Curve Generator to create a curve extrude, however, combining the same Sweep Effector with a Helix Generator will create a Spring tool. This behaviour is provided using a mechanism known as the tool pipe; for every tool operation item of the “ACTR” type, a tool pipe graph input is exposed on the item, allowing sub-tools to be connected to modify the “ACTR” tool behaviour. Each Tool Operation is provided with a tool vector, which can be used to get packets defined by previous tools in the tool pipe, and set packets used by subsequent tools in the tool pipe. Each Mesh Operation in the procedural stack that wraps a tool operation, has it’s own unique tool pipe, allowing each operation in the stack to have it’s own collection of sub-tools to modify it’s behaviour.

Creation Command

The Tool Operation can provide a creation command that will be executed to handle the creation of the tool operation item. This allows things like dialogs to be created to ask the user for input, or to create graph connections on creation. To define a creation command, the following server tag should be added to the mesh operation server, the value of the tag should be the command to execute.

1
#define LXsPKG_MESHOP_CREATECMD         "meshop.create"