chipmunk 5.2.2 → 5.3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/LICENSE +21 -19
  2. data/README +67 -60
  3. data/Rakefile +85 -50
  4. data/ext/chipmunk/extconf.rb +42 -35
  5. data/ext/chipmunk/rb_chipmunk.c +250 -125
  6. data/ext/chipmunk/rb_chipmunk.h +105 -96
  7. data/ext/chipmunk/rb_cpArbiter.c +253 -225
  8. data/ext/chipmunk/rb_cpBB.c +210 -174
  9. data/ext/chipmunk/rb_cpBody.c +504 -347
  10. data/ext/chipmunk/rb_cpConstraint.c +336 -346
  11. data/ext/chipmunk/rb_cpShape.c +433 -455
  12. data/ext/chipmunk/rb_cpSpace.c +711 -544
  13. data/ext/chipmunk/rb_cpVect.c +346 -321
  14. data/lib/chipmunk.rb +183 -30
  15. metadata +12 -66
  16. data/ext/chipmunk/chipmunk.c +0 -105
  17. data/ext/chipmunk/cpArbiter.c +0 -274
  18. data/ext/chipmunk/cpArray.c +0 -128
  19. data/ext/chipmunk/cpBB.c +0 -47
  20. data/ext/chipmunk/cpBody.c +0 -188
  21. data/ext/chipmunk/cpCollision.c +0 -391
  22. data/ext/chipmunk/cpConstraint.c +0 -54
  23. data/ext/chipmunk/cpDampedRotarySpring.c +0 -106
  24. data/ext/chipmunk/cpDampedSpring.c +0 -117
  25. data/ext/chipmunk/cpGearJoint.c +0 -114
  26. data/ext/chipmunk/cpGrooveJoint.c +0 -138
  27. data/ext/chipmunk/cpHashSet.c +0 -253
  28. data/ext/chipmunk/cpPinJoint.c +0 -117
  29. data/ext/chipmunk/cpPivotJoint.c +0 -114
  30. data/ext/chipmunk/cpPolyShape.c +0 -241
  31. data/ext/chipmunk/cpRatchetJoint.c +0 -128
  32. data/ext/chipmunk/cpRotaryLimitJoint.c +0 -122
  33. data/ext/chipmunk/cpShape.c +0 -400
  34. data/ext/chipmunk/cpSimpleMotor.c +0 -99
  35. data/ext/chipmunk/cpSlideJoint.c +0 -131
  36. data/ext/chipmunk/cpSpace.c +0 -899
  37. data/ext/chipmunk/cpSpaceHash.c +0 -541
  38. data/ext/chipmunk/cpVect.c +0 -71
  39. data/ext/chipmunk/include/chipmunk/chipmunk.h +0 -148
  40. data/ext/chipmunk/include/chipmunk/chipmunk_ffi.h +0 -42
  41. data/ext/chipmunk/include/chipmunk/chipmunk_types.h +0 -80
  42. data/ext/chipmunk/include/chipmunk/chipmunk_unsafe.h +0 -54
  43. data/ext/chipmunk/include/chipmunk/constraints/cpConstraint.h +0 -92
  44. data/ext/chipmunk/include/chipmunk/constraints/cpDampedRotarySpring.h +0 -46
  45. data/ext/chipmunk/include/chipmunk/constraints/cpDampedSpring.h +0 -53
  46. data/ext/chipmunk/include/chipmunk/constraints/cpGearJoint.h +0 -41
  47. data/ext/chipmunk/include/chipmunk/constraints/cpGrooveJoint.h +0 -44
  48. data/ext/chipmunk/include/chipmunk/constraints/cpPinJoint.h +0 -43
  49. data/ext/chipmunk/include/chipmunk/constraints/cpPivotJoint.h +0 -42
  50. data/ext/chipmunk/include/chipmunk/constraints/cpRatchetJoint.h +0 -40
  51. data/ext/chipmunk/include/chipmunk/constraints/cpRotaryLimitJoint.h +0 -39
  52. data/ext/chipmunk/include/chipmunk/constraints/cpSimpleMotor.h +0 -37
  53. data/ext/chipmunk/include/chipmunk/constraints/cpSlideJoint.h +0 -44
  54. data/ext/chipmunk/include/chipmunk/constraints/util.h +0 -116
  55. data/ext/chipmunk/include/chipmunk/cpArbiter.h +0 -136
  56. data/ext/chipmunk/include/chipmunk/cpArray.h +0 -46
  57. data/ext/chipmunk/include/chipmunk/cpBB.h +0 -74
  58. data/ext/chipmunk/include/chipmunk/cpBody.h +0 -160
  59. data/ext/chipmunk/include/chipmunk/cpCollision.h +0 -23
  60. data/ext/chipmunk/include/chipmunk/cpHashSet.h +0 -82
  61. data/ext/chipmunk/include/chipmunk/cpPolyShape.h +0 -103
  62. data/ext/chipmunk/include/chipmunk/cpShape.h +0 -174
  63. data/ext/chipmunk/include/chipmunk/cpSpace.h +0 -180
  64. data/ext/chipmunk/include/chipmunk/cpSpaceHash.h +0 -109
  65. data/ext/chipmunk/include/chipmunk/cpVect.h +0 -157
  66. data/ext/chipmunk/prime.h +0 -68
  67. data/lib/chipmunk/version.rb +0 -3
