~ubuntu-branches/ubuntu/saucy/emscripten/saucy-proposed

« back to all changes in this revision

Viewing changes to tests/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#ifndef BT_INTERNAL_EDGE_UTILITY_H
 
3
#define BT_INTERNAL_EDGE_UTILITY_H
 
4
 
 
5
#include "LinearMath/btHashMap.h"
 
6
#include "LinearMath/btVector3.h"
 
7
 
 
8
#include "BulletCollision/CollisionShapes/btTriangleInfoMap.h"
 
9
 
 
10
///The btInternalEdgeUtility helps to avoid or reduce artifacts due to wrong collision normals caused by internal edges.
 
11
///See also http://code.google.com/p/bullet/issues/detail?id=27
 
12
 
 
13
class btBvhTriangleMeshShape;
 
14
class btCollisionObject;
 
15
class btManifoldPoint;
 
16
class btIDebugDraw;
 
17
 
 
18
 
 
19
 
 
20
enum btInternalEdgeAdjustFlags
 
21
{
 
22
        BT_TRIANGLE_CONVEX_BACKFACE_MODE = 1,
 
23
        BT_TRIANGLE_CONCAVE_DOUBLE_SIDED = 2, //double sided options are experimental, single sided is recommended
 
24
        BT_TRIANGLE_CONVEX_DOUBLE_SIDED = 4
 
25
};
 
26
 
 
27
 
 
28
///Call btGenerateInternalEdgeInfo to create triangle info, store in the shape 'userInfo'
 
29
void    btGenerateInternalEdgeInfo (btBvhTriangleMeshShape*trimeshShape, btTriangleInfoMap* triangleInfoMap);
 
30
 
 
31
 
 
32
///Call the btFixMeshNormal to adjust the collision normal, using the triangle info map (generated using btGenerateInternalEdgeInfo)
 
33
///If this info map is missing, or the triangle is not store in this map, nothing will be done
 
34
void    btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObject* trimeshColObj0,const btCollisionObject* otherColObj1, int partId0, int index0, int normalAdjustFlags = 0);
 
35
 
 
36
///Enable the BT_INTERNAL_EDGE_DEBUG_DRAW define and call btSetDebugDrawer, to get visual info to see if the internal edge utility works properly.
 
37
///If the utility doesn't work properly, you might have to adjust the threshold values in btTriangleInfoMap
 
38
//#define BT_INTERNAL_EDGE_DEBUG_DRAW
 
39
 
 
40
#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW
 
41
void    btSetDebugDrawer(btIDebugDraw* debugDrawer);
 
42
#endif //BT_INTERNAL_EDGE_DEBUG_DRAW
 
43
 
 
44
 
 
45
#endif //BT_INTERNAL_EDGE_UTILITY_H
 
46