00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __NECONTACT_H
00029 #define __NECONTACT_H
00030
00031 #ifndef __NEED_VECTOR_FLOAT
00032 # define __NEED_VECTOR_FLOAT
00033 #endif
00034
00035 #include "base.h"
00036 #include "nemath.h"
00037 #include "material.h"
00038 #include "scenenode.h"
00039
00040 #include <vector>
00041
00042
00049 namespace NeoEngine
00050 {
00051
00052
00053 #ifdef WIN32
00054 # ifdef _MSC_VER
00055 # pragma warning( disable : 4231 )
00056 # endif
00057 # ifndef __HAVE_VECTOR_NECONTACTDATA
00058 UDTVectorEXPIMP( class Contact* );
00059 # define __HAVE_VECTOR_NECONTACTDATA
00060 # endif
00061 # ifndef __HAVE_VECTOR_NEVECTOR3D_NOPOINTER
00062 UDTVectorEXPIMP( class Vector3d );
00063 # define __HAVE_VECTOR_NEVECTOR3D_NOPOINTER
00064 # endif
00065 #endif
00066
00067
00073 class NEOENGINE_API Contact
00074 {
00075 public:
00076
00078 std::vector< Vector3d > m_vkPoints;
00079
00081 std::vector< float > m_vfDepths;
00082
00084 Vector3d m_kNormal;
00085
00087 MaterialPtr m_apkMaterials[2];
00088
00090 SceneNode *m_pkSceneNode;
00091
00095 Contact() : m_pkSceneNode( 0 ) {}
00096 };
00097
00098
00104 class NEOENGINE_API ContactSet
00105 {
00106 public:
00107
00109 std::vector< Contact* > m_vpkContacts;
00110
00111
00112
00115 ContactSet() {}
00116
00120 virtual ~ContactSet();
00121
00126 void Add( Contact *pkData );
00127
00131 void Clear();
00132 };
00133
00134
00135 };
00136
00137
00138 #endif