41768f6824
a flag to control whether children and added as true or false.
89 lines
2.3 KiB
Plaintext
89 lines
2.3 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);
|
|
|
|
void setNewChildDefaultValue(bool value) { _newChildDefaultValue = value; }
|
|
|
|
bool getNewChildDefaultValue() const { return _newChildDefaultValue; }
|
|
|
|
virtual bool addChild( Node *child );
|
|
|
|
virtual bool addChild( Node *child, bool value );
|
|
|
|
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.
|
|
bool _newChildDefaultValue;
|
|
ValueList _values;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|