VR-Forces 5.0.2 Developer's Guide
 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 class bdiCfgEntry;
24 
25 namespace makVrv
26 {
27  struct DtFxParticle;
31  {
32  public:
34  {
37  Ellipsoid
38  };
39 
42 
44  virtual ~DtFxCollisionObject() { ; }
45 
47  virtual void setPosition(double x, double y, double z);
48 
50  virtual void setRadius(float radius);
51 
53  virtual void setRadius(float radius_x, float radius_y, float radius_z);
55  virtual void setRotation(float angle, float x, float y, float z);
56 
58  virtual void collide(const bdiFarPosition& system_pos, const bdiVec3f& planeNormal,
59  float quantum, DtFxParticle* pParticle) const;
60 
62  virtual void render_into_vbo(const bdiFarPosition& eyePoint, const bdiMat4f& geocentricMat,
63  bdiVec3fArray& verts, bdiVec4fArray& colors) const;
64 
66  const bdiMat4f& geocentricMatrix() const { return myGeocentricMatrix; }
67 
69  bool globalObject() const { return m_global_object; }
71  void setGlobalObject(bool global) { m_global_object = global; }
72 
74  void setObjectType(int val) { m_object_type = val; }
76  int objectType() const { return m_object_type; }
77 
79  virtual void read_cfg_line(bdiCfgEntryLine* cfg_entry_line);
80 
82  virtual bdiCfgEntryLine* create_cfg_line();
83 
84  virtual bdiCfgEntry* create_cfg_entry();
85 
86  virtual void read_cfg_entry(bdiCfgEntry* entry);
87 
89  const bdiFarPosition& point() const { return m_point; }
90 
92  float radius() const { return m_radius; }
93 
95  const bdiVec3f& normal() const { return m_normal; }
96 
99 
100  protected:
104  bdiVec3f m_normal;
106  bdiFarPosition m_point;
108  float m_radius;
109 
112 
114  bdiVec4f m_quat;
115 
118 
119  // What will particles do when they strike the object
121 
123  bdiMat4f myQuatMatrix;
124  bdiMat4f myQuatMatrixInv;
125  };
126 };
127 
128 #ifdef LIBBDIOBJECT_ARRAY_TYPE
129 #undef LIBBDIOBJECT_ARRAY_TYPE
130 #endif
131 #ifdef LIBBDIOBJECT_ARRAY_CLASS_NAME
132 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
133 #endif
134 #ifdef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
135 #undef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
136 #endif
137 
138 #define LIBBDIOBJECT_ARRAY_TYPE makVrv::DtFxCollisionObject
139 #define LIBBDIOBJECT_ARRAY_CLASS_NAME DtFxCollisionObjectArray
140 #define LIBBDIOBJECT_ARRAY_INLINE
141 #define LIBBDIOBJECT_ARRAY_DISABLE_BOUNDS_CHECKING
142 
143 #ifdef _WIN32
144 # ifdef vrvFx_EXPORTS
145 # define BDI_DECLSPEC_custom __declspec ( dllexport )
146 # else
147 # define BDI_DECLSPEC_custom __declspec ( dllimport )
148 # endif
149 #endif
150 
153 
154 #undef LIBBDIOBJECT_ARRAY_DISABLE_BOUNDS_CHECKING
155 #undef LIBBDIOBJECT_ARRAY_INLINE
156 #undef LIBBDIOBJECT_ARRAY_TYPE
157 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
158 
159 #ifdef LIBBDIOBJECT_ARRAY_TYPE
160 #undef LIBBDIOBJECT_ARRAY_TYPE
161 #endif
162 #ifdef LIBBDIOBJECT_ARRAY_CLASS_NAME
163 #undef LIBBDIOBJECT_ARRAY_CLASS_NAME
164 #endif
165 #ifdef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
166 #undef LIBBDIOBJECT_ARRAY_DECLSPEC_bdiutil
167 #endif
Definition: DtFxCollisionObject.h:35
bdiMat4f myQuatMatrix
Definition: DtFxCollisionObject.h:123
bool globalObject() const
is this a global collision object (usually true if not a collision plane)
Definition: DtFxCollisionObject.h:69
a cpu side particle representation
Definition: DtFxParticleSystem.h:329
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:104
bdiMat4f myQuatMatrixInv
Definition: DtFxCollisionObject.h:124
const bdiFarPosition & point() const
center of object or plane
Definition: DtFxCollisionObject.h:89
float m_bounce_factor
Coefficient of restitution (or how bouncy the plane is)
Definition: DtFxCollisionObject.h:117
#define DT_DLL_VRVFX
Definition: vrvFx.h:20
Contains DLL export macros.
const bdiVec3f & normal() const
plane normal
Definition: DtFxCollisionObject.h:95
bdiFarPosition m_point
A coplanar point within the plane, or center of object.
Definition: DtFxCollisionObject.h:106
bool m_global_object
Definition: DtFxCollisionObject.h:101
bdiMat4f myGeocentricMatrix
Definition: DtFxCollisionObject.h:122
int objectType() const
gets the object type
Definition: DtFxCollisionObject.h:76
bdiVec4f m_quat
results of set rotation
Definition: DtFxCollisionObject.h:114
Definition: bdiQPropTree_subclasses.h:245
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:71
float m_radius
sphere size
Definition: DtFxCollisionObject.h:108
float radius() const
sphere radius for bounds check
Definition: DtFxCollisionObject.h:92
bdiVec3f m_ellipsoid_radius
ellipsoid size
Definition: DtFxCollisionObject.h:111
const bdiMat4f & geocentricMatrix() const
current geocentric matrix
Definition: DtFxCollisionObject.h:66
replaces the PPlane object /ingroup vrvFx
Definition: DtFxCollisionObject.h:30
int m_collision_behavior
Definition: DtFxCollisionObject.h:120
virtual ~DtFxCollisionObject()
DTOR destroys a force.
Definition: DtFxCollisionObject.h:44
Definition: DtFxCollisionObject.h:36
int m_object_type
Definition: DtFxCollisionObject.h:102
ObjectType
Definition: DtFxCollisionObject.h:33
void setObjectType(int val)
sets the object type
Definition: DtFxCollisionObject.h:74

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)