Coin Logo http://www.coin3d.org/
http://www.kongsberg.com/kogt/

SoSwitch Class Reference
[Node Classes]

The SoSwitch class is a group node which selects one child subgraph for traversal.Which child to traverse is controlled by the application programmer by using the SoSwitch::whichChild field. In addition to picking out a single child for traversal, it is also possible to flip all children on or off for traversal. More...

#include <Inventor/nodes/SoSwitch.h>

Inheritance diagram for SoSwitch:
SoGroup SoNode SoFieldContainer SoBase SoBlinker

List of all members.

Public Member Functions

 SoSwitch (void)
 SoSwitch (int numchildren)
virtual SbBool affectsState (void) const
virtual void doAction (SoAction *action)
virtual void callback (SoCallbackAction *action)
virtual void GLRender (SoGLRenderAction *action)
virtual void pick (SoPickAction *action)
virtual void getBoundingBox (SoGetBoundingBoxAction *action)
virtual void handleEvent (SoHandleEventAction *action)
virtual void getMatrix (SoGetMatrixAction *action)
virtual void search (SoSearchAction *action)
virtual void write (SoWriteAction *action)
virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)
virtual void audioRender (SoAudioRenderAction *action)
virtual void notify (SoNotList *nl)

Static Public Member Functions

static void initClass (void)
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.

Public Attributes

SoSFInt32 whichChild

Protected Member Functions

virtual ~SoSwitch ()
void traverseChildren (SoAction *action)

Detailed Description

The SoSwitch class is a group node which selects one child subgraph for traversal.

Which child to traverse is controlled by the application programmer by using the SoSwitch::whichChild field. In addition to picking out a single child for traversal, it is also possible to flip all children on or off for traversal.

This node is very useful for conditionally turning on or off parts of the scenegraph based on the current application processing mode, visualizing mode, or whatever else the application can do.

FILE FORMAT/DEFAULTS:

    Switch {
        whichChild -1
    }

Constructor & Destructor Documentation

SoSwitch::SoSwitch ( void   ) 

Default constructor.

SoSwitch::SoSwitch ( int  numchildren  ) 

Constructor.

The argument should be the approximate number of children which is expected to be inserted below this node. The number need not be exact, as it is only used as a hint for better memory resource allocation.

SoSwitch::~SoSwitch (  )  [protected, virtual]

Destructor.


Member Function Documentation

SbBool SoSwitch::affectsState ( void   )  const [virtual]

Returns TRUE if the node could have any effect on the state during traversal.

If it returns FALSE, no data in the traversal-state will change from the pre-traversal state to the post-traversal state. The SoSeparator node will for instance return FALSE, as it pushes and pops the state before and after traversal of its children. All SoShape nodes will also return FALSE, as just pushing out geometry data to the rendering engine won't affect the actual rendering state.

The default method returns TRUE, on a "better safe than sorry" philosophy.

Reimplemented from SoNode.

void SoSwitch::search ( SoSearchAction action  )  [virtual]

Action method for SoSearchAction.

Compares the search criteria from the action to see if this node is a match. Searching is done by matching up all criteria set up in the SoSearchAction -- if any of the requested criteria is a miss, the search is not deemed successful for the node.

See also:
SoSearchAction

Reimplemented from SoGroup.

void SoSwitch::write ( SoWriteAction action  )  [virtual]

Action method for SoWriteAction.

Writes out a node object, and any connected nodes, engines etc, if necessary.

Reimplemented from SoGroup.

Reimplemented in SoBlinker.

void SoSwitch::notify ( SoNotList l  )  [virtual]

Notifies all auditors for this instance when changes are made.

Reimplemented from SoNode.

Reimplemented in SoBlinker.


Member Data Documentation

Selects which child to traverse during rendering (and some other) actions.

The value should be either SO_SWITCH_NONE (for traversing no children, like it was an empty SoGroup node), SO_SWITCH_ALL (for traversing like if we were an SoGroup node), SO_SWITCH_INHERIT (for traversing the same child as the last SoSwitch node), or an index value for a child.

When using SO_SWITCH_INHERIT, it is important to understand how the SoSwitch-node is affected by other SoSwitch-nodes. If you have several switches in the scenegraph, the last switch with its whichChild field set to anything but SO_SWITCH_INHERIT will be used. The switch does not only inherit from its parent switch node, but also from its siblings, located anywhere before it in the scenegraph. An example will help clarify this:

  #Inventor V2.1 ascii

  Separator {
    Switch {
      whichChild 0
  
      Group {
        Switch {
          whichChild 1
          BaseColor { rgb 1 0 0 } # red
          BaseColor { rgb 1 1 0 } # yellow
        }
        Switch {
          whichChild -2 # SO_SWITCH_INHERIT
          BaseColor { rgb 0 1 0 } # green
          BaseColor { rgb 0 0 1 } # blue
        }
        Cube { }
      }
    }
  }

This results in a blue cube on the screen. The reason being that the value of the previous whichChild field was inherited by the final switch, making it select child 1 - the blue BaseColor.

When constructing ascii Inventor files, the integer values for the keywords must be used instead of their names. They are -1 for SO_SWITCH_NONE, -2 for SO_SWITCH_INHERIT, and -3 for SO_SWITCH_ALL.

Default value for the field is SO_SWITCH_NONE.


The documentation for this class was generated from the following files:

Copyright © by Kongsberg Oil & Gas Technologies. All rights reserved.

Generated on Mon Nov 7 20:02:05 2011 for Coin by Doxygen 1.6.3.