Open Inventor Reference
SoTimerSensor.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  | Timer sensors trigger repeatedly at regular
48  | intervals, starting at a given base time. By default, the base
49  | time is the current time (at the time the sensor is scheduled or
50  | rescheduled) and the interval is 1/30 of a second; both of these
51  | values may be changed. If more than one interval passes while
52  | sensors are being triggered, then the extra intervals will be lost
53  | (timers always reschedule themselves to occur in the future).
54  | If more than one timer has expired (and therefore more than one
55  | needs to be rescheduled), all of them are first triggered, and are
56  | then rescheduled relative to the current time. The reschedule()
57  | method is called by the sensor manager to accomplish this (see the
58  | comments there about saturating the timer queue).
59  |
60  | Author(s) : Nick Thompson, Paul Strauss, Gavin Bell
61  |
62  ______________ S I L I C O N G R A P H I C S I N C . ____________
63  _______________________________________________________________________
64  */
65 
66 #ifndef _SO_TIMER_SENSOR_
67 #define _SO_TIMER_SENSOR_
68 
70 
73 
99 
101 
102  public:
103 
109  SoTimerSensor(SoSensorCB *func, void *data);
110 
113  virtual ~SoTimerSensor();
114 
117  void setBaseTime(const SbTime &base) { baseTime = base;
118  baseTimeSet = TRUE;}
121  void setInterval(const SbTime &intvl) { interval = intvl; }
122 
124  const SbTime & getBaseTime() const { return baseTime; }
126  const SbTime & getInterval() const { return interval; }
127 
130  virtual void schedule();
131 
135  virtual void unschedule();
136 
137  SoINTERNAL public:
138 
140  void reschedule(const SbTime &);
141 
142  private:
143  SbTime baseTime;
144  SbTime interval;
145  bool baseTimeSet;
146 
147  bool triggering;
148 
152  virtual void trigger();
153 };
154 
155 #endif /* _SO_TIMER_SENSOR_ */
#define TRUE
Definition: SbBasic.h:76
#define SoINTERNAL
Definition: SbBasic.h:155
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition: SbSystem.h:81
void SoSensorCB(void *data, SoSensor *sensor)
This typedef defines the calling sequence for all callbacks from sensors.
Definition: SoSensor.h:89
Class for representation of a time.
Definition: SbTime.h:89
Abstract base class for sensors dependent on time.
virtual void trigger()
Triggers the sensor, calling its callback function.
Sensor that triggers callback repeatedly at regular intervals.
void reschedule(const SbTime &)
Reschedule this timer relative to the given time.
const SbTime & getInterval() const
Get the interval.
void setBaseTime(const SbTime &base)
Sets the base time.
const SbTime & getBaseTime() const
Get the base time.
virtual void schedule()
Overrides the regular schedule() method because we have to set up the trigger time first.
virtual void unschedule()
Overrides the regular unschedule() because the timer could be in either the timer queue or the waitin...
virtual ~SoTimerSensor()
Destroys the sensor, freeing up any memory associated with it after unscheduling it.
SoTimerSensor(SoSensorCB *func, void *data)
Creation methods.
void setInterval(const SbTime &intvl)
Get the interval.
SoTimerSensor()
Creation methods.