Node Editor
Availability LightWave® 9.0
Component Layout,Modeler Header
lwnodeeditor.h
This global provides access to a user interface for editing nodes.
Global Call
LWNodeEditorFuncs *nodeedf;
nodeedf = global( LWNODEEDITORFUNCS_GLOBAL, GFUSE_TRANSIENT );
Root Node Functions
typedef struct LWRootNode_t {
NodePreviewType previewType;
LWError (*init)( NodeEditorID, int );
LWError (*newTime)( NodeEditorID, LWFrame, LWTime );
void (*cleanup)( NodeEditorID );
LWXPanelID (*rootPanel)( NodeEditorID );
LWError (*rootOptions)( NodeEditorID );
void (*rootPreview)( NodeEditorID,
LWNodalAccess*, LWDVector );
void (*rootCustomPreview)( NodeEditorID,
int, int );
} LWRootNode;
The root node, is the destination node that all the other nodes
connect to. The client needs to evaluate the inputs, and handle
the implementation for whatever class it is used with.
- init( editor , mode )
-
Init for the root node. For initializing render data for the root
node.
-
newTime( editor, frame, time )
-
Newtime for the root node.
-
cleanup( editor )
-
Cleanup for the root node.
-
rootPanel( editor )
-
Embedded xpanel, for the “Node Properties” panel.
-
rootOptions( editor )
-
Options is called when no xpanel is defined for the root node.
-
rootPreview( editor, access, color )
-
Preview function to draw the preview sphere for the root node.
The color is the resulting pixel color which the client should fill in.
The color will be scaled and clamped into [0, 255] range internally.
-
rootCustomPreview( editor, width, height )
-
Custom preview function, for doing custom previews for the root
node.
Node Editor Functions
typedef struct st_LWNodeEditorFuncs {
NodeEditorID (*create)( const char*, const char*, LWRootNode*,
void* );
void (*destroy)( NodeEditorID );
void (*rename)( const char*, NodeEditorID );
void (*setUpdateFunc)( NodeEditorID,
nodeEditorUpdateFunc* );
LWError (*copy)( NodeEditorID, NodeEditorID );
LWError (*save)( NodeEditorID, const LWSaveState* );
LWError (*load)( NodeEditorID, const LWLoadState* );
LWError (*init)( NodeEditorID, int );
LWError (*newTime)( NodeEditorID, LWFrame, LWTime );
void (*cleanup)( NodeEditorID );
NodeInputID (*addInput)( NodeEditorID, ConnectionType,
const char*, NodeInputEvent* );
void (*setEnvGroup)( NodeEditorID, LWChanGroupID );
void (*setAutosize)( NodeEditorID, nodeAutoSizeFunc* );
void (*setUserData)( NodeEditorID, void* );
void *(*getUserData)( NodeEditorID );
int (*numberOfNodes)( NodeEditorID );
NodeInputID (*getInputByName)( NodeEditorID, const char* );
NodeInputID (*getInputByIndex)( NodeEditorID, int );
unsigned short int (*getState)( NodeEditorID );
void (*setState)( NodeEditorID, unsigned short int );
int (*OpenNodeEditor)( NodeEditorID );
int (*isOpenNodeEditor)( NodeEditorID );
NodeID (*getRootNodeID)( NodeEditorID );
} LWNodeEditorFuncs;
The node editor functions.
- create( rootname, paneltitle, rootnodefuncs, userdata )
-
Create a node editor ID.
-
destroy( editor )
-
Destroy a node editor ID.
-
rename( newname, editor )
-
Rename the editor. It is essentially the title for the editor
window.
-
setUpdateFunc( editor, UpdateFunc )
-
Set the update function for the editor.
-
copy( to, from )
-
Copy the node editor data.
-
save( editor, SaveState )
-
Save the node editor data.
-
load( editor, LoadState )
-
Load the node editor data.
-
init( editor, mode )
-
Init needs to be called when rendering is being initialized.
This function calls Init for all the nodes in the editor. -
newTime( editor, frame, time )
-
This function calls newTime for all the nodes in the editor.
-
cleanup( editor )
-
This function calls cleanup for all the nodes in the editor.
Must
be called after evaluation is done, if Init was called. -
addInput( editor, ConnectionType, name, InputEvent )
-
Add an input to the root node.
-
setEnvGroup( editor, ChanGroupID )
-
Set the envelope group for the editor. All node envelope groups
are parented into this group.
-
setAutosize( editor, AutoSizeFunc )
-
Set the autosize function for the editor.
-
setUserData( editor, userdata )
-
Set the userdata for this editor.
-
getUserData( editor )
-
Get the userdata from this editor.
-
numberOfNodes( editor )
-
Returns the number of nodes in this editor.
-
getInputByName( editor, inputname )
-
Get an input from the root node, by it's name.
-
getInputByIndex( editor, index )
-
Get an input from the root node, by it's index.
-
getState( editor )
-
Get the state. Enabled/Disabled.
-
setState( editor, state )
-
Set the state. 0 disables the rendering for this editor, and 1 enables it.
-
OpenNodeEditor( editor )
-
Open the editor window.
-
isOpenNodeEditor( editor )
-
Is the node editor open, and set to this NodeEditorID?
getRootNodeID( editor )-
Get the NodeID of the root node from this editor.
Example
The Node Displacement
sample is a displacement plugin that utilises a node editor to create the displacement.
|