VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtSenSimSensorModule.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 #pragma once
6 
10 
11 #include <vrvSenSim/vrvSenSim.h>
12 
13 #include <vrvCore/DtSensorModule.h>
14 #include <vrvCore/DtUniqueID.h>
15 
17 
19 
20 #include <osg/Camera>
21 
22 
23 namespace makVrv
24 {
25  class DtSenSim;
26  class DtDe;
27  class DtOsgChannel;
28  class DtModelInstance;
29  class DtGlBuffer;
30  class DtSignalConnectionManager;
31  class DtOsgModelInstance;
32  class DtModel;
33  class DtDiGuyModelInstance;
34 
40  {
41  public:
43  enum ModelType
44  {
47  ModelTypeEntity
48  };
49 
50  public:
53 
54 
56  virtual ~DtSenSimSensorModule();
57 
61  virtual std::string name() const;
62 
66  virtual std::string displayName() const;
67 
69  virtual void enableSensor(DtSensor& sensor, DtChannel& channel);
70 
72  virtual void disableSensor(DtSensor& sensor, DtChannel& channel);
73 
75  virtual void defaultSensorConfiguration(
77 
79  virtual DtSenSim* senSim(DtOsgChannel* osgChannel);
80 
83  virtual void initModel(DtModelInstance& modelInstance);
84 
85 
86  protected:
87 
90  virtual void initDiGuy(DtDiGuyModelInstance* diguyModel);
91 
93  virtual void diguyModelInstanceToBeDestroyed(DtDiGuyModelInstance *diguyModel);
94 
97  virtual void slot_postInit();
98 
101  void updateCameraUniforms(const DtSensor* sensor, DtOsgChannel* osgChannel);
102 
103  //@name Handlers for sensor attribute changes
105  virtual void slot_attributeChangedBool(DtSenSim* sensim, const std::string& attributeName, bool val, const DtSensor* sensor, DtOsgChannel* osgChannel);
106  virtual void slot_attributeChangedFloat(DtSenSim* sensim, const std::string& attributeName, float val, const DtSensor* sensor, DtOsgChannel* osgChannel);
107  virtual void slot_setFromRecord(const DtSensor* sensor, DtOsgChannel* osgChannel);
108  virtual void slot_channelToBeDestroyed(DtChannel *channel);
110 
113  virtual void cleanupChannel(DtChannel& channel);
114 
117  virtual void modelToBeDestroyed(DtModelInstance& model);
118 
120  virtual void indirectEntityAdded(DtModel* model, DtUniqueID id);
121 
124  virtual void updateActiveRegion(DtOsgModelInstance* model, const std::string& regionName, bool value);
125  protected:
126 
128  typedef std::map<DtChannel*, DtSenSim*> ChannelToSenSim;
130 
131  typedef std::map<DtChannel*, DtSignalConnectionManager*> ChannelToSignalManager;
133 
135 
137 
138  typedef std::map < DtOsgModelInstance*, DtUniqueID > ModelInstanceIdMap;
139 
141 
142  };
143 
145  class DT_DLL_VRVSENSIM DtSenSimDrawable : public osg::Drawable
146  {
147  public:
149  DtSenSimDrawable(DtSenSim* sensim);
151  DtSenSimDrawable(const DtSenSimDrawable& orig, const osg::CopyOp& op);
153  virtual ~DtSenSimDrawable();
154 
155  public:
156 
158  virtual Object* cloneType() const;
160  virtual Object* clone(const osg::CopyOp& copyop) const;
162  virtual void setInputTexture(osg::Texture* inputTex);
163 
165  virtual void setOutputTexture(osg::Texture* outputTex);
166 
168  virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
169 
171  virtual void updateViewports(unsigned int inX, unsigned int inY,
172  unsigned int inWidth, unsigned int inHeight,
173  unsigned int outX, unsigned int outY,
174  unsigned int outWidth, unsigned int outHeight);
175 
177  virtual void setEnabled(bool enabled);
178 
180  virtual void setSenSim(DtSenSim* senSim);
181 
182  protected:
184  bool myEnabled;
187 
188  mutable unsigned int myInputTexId;
189  mutable unsigned int myInputTexViewIds[2];
190 
191  mutable unsigned int myOutputTexId;
192  mutable unsigned int myOutputTexViewIds[2];
193 
194  };
195 
197  {
198  public:
199  DtSenSimPostProcessor(const std::string& postProcessType, bool handles2D, DtSenSim* senSim, DtDe& de);
200 
201  virtual ~DtSenSimPostProcessor();
202 
203  virtual bool update(DtChannel *channel);
204 
206  virtual void setInputTexture(const DtChannel* channel, osg::Texture* texture) override;
207 
209  virtual void setIsFinalEffect(const DtChannel* channel, bool final) override;
210 
211  protected:
214  };
215 
217  : public DtPostProcessorCreator
218  {
219  public:
221  friend class DtPostProcessManager;
222 
225 
227  virtual ~DtSenSimPostProcessorCreator();
228 
229  protected:
231  virtual DtPostProcessor* create(DtDe& de, const std::string& postProcessType);
232  };
233 }
osg::ref_ptr< osg::Texture > myInputTex
Definition: DtSenSimSensorModule.h:185
A Di Guy based model instance.
Definition: DtDiGuyModelInstance.h:28
Diagonal crossing liens.
Definition: DtTacticalGraphicUtilities.h:93
The base class for all model instances.
Definition: DtModelInstance.h:39
unsigned int myOutputTexId
Definition: DtSenSimSensorModule.h:191
Contains makVrv::DtSensorModule class.
std::map< DtChannel *, DtSignalConnectionManager * > ChannelToSignalManager
Definition: DtSenSimSensorModule.h:131
DtDe & myDe
Definition: DtSenSimSensorModule.h:134
Contains DLL export macros.
Definition: DtSenSimSensorModule.h:196
DtPostProcessorCreator is the common base class for all post processor creators.
Definition: DtPostProcessor.h:232
Interface for a sensor implementation module.
Definition: DtSensorModule.h:31
DtSenSim * mySenSim
Definition: DtSenSimSensorModule.h:183
DtSignalConnectionManager mySignalManager
Definition: DtSenSimSensorModule.h:136
This class provides the OSG-specific implementation of a DtChannel.
Definition: DtOsgChannel.h:52
osg::ref_ptr< osg::Texture > myOutputTex
Definition: DtSenSimSensorModule.h:186
std::map< DtOsgModelInstance *, DtUniqueID > ModelInstanceIdMap
Definition: DtSenSimSensorModule.h:138
JRM SenSim sensor module implementation.
Definition: DtSenSimSensorModule.h:39
osg::ref_ptr< DtSenSimDrawable > mySenSimDrawable
Definition: DtSenSimSensorModule.h:213
bool myEnabled
Definition: DtSenSimSensorModule.h:184
The abstract Channel Class.
Definition: DtChannel.h:35
Definition: DtSenSim.h:26
The base class for simple OSG based model instances. This call can&#39;t be instantiated itself...
Definition: DtOsgModelInstance.h:77
ModelInstanceIdMap myModelInstanceToUniqueId
Definition: DtSenSimSensorModule.h:140
std::map< DtChannel *, DtSenSim * > ChannelToSenSim
Map of channels to DtSenSim objects.
Definition: DtSenSimSensorModule.h:128
This class provides the OSG-specific management of post-processing effects.
Definition: DtPostProcessManager.h:25
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
ChannelToSignalManager myChannelToSignalMap
Definition: DtSenSimSensorModule.h:132
Definition of a sensor.
Definition: DtSensor.h:30
Definition: DtSenSimSensorModule.h:216
ModelType
used by the lighting shader to know which adjustment to use based on model type
Definition: DtSenSimSensorModule.h:43
DtSenSim * mySenSim
Definition: DtSenSimSensorModule.h:212
Base class to provide boost signal/slot management.
unsigned int myInputTexId
Definition: DtSenSimSensorModule.h:188
A model which owns a single model instance. A DtModel is a managing container for a single DtModelIns...
Definition: DtModel.h:55
Contains makVrv::DtUniqueID type.
ChannelToSenSim mySenSimChannels
Definition: DtSenSimSensorModule.h:129
Record for a sensor definition.
Definition: DtSensorRecord.h:19
#define DT_DLL_VRVSENSIM
Definition: vrvSenSim.h:19
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
Definition: DtSenSimSensorModule.h:46
class used to render SenSimRT during the post processor camera draw
Definition: DtSenSimSensorModule.h:145
This class provides the OSG-specific implementation of a post processor. A post processor has a type ...
Definition: DtPostProcessor.h:66
Definition: DtSenSimSensorModule.h:45

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)