chipmunk 5.3.4.0 → 5.3.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/README +36 -13
  2. data/Rakefile +23 -9
  3. data/ext/chipmunk/extconf.rb +55 -12
  4. data/ext/chipmunk/rb_chipmunk.c +92 -98
  5. data/ext/chipmunk/rb_chipmunk.h +44 -34
  6. data/ext/chipmunk/rb_cpArbiter.c +135 -98
  7. data/ext/chipmunk/rb_cpBB.c +84 -101
  8. data/ext/chipmunk/rb_cpBody.c +221 -243
  9. data/ext/chipmunk/rb_cpConstraint.c +173 -185
  10. data/ext/chipmunk/rb_cpShape.c +353 -240
  11. data/ext/chipmunk/rb_cpSpace.c +376 -408
  12. data/ext/chipmunk/rb_cpVect.c +135 -173
  13. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk.h +163 -0
  14. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_ffi.h +59 -0
  15. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_private.h +49 -0
  16. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_types.h +151 -0
  17. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/chipmunk_unsafe.h +54 -0
  18. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpConstraint.h +105 -0
  19. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpDampedRotarySpring.h +46 -0
  20. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpDampedSpring.h +53 -0
  21. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpGearJoint.h +41 -0
  22. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpGrooveJoint.h +48 -0
  23. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpPinJoint.h +43 -0
  24. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpPivotJoint.h +42 -0
  25. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpRatchetJoint.h +40 -0
  26. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpRotaryLimitJoint.h +39 -0
  27. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpSimpleMotor.h +37 -0
  28. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/cpSlideJoint.h +44 -0
  29. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/constraints/util.h +134 -0
  30. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpArbiter.h +188 -0
  31. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpArray.h +49 -0
  32. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpBB.h +74 -0
  33. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpBody.h +219 -0
  34. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpCollision.h +28 -0
  35. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpHashSet.h +82 -0
  36. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpPolyShape.h +103 -0
  37. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpShape.h +177 -0
  38. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpSpace.h +206 -0
  39. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpSpaceHash.h +110 -0
  40. data/ext/chipmunk/vendor/chipmunk-5.3.4/include/chipmunk/cpVect.h +207 -0
  41. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/chipmunk.c +151 -0
  42. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpConstraint.c +54 -0
  43. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpDampedRotarySpring.c +105 -0
  44. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpDampedSpring.c +115 -0
  45. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpGearJoint.c +113 -0
  46. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpGrooveJoint.c +161 -0
  47. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpPinJoint.c +116 -0
  48. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpPivotJoint.c +114 -0
  49. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpRatchetJoint.c +126 -0
  50. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpRotaryLimitJoint.c +120 -0
  51. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpSimpleMotor.c +97 -0
  52. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/constraints/cpSlideJoint.c +129 -0
  53. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpArbiter.c +280 -0
  54. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpArray.c +143 -0
  55. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpBB.c +47 -0
  56. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpBody.c +192 -0
  57. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpCollision.c +411 -0
  58. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpHashSet.c +253 -0
  59. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpPolyShape.c +240 -0
  60. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpShape.c +405 -0
  61. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpace.c +499 -0
  62. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceComponent.c +279 -0
  63. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceHash.c +534 -0
  64. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceQuery.c +246 -0
  65. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpSpaceStep.c +398 -0
  66. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/cpVect.c +71 -0
  67. data/ext/chipmunk/vendor/chipmunk-5.3.4/src/prime.h +68 -0
  68. data/lib/chipmunk.rb +19 -8
  69. metadata +85 -38
@@ -1,15 +1,15 @@
1
1
  /* Copyright (c) 2007 Scott Lembcke
2
- *
2
+ *
3
3
  * Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  * of this software and associated documentation files (the "Software"), to deal
5
5
  * in the Software without restriction, including without limitation the rights
6
6
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
7
  * copies of the Software, and to permit persons to whom the Software is
8
8
  * furnished to do so, subject to the following conditions:
9
- *
9
+ *
10
10
  * The above copyright notice and this permission notice shall be included in
11
11
  * all copies or substantial portions of the Software.
12
- *
12
+ *
13
13
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
14
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
15
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -18,7 +18,7 @@
18
18
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
19
  * SOFTWARE.
20
20
  */
21
-
21
+
22
22
  #include <stdlib.h>
23
23
  #include "chipmunk.h"
24
24
 
@@ -28,319 +28,281 @@
28
28
  VALUE c_cpVect;
