//C++ header - Open Scene Graph - Copyright (C) 1998-2002 Robert Osfield //Distributed under the terms of the GNU Library General Public License (LGPL) //as published by the Free Software Foundation. #ifndef OSG_SWITCH #define OSG_SWITCH 1 #include namespace osg { /** Switch is a Group node which allows switching between children. Typical uses would be for objects which might need to be rendered differently at different times, for instance a switch could be used to represent the different states of a traffic light. */ class SG_EXPORT Switch : public Group { public : /** * Special mode values for the Switch. Use these if you want to * turn on/off all child nodes. */ enum SwitchType { /** Turn on all children. */ ALL_CHILDREN_ON=-1, /** Turn off all children. */ ALL_CHILDREN_OFF=-2 }; Switch(); /** Copy constructor using CopyOp to manage deep vs shallow copy.*/ Switch(const Switch&,const CopyOp& copyop=CopyOp::SHALLOW_COPY); META_Node(osg, Switch); virtual void traverse(NodeVisitor& nv); /** * Selects the active child Node or enables a special * SwitchType mode. * @param value the number of the active child * (first child == number 0) or SwitchType. Invalid values * will be ignored. */ inline void setValue(int value) { _value = value; } /** * Returns the number of the active child Node or the SwitchType. */ inline int getValue() const { return _value; } protected : virtual ~Switch() {} /** The current Switch value. */ int _value; }; } #endif