VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtModelInstance.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 #include <vrvCore/DtUniqueID.h>
15 
16 #include <vrvMath/DtVector4.h>
17 
18 #include <string>
19 #include <vector>
20 
21 #include <matrix/vlVector.h>
22 #include <matrix/vlTaitBryan.h>
23 
24 #include <vrvUtil/signalslib.h>
25 
26 namespace makVrv
27 {
28  class DtModelDefinition;
29  class DtDe;
30 
42  {
43  public:
44 
46  DtModelInstance(DtDe& de);
47 
49  virtual ~DtModelInstance();
50 
53  virtual bool realize(const DtModelDefinition& definition);
54 
57  virtual bool cloneInstance(const DtModelDefinition& definition);
58 
61  const std::string& realizedDefinitionName() const;
62 
64  virtual bool saveModelToFile(const std::string& filename) const;
65 
67  const DtVector& boundingBoxExtents() const;
68 
70  void getBoundingBoxExtents(double& x, double& y, double& z) const;
71 
73  const DtVector& boundingBoxCenter() const;
74 
76  void getBoundingBoxCenter(double& x, double& y, double& z) const;
77 
79  void getBoundingBoxComponents( DtVector& minimum, DtVector& maximum );
80 
82 
84  const DtVector& allGeometryboundingBoxExtents() const;
86  void getAllGeometryBoundingBoxExtents(double& x, double& y, double& z) const;
88  const DtVector& allGeometryboundingBoxCenter() const;
90  void getAllGeometryBoundingBoxCenter(double& x, double& y, double& z) const;
92  void getAllGeometryBoundingBoxComponents(DtVector& minimum, DtVector& maximum);
93 
96  virtual void setContributesToBound( bool trueOrFalse );
97 
100  bool contributesToBound() const;
101 
103  virtual void setVisible(bool isVisible) = 0;
104 
106  virtual void setBlendColor(float r, float g, float b, float a);
107 
111  virtual void enableColorBlending( bool b );
112 
113  //Utility function for reading a float from a definition.
114  static float readFloat(const std::string& paramName, const DtModelDefinition& definition);
115 
116  //Utility function for reading a 3 value Vector from a definition.
117  static DtVector readVector(const std::string& paramName, const DtModelDefinition& definition);
118 
119  //Utility function for reading a 4 floating point value Vector from a definition.
120  static DtVector4<float> readVector4(const std::string& paramName, const DtModelDefinition& definition);
121 
122  boost::signalslib::signal<void (DtModelInstance*)> signal_modelInstanceChanged;
123 
124  protected:
125 
132 
133  //We need the full size of the geometry with all switches active to get a max bounds for instancing.
138 
140 
141  //Note about myColorBlendingEnabled: If this particular model has instancing enabled then this flag is set to false
142  // and color blending is handled by the instance manager.
144  float myBlendRed;
145  float myBlendBlue;
148 
149  };
150 
154  {
155  public:
156 
158  virtual ~DtModelInstanceCreator();
159 
161  virtual DtModelInstance* create(DtDe& de) = 0;
162 
163  protected:
164 
166  };
167 
168 }
DtVector myBoundingBoxCenter
Definition: DtModelInstance.h:128
The base class for all model instances.
Definition: DtModelInstance.h:41
bool myColorBlendingEnabled
Definition: DtModelInstance.h:143
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtVector myAllGeometryBoundingBoxMinimum
Definition: DtModelInstance.h:136
boost::signalslib::signal< void(DtModelInstance *)> signal_modelInstanceChanged
Definition: DtModelInstance.h:122
DtVector myAllGeometryBoundingBoxMaximum
Definition: DtModelInstance.h:137
DtVector myBoundingBoxMaximum
Definition: DtModelInstance.h:131
4 dimensional vector
DtVector myAllGeometryBoundingBoxExtents
Definition: DtModelInstance.h:135
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:42
float myBlendBlue
Definition: DtModelInstance.h:145
Contains makVrv::DtVirtualBaseClass class.
std::string myRealizedModelDefinitionName
Definition: DtModelInstance.h:127
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
The polymorphic creator for the DtModelInstance.
Definition: DtModelInstance.h:153
bool myContributesToBound
Definition: DtModelInstance.h:139
float myBlendAlpha
Definition: DtModelInstance.h:147
DtDe & myDe
Definition: DtModelInstance.h:126
DtVector myBoundingBoxMinimum
Definition: DtModelInstance.h:130
float myBlendRed
Definition: DtModelInstance.h:144
DtVector myBoundingBoxExtents
Definition: DtModelInstance.h:129
Contains makVrv::DtUniqueID type.
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:72
DtVector myAllGeometryBoundingBoxCenter
Definition: DtModelInstance.h:134
float myBlendGreen
Definition: DtModelInstance.h:146
Contains DLL export macros.

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)