diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/ModifiedBulletX/ModifiedBulletX/Collision/BroadphaseCollision/BroadphaseProxy.cs | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/libraries/ModifiedBulletX/ModifiedBulletX/Collision/BroadphaseCollision/BroadphaseProxy.cs b/libraries/ModifiedBulletX/ModifiedBulletX/Collision/BroadphaseCollision/BroadphaseProxy.cs new file mode 100644 index 0000000..aed82d5 --- /dev/null +++ b/libraries/ModifiedBulletX/ModifiedBulletX/Collision/BroadphaseCollision/BroadphaseProxy.cs | |||
@@ -0,0 +1,91 @@ | |||
1 | /* | ||
2 | Bullet for XNA Copyright (c) 2003-2007 Vsevolod Klementjev http://www.codeplex.com/xnadevru | ||
3 | Bullet original C++ version Copyright (c) 2003-2007 Erwin Coumans http://bulletphysics.com | ||
4 | |||
5 | This software is provided 'as-is', without any express or implied | ||
6 | warranty. In no event will the authors be held liable for any damages | ||
7 | arising from the use of this software. | ||
8 | |||
9 | Permission is granted to anyone to use this software for any purpose, | ||
10 | including commercial applications, and to alter it and redistribute it | ||
11 | freely, subject to the following restrictions: | ||
12 | |||
13 | 1. The origin of this software must not be misrepresented; you must not | ||
14 | claim that you wrote the original software. If you use this software | ||
15 | in a product, an acknowledgment in the product documentation would be | ||
16 | appreciated but is not required. | ||
17 | 2. Altered source versions must be plainly marked as such, and must not be | ||
18 | misrepresented as being the original software. | ||
19 | 3. This notice may not be removed or altered from any source distribution. | ||
20 | */ | ||
21 | |||
22 | using System; | ||
23 | using System.Collections.Generic; | ||
24 | using System.Text; | ||
25 | |||
26 | namespace XnaDevRu.BulletX | ||
27 | { | ||
28 | public class BroadphaseProxy | ||
29 | { | ||
30 | //Usually the client CollisionObject or Rigidbody class | ||
31 | private object _clientObject; | ||
32 | private CollisionFilterGroups _collisionFilterGroup; | ||
33 | private CollisionFilterGroups _collisionFilterMask; | ||
34 | private readonly int _comparisonID; | ||
35 | |||
36 | private static int _globalCount = 0; | ||
37 | |||
38 | public BroadphaseProxy() | ||
39 | { | ||
40 | _comparisonID = _globalCount++; | ||
41 | } | ||
42 | |||
43 | public BroadphaseProxy(object userData, CollisionFilterGroups collisionFilterGroup, CollisionFilterGroups collisionFilterMask) | ||
44 | : this() | ||
45 | { | ||
46 | _clientObject = userData; | ||
47 | _collisionFilterGroup = collisionFilterGroup; | ||
48 | _collisionFilterMask = collisionFilterMask; | ||
49 | } | ||
50 | |||
51 | public object ClientData { get { return _clientObject; } set { _clientObject = value; } } | ||
52 | public CollisionFilterGroups CollisionFilterGroup { get { return _collisionFilterGroup; } set { _collisionFilterGroup = value; } } | ||
53 | public CollisionFilterGroups CollisionFilterMask { get { return _collisionFilterMask; } set { _collisionFilterMask = value; } } | ||
54 | internal int ComparisonID { get { return _comparisonID; } } | ||
55 | |||
56 | public static bool IsPolyhedral(BroadphaseNativeTypes proxyType) | ||
57 | { | ||
58 | return (proxyType < BroadphaseNativeTypes.ImplicitConvexShapes); | ||
59 | } | ||
60 | |||
61 | public static bool IsConvex(BroadphaseNativeTypes proxyType) | ||
62 | { | ||
63 | return (proxyType < BroadphaseNativeTypes.ConcaveShapesStart); | ||
64 | } | ||
65 | |||
66 | public static bool IsConcave(BroadphaseNativeTypes proxyType) | ||
67 | { | ||
68 | return ((proxyType > BroadphaseNativeTypes.ConcaveShapesStart) && | ||
69 | (proxyType < BroadphaseNativeTypes.ConcaveShapesEnd)); | ||
70 | } | ||
71 | public static bool IsCompound(BroadphaseNativeTypes proxyType) | ||
72 | { | ||
73 | return (proxyType == BroadphaseNativeTypes.Compound); | ||
74 | } | ||
75 | public static bool IsInfinite(BroadphaseNativeTypes proxyType) | ||
76 | { | ||
77 | return (proxyType == BroadphaseNativeTypes.StaticPlane); | ||
78 | } | ||
79 | |||
80 | //optional filtering to cull potential collisions | ||
81 | public enum CollisionFilterGroups | ||
82 | { | ||
83 | Default = 1, | ||
84 | Static = 2, | ||
85 | Kinematic = 4, | ||
86 | Debris = 8, | ||
87 | Sensor = 16, | ||
88 | All = Default | Static | Kinematic | Debris | Sensor, | ||
89 | } | ||
90 | } | ||
91 | } | ||