H3D API
2.4.1
|
The SphereSensor node maps pointing device motion into spherical rotation about the origin of the local coordinate system. More...
#include <H3D/SphereSensor.h>
Public Member Functions | |
SphereSensor (Inst< SFBool > _autoOffset=0, Inst< SFString > _description=0, Inst< SFBool > _enabled=0, Inst< SFNode > _metadata=0, Inst< SFRotation > _offset=0, Inst< SFBool > _isActive=0, Inst< SFBool > _isOver=0, Inst< SFRotation > _rotation_changed=0, Inst< SFVec3f > _trackPoint_changed=0) | |
Constructor. | |
![]() | |
X3DDragSensorNode (Inst< SFBool > _autoOffset=0, Inst< SFString > _description=0, Inst< SFBool > _enabled=0, Inst< SFNode > _metadata=0, Inst< SFBool > _isActive=0, Inst< SFBool > _isOver=0, Inst< SFVec3f > _trackPoint_changed=0) | |
Constructor. | |
![]() | |
X3DPointingDeviceSensorNode (Inst< SFString > _description=0, Inst< SFBool > _enabled=0, Inst< SFNode > _metadata=0, Inst< SFBool > _isActive=0, Inst< SFBool > _isOver=0) | |
Constructor. | |
![]() | |
X3DSensorNode (Inst< SFBool > _enabled=0, Inst< SFNode > _metadata=0, Inst< SFBool > _isActive=0) | |
Constructor. | |
![]() | |
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... | |
Public Attributes | |
H3DUniquePtr< SFRotation > | offset |
When the pointing device is deactivated and autoOffset is TRUE, offset is set to the last rotation_changed value. More... | |
H3DUniquePtr< SFRotation > | rotation_changed |
For each position of the bearing when isActive is true, a rotation_changed event is sent which corresponds to the sum of the relative rotation from the original intersection point plus the offset value. More... | |
![]() | |
H3DUniquePtr< SFBool > | autoOffset |
If autoOffset is TRUE when the pointing-device is deactivated, the offset field is set to the sensor's last _changed value and offset sends an offset_changed output event. More... | |
H3DUniquePtr< SFVec3f > | trackPoint_changed |
The trackPoint_changed outputOnly field sends the intersection point of the bearing with the drag sensor's virtual geometry. More... | |
![]() | |
H3DUniquePtr< SFString > | description |
The description field in a X3DPointingDeviceSensorNode node specifies a textual description of the X3DPointingDeviceSensorNode node. More... | |
H3DUniquePtr< SFBool > | isOver |
The isOver field reflects the state of the pointing device with regard to whether it is pointing towards the X3DPointingDeviceSensorNode node's geometry or not. More... | |
![]() | |
H3DUniquePtr< SFBool > | enabled |
If enabled is true the sensor node is enabled otherwise it is disabled and will not generate any output. More... | |
H3DUniquePtr< SFBool > | isActive |
A sensor is active when some special conditions are fulfilled and it will then generate extra output. 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 H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
Protected Member Functions | |
int | intersectSegmentSphere (Vec3f a1, Vec3f a2, H3DFloat &t, Vec3f &q) |
Intersects segment s = a1 + t(a2-a1) with sphere defined by center and radius (see below), if intersecting, returns t value of intersection and intersection point q. | |
![]() | |
void | setIsEnabled (bool primary_button) |
Handles the enabled logic. | |
void | setIsActive (bool primary_button) |
Handles the isActive logic. | |
![]() | |
void | cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for the clone() method. More... | |
Protected Attributes | |
bool | new_radius |
If true a new radius will be defined. | |
![]() | |
H3DUniquePtr< SetIsEnabled > | setIsEnabledField |
Used to call setIsEnabled function when the enabled field is changed. | |
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. | |
![]() | |
static void | updateX3DPointingDeviceSensors (Node *n, const Vec3f &from, const Vec3f &to) |
Called to detect and set properties of X3DPointingDeviceSensors. More... | |
static void | updateButtonDependentFields (bool primary_button) |
Update fields that depends on the status of the primary pointing device button. More... | |
static bool | anyIsOver () |
Called to query, whether any X3DPointingDeviceSensors is in isOver state. | |
static bool | anyIsActive () |
Called to query, whether any X3DPointingDeviceSensors is in isActive state. | |
static bool | instancesExists () |
Returns true if there are any X3DPointingDeviceSensors in the scene. | |
![]() | |
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 Node * | getClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for nodes that implement clone() More... | |
The SphereSensor node maps pointing device motion into spherical rotation about the origin of the local coordinate system.
The SphereSensor node uses the descendent geometry of its parent node to determine whether it is liable to generate events.
The description field in the SphereSensor node specifies a textual description of the SphereSensor node. This may be used by browser-specific user interfaces that wish to present users with more detailed information about the SphereSensor.
The enabled field enables and disables the SphereSensor node. If enabled is TRUE, the sensor reacts appropriately to user events. If enabled is FALSE, the sensor does not track user input or send events. If enabled receives a FALSE event and isActive is TRUE, the sensor becomes disabled and deactivated, and outputs an isActive FALSE event. If enabled receives a TRUE event the sensor is enabled and ready for user activation.
The SphereSensor node generates events when the pointing device is activated while the pointer is indicating any descendent geometry nodes of the sensor's parent group.
Upon activation of the pointing device (e.g., mouse button down) over the sensor's geometry, an isActive TRUE event is sent. The vector defined by the initial point of intersection on the SphereSensor's geometry and the local origin determines the radius of the sphere that is used to map subsequent pointing device motion while dragging. The virtual sphere defined by this radius and the local origin at the time of activation is used to interpret subsequent pointing device motion and is not affected by any changes to the sensor's coordinate system while the sensor is active. For each position of the bearing, a rotation_changed event is sent which corresponds to the sum of the relative rotation from the original intersection point plus the offset value. trackPoint_changed events reflect the unclamped drag position on the surface of this sphere. When the pointing device is deactivated and autoOffset is TRUE, offset is set to the last rotation_changed value and an offset_changed event is generated.
While the pointing device is activated, trackPoint_changed and rotation_changed events are output. trackPoint_changed events represent the unclamped intersection points on the surface of the invisible sphere. If the pointing device is dragged off the sphere while activated, browsers may interpret this in a variety of ways (e.g., clamp all values to the sphere or continue to rotate as the point is dragged away from the sphere). Each movement of the pointing device while isActive is TRUE generates trackPoint_changed and rotation_changed events.
Examples:
H3DUniquePtr< SFRotation > H3D::SphereSensor::offset |
When the pointing device is deactivated and autoOffset is TRUE, offset is set to the last rotation_changed value.
Access type: inputOutput
Default value: 0 1 0 0
Referenced by SphereSensor().
H3DUniquePtr< SFRotation > H3D::SphereSensor::rotation_changed |
For each position of the bearing when isActive is true, a rotation_changed event is sent which corresponds to the sum of the relative rotation from the original intersection point plus the offset value.
Access type: outputOnly