VR-Forces 4.3 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 
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 
118  virtual void enableLighting( bool l );
119 
121  virtual int modelSet() const;
122 
124  const DtVector& boundingBoxExtents() const;
125 
127  void getBoundingBoxExtents(double& x, double& y, double& z) const;
128 
130  const DtVector& boundingBoxCenter() const;
131 
133  virtual void getBoundingBoxCenter(double& x, double& y, double& z) const;
134 
136  virtual void getBoundingBoxComponents( DtVector& minimum, DtVector& maximum );
137 
140  void setContributesToBound( bool trueOrFalse );
141 
144  bool contributesToBound() const;
145 
147 
148 
149 
150  int visualizerType() const;
152 
154  inline DtDe& de() { return myDe;}
155 
162  virtual void setModelInstance(DtModelInstance* modelInstance );
163 
167  virtual void setVisible(bool isVisible);
168 
173  virtual bool visible() const;
174 
176  DtUniqueID parentSceneObjectID() const;
177 
179  virtual void addedToSceneObjectAsProp( const DtUniqueID& sceneObj );
180 
183  virtual void addedToSceneObject( const DtUniqueID& sceneObj, int modelSet,
184  int visualizerType );
185 
187  virtual void removedFromSceneObject();
188 
190  virtual void setSolid(bool isSolid) = 0;
191 
193  boost::signal<void (DtModel*)> signal_modelToBeDestroyed;
194  boost::signal<void (DtModel*)> signal_modelChanged;
195 
198  boost::signal<bool (DtModel*,bool ), SlotReturnOR> signal_visibilityChangeRequested;
199 
201  boost::signal<void (DtModelInstance*, DtModel*)> signal_modelInstanceCreated;
202 
204  boost::signal<void (DtModelInstance*, DtModel*)> signal_modelInstanceToBeDestroyed;
205 
206  protected:
207 
209  virtual void addToScene( const DtUniqueID& sceneObjectId,
210  int modelSet, int visualizerType ) = 0;
211 
214  virtual void addToSceneAsProp( const DtUniqueID& sceneObjectId ) {}
215 
217  virtual void removeFromScene() = 0;
218 
220  virtual void initializeModelInstance();
221 
223  void slot_modelInstanceChanged( DtModelInstance* instance );
224 
225  protected:
227  {
229  DtTaitBryan orientation;
230  };
231 
232  typedef std::vector<ObjectTransform> TransformList;
233 
235 
236  //The unique id is constant after initialization.
238 
239  private:
240 
251  bool myLit;
252  float myBlendColor[4];
254  };
255 }
256 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)