VR-Forces 4.1.1 Class Documentation
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 
15 #include <string>
16 #include <vector>
17 #include <boost/signal.hpp>
18 
19 #include <matrix/vlVector.h>
20 #include <matrix/vlTaitBryan.h>
21 
22 
23 namespace makVrv
24 {
25  class DtDe;
26  class DtModelInstance;
27 
28  // Struct which performances a boolean OR on all slot return values.
29  struct SlotReturnOR
30  {
31  typedef bool result_type;
32  template<typename InputIterator>
33  bool operator()(InputIterator first, InputIterator last) const
34  {
35  bool result = false;
36  while (first != last)
37  {
38  result |= *first++;
39  }
40  return result;
41  }
42  };
43 
55  {
56  public:
57 
59  DtModel(DtDe& de, DtUniqueID id);
60 
62  virtual ~DtModel();
63 
65  virtual void setModelDefinition(const std::string& str);
66 
67  //Save the model's loaded notes to a file.
68  virtual void saveModelToFile(const std::string& filename);
69 
72  virtual std::string className() const;
73 
75 
76  virtual DtModelInstance* modelInstance();
77  virtual const DtModelInstance* modelInstance() const;
79 
80 
82  unsigned int transformSize() const;
83 
85  virtual void setPosition( int vtx, const DtVector& position );
86 
88  virtual void removePosition( int vtx );
89 
92  const DtVector& position(int vtx = 0) const;
93 
96  const DtTaitBryan& orientation(int vtx = 0) const;
97 
99  virtual void setOrientation( int vtx, const DtTaitBryan& orientation );
100 
102  virtual void enableColorBlending( bool b );
103 
105  virtual void setBlendColor( float r, float g, float b, float a );
106 
108  virtual void getBlendColor( float& r, float& g, float& b, float& a);
109 
111  virtual bool colorBlendingEnabled() const;
112 
114  virtual void setColor(float r, float g, float b, float a);
115 
117  virtual int modelSet() const;
118 
120  const DtVector& boundingBoxExtents() const;
121 
123  void getBoundingBoxExtents(double& x, double& y, double& z) const;
124 
126  const DtVector& boundingBoxCenter() const;
127 
129  void getBoundingBoxCenter(double& x, double& y, double& z) const;
130 
131  void getBoundingBoxComponents( DtVector& minimum, DtVector& maximum );
132 
135  void setContributesToBound( bool trueOrFalse );
136 
139  bool contributesToBound() const;
140 
142 
143 
144 
145  int visualizerType() const;
147 
149  inline DtDe& de() { return myDe;}
150 
157  virtual void setModelInstance(DtModelInstance* modelInstance );
158 
162  virtual void setVisible(bool isVisible);
163 
168  virtual bool visible() const;
169 
171  DtUniqueID parentSceneObjectID() const;
172 
174  virtual void addedToSceneObjectAsProp( const DtUniqueID& sceneObj );
175 
178  virtual void addedToSceneObject( const DtUniqueID& sceneObj, int modelSet,
179  int visualizerType );
180 
182  virtual void removedFromSceneObject();
183 
185  virtual void setSolid(bool isSolid) = 0;
186 
188  boost::signal<void (DtModel*)> signal_modelToBeDestroyed;
189  boost::signal<void (DtModel*)> signal_modelChanged;
190 
193  boost::signal<bool (DtModel*,bool ), SlotReturnOR> signal_visibilityChangeRequested;
194 
196  boost::signal<void (DtModelInstance*, DtModel*)> signal_modelInstanceCreated;
197 
199  boost::signal<void (DtModelInstance*, DtModel*)> signal_modelInstanceToBeDestroyed;
200 
201  protected:
202 
204  virtual void addToScene( const DtUniqueID& sceneObjectId,
205  int modelSet, int visualizerType ) = 0;
206 
209  virtual void addToSceneAsProp( const DtUniqueID& sceneObjectId ) {}
210 
212  virtual void removeFromScene() = 0;
213 
215  virtual void initializeModelInstance();
216 
218  void slot_modelInstanceChanged( DtModelInstance* instance );
219 
220  protected:
222  {
224  DtTaitBryan orientation;
225  };
226 
227  typedef std::vector<ObjectTransform> TransformList;
228 
230 
231  //The unique id is constant after initialization.
233 
234  private:
235 
246  float myBlendColor[4];
248  };
249 }
250 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)