H3D API  2.4.1
Public Member Functions | Public Attributes | List of all members
H3D::LoadSensor Class Reference

The LoadSensor monitors the progress and success of downloading URL elements over a network. More...

#include <H3D/LoadSensor.h>

Inheritance diagram for H3D::LoadSensor:
Inheritance graph

Public Member Functions

 LoadSensor (Inst< SFBool > _enabled=0, Inst< SFNode > _metadata=0, Inst< SFBool > _isActive=0, Inst< SFTime > _timeOut=0, Inst< MFUrlObject > _watchList=0, Inst< SFBool > _isLoaded=0, Inst< SFTime > _loadTime=0, Inst< SFFloat > _progress=0)
 Constructor.
 
virtual void traverseSG (TraverseInfo &ti)
 traverseSG is called once per scenegraph loop on the scene in order to traverse the scenegraph. More...
 
- Public Member Functions inherited from H3D::X3DNetworkSensorNode
 X3DNetworkSensorNode (Inst< SFBool > _enabled=0, Inst< SFNode > _metadata=0, Inst< SFBool > _isActive=0)
 Constructor.
 
- Public Member Functions inherited from H3D::X3DSensorNode
 X3DSensorNode (Inst< SFBool > _enabled=0, Inst< SFNode > _metadata=0, Inst< SFBool > _isActive=0)
 Constructor.
 
- Public Member Functions inherited from H3D::X3DChildNode
 X3DChildNode (Inst< SFNode > _metadata=0)
 Constructor.
 
- Public Member Functions inherited from H3D::X3DNode
 X3DNode (Inst< SFNode > _metadata=0)
 Constructor.
 
X3DMetadataObjectgetMetadataByName (const string &_name)
 Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More...
 
- Public Member Functions inherited from H3D::Node
 Node ()
 Constructor.
 
