Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ManifoldPoint.h « NarrowPhaseCollision « Bullet « bullet « extern - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 5376d1f51aa49449524daff1b4508bcda4d22775 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef MANIFOLD_CONTACT_POINT_H
#define MANIFOLD_CONTACT_POINT_H

#include "SimdVector3.h"

/// ManifoldContactPoint collects and maintains persistent contactpoints.
/// used to improve stability and performance of rigidbody dynamics response.
class ManifoldPoint
	{
		public:
			ManifoldPoint()
			{
			}

			ManifoldPoint( const SimdVector3 &pointA, const SimdVector3 &pointB, 
					const SimdVector3 &normal, 
					SimdScalar distance ) :
					m_localPointA( pointA ), 
					m_localPointB( pointB ), 
					m_normalWorldOnB( normal ), 
					m_distance1( distance )
					,m_appliedImpulse(0.f)
			{}

			SimdVector3 m_localPointA;			
			SimdVector3 m_localPointB;			
			SimdVector3	m_positionWorldOnB;
			///m_positionWorldOnA is redundant information, see GetPositionWorldOnA(), but for clarity
			SimdVector3	m_positionWorldOnA;
			SimdVector3 m_normalWorldOnB;
			float	m_distance1;
			/// total applied impulse during most recent frame
			float	m_appliedImpulse;
			
			float GetDistance() const
			{
				return m_distance1;
			}

			SimdVector3 GetPositionWorldOnA() {
				return m_positionWorldOnA;
//				return m_positionWorldOnB + m_normalWorldOnB * m_distance1;
			}

			const SimdVector3& GetPositionWorldOnB()
			{
				return m_positionWorldOnB;
			}

			void	SetDistance(float dist)
			{
				m_distance1 = dist;
			}
			
			

	};

#endif //MANIFOLD_CONTACT_POINT_H