diff options
author | dan miller | 2007-10-21 08:36:32 +0000 |
---|---|---|
committer | dan miller | 2007-10-21 08:36:32 +0000 |
commit | 2f8d7092bc2c9609fa98d6888106b96f38b22828 (patch) | |
tree | da6c37579258cc965b52a75aee6135fe44237698 /libraries/ode-0.9/OPCODE/OPC_SphereCollider.h | |
parent | * Committing new PolicyManager based on an ACL system. (diff) | |
download | opensim-SC_OLD-2f8d7092bc2c9609fa98d6888106b96f38b22828.zip opensim-SC_OLD-2f8d7092bc2c9609fa98d6888106b96f38b22828.tar.gz opensim-SC_OLD-2f8d7092bc2c9609fa98d6888106b96f38b22828.tar.bz2 opensim-SC_OLD-2f8d7092bc2c9609fa98d6888106b96f38b22828.tar.xz |
libraries moved to opensim-libs, a new repository
Diffstat (limited to 'libraries/ode-0.9/OPCODE/OPC_SphereCollider.h')
-rw-r--r-- | libraries/ode-0.9/OPCODE/OPC_SphereCollider.h | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/libraries/ode-0.9/OPCODE/OPC_SphereCollider.h b/libraries/ode-0.9/OPCODE/OPC_SphereCollider.h deleted file mode 100644 index ac6495e..0000000 --- a/libraries/ode-0.9/OPCODE/OPC_SphereCollider.h +++ /dev/null | |||
@@ -1,96 +0,0 @@ | |||
1 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
2 | /* | ||
3 | * OPCODE - Optimized Collision Detection | ||
4 | * Copyright (C) 2001 Pierre Terdiman | ||
5 | * Homepage: http://www.codercorner.com/Opcode.htm | ||
6 | */ | ||
7 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
8 | |||
9 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
10 | /** | ||
11 | * Contains code for a sphere collider. | ||
12 | * \file OPC_SphereCollider.h | ||
13 | * \author Pierre Terdiman | ||
14 | * \date June, 2, 2001 | ||
15 | */ | ||
16 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
17 | |||
18 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
19 | // Include Guard | ||
20 | #ifndef __OPC_SPHERECOLLIDER_H__ | ||
21 | #define __OPC_SPHERECOLLIDER_H__ | ||
22 | |||
23 | struct OPCODE_API SphereCache : VolumeCache | ||
24 | { | ||
25 | SphereCache() : Center(0.0f,0.0f,0.0f), FatRadius2(0.0f), FatCoeff(1.1f) {} | ||
26 | ~SphereCache() {} | ||
27 | |||
28 | // Cached faces signature | ||
29 | Point Center; //!< Sphere used when performing the query resulting in cached faces | ||
30 | float FatRadius2; //!< Sphere used when performing the query resulting in cached faces | ||
31 | // User settings | ||
32 | float FatCoeff; //!< mRadius2 multiplier used to create a fat sphere | ||
33 | }; | ||
34 | |||
35 | class OPCODE_API SphereCollider : public VolumeCollider | ||
36 | { | ||
37 | public: | ||
38 | // Constructor / Destructor | ||
39 | SphereCollider(); | ||
40 | virtual ~SphereCollider(); | ||
41 | |||
42 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
43 | /** | ||
44 | * Generic collision query for generic OPCODE models. After the call, access the results: | ||
45 | * - with GetContactStatus() | ||
46 | * - with GetNbTouchedPrimitives() | ||
47 | * - with GetTouchedPrimitives() | ||
48 | * | ||
49 | * \param cache [in/out] a sphere cache | ||
50 | * \param sphere [in] collision sphere in local space | ||
51 | * \param model [in] Opcode model to collide with | ||
52 | * \param worlds [in] sphere's world matrix, or null | ||
53 | * \param worldm [in] model's world matrix, or null | ||
54 | * \return true if success | ||
55 | * \warning SCALE NOT SUPPORTED. The matrices must contain rotation & translation parts only. | ||
56 | */ | ||
57 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
58 | bool Collide(SphereCache& cache, const Sphere& sphere, const Model& model, const Matrix4x4* worlds=null, const Matrix4x4* worldm=null); | ||
59 | |||
60 | // | ||
61 | bool Collide(SphereCache& cache, const Sphere& sphere, const AABBTree* tree); | ||
62 | protected: | ||
63 | // Sphere in model space | ||
64 | Point mCenter; //!< Sphere center | ||
65 | float mRadius2; //!< Sphere radius squared | ||
66 | // Internal methods | ||
67 | void _Collide(const AABBCollisionNode* node); | ||
68 | void _Collide(const AABBNoLeafNode* node); | ||
69 | void _Collide(const AABBQuantizedNode* node); | ||
70 | void _Collide(const AABBQuantizedNoLeafNode* node); | ||
71 | void _Collide(const AABBTreeNode* node); | ||
72 | void _CollideNoPrimitiveTest(const AABBCollisionNode* node); | ||
73 | void _CollideNoPrimitiveTest(const AABBNoLeafNode* node); | ||
74 | void _CollideNoPrimitiveTest(const AABBQuantizedNode* node); | ||
75 | void _CollideNoPrimitiveTest(const AABBQuantizedNoLeafNode* node); | ||
76 | // Overlap tests | ||
77 | inline_ BOOL SphereContainsBox(const Point& bc, const Point& be); | ||
78 | inline_ BOOL SphereAABBOverlap(const Point& center, const Point& extents); | ||
79 | BOOL SphereTriOverlap(const Point& vert0, const Point& vert1, const Point& vert2); | ||
80 | // Init methods | ||
81 | BOOL InitQuery(SphereCache& cache, const Sphere& sphere, const Matrix4x4* worlds=null, const Matrix4x4* worldm=null); | ||
82 | }; | ||
83 | |||
84 | class OPCODE_API HybridSphereCollider : public SphereCollider | ||
85 | { | ||
86 | public: | ||
87 | // Constructor / Destructor | ||
88 | HybridSphereCollider(); | ||
89 | virtual ~HybridSphereCollider(); | ||
90 | |||
91 | bool Collide(SphereCache& cache, const Sphere& sphere, const HybridModel& model, const Matrix4x4* worlds=null, const Matrix4x4* worldm=null); | ||
92 | protected: | ||
93 | Container mTouchedBoxes; | ||
94 | }; | ||
95 | |||
96 | #endif // __OPC_SPHERECOLLIDER_H__ | ||