VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtModel.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtUniqueID.h>
14 
16 
17 #include <string>
18 #include <vector>
19 #include <boost/signal.hpp>
20 
21 #include <matrix/vlVector.h>
22 #include <matrix/vlTaitBryan.h>
23 
24 
25 namespace makVrv
26 {
27  class DtDe;
28  class DtModelInstance;
29 
30  // Struct which performances a boolean OR on all slot return values.
31  struct SlotReturnOR
32  {
33  typedef bool result_type;
34  template<typename InputIterator>
35  bool operator()(InputIterator first, InputIterator last) const
36  {
37  bool result = false;
38  while (first != last)
39  {
40  result |= *first++;
41  }
42  return result;
43  }
44  };
45 
57  {
58  public:
59 
61  DtModel(DtDe& de, DtUniqueID id);
62 
64  virtual ~DtModel();
65 
67  virtual void setModelDefinition(const std::string& str);
68 
69  //Save the model's loaded notes to a file.
70  virtual void saveModelToFile(const std::string& filename);
71 
74  virtual std::string className() const;
75 
77 
78  virtual DtModelInstance* modelInstance();
79  virtual const DtModelInstance* modelInstance() const;
81 
82 
84  unsigned int transformSize() const;
85 
87  virtual void setPosition( int vtx, const DtVector& position );
88 
90  virtual void removePosition( int vtx );
91 
94  const DtVector& position(int vtx = 0) const;
95 
98  const DtTaitBryan& orientation(int vtx = 0) const;
99 
101  virtual void setOrientation( int vtx, const DtTaitBryan& orientation );
102 
104  virtual void enableColorBlending( bool b );
105 
107  virtual void setBlendColor( float r, float g, float b, float a );
108 
110  virtual void getBlendColor( float& r, float& g, float& b, float& a);
111 
113  virtual bool colorBlendingEnabled() const;
114 
116  virtual void setColor(float r, float g, float b, float a);
117 
120  virtual void enableLighting( bool l );
121 
123  virtual int modelSet() const;
124 
126  const DtVector& boundingBoxExtents() const;
127 
129  void getBoundingBoxExtents(double& x, double& y, double& z) const;
130 
132  const DtVector& boundingBoxCenter() const;
133 
135  virtual void getBoundingBoxCenter(double& x, double& y, double& z) const;
136 
138  virtual void getBoundingBoxComponents( DtVector& minimum, DtVector& maximum );
139 
142  void setContributesToBound( bool trueOrFalse );
143 
146  bool contributesToBound() const;
147 
149 
150 
151 
152  int visualizerType() const;
154 
156  inline DtDe& de() { return myDe;}
157 
164  virtual void setModelInstance(DtModelInstance* modelInstance );
165 
169  virtual void setVisible(bool isVisible);
170 
175  virtual bool visible() const;
176 
178  DtUniqueID parentSceneObjectID() const;
179 
181  virtual void addedToSceneObjectAsProp( const DtUniqueID& sceneObj );
182 
185  virtual void addedToSceneObject( const DtUniqueID& sceneObj, int modelSet,
186  int visualizerType );
187 
191  virtual void setElementId(DtUniqueID id);
192 
194  virtual void removedFromSceneObject();
195 
198  virtual void setIsSupportModel(bool isSupport) = 0;
199 
201  virtual void setSolid(bool isSolid);
202 
204  boost::signal<void (DtModel*)> signal_modelToBeDestroyed;
205  boost::signal<void (DtModel*)> signal_modelChanged;
206 
209  boost::signal<bool (DtModel*,bool ), SlotReturnOR> signal_visibilityChangeRequested;
210 
212  boost::signal<void (DtModelInstance*, DtModel*)> signal_modelInstanceCreated;
213 
215  boost::signal<void (DtModelInstance*, DtModel*)> signal_modelInstanceToBeDestroyed;
216 
217  protected:
218 
220  virtual void addToScene( const DtUniqueID& sceneObjectId,
221  int modelSet, int visualizerType ) = 0;
222 
225  virtual void addToSceneAsProp( const DtUniqueID& sceneObjectId ) {}
226 
228  virtual void removeFromScene() = 0;
229 
231  virtual void initializeModelInstance();
232 
234  void slot_modelInstanceChanged( DtModelInstance* instance );
235 
236  protected:
238  {
240  DtTaitBryan orientation;
241  };
242 
243  typedef std::vector<ObjectTransform> TransformList;
244 
246 
247  //The unique id is constant after initialization.
249 
250  //The color blending enabled is needed to be set by the derrived class so it doesn't get down to the model instances when instancing is enabled.
252 
253  private:
255  void deleteModelInstance();
256 
257  private:
258 
268  bool myLit;
269  float myBlendColor[4];
271  };
272 
275  {
276  public:
278  static DtModelSignaler& instance(DtDe&);
279 
281  ~DtModelSignaler();
282 
284  boost::signal<void (DtModelInstance&)> signal_modelCreated;
285 
287  boost::signal<void (DtModelInstance&)> signal_modelChanged;
288 
291  boost::signal<void (DtModelInstance&)> signal_modelToBeDestroyed;
292 
293  protected:
294 
296  DtModelSignaler();
297 
298  private:
300  DtModelSignaler& operator=(const DtModelSignaler&);
301  };
302 }
303 

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)