Open Inventor Reference
SoTimeCounter.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * Further, this software is distributed without any warranty that it is
16  * free of the rightful claim of any third person regarding infringement
17  * or the like. Any license provided herein, whether implied or
18  * otherwise, applies only to this software file. Patent licenses, if
19  * any, provided herein do not apply to combinations of this program with
20  * other software, or any other product whatsoever.
21  *
22  * You should have received a copy of the GNU Lesser General Public
23  * License along with this library; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25  *
26  * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
27  * Mountain View, CA 94043, or:
28  *
29  * http://www.sgi.com
30  *
31  * For further information regarding this notice, see:
32  *
33  * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
34  *
35  */
36 
37 
38 /*
39  * Copyright (C) 1990,91,92 Silicon Graphics, Inc.
40  *
41  _______________________________________________________________________
42  ______________ S I L I C O N G R A P H I C S I N C . ____________
43  |
44  | $Revision: 1.1.1.1 $
45  |
46  | Description:
47  | This file contains the implementation of the TimeCounter engine
48  |
49  | Classes:
50  | SoTimeCounter
51  |
52  | Author(s) : Ronen Barzel
53  |
54  ______________ S I L I C O N G R A P H I C S I N C . ____________
55  _______________________________________________________________________
56  */
57 
58 #ifndef _SO_TIME_COUNTER_
59 #define _SO_TIME_COUNTER_
60 
69 
72 
147 
149 
151 
152  public:
154 
155 
158 
161 
164 
167 
170 
173 
176 
179 
182 
184 
186 
187 
190 
193 
195 
198 
199  SoINTERNAL public:
200 
201  static void initClass();
202 
203  protected:
204  virtual void inputChanged(SoField *whichInput);
205 
208  virtual void writeInstance(SoOutput *out);
209 
213  virtual bool readInstance(SoInput *in, unsigned short flags);
214 
215  private:
216  enum State {
217  ON,
218  PAUSED
219  } state;
220  enum Todo {
221  RECALC = (1<<0),
222  RESET = (1<<1),
223  SYNC = (1<<2),
224  PAUSE = (1<<3),
225  UNPAUSE = (1<<4)
226  };
227  unsigned int todo;
228  SbTime period;
229  int nStages;
230  int curStage;
231  int prevStage;
232  struct Stage {
233  int val;
234  float duty;
235  SbTime offset;
236  } *stages;
237  SbTime baseTime;
238  SbTime pauseOffset;
239 
241  ~SoTimeCounter();
242 
244  virtual void evaluate();
245 };
246 
247 #endif /* _SO_TIME_COUNTER_ */
#define SoINTERNAL
Definition: SbBasic.h:155
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition: SbSystem.h:81
#define SO_ENGINE_HEADER(className)
Definition: SoSubEngine.h:166
Class for representation of a time.
Definition: SbTime.h:89
Class for all engine outputs.
Definition: SoEngine.h:228
Base class for all engines.
Definition: SoEngine.h:102
virtual void evaluate()=0
User-written evaluation engine.
Base class for all fields.
Definition: SoField.h:185
Used to read Inventor data files.
Definition: SoInput.h:128
Multiple-value field containing any number of floating point values.
Definition: SoMFFloat.h:82
Used to write Inventor data files.
Definition: SoOutput.h:90
Field containing a single boolean value.
Definition: SoSFBool.h:78
Field containing a floating-point value.
Definition: SoSFFloat.h:77
Field containing a short integer.
Definition: SoSFShort.h:79
Field containing an SbTime.
Definition: SoSFTime.h:80
Field used to trigger engines or connection networks.
Definition: SoSFTrigger.h:88
Timed integer counter.
SoEngineOutput output
Counts min -to-max , in step increments.
SoSFShort max
Maximum value for the counter.
SoSFTrigger syncIn
Restart at the beginning of the cycle.
SoSFFloat frequency
Number of min -to-max cycles per second.
SoSFShort reset
Reset the counter to the specified value.
SoSFTime timeIn
Running time.
virtual void writeInstance(SoOutput *out)
Writes instance to SoOutput.
SoSFBool on
Counter pauses if this is set to FALSE.
SoTimeCounter()
Constructor.
virtual void inputChanged(SoField *whichInput)
This is called whenever the value of an input is changed.
SoSFShort step
Counter step value.
SoSFShort min
Minimum value for the counter.
static void initClass()
SoMFFloat duty
Duty cycle values.
SoEngineOutput syncOut
Triggers at cycle start.
virtual bool readInstance(SoInput *in, unsigned short flags)
Reads stuff into instance.