VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtFxCollisionObject.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2019 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <libvecmat_float.h>
13 #include <bdiFarPosition.h>
14 #include <bdi_simple_templates.h>
15 
16 #include <vrvFx/vrvFx.h>
17 
19 
20 class bdiVec3fArray;
21 class bdiVec4fArray;
22 class bdiCfgEntryLine;
23 
24 namespace makVrv
25 {
26  struct DtFxParticle;
30  {
31  public:
33  {
36  Ellipsoid
37  };
38 
41 
43  virtual ~DtFxCollisionObject() { ; }
44 
46  virtual void setPosition(double x, double y, double z);
47 
49  virtual void setRadius(float radius);
50 
52  virtual void setRadius(float radius_x, float radius_y, float radius_z);
54  virtual void setRotation(float angle, float x, float y, float z);
55 
57  virtual void collide(const bdiFarPosition& system_pos, const bdiVec3f& planeNormal,
58  float quantum, DtFxParticle* pParticle) const;
59 
61  virtual void render_into_vbo(const bdiFarPosition& eyePoint, const bdiMat4f& geocentricMat,
62  bdiVec3fArray& verts, bdiVec4fArray& colors) const;
63 
65  const bdiMat4f& geocentricMatrix() const { return myGeocentricMatrix; }
66 
68  bool globalObject() const { return m_global_object; }
70  void setGlobalObject(bool global) { m_global_object = global; }
71 
73  void setObjectType(int val) { m_object_type = val; }
75  int objectType() const { return m_object_type; }
76 
78  virtual void read_cfg_line(bdiCfgEntryLine* cfg_entry_line);
79 
81  virtual bdiCfgEntryLine* create_cfg_line();
82 
84  const bdiFarPosition& point() const { return m_point; }
85 
87  float radius() const { return m_radius; }
88 
90  const bdiVec3f& normal() const { return m_normal; }
91 
94 
95  protected:
99  bdiVec3f m_normal;
101  bdiFarPosition m_point;
103  float m_radius;
104 
107 
109  bdiVec4f m_quat;
110 
113 
114  // What will particles do when they strike the object
116 
118  bdiMat4f myQuatMatrix;
119  bdiMat4f myQuatMatrixInv;
120  };
121 };
122 
123 #ifdef LIBBDIOBJECT_ARRAY_TYPE
124 #undef LIBBDIOBJECT_ARRAY_TYPE
125 #endif
126 #ifdef LIBBDIOBJECT_ARRAY_CLASS_NAME
127 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
128 #endif
129 #ifdef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
130 #undef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
131 #endif
132 
133 #define LIBBDIOBJECT_ARRAY_TYPE makVrv::DtFxCollisionObject
134 #define LIBBDIOBJECT_ARRAY_CLASS_NAME DtFxCollisionObjectArray
135 #define LIBBDIOBJECT_ARRAY_INLINE
136 #define LIBBDIOBJECT_ARRAY_DISABLE_BOUNDS_CHECKING
137 
138 #ifdef _WIN32
139 # ifdef vrvFx_EXPORTS
140 # define BDI_DECLSPEC_custom __declspec ( dllexport )
141 # else
142 # define BDI_DECLSPEC_custom __declspec ( dllimport )
143 # endif
144 #endif
145 
148 
149 #undef LIBBDIOBJECT_ARRAY_DISABLE_BOUNDS_CHECKING
150 #undef LIBBDIOBJECT_ARRAY_INLINE
151 #undef LIBBDIOBJECT_ARRAY_TYPE
152 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
153 
154 #ifdef LIBBDIOBJECT_ARRAY_TYPE
155 #undef LIBBDIOBJECT_ARRAY_TYPE
156 #endif
157 #ifdef LIBBDIOBJECT_ARRAY_CLASS_NAME
158 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
159 #endif
160 #ifdef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
161 #undef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
162 #endif
Definition: DtFxCollisionObject.h:34
bdiMat4f myQuatMatrix
Definition: DtFxCollisionObject.h:118
bool globalObject() const
is this a global collision object (usually true if not a collision plane)
Definition: DtFxCollisionObject.h:68
a cpu side particle representation
Definition: DtFxParticleSystem.h:319
class that allows clients to add collision objects (no export of virtual base class) ...
Definition: DtFxCollisionVolumeInterface.h:18
bdiVec3f m_normal
The plane&#39;s normal.
Definition: DtFxCollisionObject.h:99
bdiMat4f myQuatMatrixInv
Definition: DtFxCollisionObject.h:119
const bdiFarPosition & point() const
center of object or plane
Definition: DtFxCollisionObject.h:84
float m_bounce_factor
Coefficient of restitution (or how bouncy the plane is)
Definition: DtFxCollisionObject.h:112
#define DT_DLL_VRVFX
Definition: vrvFx.h:20
Contains DLL export macros.
const bdiVec3f & normal() const
plane normal
Definition: DtFxCollisionObject.h:90
bdiFarPosition m_point
A coplanar point within the plane, or center of object.
Definition: DtFxCollisionObject.h:101
bool m_global_object
Definition: DtFxCollisionObject.h:96
bdiMat4f myGeocentricMatrix
Definition: DtFxCollisionObject.h:117
int objectType() const
gets the object type
Definition: DtFxCollisionObject.h:75
bdiVec4f m_quat
results of set rotation
Definition: DtFxCollisionObject.h:109
Definition: bdiQPropTree_subclasses.h:230
DT_DLL_vrfutil double angle(double vec1[3], double vec2[3])
void setGlobalObject(bool global)
sets this to be a global object
Definition: DtFxCollisionObject.h:70
float m_radius
sphere size
Definition: DtFxCollisionObject.h:103
float radius() const
sphere radius for bounds check
Definition: DtFxCollisionObject.h:87
bdiVec3f m_ellipsoid_radius
ellipsoid size
Definition: DtFxCollisionObject.h:106
const bdiMat4f & geocentricMatrix() const
current geocentric matrix
Definition: DtFxCollisionObject.h:65
replaces the PPlane object /ingroup vrvFx
Definition: DtFxCollisionObject.h:29
int m_collision_behavior
Definition: DtFxCollisionObject.h:115
virtual ~DtFxCollisionObject()
DTOR destroys a force.
Definition: DtFxCollisionObject.h:43
Definition: DtFxCollisionObject.h:35
int m_object_type
Definition: DtFxCollisionObject.h:97
ObjectType
Definition: DtFxCollisionObject.h:32
void setObjectType(int val)
sets the object type
Definition: DtFxCollisionObject.h:73

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)