/** * TDefaultTracker constructor */ TDefaultTracker::TDefaultTracker() { SO_NODEENGINE_CONSTRUCTOR(TDefaultTracker); //SO_NODE_ADD_FIELD( m_azimuth, ( gc::Pi ) ); //SO_NODE_ADD_FIELD( m_zenith, ( 0.0 ) ); //ConstructEngineOutput(); // Define input fields and their default values SO_NODEENGINE_ADD_OUTPUT( outputTranslation, SoSFVec3f); SO_NODEENGINE_ADD_OUTPUT( outputRotation, SoSFRotation); SO_NODEENGINE_ADD_OUTPUT( outputScaleFactor, SoSFVec3f); SO_NODEENGINE_ADD_OUTPUT( outputScaleOrientation, SoSFRotation); SO_NODEENGINE_ADD_OUTPUT( outputCenter, SoSFVec3f); }
SoVRMLCoordinateInterpolator::SoVRMLCoordinateInterpolator(void) { PRIVATE(this) = new SoVRMLCoordinateInterpolatorP; SO_NODEENGINE_INTERNAL_CONSTRUCTOR(SoVRMLCoordinateInterpolator); SO_VRMLNODE_ADD_EMPTY_EXPOSED_MFIELD(keyValue); SO_NODEENGINE_ADD_OUTPUT(value_changed, SoMFVec3f); }
/*! Constructor. */ SoVRMLTimeSensor::SoVRMLTimeSensor(void) { PRIVATE(this) = new SoVRMLTimeSensorP; SO_NODEENGINE_INTERNAL_CONSTRUCTOR(SoVRMLTimeSensor); SO_VRMLNODE_ADD_EXPOSED_FIELD(cycleInterval, (1.0f)); SO_VRMLNODE_ADD_EXPOSED_FIELD(enabled, (TRUE)); SO_VRMLNODE_ADD_EXPOSED_FIELD(loop, (FALSE)); SO_VRMLNODE_ADD_EXPOSED_FIELD(startTime, (0.0f)); SO_VRMLNODE_ADD_EXPOSED_FIELD(stopTime, (0.0f)); SO_VRMLNODE_ADD_EVENT_IN(timeIn); // private SO_NODEENGINE_ADD_OUTPUT(cycleTime, SoSFTime); SO_NODEENGINE_ADD_OUTPUT(fraction_changed, SoSFFloat); SO_NODEENGINE_ADD_OUTPUT(isActive, SoSFBool); SO_NODEENGINE_ADD_OUTPUT(time, SoSFTime); this->isActive.enable(FALSE); this->cycleTime.enable(FALSE); PRIVATE(this)->fraction = 0.0; PRIVATE(this)->cyclestart = 0.0; PRIVATE(this)->cycletime = 1.0; PRIVATE(this)->running = FALSE; PRIVATE(this)->loop = FALSE; PRIVATE(this)->starttime = 0.0; PRIVATE(this)->stoptime = 0.0; this->timeIn.enableNotify(FALSE); SoField * realtime = SoDB::getGlobalField("realTime"); this->timeIn.connectFrom(realtime); // we always connect and just disable notification when timer // is not active, since it is currently not possible to disconnect // from a field in the inputChanged() method. inputChanged() is // triggered by notify(), and if a field is disconnected while the // master field is notifying, bad things will happen in // SoAuditorList. // FIXME: Maybe we should consider making a version of SoAuditorList // that handles disconnects in the notification loop? I think // it might be difficult though. pederb, 2001-11-06 }
TrackerLinearFresnel::TrackerLinearFresnel() :m_previousAimingPointType( 0 ), m_infoDisplayed( 0 ) { SO_NODEENGINE_CONSTRUCTOR( TrackerLinearFresnel ); // Define input fields and their default values //SO_NODE_ADD_FIELD( m_azimuth, ( 0.0 ) ); //SO_NODE_ADD_FIELD( m_zenith, ( 90.0 ) ); // Define input fields and their default values SO_NODE_DEFINE_ENUM_VALUE( AimingPointType, Absolute ); SO_NODE_DEFINE_ENUM_VALUE( AimingPointType, Relative ); SO_NODE_SET_SF_ENUM_TYPE( typeOfAimingPoint, AimingPointType ); SO_NODE_ADD_FIELD( typeOfAimingPoint, (Absolute) ); m_infoDisplayed = new SoFieldSensor( TTrackerForAiming::updateTypeOfAimingPoint, this ); m_infoDisplayed->setPriority( 1 ); m_infoDisplayed->attach( &typeOfAimingPoint ); SO_NODE_DEFINE_ENUM_VALUE( Axis, X ); SO_NODE_DEFINE_ENUM_VALUE( Axis, Y ); SO_NODE_DEFINE_ENUM_VALUE( Axis, Z ); SO_NODE_SET_SF_ENUM_TYPE( activeAxis, Axis ); SO_NODE_ADD_FIELD( activeAxis, (Z) ); SO_NODE_ADD_FIELD( axisOrigin, ( 0.0, 0.0 ) ); //ConstructEngineOutput(); SO_NODEENGINE_ADD_OUTPUT( outputTranslation, SoSFVec3f); SO_NODEENGINE_ADD_OUTPUT( outputRotation, SoSFRotation); SO_NODEENGINE_ADD_OUTPUT( outputScaleFactor, SoSFVec3f); SO_NODEENGINE_ADD_OUTPUT( outputScaleOrientation, SoSFRotation); SO_NODEENGINE_ADD_OUTPUT( outputCenter, SoSFVec3f); }