H3D API
2.4.1
|
X3DBindableNode is the abstract base type for all bindable children nodes, including Background, TextureBackground, Fog, NavigationInfo, Viewpoint and DeviceInfo. More...
#include <H3D/X3DBindableNode.h>
Classes | |
struct | SFSetBind |
The SFSetBind field calls toStackTop() and removeFromStack() on the X3DBindableNode it is in depending on the value that it is set to. More... | |
Public Member Functions | |
X3DBindableNode (const string &_bindable_stack_name, Inst< SFSetBind > _set_bind=0, Inst< SFNode > _metadata=0, Inst< SFTime > _bindTime=0, Inst< SFBool > _isBound=0) | |
Constructor. | |
virtual | ~X3DBindableNode () |
Destructor. | |
virtual void | initialize () |
Initialize this bindable stack, toStackTop is done. | |
virtual void | toStackTop () |
Move this instance to the stack top. | |
virtual void | removeFromStack () |
Remove the bindable node from the stack. | |
bool | isStackTop () |
Is this node at the top of the stack. | |
![]() | |
X3DChildNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
![]() | |
X3DNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
X3DMetadataObject * | getMetadataByName (const string &_name) |
Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More... | |
![]() | |
Node () | |
Constructor. | |
virtual Node * | clone (bool deepCopy=true, DeepCopyMap *deepCopyMap=NULL) |
Returns a new instance of this node type with the same state as this one. More... | |
virtual | ~Node () |
Destructor. | |
X3DPrototypeInstance * | getProtoInstanceParent () |
If this node is the root node in the proto body of a X3DPrototypeInstance then this will return that node. More... | |
void | setProtoInstanceParent (X3DPrototypeInstance *p) |
Set the X3DPrototypeInstance this node is the the root node if applicaple. | |
virtual void | render () |
the render() function is used for the depth-first rendering traversal of the scene-graph. More... | |
virtual void | traverseSG (TraverseInfo &ti) |
traverseSG is called once per scenegraph loop on the scene in order to traverse the scenegraph. More... | |
virtual bool | lineIntersect (const Vec3f &from, const Vec3f &to, LineIntersectResult &result) |
Detect intersection between a line segment and the Node. More... | |
virtual void | closestPoint (const Vec3f &p, NodeIntersectResult &result) |
Find closest point on Node to p. More... | |
virtual bool | movingSphereIntersect (H3DFloat radius, const Vec3f &from, const Vec3f &to, NodeIntersectResult &result) |
Detect collision between a moving sphere and the Node. More... | |
virtual string | defaultXMLContainerField () |
Returns the default xml containerField attribute value. More... | |
virtual Field * | getField (const string &_name) const |
return a pointer to the field specified by name within this instance | |
int | addDestructCallback (void(*func)(Node *, void *), void *args) |
Add a callback function to be run on destruction of node. More... | |
int | removeDestructCallback (void(*func)(Node *, void *), void *args) |
Add a callback function to be run on destruction of node. More... | |
Static Public Member Functions | |
static X3DBindableNode * | getActive (const string &bindable_stack_name) |
Returns the active bindable instance, i.e. More... | |
static const StackType & | getStack (const string &bindable_stack_name) |
Get the stack for a given name. | |
static const StackMapType & | getStackMap () |
Return the map of all bindable nodes available. | |
![]() | |
static unsigned int | nrNodesAlive () |
Returns the nr of nodes currently alive, i.e. nodes created but not destructed. | |
static int | nrNodesCreated () |
Returns the number of nodes created in total since the start of the program. | |
Public Attributes | |
H3DUniquePtr< SFSetBind > | set_bind |
Input field to bind or unbind the node. More... | |
H3DUniquePtr< SFTime > | bindTime |
The bindTime field is the time at which the Viewpoint node is bound or unbound. More... | |
H3DUniquePtr< SFBool > | isBound |
Output field telling if this node is bound or not. More... | |
![]() | |
H3DUniquePtr< SFNode > | metadata |
Meta data about the node. More... | |
Static Public Attributes | |
static H3DNodeDatabase | database |
The H3DNodedatabase for this node. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
Static Protected Attributes | |
static StackMapType | stack |
The bindable stack. | |
Additional Inherited Members | |
![]() | |
typedef std::map< Node *, Node * > | DeepCopyMap |
A map type used during a deep copy clone() to map from original nodes to cloned nodes. | |
![]() | |
void | cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for the clone() method. More... | |
![]() | |
static Node * | getClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for nodes that implement clone() More... | |
X3DBindableNode is the abstract base type for all bindable children nodes, including Background, TextureBackground, Fog, NavigationInfo, Viewpoint and DeviceInfo.
These nodes have the unique behaviour that only one of each type can be bound (i.e., affect the user's experience) at any instant in time. The browser shall maintain an independent, separate stack for each type of bindable node. Each of these nodes includes a set_bind inputOnly field and an isBound outputOnly field. The set_bind inputOnly field is used to move a given node to and from its respective top of stack. A TRUE value sent to the set_bind inputOnly field moves the node to the top of the stack; sending a FALSE value removes it from the stack. The isBound event is output when a given node is:
That is, isBound events are sent when a given node becomes, or ceases to be, the active node. The node at the top of the stack (the most recently bound node) is the active node for its type and is used by the browser to set the world state. If the stack is empty (i.e., either the X3D file has no bindable nodes for a given type or the stack has been popped until empty), the default field values for that node type are used to set world state. The results are undefined if a multiply instanced (DEF/USE) bindable node is bound.
The following rules describe the behaviour of the binding stack for a node of type X3DBindableNode:
The results are undefined if a bindable node is bound and is the child of an LOD, Switch, or any node or prototype that disables its children.
|
inlinestatic |
Returns the active bindable instance, i.e.
the instance on the top of the bindable stack.
Referenced by H3D::DeviceInfo::getActive(), H3D::Fog::getActive(), H3D::GlobalSettings::getActive(), H3D::NavigationInfo::getActive(), H3D::StereoInfo::getActive(), H3D::X3DBackgroundNode::getActive(), and H3D::X3DViewpointNode::getActive().
H3DUniquePtr< SFTime > H3D::X3DBindableNode::bindTime |
The bindTime field is the time at which the Viewpoint node is bound or unbound.
Access type: outputOnly
Referenced by removeFromStack(), and toStackTop().
H3DUniquePtr< SFBool > H3D::X3DBindableNode::isBound |
Output field telling if this node is bound or not.
Access type: outputOnly
Referenced by removeFromStack(), and toStackTop().
H3DUniquePtr< SFSetBind > H3D::X3DBindableNode::set_bind |
Input field to bind or unbind the node.
Access type: inputOnly
Valid range: TRUE or FALSE
Referenced by H3D::FrameBufferTextureGenerator::initialize(), and H3D::Anchor::replaceScene().