29
29
 
30
30
  static VALUE
31
- rb_cpVectForAngle(VALUE self, VALUE angle)
32
- {
33
- return VNEW(cpvforangle(NUM2DBL(angle)));
31
+ rb_cpVectForAngle(VALUE self, VALUE angle) {
32
+ return VNEW(cpvforangle(NUM2DBL(angle)));
34
33
  }
35
34
 
36
35
  static VALUE
37
- rb_cpVectAlloc(VALUE klass)
38
- {
39
- cpVect *v = malloc(sizeof(cpVect));
40
- return Data_Wrap_Struct(klass, NULL, free, v);
36
+ rb_cpVectAlloc(VALUE klass) {
37
+ cpVect *v = malloc(sizeof(cpVect));
38
+ return Data_Wrap_Struct(klass, NULL, free, v);
41
39
  }
42
40
 
43
41
  static VALUE
44
- rb_cpVectInitialize(VALUE self, VALUE x, VALUE y)
45
- {
46
- cpVect *v = VGET(self);
47
- v->x = NUM2DBL(x);
48
- v->y = NUM2DBL(y);
49
-
50
- return self;
42
+ rb_cpVectInitialize(VALUE self, VALUE x, VALUE y) {
43
+ cpVect *v = VGET(self);
44
+ v->x = NUM2DBL(x);
45
+ v->y = NUM2DBL(y);
46
+
47
+ return self;
51
48
  }
52
49
 
53
50
  static VALUE
54
- rb_cpVectGetX(VALUE self)
55
- {
56
- return rb_float_new(VGET(self)->x);
51
+ rb_cpVectGetX(VALUE self) {
52
+ return rb_float_new(VGET(self)->x);
57
53
  }
58
54
 
59
55
  static VALUE
60
- rb_cpVectGetY(VALUE self)
61
- {
62
- return rb_float_new(VGET(self)->y);
56
+ rb_cpVectGetY(VALUE self) {
57
+ return rb_float_new(VGET(self)->y);
63
58
  }
64
59
 
65
60
  static VALUE
66
- rb_cpVectSetX(VALUE self, VALUE x)
67
- {
68
- VGET(self)->x = NUM2DBL(x);
69
- return self;
61
+ rb_cpVectSetX(VALUE self, VALUE x) {
62
+ VGET(self)->x = NUM2DBL(x);
63
+ return self;
70
64
  }
71
65
 
72
66
  static VALUE
73
- rb_cpVectSetY(VALUE self, VALUE y)
74
- {
75
- VGET(self)->y = NUM2DBL(y);
76
- return self;
67
+ rb_cpVectSetY(VALUE self, VALUE y) {
68
+ VGET(self)->y = NUM2DBL(y);
69
+ return self;
77
70
  }
78
71
 
79
72
  static VALUE
80
- rb_cpVectToString(VALUE self)
81
- {
82
- char str[256];
83
- cpVect *v = VGET(self);
84
-
85
- sprintf(str, "(% .3f, % .3f)", v->x, v->y);
86
-
87
- return rb_str_new2(str);
73
+ rb_cpVectToString(VALUE self) {
74
+ char str[256];
75
+ cpVect *v = VGET(self);
76
+
77
+ sprintf(str, "(% .3f, % .3f)", v->x, v->y);
78
+
79
+ return rb_str_new2(str);
88
80
  }
89
81
 
90
82
  static VALUE
91
- rb_cpVectToArray(VALUE self)
92
- {
93
- cpVect *v = VGET(self);
94
- return rb_ary_new3(2, rb_float_new(v->x), rb_float_new(v->y));
83
+ rb_cpVectToArray(VALUE self) {
84
+ cpVect *v = VGET(self);
85
+ return rb_ary_new3(2, rb_float_new(v->x), rb_float_new(v->y));
95
86
  }
96
87
 
97
88
  static VALUE
98
- rb_cpVectToAngle(VALUE self)
99
- {
100
- return rb_float_new(cpvtoangle(*VGET(self)));
89
+ rb_cpVectToAngle(VALUE self) {
90
+ return rb_float_new(cpvtoangle(*VGET(self)));
101
91
  }
102
-
92
+
103
93
 
104
94
  static VALUE
105
- rb_cpVectNegate(VALUE self)
106
- {
107
- return VNEW(cpvneg(*VGET(self)));
95
+ rb_cpVectNegate(VALUE self) {
96
+ return VNEW(cpvneg(*VGET(self)));
108
97
  }
109
98
 
110
99
  static VALUE
111
- rb_cpVectAdd(VALUE self, VALUE v)
112
- {
113
- return VNEW(cpvadd(*VGET(self), *VGET(v)));
100
+ rb_cpVectAdd(VALUE self, VALUE v) {
101
+ return VNEW(cpvadd(*VGET(self), *VGET(v)));
114
102
  }
115
103
 
116
104
  static VALUE
117
- rb_cpVectSub(VALUE self, VALUE v)
118
- {
119
- return VNEW(cpvsub(*VGET(self), *VGET(v)));
105
+ rb_cpVectSub(VALUE self, VALUE v) {
106
+ return VNEW(cpvsub(*VGET(self), *VGET(v)));
120
107
  }
121
108
 
122
109
  static VALUE
123
- rb_cpVectSMult(VALUE self, VALUE s)
124
- {
125
- return VNEW(cpvmult(*VGET(self), NUM2DBL(s)));
110
+ rb_cpVectSMult(VALUE self, VALUE s) {
111
+ return VNEW(cpvmult(*VGET(self), NUM2DBL(s)));
126
112
  }
127
113
 
128
114
  static VALUE
129
- rb_cpVectSDiv(VALUE self, VALUE s)
130
- {
131
- cpFloat factor = 1.0f/(float)NUM2DBL(s);
132
- return VNEW(cpvmult(*VGET(self), factor));
115
+ rb_cpVectSDiv(VALUE self, VALUE s) {
116
+ cpFloat factor = 1.0f / (float)NUM2DBL(s);
117
+ return VNEW(cpvmult(*VGET(self), factor));
133
118
  }
134
119
 
135
120
  static VALUE
136
- rb_cpVectDot(VALUE self, VALUE v)
137
- {
138
- return rb_float_new(cpvdot(*VGET(self), *VGET(v)));
121
+ rb_cpVectDot(VALUE self, VALUE v) {
122
+ return rb_float_new(cpvdot(*VGET(self), *VGET(v)));
139
123
  }
140
124
 
141
125
  static VALUE
142
- rb_cpVectCross(VALUE self, VALUE v)
143
- {
144
- return rb_float_new(cpvcross(*VGET(self), *VGET(v)));
126
+ rb_cpVectCross(VALUE self, VALUE v) {
127
+ return rb_float_new(cpvcross(*VGET(self), *VGET(v)));
145
128
  }
146
129
 
147
130
  static VALUE
148
- rb_cpVectLength(VALUE self)
149
- {
150
- cpVect *v;
151
- Data_Get_Struct(self, cpVect, v);
152
- return rb_float_new(cpvlength(*v));
131
+ rb_cpVectLength(VALUE self) {
132
+ cpVect *v;
133
+ Data_Get_Struct(self, cpVect, v);
134
+ return rb_float_new(cpvlength(*v));
153
135
  }
154
136
 
155
137
  static VALUE
156
- rb_cpVectLengthsq(VALUE self)
157
- {
158
- cpVect *v;
159
- Data_Get_Struct(self, cpVect, v);
160
- return rb_float_new(cpvlengthsq(*v));
138
+ rb_cpVectLengthsq(VALUE self) {
139
+ cpVect *v;
140
+ Data_Get_Struct(self, cpVect, v);
141
+ return rb_float_new(cpvlengthsq(*v));
161
142
  }
162
143
 
163
144
  static VALUE
164
- rb_cpVectNorm(VALUE self)
165
- {
166
- return VNEW(cpvnormalize(*VGET(self)));
145
+ rb_cpVectNorm(VALUE self) {
146
+ return VNEW(cpvnormalize(*VGET(self)));
167
147
  }
168
148
 
169
149
  static VALUE
170
- rb_cpVectNormBang(VALUE self)
171
- {
172
- cpVect *v = VGET(self);
173
- *v = cpvnormalize(*v);
174
- return self;
150
+ rb_cpVectNormBang(VALUE self) {
151
+ cpVect *v = VGET(self);
152
+ *v = cpvnormalize(*v);
153
+ return self;
175
154
  }
176
155
 
177
156
  static VALUE
178
- rb_cpVectNormSafe(VALUE self)
179
- {
157
+ rb_cpVectNormSafe(VALUE self) {
180
158
  return VNEW(cpvnormalize_safe(*VGET(self)));
181
159
  }
182
160
 
183
161
  static VALUE
184
- rb_cpVectNormSafeBang(VALUE self)
185
- {
162
+ rb_cpVectNormSafeBang(VALUE self) {
186
163
  cpVect *v = VGET(self);
187
164
  *v = cpvnormalize_safe(*v);
188
165
  return self;
189
166
  }
190
167
 
191
168
  static VALUE
192
- rb_cpVectPerp(VALUE self)
193
- {
194
- return VNEW(cpvperp(*VGET(self)));
169
+ rb_cpVectPerp(VALUE self) {
170
+ return VNEW(cpvperp(*VGET(self)));
195
171
  }
196
172
 
197
173
  static VALUE
198
- rb_cpVectRperp(VALUE self)
199
- {
174
+ rb_cpVectRperp(VALUE self) {
200
175
  return VNEW(cpvrperp(*VGET(self)));
201
176
  }
202
177
 
203
178
  static VALUE
204
- rb_cpVectLerp(VALUE self, VALUE v, VALUE d)
205
- {
179
+ rb_cpVectLerp(VALUE self, VALUE v, VALUE d) {
206
180
  cpFloat df = NUM2DBL(d);
207
181
  return VNEW(cpvlerp(*VGET(self), *VGET(v), df));
208
182
  }
209
183
 
210
184
  static VALUE
211
- rb_cpVectLerpconst(VALUE self, VALUE v, VALUE d)
212
- {
213
- cpFloat df = NUM2DBL(d);
185
+ rb_cpVectLerpconst(VALUE self, VALUE v, VALUE d) {
186
+ cpFloat df = (cpFloat) NUM2DBL(d);
214
187
  return VNEW(cpvlerpconst(*VGET(self), *VGET(v), df));
215
188
  }
216
189
 
217
190
  static VALUE
218
- rb_cpVectSlerp(VALUE self, VALUE v, VALUE d)
219
- {
220
- cpFloat df = NUM2DBL(d);
191
+ rb_cpVectSlerp(VALUE self, VALUE v, VALUE d) {
192
+ cpFloat df = (cpFloat) NUM2DBL(d);
221
193
  return VNEW(cpvslerp(*VGET(self), *VGET(v), df));
222
194
  }
223
195
 
224
196
  static VALUE
225
- rb_cpVectSlerpconst(VALUE self, VALUE v, VALUE d)
226
- {
227
- cpFloat df = NUM2DBL(d);
197
+ rb_cpVectSlerpconst(VALUE self, VALUE v, VALUE d) {
198
+ cpFloat df = (cpFloat) NUM2DBL(d);
228
199
  return VNEW(cpvslerpconst(*VGET(self), *VGET(v), df));
229
200
  }
230
201
 
231
202
  static VALUE
232
- rb_cpVectProject(VALUE self, VALUE v)
233
- {
234
- return VNEW(cpvproject(*VGET(self), *VGET(v)));
203
+ rb_cpVectProject(VALUE self, VALUE v) {
204
+ return VNEW(cpvproject(*VGET(self), *VGET(v)));
235
205
  }
236
206
 
237
207
  static VALUE
238
- rb_cpVectRotate(VALUE self, VALUE v)
239
- {
240
- return VNEW(cpvrotate(*VGET(self), *VGET(v)));
208
+ rb_cpVectRotate(VALUE self, VALUE v) {
209
+ return VNEW(cpvrotate(*VGET(self), *VGET(v)));
241
210
  }
242
211
 
243
212
  static VALUE
244
- rb_cpVectUnRotate(VALUE self, VALUE v)
245
- {
246
- return VNEW(cpvunrotate(*VGET(self), *VGET(v)));
213
+ rb_cpVectUnRotate(VALUE self, VALUE v) {
214
+ return VNEW(cpvunrotate(*VGET(self), *VGET(v)));
247
215
  }
248
216
 
249
217
  static VALUE
250
- rb_cpVectDist(VALUE self, VALUE v)
251
- {
218
+ rb_cpVectDist(VALUE self, VALUE v) {
252
219
  return rb_float_new(cpvdist(*VGET(self), *VGET(v)));
253
220
  }
254
221
 
255
222
  static VALUE
256
- rb_cpVectDistsq(VALUE self, VALUE v)
257
- {
223
+ rb_cpVectDistsq(VALUE self, VALUE v) {
258
224
  return rb_float_new(cpvdistsq(*VGET(self), *VGET(v)));
259
225
  }
260
226
 
261
227
  static VALUE
262
- rb_cpVectClamp(VALUE self, VALUE len)
263
- {
228
+ rb_cpVectClamp(VALUE self, VALUE len) {
264
229
  return VNEW(cpvclamp(*VGET(self), NUM2DBL(len)));
265
230
  }
266
231
 
267
232
 
268
233
  static VALUE
269
- rb_cpVectNear(VALUE self, VALUE v, VALUE d)
270
- {
271
- cpFloat dist = NUM2DBL(d);
272
- cpVect delta = cpvsub(*VGET(self), *VGET(v));
273
- return (cpvdot(delta, delta) <= dist*dist) ? Qtrue : Qfalse;
234
+ rb_cpVectNear(VALUE self, VALUE v, VALUE d) {
235
+ cpFloat dist = NUM2DBL(d);
236
+ cpVect delta = cpvsub(*VGET(self), *VGET(v));
237
+ return (cpvdot(delta, delta) <= dist * dist) ? Qtrue : Qfalse;
274
238
  }
275
239
 
276
240
  static VALUE
277
- rb_cpVectEql(VALUE self, VALUE other)
278
- {
241
+ rb_cpVectEql(VALUE self, VALUE other) {
279
242
  return cpveql(*VGET(self), *VGET(other)) ? Qtrue : Qfalse;
280
243
  }
281
244
 
282
245
  // the usefulness of unary plus is debatable, but I'll include it for consistency.
283
- static VALUE rb_cpVectUnaryplus(VALUE self) {
246
+ static VALUE
247
+ rb_cpVectUnaryplus(VALUE self) {
284
248
  return self;
285
249
  }
286
250
 
287
251
 
288
252
  static VALUE
289
- rb_vec2(VALUE self, VALUE x, VALUE y)
290
- {
291
- return VNEW(cpv(NUM2DBL(x), NUM2DBL(y)));
253
+ rb_vec2(VALUE self, VALUE x, VALUE y) {
254
+ return VNEW(cpv(NUM2DBL(x), NUM2DBL(y)));
292
255
  }
293
256
 
294
257
  void
295
- Init_cpVect(void)
296
- {
297
- c_cpVect = rb_define_class_under(m_Chipmunk, "Vec2", rb_cObject);
298
- rb_define_singleton_method(c_cpVect, "for_angle", rb_cpVectForAngle, 1);
299
-
300
- rb_define_alloc_func(c_cpVect, rb_cpVectAlloc);
301
- rb_define_method(c_cpVect, "initialize", rb_cpVectInitialize, 2);
302
-
303
- rb_define_method(c_cpVect, "x", rb_cpVectGetX, 0);
304
- rb_define_method(c_cpVect, "y", rb_cpVectGetY, 0);
305
- rb_define_method(c_cpVect, "x=", rb_cpVectSetX, 1);
306
- rb_define_method(c_cpVect, "y=", rb_cpVectSetY, 1);
307
-
308
- rb_define_method(c_cpVect, "to_s", rb_cpVectToString, 0);
309
- rb_define_method(c_cpVect, "to_a", rb_cpVectToArray, 0);
310
- rb_define_method(c_cpVect, "to_angle", rb_cpVectToAngle, 0);
311
-
312
- rb_define_method(c_cpVect, "-@", rb_cpVectNegate, 0);
258
+ Init_cpVect(void) {
259
+ c_cpVect = rb_define_class_under(m_Chipmunk, "Vec2", rb_cObject);
260
+ rb_define_singleton_method(c_cpVect, "for_angle", rb_cpVectForAngle, 1);
261
+
262
+ rb_define_alloc_func(c_cpVect, rb_cpVectAlloc);
263
+ rb_define_method(c_cpVect, "initialize", rb_cpVectInitialize, 2);
264
+
265
+ rb_define_method(c_cpVect, "x", rb_cpVectGetX, 0);
266
+ rb_define_method(c_cpVect, "y", rb_cpVectGetY, 0);
267
+ rb_define_method(c_cpVect, "x=", rb_cpVectSetX, 1);
268
+ rb_define_method(c_cpVect, "y=", rb_cpVectSetY, 1);
269
+
270
+ rb_define_method(c_cpVect, "to_s", rb_cpVectToString, 0);
271
+ rb_define_method(c_cpVect, "to_a", rb_cpVectToArray, 0);
272
+ rb_define_method(c_cpVect, "to_angle", rb_cpVectToAngle, 0);
273
+
274
+ rb_define_method(c_cpVect, "-@", rb_cpVectNegate, 0);
313
275
  rb_define_method(c_cpVect, "+@", rb_cpVectUnaryplus, 0);
314
- rb_define_method(c_cpVect, "+", rb_cpVectAdd, 1);
315
- rb_define_method(c_cpVect, "-", rb_cpVectSub, 1);
316
- rb_define_method(c_cpVect, "*", rb_cpVectSMult, 1);
317
- rb_define_method(c_cpVect, "/", rb_cpVectSDiv, 1);
318
- rb_define_method(c_cpVect, "dot", rb_cpVectDot, 1);
319
- rb_define_method(c_cpVect, "cross", rb_cpVectCross, 1);
320
- rb_define_method(c_cpVect, "length", rb_cpVectLength, 0);
321
- rb_define_method(c_cpVect, "lengthsq", rb_cpVectLengthsq, 0);
322
- rb_define_method(c_cpVect, "normalize", rb_cpVectNorm, 0);
323
- rb_define_method(c_cpVect, "normalize!", rb_cpVectNormBang, 0);
276
+ rb_define_method(c_cpVect, "+", rb_cpVectAdd, 1);
277
+ rb_define_method(c_cpVect, "-", rb_cpVectSub, 1);
278
+ rb_define_method(c_cpVect, "*", rb_cpVectSMult, 1);
279
+ rb_define_method(c_cpVect, "/", rb_cpVectSDiv, 1);
280
+ rb_define_method(c_cpVect, "dot", rb_cpVectDot, 1);
281
+ rb_define_method(c_cpVect, "cross", rb_cpVectCross, 1);
282
+ rb_define_method(c_cpVect, "length", rb_cpVectLength, 0);
283
+ rb_define_method(c_cpVect, "lengthsq", rb_cpVectLengthsq, 0);
284
+ rb_define_method(c_cpVect, "normalize", rb_cpVectNorm, 0);
285
+ rb_define_method(c_cpVect, "normalize!", rb_cpVectNormBang, 0);
324
286
  rb_define_method(c_cpVect, "normalize_safe", rb_cpVectNormSafe, 0);
325
- rb_define_method(c_cpVect, "normalize_safe!", rb_cpVectNormSafeBang, 0);
326
- rb_define_method(c_cpVect, "perp", rb_cpVectPerp, 0);
287
+ rb_define_method(c_cpVect, "normalize_safe!", rb_cpVectNormSafeBang, 0);
288
+ rb_define_method(c_cpVect, "perp", rb_cpVectPerp, 0);
327
289
  rb_define_method(c_cpVect, "rperp", rb_cpVectRperp, 0);
328
290
  rb_define_method(c_cpVect, "lerp", rb_cpVectLerp, 2);
329
291
  rb_define_method(c_cpVect, "lerpconst", rb_cpVectLerpconst, 2);
330
292
  rb_define_method(c_cpVect, "slerp", rb_cpVectSlerp, 2);
331
293
  rb_define_method(c_cpVect, "slerpconst", rb_cpVectSlerpconst, 2);
332
294
 
333
- rb_define_method(c_cpVect, "project", rb_cpVectProject, 1);
334
- rb_define_method(c_cpVect, "rotate", rb_cpVectRotate, 1);
335
- rb_define_method(c_cpVect, "unrotate", rb_cpVectUnRotate, 1);
336
- rb_define_method(c_cpVect, "near?", rb_cpVectNear, 2);
337
-
295
+ rb_define_method(c_cpVect, "project", rb_cpVectProject, 1);
296
+ rb_define_method(c_cpVect, "rotate", rb_cpVectRotate, 1);
297
+ rb_define_method(c_cpVect, "unrotate", rb_cpVectUnRotate, 1);
298
+ rb_define_method(c_cpVect, "near?", rb_cpVectNear, 2);
299
+
338
300
  rb_define_method(c_cpVect, "dist", rb_cpVectDist, 1);
339
301
  rb_define_method(c_cpVect, "distsq", rb_cpVectDistsq, 1);
340
-
302
+
341
303
  rb_define_method(c_cpVect, "==", rb_cpVectEql, 1);
342
304
  rb_define_method(c_cpVect, "clamp", rb_cpVectClamp, 1);
343
-
344
-
345
- rb_define_global_function("vec2", rb_vec2, 2);
305
+
306
+
307
+ rb_define_global_function("vec2", rb_vec2, 2);
346
308
  }