@@ -1,109 +0,0 @@
1
- /* Copyright (c) 2007 Scott Lembcke
2
- *
3
- * Permission is hereby granted, free of charge, to any person obtaining a copy
4
- * of this software and associated documentation files (the "Software"), to deal
5
- * in the Software without restriction, including without limitation the rights
6
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- * copies of the Software, and to permit persons to whom the Software is
8
- * furnished to do so, subject to the following conditions:
9
- *
10
- * The above copyright notice and this permission notice shall be included in
11
- * all copies or substantial portions of the Software.
12
- *
13
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- * SOFTWARE.
20
- */
21
-
22
- // The spatial hash is Chipmunk's default (and currently only) spatial index type.
23
- // Based on a chained hash table.
24
-
25
- // Used internally to track objects added to the hash
26
- typedef struct cpHandle{
27
- // Pointer to the object
28
- void *obj;
29
- // Retain count
30
- int retain;
31
- // Query stamp. Used to make sure two objects
32
- // aren't identified twice in the same query.
33
- int stamp;
34
- } cpHandle;
35
-
36
- // Linked list element for in the chains.
37
- typedef struct cpSpaceHashBin{
38
- cpHandle *handle;
39
- struct cpSpaceHashBin *next;
40
- } cpSpaceHashBin;
41
-
42
- // BBox callback. Called whenever the hash needs a bounding box from an object.
43
- typedef cpBB (*cpSpaceHashBBFunc)(void *obj);
44
-
45
- typedef struct cpSpaceHash{
46
- // Number of cells in the table.
47
- int numcells;
48
- // Dimentions of the cells.
49
- cpFloat celldim;
50
-
51
- // BBox callback.
52
- cpSpaceHashBBFunc bbfunc;
53
-
54
- // Hashset of the handles and the recycled ones.
55
- cpHashSet *handleSet;
56
- cpArray *pooledHandles;
57
-
58
- // The table and the recycled bins.
59
- cpSpaceHashBin **table, *pooledBins;
60
-
61
- // list of buffers to free on destruction.
62
- cpArray *allocatedBuffers;
63
-
64
- // Incremented on each query. See cpHandle.stamp.
65
- int stamp;
66
- } cpSpaceHash;
67
-
68
- //Basic allocation/destruction functions.
69
- cpSpaceHash *cpSpaceHashAlloc(void);
70
- cpSpaceHash *cpSpaceHashInit(cpSpaceHash *hash, cpFloat celldim, int cells, cpSpaceHashBBFunc bbfunc);
71
- cpSpaceHash *cpSpaceHashNew(cpFloat celldim, int cells, cpSpaceHashBBFunc bbfunc);
72
-
73
- void cpSpaceHashDestroy(cpSpaceHash *hash);
74
- void cpSpaceHashFree(cpSpaceHash *hash);
75
-
76
- // Resize the hashtable. (Does not rehash! You must call cpSpaceHashRehash() if needed.)
77
- void cpSpaceHashResize(cpSpaceHash *hash, cpFloat celldim, int numcells);
78
-
79
- // Add an object to the hash.
80
- void cpSpaceHashInsert(cpSpaceHash *hash, void *obj, cpHashValue id, cpBB bb);
81
- // Remove an object from the hash.
82
- void cpSpaceHashRemove(cpSpaceHash *hash, void *obj, cpHashValue id);
83
-
84
- // Iterator function
85
- typedef void (*cpSpaceHashIterator)(void *obj, void *data);
86
- // Iterate over the objects in the hash.
87
- void cpSpaceHashEach(cpSpaceHash *hash, cpSpaceHashIterator func, void *data);
88
-
89
- // Rehash the contents of the hash.
90
- void cpSpaceHashRehash(cpSpaceHash *hash);
91
- // Rehash only a specific object.
92
- void cpSpaceHashRehashObject(cpSpaceHash *hash, void *obj, cpHashValue id);
93
-
94
- // Query callback.
95
- typedef void (*cpSpaceHashQueryFunc)(void *obj1, void *obj2, void *data);
96
- // Point query the hash. A reference to the query point is passed as obj1 to the query callback.
97
- void cpSpaceHashPointQuery(cpSpaceHash *hash, cpVect point, cpSpaceHashQueryFunc func, void *data);
98
- // Query the hash for a given BBox.
99
- void cpSpaceHashQuery(cpSpaceHash *hash, void *obj, cpBB bb, cpSpaceHashQueryFunc func, void *data);
100
- // Run a query for the object, then insert it. (Optimized case)
101
- void cpSpaceHashQueryInsert(cpSpaceHash *hash, void *obj, cpBB bb, cpSpaceHashQueryFunc func, void *data);
102
- // Rehashes while querying for each object. (Optimized case)
103
- void cpSpaceHashQueryRehash(cpSpaceHash *hash, cpSpaceHashQueryFunc func, void *data);
104
-
105
- // Segment Query callback.
106
- // Return value is uesd for early exits of the query.
107
- // If while traversing the grid, the raytrace function detects that an entire grid cell is beyond the hit point, it will stop the trace.
108
- typedef cpFloat (*cpSpaceHashSegmentQueryFunc)(void *obj1, void *obj2, void *data);
109
- void cpSpaceHashSegmentQuery(cpSpaceHash *hash, void *obj, cpVect a, cpVect b, cpFloat t_exit, cpSpaceHashSegmentQueryFunc func, void *data);
@@ -1,157 +0,0 @@
1
- /* Copyright (c) 2007 Scott Lembcke
2
- *
3
- * Permission is hereby granted, free of charge, to any person obtaining a copy
4
- * of this software and associated documentation files (the "Software"), to deal
5
- * in the Software without restriction, including without limitation the rights
6
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- * copies of the Software, and to permit persons to whom the Software is
8
- * furnished to do so, subject to the following conditions:
9
- *
10
- * The above copyright notice and this permission notice shall be included in
11
- * all copies or substantial portions of the Software.
12
- *
13
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- * SOFTWARE.
20
- */
21
-
22
- static const cpVect cpvzero={0.0f,0.0f};
23
-
24
- static inline cpVect
25
- cpv(const cpFloat x, const cpFloat y)
26
- {
27
- cpVect v = {x, y};
28
- return v;
29
- }
30
-
31
- // non-inlined functions
32
- cpFloat cpvlength(const cpVect v);
33
- cpVect cpvslerp(const cpVect v1, const cpVect v2, const cpFloat t);
34
- cpVect cpvslerpconst(const cpVect v1, const cpVect v2, const cpFloat a);
35
- cpVect cpvforangle(const cpFloat a); // convert radians to a normalized vector
36
- cpFloat cpvtoangle(const cpVect v); // convert a vector to radians
37
- char *cpvstr(const cpVect v); // get a string representation of a vector
38
-
39
- static inline cpVect
40
- cpvadd(const cpVect v1, const cpVect v2)
41
- {
42
- return cpv(v1.x + v2.x, v1.y + v2.y);
43
- }
44
-
45
- static inline cpVect
46
- cpvneg(const cpVect v)
47
- {
48
- return cpv(-v.x, -v.y);
49
- }
50
-
51
- static inline cpVect
52
- cpvsub(const cpVect v1, const cpVect v2)
53
- {
54
- return cpv(v1.x - v2.x, v1.y - v2.y);
55
- }
56
-
57
- static inline cpVect
58
- cpvmult(const cpVect v, const cpFloat s)
59
- {
60
- return cpv(v.x*s, v.y*s);
61
- }
62
-
63
- static inline cpFloat
64
- cpvdot(const cpVect v1, const cpVect v2)
65
- {
66
- return v1.x*v2.x + v1.y*v2.y;
67
- }
68
-
69
- static inline cpFloat
70
- cpvcross(const cpVect v1, const cpVect v2)
71
- {
72
- return v1.x*v2.y - v1.y*v2.x;
73
- }
74
-
75
- static inline cpVect
76
- cpvperp(const cpVect v)
77
- {
78
- return cpv(-v.y, v.x);
79
- }
80
-
81
- static inline cpVect
82
- cpvrperp(const cpVect v)
83
- {
84
- return cpv(v.y, -v.x);
85
- }
86
-
87
- static inline cpVect
88
- cpvproject(const cpVect v1, const cpVect v2)
89
- {
90
- return cpvmult(v2, cpvdot(v1, v2)/cpvdot(v2, v2));
91
- }
92
-
93
- static inline cpVect
94
- cpvrotate(const cpVect v1, const cpVect v2)
95
- {
96
- return cpv(v1.x*v2.x - v1.y*v2.y, v1.x*v2.y + v1.y*v2.x);
97
- }
98
-
99
- static inline cpVect
100
- cpvunrotate(const cpVect v1, const cpVect v2)
101
- {
102
- return cpv(v1.x*v2.x + v1.y*v2.y, v1.y*v2.x - v1.x*v2.y);
103
- }
104
-
105
- static inline cpFloat
106
- cpvlengthsq(const cpVect v)
107
- {
108
- return cpvdot(v, v);
109
- }
110
-
111
- static inline cpVect
112
- cpvlerp(const cpVect v1, const cpVect v2, const cpFloat t)
113
- {
114
- return cpvadd(cpvmult(v1, 1.0f - t), cpvmult(v2, t));
115
- }
116
-
117
- static inline cpVect
118
- cpvnormalize(const cpVect v)
119
- {
120
- return cpvmult(v, 1.0f/cpvlength(v));
121
- }
122
-
123
- static inline cpVect
124
- cpvnormalize_safe(const cpVect v)
125
- {
126
- return (v.x == 0.0f && v.y == 0.0f ? cpvzero : cpvnormalize(v));
127
- }
128
-
129
- static inline cpVect
130
- cpvclamp(const cpVect v, const cpFloat len)
131
- {
132
- return (cpvdot(v,v) > len*len) ? cpvmult(cpvnormalize(v), len) : v;
133
- }
134
-
135
- static inline cpVect
136
- cpvlerpconst(cpVect v1, cpVect v2, cpFloat d)
137
- {
138
- return cpvadd(v1, cpvclamp(cpvsub(v2, v1), d));
139
- }
140
-
141
- static inline cpFloat
142
- cpvdist(const cpVect v1, const cpVect v2)
143
- {
144
- return cpvlength(cpvsub(v1, v2));
145
- }
146
-
147
- static inline cpFloat
148
- cpvdistsq(const cpVect v1, const cpVect v2)
149
- {
150
- return cpvlengthsq(cpvsub(v1, v2));
151
- }
152
-
153
- static inline int
154
- cpvnear(const cpVect v1, const cpVect v2, const cpFloat dist)
155
- {
156
- return cpvdistsq(v1, v2) < dist*dist;
157
- }
data/ext/chipmunk/prime.h DELETED
@@ -1,68 +0,0 @@
1
- /* Copyright (c) 2007 Scott Lembcke
2
- *
3
- * Permission is hereby granted, free of charge, to any person obtaining a copy
4
- * of this software and associated documentation files (the "Software"), to deal
5
- * in the Software without restriction, including without limitation the rights
6
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- * copies of the Software, and to permit persons to whom the Software is
8
- * furnished to do so, subject to the following conditions:
9
- *
10
- * The above copyright notice and this permission notice shall be included in
11
- * all copies or substantial portions of the Software.
12
- *
13
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- * SOFTWARE.
20
- */
21
-
22
- // Used for resizing hash tables.
23
- // Values approximately double.
24
- // http://planetmath.org/encyclopedia/GoodHashTablePrimes.html
25
- static int primes[] = {
26
- 5,
27
- 13,
28
- 23,
29
- 47,
30
- 97,
31
- 193,
32
- 389,
33
- 769,
34
- 1543,
35
- 3079,
36
- 6151,
37
- 12289,
38
- 24593,
39
- 49157,
40
- 98317,
41
- 196613,
42
- 393241,
43
- 786433,
44
- 1572869,
45
- 3145739,
46
- 6291469,
47
- 12582917,
48
- 25165843,
49
- 50331653,
50
- 100663319,
51
- 201326611,
52
- 402653189,
53
- 805306457,
54
- 1610612741,
55
- 0,
56
- };
57
-
58
- static inline int
59
- next_prime(int n)
60
- {
61
- int i = 0;
62
- while(n > primes[i]){
63
- i++;
64
- cpAssert(primes[i], "Tried to resize a hash table to a size greater than 1610612741 O_o"); // realistically this should never happen
65
- }
66
-
67
- return primes[i];
68
- }
@@ -1,3 +0,0 @@
1
- module Chipmunk
2
- VERSION = "5.2.2"
3
- end