Open Inventor Reference
SoDataSensor.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 | Abstract base class for sensors that attach to some part of a
48 | scene graph and detect changes to it. A data sensor is scheduled
49 | when a change is made to the thing to which it is attached. This
50 | change is detected via the notification mechanism.
51 |
52 | Author(s) : Nick Thompson, Gavin Bell, Paul Strauss
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_DATA_SENSOR_
59#define _SO_DATA_SENSOR_
60
61class SoBase;
62class SoNode;
63class SoPath;
64class SoNotList;
65
67
70
92
94
95 public:
98 SoDataSensor(SoSensorCB *func, void *data);
99
101 virtual ~SoDataSensor();
102
105 void setDeleteCallback(SoSensorCB *f, void *data = NULL)
106 { deleteFunc = f; deleteData = data; }
107
118
123
130
132 void setTriggerPathFlag(bool flag) { doTrigPath = flag; }
134 bool getTriggerPathFlag() const { return doTrigPath; }
135
137 virtual void unschedule();
138
139 SoINTERNAL public:
142 virtual void trigger();
143
148 virtual void notify(SoNotList *list);
149
153 virtual void dyingReference() = 0;
154
155 protected:
158
159 private:
160 SoSensorCB *deleteFunc;
161 void *deleteData;
162 SoNode *trigNode;
163 SoField *trigField;
164 SoPath *trigPath;
165 bool doTrigPath;
166};
167
168#endif /* _SO_DATA_SENSOR_ */
#define SoINTERNAL
Definition SbBasic.h:155
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition SbSystem.h:77
void SoSensorCB(void *data, SoSensor *sensor)
This typedef defines the calling sequence for all callbacks from sensors.
Definition SoSensor.h:89
Base class for all nodes, paths, and engines.
Definition SoBase.h:90
Abstract base class for sensors attached to parts of a scene.
virtual void unschedule()
Override unschedule() to reset trigNode and trigPath.
SoDataSensor(SoSensorCB *func, void *data)
SoDataSensor()
Constructors. The second form takes standard callback function and data.
SoField * getTriggerField() const
Like getTriggerNode(), but returns the field that started notification (NULL if the sensor isn't prio...
virtual ~SoDataSensor()
Destructor.
virtual void dyingReference()=0
This is called when the base (path, field, node, whatever) is deleted.
virtual void notify(SoNotList *list)
Propagates modification notification through an instance.
virtual void trigger()
Override trigger to reset trigNode and trigPath, if necessary.
bool getTriggerPathFlag() const
SoPath * getTriggerPath() const
Returns the path from the node to which this sensor is attached down to the child node that changed.
SoNode * getTriggerNode() const
If this is a priority 0 data sensor, returns the node/field that was modified that caused this sensor...
void invokeDeleteCallback()
Invokes the delete callback.
void setTriggerPathFlag(bool flag)
void setDeleteCallback(SoSensorCB *f, void *data=NULL)
Sets a callback that will be called when the object the sensor is sensing is deleted.
Abstract base class for sensors not dependent on time.
Base class for all fields.
Definition SoField.h:185
Abstract base class for all database nodes.
Definition SoNode.h:103
Holds a list of SoNotRec notification records.
Path that points to a list of hierarchical nodes.
Definition SoPath.h:109