Files
OpenSceneGraph/include/osg/Switch
Robert Osfield 4a3cc5c182 Implemented OpenFlight style switches so that each child of a switch can now
be individually turned on or off.  Moved the OpenFlight code across to use the
new scheme, removing the old hack of using node masks to achieve the same end
result.
2002-10-04 14:50:33 +00:00

82 lines
2.1 KiB
Plaintext

//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 <osg/Group>
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 :
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);
virtual bool addChild( Node *child );
virtual bool removeChild( Node *child );
void setValue(unsigned int pos,bool value);
void setValue(const Node* child,bool value);
bool getValue(unsigned int pos) const;
bool getValue(const Node* child) const;
/**
* Special values for the Switch. Use these if you want to
* turn on/off all child nodes.
*/
enum Values {
/** All children turned on. */
ALL_CHILDREN_ON=-1,
/** All children off. */
ALL_CHILDREN_OFF=-2,
/** Multiple children turned on.*/
MULTIPLE_CHILDREN_ON=-3
};
/**
* 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.
*/
void setValue(int value);
int getValue() const;
typedef std::vector<bool> ValueList;
const ValueList& getValueList() const { return _values; }
protected :
virtual ~Switch() {}
// this is effectively a bit mask.
ValueList _values;
};
}
#endif