Open Inventor Reference
SoTimeCounter Class Reference

Timed integer counter. More...

#include <Inventor/engines/SoTimeCounter.h>

Inheritance diagram for SoTimeCounter:
SoEngine SoFieldContainer SoBase

List of all members.

Public Member Functions

 SoTimeCounter ()
 Constructor.

Static Public Member Functions

static void initClass ()
 Initializes base engine class.

Public Attributes

Inputs
SoSFShort min
 Minimum value for the counter.
SoSFShort max
 Maximum value for the counter.
SoSFShort step
 Counter step value.
SoSFBool on
 Counter pauses if this is set to FALSE.
SoSFFloat frequency
 Number of min -to-max cycles per second.
SoMFFloat duty
 Duty cycle values.
SoSFTime timeIn
 Running time.
SoSFTrigger syncIn
 Restart at the beginning of the cycle.
SoSFShort reset
 Reset the counter to the specified value.
Outputs
SoEngineOutput output
 Counts min -to-max , in step increments.
SoEngineOutput syncOut
 Triggers at cycle start.

Protected Member Functions

virtual void inputChanged (SoField *whichInput)
 This is called whenever the value of an input is changed.
virtual void writeInstance (SoOutput *out)
 Writes instance to SoOutput.
virtual SbBool readInstance (SoInput *in, unsigned short flags)
 Reads stuff into instance.

Detailed Description

This engine is a counter that outputs numbers, starting at a minimum value, increasing by a step value, and ending with a number that does not exceed the maximum value. When the maximum number is reached, it starts counting from the beginning again.

The difference between this engine and the SoCounter engine, is that this engine also has a timeIn input, which allows the counting cycles to be timed. This engine counts automatically over time; it does not need to be triggered to go to the next step. By default, the timeIn input is connected to the realTime global field. It can, however, be connected to any time source.

The frequency input field controls how many min-to-max cycles are performed per second. For example, a frequency value of 0.5 means that it will take 2 seconds to complete a single min-to-max cycle.

The steps in the count cycle do not necessarily all have the same duration. Using the duty input field, you can arbitrarily split the time period of the count cycle between the steps. For example, if there are 5 steps in the cycle, a duty input of (1., 2., 2., 2., 1.) will make the second, third, and fourth steps take twice as long as the first and last steps.

At any time the counter can be reset to a specific value. If you set the reset input field to a value, the engine will continue counting from there. Note that the counter will always output numbers based on the min , max and step values, and setting the reset value does not affect the those input fields. If the reset value is not a legal counter value, the counter will still behave as though it is:

If reset is greater than max, the counter is set to max.
If reset is less than min, the counter is set to min.
If reset is between step values, the counter is set to the lower step.

Each time a counting cycle is started, the syncOut output is triggered. This output can be used to synchronize some other event with the counting cycle. Other events can also synchronize the counter by triggering the syncIn input.

You can pause the engine, by setting the on input to FALSE, and it will stop updating the output field. When you turn off the pause, by setting on to TRUE, it will start counting again from where it left off.

File Format/Default
TimeCounter {
  min 0
  max 1
  step 1
  on TRUE
  frequency 1
  duty 1
  timeIn 1316437066.463
  reset 0
}
See Also
SoCounter, SoElapsedTime, SoEngineOutput

Definition at line 148 of file SoTimeCounter.h.


Constructor & Destructor Documentation

SoTimeCounter::SoTimeCounter ( )

Member Function Documentation

static void SoTimeCounter::initClass ( ) [static]

Reimplemented from SoEngine.

virtual void SoTimeCounter::inputChanged ( SoField whichField) [protected, virtual]

The default method does nothing. Subclasses can override this to detect when a specific field is changed.

Reimplemented from SoEngine.

virtual SbBool SoTimeCounter::readInstance ( SoInput in,
unsigned short  flags 
) [protected, virtual]

Works around a problem with old files that contain explicit references to the default connection to realTime.

Reimplemented from SoEngine.

virtual void SoTimeCounter::writeInstance ( SoOutput out) [protected, virtual]

Takes care of not writing out connection to realTime that is created in constructor.

Reimplemented from SoEngine.


Member Data Documentation

Definition at line 172 of file SoTimeCounter.h.

Definition at line 160 of file SoTimeCounter.h.

Definition at line 157 of file SoTimeCounter.h.

Definition at line 166 of file SoTimeCounter.h.

Definition at line 181 of file SoTimeCounter.h.

Definition at line 163 of file SoTimeCounter.h.

Definition at line 175 of file SoTimeCounter.h.


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