Provided by: inventor-doc_2.1.5-10-18_all bug


       SoOneShot — timer that runs for a pre-set amount of time


       SoBase > SoFieldContainer > SoEngine > SoOneShot


       #include <Inventor/engines/SoOneShot.h>

     enum Flags {
          SoOneShot::RETRIGGERABLE  Can start over during the cycle
          SoOneShot::HOLD_FINAL     Output values stay high after cycle

          Inputs from class SoOneShot:

     SoSFTime            timeIn
     SoSFTime            duration
     SoSFTrigger         trigger
     SoSFBitMask         flags
     SoSFBool            disable

          Outputs from class SoOneShot:

     (SoSFTime)          timeOut
     (SoSFBool)          isActive
     (SoSFFloat)         ramp

          Methods from class SoOneShot:


          Methods from class SoEngine:

     static SoType       getClassTypeId()
     virtual int         getOutputs(SoEngineOutputList &list) const
     SoEngineOutput *    getOutput(const SbName &outputName) const
     SbBool              getOutputName(const SoEngineOutput *output, SbName &outputName) const
     SoEngine *          copy() const
     static SoEngine *   getByName(const SbName &name)
     static int          getByName(const SbName &name, SoEngineList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const  SoFieldContainer  *fc,  SbBool  copyConnections =
     SbBool              set(const char *fieldDataString)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName) const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const


       This engine is a timer that runs for a pre-set amount of time and then stops. By  default,
       the  timeIn input is connected to the realTime global field. It can, however, by connected
       to any other time source.

       The timer is started when the trigger input is touched. It then  runs  for  the  specified
       duration, and updates the timeOut output with the time that has elapsed. During that time,
       the ramp output is also updated. The ramp output starts at 0.0 at  the  beginning  of  the
       cycle, and linearly increases until it reaches 1.0 at the end of the cycle.

       You  can  disable the timer by setting the disable input to TRUE. The output value remains
       0.0 while the timer is disabled. If the timer is disabled in the middle  of  a  cycle  the
       output values will be set to 0.0.

       The  flags  input  contains  control  flags.  Using  the flags you can set the timer to be
       retriggerable in the middle of a cycle, and set the output values to stay high  after  the
       cycle has been completed. By default, these flags are not set.


     SoSFTime            timeIn
          Running time.

     SoSFTime            duration
          Duration of the active cycle.

     SoSFTrigger         trigger
          Start  the cycle. The trigger will be ignored if it is touched in the middle of a cycle
          and the RETRIGGERABLE flag is not set.

     SoSFBitMask         flags
          Control flags.

     SoSFBool            disable
          If TRUE, the timer is disabled.


     (SoSFTime)          timeOut
          Elapsed time from the start.

     (SoSFBool)          isActive
          Is TRUE during the active cycle.

     (SoSFFloat)         ramp
          Ramps linearly from 0.0 to 1.0.




       OneShot {
          duration  1
          flags     ()
          disable   FALSE
          timeIn    <current time>


       SoElapsedTime, SoEngineOutput