virtual Nodeclone (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.
 
X3DPrototypeInstancegetProtoInstanceParent ()
 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 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 FieldgetField (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...
 

Public Attributes

H3DUniquePtr< MFUrlObjectwatchList
 The watchList field contains one or more URL objects to monitor. More...
 
H3DUniquePtr< SFTimetimeOut
 The timeOut field specifies the maximum time for which the LoadSensor will monitor loading, starting from when the sensor becomes active. More...
 
H3DUniquePtr< SFBoolisLoaded
 The isLoaded field generates events when loading of the LoadSensor's watchList has completed. More...
 
H3DUniquePtr< SFTimeloadTime
 The loadTime event is generated when loading of the LoadSensor's watchList has successfully completed. More...
 
H3DUniquePtr< SFFloatprogress
 The progress field generates events as loading progresses. More...
 
- Public Attributes inherited from H3D::X3DSensorNode
H3DUniquePtr< SFBoolenabled
 If enabled is true the sensor node is enabled otherwise it is disabled and will not generate any output. More...
 
H3DUniquePtr< SFBoolisActive
 A sensor is active when some special conditions are fulfilled and it will then generate extra output. More...
 
- Public Attributes inherited from H3D::X3DNode
H3DUniquePtr< SFNodemetadata
 Meta data about the node. More...
 

Additional Inherited Members

- Public Types inherited from H3D::Node
typedef std::map< Node *, Node * > DeepCopyMap
 A map type used during a deep copy clone() to map from original nodes to cloned nodes.
 
- Static Public Member Functions inherited from H3D::Node
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.
 
- Static Public Attributes inherited from H3D::X3DSensorNode
static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 
- Static Public Attributes inherited from H3D::X3DNode
static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 
- Protected Member Functions inherited from H3D::Node
void cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for the clone() method. More...
 
- Static Protected Member Functions inherited from H3D::Node
static NodegetClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for nodes that implement clone() More...
 

Detailed Description

The LoadSensor monitors the progress and success of downloading URL elements over a network.

Only nodes that contain a valid URL field (i.e., descendants of X3DUrlObject), may be specified in the watchList field. Multiple nodes may be watched with a single LoadSensor.

The timeOut field specifies the maximum time for which the LoadSensor will monitor loading, starting from when the sensor becomes active. A value of 0 for the timeOut field indicates an indefinite time out period; i.e., the LoadSensor will wait until loading has completed either with success or failure.

The watchList field contains one or more URL objects to monitor. Only nodes that contain a valid URL field (i.e., descendants of X3DUrlObject), may be specified as elements of watchList. If multiple values are specified for this field, output events are generated only when all of the children have loaded or at least one has failed. If individual load status information is desired for different nodes, multiple LoadSensor nodes may be used, each with a single watchList element.

The isActive field generates events when loading of the LoadSensor's watchList elements begins and ends. An isActive TRUE event is generated when the first element begins loading. An isActive FALSE event is generated when loading has completed, either with a successful load of all objects or a failed load of one of the objects, or when the timeout period is reached as specified in the timeout field.

The isLoaded field generates events when loading of the LoadSensor's watchList has completed. An isLoaded TRUE event is generated when all of the elements have been loaded. An isLoaded FALSE event is generated when one or more of the elements has failed to load, or when the timeout period is reached as specified in the timeout field. If all elements in the watchlist are already loaded by the time the LoadSensor is processed, the LoadSensor shall generate an isLoaded event with value TRUE and a progress event with value 1 at the next event cascade.

The loadTime event is generated when loading of the LoadSensor's watchList has successfully completed. If loading fails or the timeout period is reached, a loadTime event is not generated.

The progress field generates events as loading progresses. The value of progress is a floating-point number between 0 and 1 inclusive. A value of 1 indicates complete loading of all watchList elements. The exact meaning of all other values (i.e., whether these indicate a percentage of total bytes, a percentage of total number of files, or some other measurement) and the frequency with which progress events are generated are browser-dependent. Regardless, the browser shall in all cases guarantee that a progress value of 1 is generated upon successful load of all URL objects.

The following example defines a LoadSensor that monitors the progress of loading two different ImageTexture nodes:

Shape { appearance Appearance { material Material { texture DEF TEX1 ImageTexture { url "Amypic.png" } } } geometry Sphere {} } Shape { appearance Appearance { material Material { texture DEF TEX2 ImageTexture { url "Bmypic.png" } } } geometry Sphere {} } DEF LS LoadSensor { watchList [ USE TEX1, USE TEX2 ] } ROUTE LS.loadTime TO MYSCRIPT.loadTime

For watchList elements that allow dynamic reloading of their contents, any reload of that element (EXAMPLE changing the url field of an ImageTexture or setting the load field of an Inline), resets the LoadSensor so that it monitors those elements based on the new values and resets its timeout period if one was specified.

For streamed media types, the first frame of data available means successful load of the URL object (i.e., the browser can render one frame of a movie or start playing an audio file).

Examples:

Member Function Documentation

◆ traverseSG()

void LoadSensor::traverseSG ( TraverseInfo ti)
virtual

traverseSG is called once per scenegraph loop on the scene in order to traverse the scenegraph.

During this traversal things can be updated in the node and HapticObject instances to be rendered should be added to the TraverseInfo object.

Parameters
tiThe TraverseInfo object containing information about the traversal.

Reimplemented from H3D::Node.

References H3D::X3DSensorNode::enabled, H3D::X3DUrlObject::FAILED, H3D::X3DSensorNode::isActive, isLoaded, H3D::X3DUrlObject::LOADED, H3D::X3DUrlObject::LOADING, H3D::X3DUrlObject::loadProgress(), H3D::X3DUrlObject::loadStatus(), loadTime, progress, timeOut, H3D::Node::traverseSG(), and watchList.

Member Data Documentation

◆ isLoaded

H3DUniquePtr< SFBool > H3D::LoadSensor::isLoaded

The isLoaded field generates events when loading of the LoadSensor's watchList has completed.

An isLoaded TRUE event is generated when all of the elements have been loaded. An isLoaded FALSE event is generated when one or more of the elements has failed to load, or when the timeout period is reached as specified in the timeout field. If all elements in the watchlist are already loaded by the time the LoadSensor is processed, the LoadSensor shall generate an isLoaded event with value TRUE and a progress event with value 1 at the next event cascade.

Access type: outputOnly

Referenced by LoadSensor(), and traverseSG().

◆ loadTime

H3DUniquePtr< SFTime > H3D::LoadSensor::loadTime

The loadTime event is generated when loading of the LoadSensor's watchList has successfully completed.

If loading fails or the timeout period is reached, a loadTime event is not generated.

Access type: outputOnly

Referenced by LoadSensor(), and traverseSG().

◆ progress

H3DUniquePtr< SFFloat > H3D::LoadSensor::progress

The progress field generates events as loading progresses.

The value of progress is a floating-point number between 0 and 1 inclusive. A value of 1 indicates complete loading of all watchList elements.

Access type: outputOnly

Referenced by LoadSensor(), and traverseSG().

◆ timeOut

H3DUniquePtr< SFTime > H3D::LoadSensor::timeOut

The timeOut field specifies the maximum time for which the LoadSensor will monitor loading, starting from when the sensor becomes active.

A value of 0 for the timeOut field indicates an indefinite time out period; i.e., the LoadSensor will wait until loading has completed either with success or failure.

Access type: inputOutput Default value: 0

Referenced by LoadSensor(), and traverseSG().

◆ watchList

H3DUniquePtr< MFUrlObject > H3D::LoadSensor::watchList

The watchList field contains one or more URL objects to monitor.

Only nodes that contain a valid URL field (i.e., descendants of X3DUrlObject), may be specified as elements of watchList. If multiple values are specified for this field, output events are generated only when all of the children have loaded or at least one has failed.

Access type: inputOutput

Referenced by traverseSG().


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