CameraHandler ColorPicker Classes Table of Contents


Availability  LightWave® 6.0
Component  Layout, Modeler
Header  lwchannel.h

A channel is a value that can vary continuously with time. Channels are everywhere in LightWave®. Any animation parameter that can be enveloped is associated with an underlying channel. Channel handlers dip into the stream of a parameter and alter its value.

Handler Activation Function

   XCALL_( int ) MyChannel( int version, GlobalFunc *global,
      LWChannelHandler *local, void *serverData );

The local argument to a channel handler's activation function is an LWChannelHandler.

   typedef struct st_LWChannelHandler {
      LWInstanceFuncs *inst;
      LWItemFuncs     *item;
      void            (*evaluate) (LWInstance, const LWChannelAccess *);
      unsigned int    (*flags)    (LWInstance);
   } LWChannelHandler;

The first two members of this structure are standard instance handler functions. The context argument to the create function is the LWChannelID of the associated channel. When the plug-in is activated by Modeler, the item member of the LWChannelHandler will be NULL. Check for this before assigning the item callbacks.

A channel handler also provides an evaluation function and a flags function.

evaluate( instance, access )
The channel value is examined and modified at each time step using functions in the channel access structure, described below.

f = flags( instance )
Returns an integer containing bit flags combined using bitwise-or. No flags are currently defined for channel handlers, so this should return 0.

Interface Activation Function

   XCALL_( int ) MyInterface( int version, GlobalFunc *global,
      LWInterface *local, void *serverData );

This is the standard interface activation for handlers. Channel handlers are selected on the graph editor panel, and their non-modal interfaces will be drawn there.

Channel Access

This is the structure passed to the handler's evaluation function.

   typedef struct st_LWChannelAccess {
      LWChannelID   chan;
      LWFrame       frame;
      LWTime        time;
      double        value;
      void         (*getChannel)  (LWChannelID chan, LWTime t,
                                     double *value);
      void         (*setChannel)  (LWChannelID chan, const double value);
      const char * (*channelName) (LWChannelID chan);
   } LWChannelAccess;
The channel ID.

The frame number of the evaluation.

The time of the evaluation, in seconds.

The current value of the channel at the given time.

getChannel( channel, time, value )
Retrieves a value from a channel.

setChannel( channel, value )
Sets the value of the channel.

name = channelName( channel )
Returns the name associated with the channel ID.


Several of the SDK samples are channel handlers. NoisyChan uses the texture system's noise function to modify a channel. A channel handler is one of four classes demonstrated in txchan, which also uses textures as channel modifiers. xpanchan is a channel handler that demonstrates four ways of displaying the same XPanels interface.