rmath3d 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 480f9d7cfa725618252ced196bead41f187d86c2
4
- data.tar.gz: cfb9c4dfd3027b08020bb25be79debf32c329efb
3
+ metadata.gz: dc8123d1ad73cb760f30d7c6a3496f13ad54fcb1
4
+ data.tar.gz: 41ae8b2437dfe3fdc2b0ec6c01fc511a0e5ada20
5
5
  SHA512:
6
- metadata.gz: 585ec81811bbb4baa2835fca142a78d92674be01ef232bed8f3d021148c22586deb8fa0858e89d6a5dd19019cfa814c7b365857b488c358cdeb28c65d3539e88
7
- data.tar.gz: 28ba4c0c9c30fee57d682ed96da605bf76a59c7d00d62609f4cf795c57808d94ac992af53625deaa8b08a1e091a01f7e38de4694a56b8aa6c3a74e1ea6c1b9ee
6
+ metadata.gz: 39615da4c1208ebfdb06644ce2a6612ed88172afc334c36eb9a08b20211c3fb89359bcdb4e348924fd09fad057745397774be8f3de00e211373a98c6cc6ab11c
7
+ data.tar.gz: 7e6b01b7f44b95ccb8f2c8a9419d74f730ef1bd6eac59afa7dc128c1e5cfa6ffb171cd151957a8d6d41a4fcbc987ebae63487bb0b30c5299513c936c7179f205
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ 2017-07-22 vaiorabbit <http://twitter.com/vaiorabbit>
2
+
3
+ * Added 'Integer' type for argument type branching (constant ::Fixnum is deprecated since ruby 2.4).
4
+
1
5
  2015-08-23 vaiorabbit <http://twitter.com/vaiorabbit>
2
6
 
3
7
  * rmath3d.c (def ==): Removed control path returning Qnil.
@@ -1,5 +1,5 @@
1
1
  rmath3d : Ruby math module for 3D Applications
2
- Copyright (c) 2008-2015 vaiorabbit <http://twitter.com/vaiorabbit>
2
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
3
3
 
4
4
  This software is provided 'as-is', without any express or implied
5
5
  warranty. In no event will the authors be held liable for any damages
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  rmath3d is a math module for 3D game programming and computer graphics.
6
6
 
7
- * Last Update: Aug 23, 2015
7
+ * Last Update: Jul 22, 2017
8
8
  * Since: Jul 20, 2008
9
9
 
10
10
  ## Features ##
@@ -1,5 +1,5 @@
1
- #ifndef RMATH_H_INCLUDED
2
- #define RMATH_H_INCLUDED
1
+ #ifndef RMATH3D_H_INCLUDED
2
+ #define RMATH3D_H_INCLUDED
3
3
 
4
4
  #include "RType.h"
5
5
  #include "RVec2.h"
@@ -14,7 +14,7 @@
14
14
 
15
15
  /*
16
16
  RMath : Ruby math module for 3D Applications
17
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
17
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
18
18
 
19
19
  This software is provided 'as-is', without any express or implied
20
20
  warranty. In no event will the authors be held liable for any damages
@@ -232,7 +232,7 @@ RMtx2Scale( RMtx2* out, const RMtx2* m, rmReal f )
232
232
 
233
233
  /*
234
234
  RMath : Ruby math module for 3D Applications
235
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
235
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
236
236
 
237
237
  This software is provided 'as-is', without any express or implied
238
238
  warranty. In no event will the authors be held liable for any damages
@@ -65,7 +65,7 @@ void RMtx2Scale( RMtx2* out, const RMtx2* m, rmReal f );
65
65
 
66
66
  /*
67
67
  RMath : Ruby math module for 3D Applications
68
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
68
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
69
69
 
70
70
  This software is provided 'as-is', without any express or implied
71
71
  warranty. In no event will the authors be held liable for any damages
@@ -347,7 +347,7 @@ RMtx3Scale( RMtx3* out, const RMtx3* m, rmReal f )
347
347
 
348
348
  /*
349
349
  RMath : Ruby math module for 3D Applications
350
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
350
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
351
351
 
352
352
  This software is provided 'as-is', without any express or implied
353
353
  warranty. In no event will the authors be held liable for any damages
@@ -72,7 +72,7 @@ void RMtx3Scale( RMtx3* out, const RMtx3* m, rmReal f );
72
72
 
73
73
  /*
74
74
  RMath : Ruby math module for 3D Applications
75
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
75
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
76
76
 
77
77
  This software is provided 'as-is', without any express or implied
78
78
  warranty. In no event will the authors be held liable for any damages
@@ -549,7 +549,7 @@ RMtx4OrthoOffCenterRH( RMtx4* out, rmReal left, rmReal right, rmReal bottom, rmR
549
549
 
550
550
  /*
551
551
  RMath : Ruby math module for 3D Applications
552
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
552
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
553
553
 
554
554
  This software is provided 'as-is', without any express or implied
555
555
  warranty. In no event will the authors be held liable for any damages
@@ -87,7 +87,7 @@ void RMtx4OrthoOffCenterRH( RMtx4* out, rmReal left, rmReal right, rmReal bot
87
87
 
88
88
  /*
89
89
  RMath : Ruby math module for 3D Applications
90
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
90
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
91
91
 
92
92
  This software is provided 'as-is', without any express or implied
93
93
  warranty. In no event will the authors be held liable for any damages
@@ -344,7 +344,7 @@ RQuatToAxisAngle( const RQuat* in, struct RVec3* axis, rmReal* radian )
344
344
 
345
345
  /*
346
346
  RMath : Ruby math module for 3D Applications
347
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
347
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
348
348
 
349
349
  This software is provided 'as-is', without any express or implied
350
350
  warranty. In no event will the authors be held liable for any damages
@@ -69,7 +69,7 @@ void RQuatToAxisAngle( const RQuat* in, struct RVec3* axis, rmReal* radian );
69
69
 
70
70
  /*
71
71
  RMath : Ruby math module for 3D Applications
72
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
72
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
73
73
 
74
74
  This software is provided 'as-is', without any express or implied
75
75
  warranty. In no event will the authors be held liable for any damages
@@ -53,7 +53,7 @@ typedef double rmReal;
53
53
 
54
54
  /*
55
55
  RMath : Ruby math module for 3D Applications
56
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
56
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
57
57
 
58
58
  This software is provided 'as-is', without any express or implied
59
59
  warranty. In no event will the authors be held liable for any damages
@@ -144,7 +144,7 @@ RVec2Transform( RVec2* out, const RMtx2* m, const RVec2* in )
144
144
 
145
145
  /*
146
146
  RMath : Ruby math module for 3D Applications
147
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>.
147
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>.
148
148
 
149
149
  This software is provided 'as-is', without any express or implied
150
150
  warranty. In no event will the authors be held liable for any damages
@@ -57,7 +57,7 @@ void RVec2Transform( struct RVec2* out, const struct RMtx2* m, const RVec2* i
57
57
 
58
58
  /*
59
59
  RMath : Ruby math module for 3D Applications
60
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
60
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
61
61
 
62
62
  This software is provided 'as-is', without any express or implied
63
63
  warranty. In no event will the authors be held liable for any damages
@@ -262,7 +262,7 @@ RVec3TransformByQuaternion( RVec3* out, const struct RQuat* q, const RVec3* in )
262
262
 
263
263
  /*
264
264
  RMath : Ruby math module for 3D Applications
265
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>.
265
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>.
266
266
 
267
267
  This software is provided 'as-is', without any express or implied
268
268
  warranty. In no event will the authors be held liable for any damages
@@ -66,7 +66,7 @@ void RVec3TransformByQuaternion( RVec3* out, const struct RQuat* q, const RVe
66
66
 
67
67
  /*
68
68
  RMath : Ruby math module for 3D Applications
69
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
69
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
70
70
 
71
71
  This software is provided 'as-is', without any express or implied
72
72
  warranty. In no event will the authors be held liable for any damages
@@ -192,7 +192,7 @@ RVec4TransformTransposed( RVec4* out, const struct RMtx4* m, const RVec4* in )
192
192
 
193
193
  /*
194
194
  RMath : Ruby math module for 3D Applications
195
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
195
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
196
196
 
197
197
  This software is provided 'as-is', without any express or implied
198
198
  warranty. In no event will the authors be held liable for any damages
@@ -63,7 +63,7 @@ void RVec4TransformTransposed( RVec4* out, const struct RMtx4* m, const RVec4
63
63
 
64
64
  /*
65
65
  RMath : Ruby math module for 3D Applications
66
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
66
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
67
67
 
68
68
  This software is provided 'as-is', without any express or implied
69
69
  warranty. In no event will the authors be held liable for any damages
@@ -200,45 +200,32 @@ RMtx2_initialize( int argc, VALUE* argv, VALUE self )
200
200
  case 1:
201
201
  {
202
202
  VALUE arg = argv[0];
203
- switch ( TYPE( arg ) )
204
- {
205
- case T_FIXNUM:
206
- case T_FLOAT:
207
- {
203
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
208
204
  /* convert to float */
209
205
  rmReal f = NUM2DBL( arg );
210
206
  RMtx2SetElements( v,
211
207
  f,f,
212
208
  f,f );
213
209
  return self;
214
- }
215
- break;
216
-
217
- case T_DATA:
218
- {
219
- if ( IsRMtx2(arg) )
220
- {
221
- /* Copy Constructor */
222
- RMtx2* other;
223
- TypedData_Get_Struct( arg, RMtx2, &RMtx2_type, other );
224
- RMtx2Copy( v, other );
225
- return self;
226
- }
227
- else
210
+ } else {
211
+ if ( TYPE( arg ) == T_DATA ) {
212
+ if ( IsRMtx2(arg) ) {
213
+ /* Copy Constructor */
214
+ RMtx2* other;
215
+ TypedData_Get_Struct( arg, RMtx2, &RMtx2_type, other );
216
+ RMtx2Copy( v, other );
217
+ return self;
218
+ } else {
219
+ return Qnil;
220
+ }
221
+ } else {
222
+ rb_raise( rb_eTypeError,
223
+ "RMtx2_new : Unknown type %s.",
224
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
225
+ );
228
226
  return Qnil;
227
+ }
229
228
  }
230
- break;
231
-
232
- default:
233
- {
234
- rb_raise( rb_eTypeError,
235
- "RMtx2_new : Unknown type %s.",
236
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
237
- );
238
- return Qnil;
239
- }
240
- break;
241
- } /* End : switch ( TYPE( arg ) ) */
242
229
  } /* End : case 1 */
243
230
  break;
244
231
 
@@ -251,18 +238,10 @@ RMtx2_initialize( int argc, VALUE* argv, VALUE self )
251
238
  for ( col = 0; col < 2; ++col )
252
239
  {
253
240
  int i = 2*row + col;
254
- switch ( TYPE( argv[i] ) )
255
- {
256
- case T_FIXNUM:
257
- case T_FLOAT:
258
- {
241
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
259
242
  rmReal f = NUM2DBL( argv[i] );
260
243
  RMtx2SetElement( v, row, col, f );
261
- }
262
- break;
263
-
264
- default:
265
- {
244
+ } else {
266
245
  rb_raise( rb_eTypeError,
267
246
  "RMtx2_new : Unknown type %s. at arg %d",
268
247
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -270,8 +249,6 @@ RMtx2_initialize( int argc, VALUE* argv, VALUE self )
270
249
  );
271
250
  return Qnil;
272
251
  }
273
- break;
274
- }
275
252
  } /* End : for ( col = 0; col < 2; ++col ) */
276
253
  } /* End : for ( row = 0; row < 2; ++row ) */
277
254
 
@@ -371,21 +348,12 @@ RMtx2_coerce( VALUE self, VALUE other )
371
348
  RMtx2* v = NULL;
372
349
  TypedData_Get_Struct( self, RMtx2, &RMtx2_type, v );
373
350
 
374
- switch( TYPE(other) )
375
- {
376
- case T_FLOAT:
377
- case T_FIXNUM:
378
- case T_BIGNUM:
379
- {
351
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
380
352
  /* 'other (op) RMtx2'
381
353
  * -> try again as 'RMtx2 (op) other'
382
354
  */
383
355
  return rb_ary_new3( 2, self, other );
384
- }
385
- break;
386
-
387
- default:
388
- {
356
+ } else {
389
357
  rb_raise( rb_eTypeError,
390
358
  "%s can't be coerced into %s",
391
359
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -393,8 +361,6 @@ RMtx2_coerce( VALUE self, VALUE other )
393
361
  );
394
362
  return Qnil;
395
363
  }
396
- break;
397
- }
398
364
  }
399
365
 
400
366
  /*
@@ -1114,11 +1080,7 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1114
1080
  case 1:
1115
1081
  {
1116
1082
  VALUE arg = argv[0];
1117
- switch ( TYPE( arg ) )
1118
- {
1119
- case T_FIXNUM:
1120
- case T_FLOAT:
1121
- {
1083
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
1122
1084
  /* convert to float */
1123
1085
  rmReal f = NUM2DBL( arg );
1124
1086
  RMtx3SetElements( v,
@@ -1126,34 +1088,25 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1126
1088
  f,f,f,
1127
1089
  f,f,f );
1128
1090
  return self;
1129
- }
1130
- break;
1131
-
1132
- case T_DATA:
1133
- {
1134
- if ( IsRMtx3(arg) )
1135
- {
1136
- /* Copy Constructor */
1137
- RMtx3* other;
1138
- TypedData_Get_Struct( arg , RMtx3, &RMtx3_type, other );
1139
- RMtx3Copy( v, other );
1140
- return self;
1141
- }
1142
- else
1091
+ } else {
1092
+ if ( TYPE( arg ) == T_DATA ) {
1093
+ if ( IsRMtx3(arg) ) {
1094
+ /* Copy Constructor */
1095
+ RMtx3* other;
1096
+ TypedData_Get_Struct( arg , RMtx3, &RMtx3_type, other );
1097
+ RMtx3Copy( v, other );
1098
+ return self;
1099
+ } else {
1100
+ return Qnil;
1101
+ }
1102
+ } else {
1103
+ rb_raise( rb_eTypeError,
1104
+ "RMtx3_new : Unknown type %s.",
1105
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
1106
+ );
1143
1107
  return Qnil;
1108
+ }
1144
1109
  }
1145
- break;
1146
-
1147
- default:
1148
- {
1149
- rb_raise( rb_eTypeError,
1150
- "RMtx3_new : Unknown type %s.",
1151
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
1152
- );
1153
- return Qnil;
1154
- }
1155
- break;
1156
- } /* End : switch ( TYPE( arg ) ) */
1157
1110
  } /* End : case 1 */
1158
1111
  break;
1159
1112
 
@@ -1166,18 +1119,10 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1166
1119
  for ( col = 0; col < 3; ++col )
1167
1120
  {
1168
1121
  int i = 3*row + col;
1169
- switch ( TYPE( argv[i] ) )
1170
- {
1171
- case T_FIXNUM:
1172
- case T_FLOAT:
1173
- {
1122
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
1174
1123
  rmReal f = NUM2DBL( argv[i] );
1175
1124
  RMtx3SetElement( v, row, col, f );
1176
- }
1177
- break;
1178
-
1179
- default:
1180
- {
1125
+ } else {
1181
1126
  rb_raise( rb_eTypeError,
1182
1127
  "RMtx3_new : Unknown type %s. at arg %d",
1183
1128
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -1185,8 +1130,6 @@ RMtx3_initialize( int argc, VALUE* argv, VALUE self )
1185
1130
  );
1186
1131
  return Qnil;
1187
1132
  }
1188
- break;
1189
- }
1190
1133
  } /* End : for ( col = 0; col < 3; ++col ) */
1191
1134
  } /* End : for ( row = 0; row < 3; ++row ) */
1192
1135
 
@@ -1286,21 +1229,12 @@ RMtx3_coerce( VALUE self, VALUE other )
1286
1229
  RMtx3* v = NULL;
1287
1230
  TypedData_Get_Struct( self, RMtx3, &RMtx3_type, v );
1288
1231
 
1289
- switch( TYPE(other) )
1290
- {
1291
- case T_FLOAT:
1292
- case T_FIXNUM:
1293
- case T_BIGNUM:
1294
- {
1232
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
1295
1233
  /* 'other (op) RMtx3'
1296
1234
  * -> try again as 'RMtx3 (op) other'
1297
1235
  */
1298
1236
  return rb_ary_new3( 2, self, other );
1299
- }
1300
- break;
1301
-
1302
- default:
1303
- {
1237
+ } else {
1304
1238
  rb_raise( rb_eTypeError,
1305
1239
  "%s can't be coerced into %s",
1306
1240
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -1308,8 +1242,6 @@ RMtx3_coerce( VALUE self, VALUE other )
1308
1242
  );
1309
1243
  return Qnil;
1310
1244
  }
1311
- break;
1312
- }
1313
1245
  }
1314
1246
 
1315
1247
  /*
@@ -2235,11 +2167,7 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2235
2167
  case 1:
2236
2168
  {
2237
2169
  VALUE arg = argv[0];
2238
- switch ( TYPE( arg ) )
2239
- {
2240
- case T_FIXNUM:
2241
- case T_FLOAT:
2242
- {
2170
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
2243
2171
  /* convert to float */
2244
2172
  rmReal f = NUM2DBL( arg );
2245
2173
  RMtx4SetElements( v,
@@ -2248,34 +2176,25 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2248
2176
  f,f,f,f,
2249
2177
  f,f,f,f );
2250
2178
  return self;
2251
- }
2252
- break;
2253
-
2254
- case T_DATA:
2255
- {
2256
- if ( IsRMtx4(arg) )
2257
- {
2258
- /* Copy Constructor */
2259
- RMtx4* other;
2260
- TypedData_Get_Struct( arg , RMtx4, &RMtx4_type, other );
2261
- RMtx4Copy( v, other );
2262
- return self;
2263
- }
2264
- else
2179
+ } else {
2180
+ if ( TYPE( arg ) == T_DATA ) {
2181
+ if ( IsRMtx4(arg) ) {
2182
+ /* Copy Constructor */
2183
+ RMtx4* other;
2184
+ TypedData_Get_Struct( arg , RMtx4, &RMtx4_type, other );
2185
+ RMtx4Copy( v, other );
2186
+ return self;
2187
+ } else {
2188
+ return Qnil;
2189
+ }
2190
+ } else {
2191
+ rb_raise( rb_eTypeError,
2192
+ "RMtx4_new : Unknown type %s.",
2193
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
2194
+ );
2265
2195
  return Qnil;
2196
+ }
2266
2197
  }
2267
- break;
2268
-
2269
- default:
2270
- {
2271
- rb_raise( rb_eTypeError,
2272
- "RMtx4_new : Unknown type %s.",
2273
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
2274
- );
2275
- return Qnil;
2276
- }
2277
- break;
2278
- } /* End : switch ( TYPE( arg ) ) */
2279
2198
  } /* End : case 1 */
2280
2199
  break;
2281
2200
 
@@ -2288,18 +2207,10 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2288
2207
  for ( col = 0; col < 4; ++col )
2289
2208
  {
2290
2209
  int i = 4*row + col;
2291
- switch ( TYPE( argv[i] ) )
2292
- {
2293
- case T_FIXNUM:
2294
- case T_FLOAT:
2295
- {
2210
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
2296
2211
  rmReal f = NUM2DBL( argv[i] );
2297
2212
  RMtx4SetElement( v, row, col, f );
2298
- }
2299
- break;
2300
-
2301
- default:
2302
- {
2213
+ } else {
2303
2214
  rb_raise( rb_eTypeError,
2304
2215
  "RMtx4_new : Unknown type %s. at arg %d",
2305
2216
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -2307,8 +2218,6 @@ RMtx4_initialize( int argc, VALUE* argv, VALUE self )
2307
2218
  );
2308
2219
  return Qnil;
2309
2220
  }
2310
- break;
2311
- }
2312
2221
  } /* End : for ( col = 0; col < 4; ++col ) */
2313
2222
  } /* End : for ( row = 0; row < 4; ++row ) */
2314
2223
 
@@ -2410,21 +2319,12 @@ RMtx4_coerce( VALUE self, VALUE other )
2410
2319
  RMtx4* v = NULL;
2411
2320
  TypedData_Get_Struct( self, RMtx4, &RMtx4_type, v );
2412
2321
 
2413
- switch( TYPE(other) )
2414
- {
2415
- case T_FLOAT:
2416
- case T_FIXNUM:
2417
- case T_BIGNUM:
2418
- {
2322
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
2419
2323
  /* 'other (op) RMtx4'
2420
2324
  * -> try again as 'RMtx4 (op) other'
2421
2325
  */
2422
2326
  return rb_ary_new3( 2, self, other );
2423
- }
2424
- break;
2425
-
2426
- default:
2427
- {
2327
+ } else {
2428
2328
  rb_raise( rb_eTypeError,
2429
2329
  "%s can't be coerced into %s",
2430
2330
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -2432,8 +2332,6 @@ RMtx4_coerce( VALUE self, VALUE other )
2432
2332
  );
2433
2333
  return Qnil;
2434
2334
  }
2435
- break;
2436
- }
2437
2335
  }
2438
2336
 
2439
2337
  /*
@@ -3784,43 +3682,30 @@ RQuat_initialize( int argc, VALUE* argv, VALUE self )
3784
3682
  case 1:
3785
3683
  {
3786
3684
  VALUE arg = argv[0];
3787
- switch ( TYPE( arg ) )
3788
- {
3789
- case T_FIXNUM:
3790
- case T_FLOAT:
3791
- {
3685
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
3792
3686
  /* convert to float */
3793
3687
  rmReal f = NUM2DBL( arg );
3794
3688
  RQuatSetElements( v, f,f,f,f );
3795
3689
  return self;
3796
- }
3797
- break;
3798
-
3799
- case T_DATA:
3800
- {
3801
- if ( IsRQuat(arg) )
3802
- {
3803
- /* Copy Constructor */
3804
- RQuat* other;
3805
- TypedData_Get_Struct( arg , RQuat, &RQuat_type, other );
3806
- RQuatSetElements( v, other->x, other->y, other->z, other->w );
3807
- return self;
3808
- }
3809
- else
3690
+ } else {
3691
+ if ( TYPE( arg ) == T_DATA ) {
3692
+ if ( IsRQuat(arg) ) {
3693
+ /* Copy Constructor */
3694
+ RQuat* other;
3695
+ TypedData_Get_Struct( arg , RQuat, &RQuat_type, other );
3696
+ RQuatSetElements( v, other->x, other->y, other->z, other->w );
3697
+ return self;
3698
+ } else {
3699
+ return Qnil;
3700
+ }
3701
+ } else {
3702
+ rb_raise( rb_eTypeError,
3703
+ "RQuat_new : Unknown type %s.",
3704
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
3705
+ );
3810
3706
  return Qnil;
3707
+ }
3811
3708
  }
3812
- break;
3813
-
3814
- default:
3815
- {
3816
- rb_raise( rb_eTypeError,
3817
- "RQuat_new : Unknown type %s.",
3818
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
3819
- );
3820
- return Qnil;
3821
- }
3822
- break;
3823
- } /* End : switch ( TYPE( arg ) ) */
3824
3709
  } /* End : case 1 */
3825
3710
  break;
3826
3711
 
@@ -3830,18 +3715,10 @@ RQuat_initialize( int argc, VALUE* argv, VALUE self )
3830
3715
  int i;
3831
3716
  for ( i = 0; i < argc; ++i )
3832
3717
  {
3833
- switch ( TYPE( argv[i] ) )
3834
- {
3835
- case T_FIXNUM:
3836
- case T_FLOAT:
3837
- {
3718
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
3838
3719
  rmReal f = NUM2DBL( argv[i] );
3839
3720
  v->e[i] = f;
3840
- }
3841
- break;
3842
-
3843
- default:
3844
- {
3721
+ } else {
3845
3722
  rb_raise( rb_eTypeError,
3846
3723
  "RQuat_new : Unknown type %s. at arg %d",
3847
3724
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -3849,8 +3726,6 @@ RQuat_initialize( int argc, VALUE* argv, VALUE self )
3849
3726
  );
3850
3727
  return Qnil;
3851
3728
  }
3852
- break;
3853
- }
3854
3729
  } /* End : for ( i = 0; i < argc; ++i ) */
3855
3730
 
3856
3731
  return self;
@@ -3936,21 +3811,12 @@ RQuat_coerce( VALUE self, VALUE other )
3936
3811
  RQuat* v = NULL;
3937
3812
  TypedData_Get_Struct( self, RQuat, &RQuat_type, v );
3938
3813
 
3939
- switch( TYPE(other) )
3940
- {
3941
- case T_FLOAT:
3942
- case T_FIXNUM:
3943
- case T_BIGNUM:
3944
- {
3814
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
3945
3815
  /* 'other (op) RQuat'
3946
3816
  * -> try again as 'RQuat (op) other'
3947
3817
  */
3948
3818
  return rb_ary_new3( 2, self, other );
3949
- }
3950
- break;
3951
-
3952
- default:
3953
- {
3819
+ } else {
3954
3820
  rb_raise( rb_eTypeError,
3955
3821
  "%s can't be coerced into %s",
3956
3822
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -3958,8 +3824,6 @@ RQuat_coerce( VALUE self, VALUE other )
3958
3824
  );
3959
3825
  return Qnil;
3960
3826
  }
3961
- break;
3962
- }
3963
3827
  }
3964
3828
 
3965
3829
  /*
@@ -4506,27 +4370,18 @@ RQuat_op_binary_mult( VALUE self, VALUE other )
4506
4370
  }
4507
4371
  else
4508
4372
  {
4509
- switch( TYPE(other) )
4510
- {
4511
- case T_FIXNUM:
4512
- case T_FLOAT:
4513
- {
4373
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
4514
4374
  f = NUM2DBL( other );
4515
4375
  RQuatScale( &result, v, f );
4516
4376
 
4517
4377
  return RQuat_from_source( &result );
4518
- }
4519
- break;
4520
-
4521
- default:
4522
- {
4378
+ } else {
4523
4379
  rb_raise( rb_eTypeError,
4524
4380
  "RQuat#* : Unknown type %s.",
4525
4381
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
4526
4382
  );
4527
4383
  return Qnil;
4528
4384
  }
4529
- } /* End : switch( TYPE(other) ) */
4530
4385
  }
4531
4386
  }
4532
4387
 
@@ -4640,7 +4495,7 @@ RQuat_op_assign_mult( VALUE self, VALUE other )
4640
4495
  else
4641
4496
  {
4642
4497
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
4643
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
4498
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
4644
4499
  {
4645
4500
  rb_raise( rb_eTypeError,
4646
4501
  "RQuat#mul! : Unknown type %s.",
@@ -4785,43 +4640,30 @@ RVec2_initialize( int argc, VALUE* argv, VALUE self )
4785
4640
  case 1:
4786
4641
  {
4787
4642
  VALUE arg = argv[0];
4788
- switch ( TYPE( arg ) )
4789
- {
4790
- case T_FIXNUM:
4791
- case T_FLOAT:
4792
- {
4643
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
4793
4644
  /* convert to float */
4794
4645
  rmReal f = NUM2DBL( arg );
4795
4646
  RVec2SetElements( v, f,f );
4796
4647
  return self;
4797
- }
4798
- break;
4799
-
4800
- case T_DATA:
4801
- {
4802
- if ( IsRVec2(arg) )
4803
- {
4804
- /* Copy Constructor */
4805
- RVec2* other;
4806
- TypedData_Get_Struct( arg , RVec2, &RVec2_type, other );
4807
- RVec2SetElements( v, other->x, other->y );
4808
- return self;
4809
- }
4810
- else
4648
+ } else {
4649
+ if ( TYPE( arg ) == T_DATA ) {
4650
+ if ( IsRVec2(arg) ) {
4651
+ /* Copy Constructor */
4652
+ RVec2* other;
4653
+ TypedData_Get_Struct( arg , RVec2, &RVec2_type, other );
4654
+ RVec2SetElements( v, other->x, other->y );
4655
+ return self;
4656
+ } else {
4657
+ return Qnil;
4658
+ }
4659
+ } else {
4660
+ rb_raise( rb_eTypeError,
4661
+ "RVec2_new : Unknown type %s.",
4662
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
4663
+ );
4811
4664
  return Qnil;
4665
+ }
4812
4666
  }
4813
- break;
4814
-
4815
- default:
4816
- {
4817
- rb_raise( rb_eTypeError,
4818
- "RVec2_new : Unknown type %s.",
4819
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
4820
- );
4821
- return Qnil;
4822
- }
4823
- break;
4824
- } /* End : switch ( TYPE( arg ) ) */
4825
4667
  } /* End : case 1 */
4826
4668
  break;
4827
4669
 
@@ -4831,18 +4673,10 @@ RVec2_initialize( int argc, VALUE* argv, VALUE self )
4831
4673
  int i;
4832
4674
  for ( i = 0; i < argc; ++i )
4833
4675
  {
4834
- switch ( TYPE( argv[i] ) )
4835
- {
4836
- case T_FIXNUM:
4837
- case T_FLOAT:
4838
- {
4676
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
4839
4677
  rmReal f = NUM2DBL( argv[i] );
4840
4678
  v->e[i] = f;
4841
- }
4842
- break;
4843
-
4844
- default:
4845
- {
4679
+ } else {
4846
4680
  rb_raise( rb_eTypeError,
4847
4681
  "RVec2_new : Unknown type %s. at arg %d",
4848
4682
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -4850,8 +4684,6 @@ RVec2_initialize( int argc, VALUE* argv, VALUE self )
4850
4684
  );
4851
4685
  return Qnil;
4852
4686
  }
4853
- break;
4854
- }
4855
4687
  } /* End : for ( i = 0; i < argc; ++i ) */
4856
4688
 
4857
4689
  return self;
@@ -4935,21 +4767,12 @@ RVec2_coerce( VALUE self, VALUE other )
4935
4767
  RVec2* v = NULL;
4936
4768
  TypedData_Get_Struct( self, RVec2, &RVec2_type, v );
4937
4769
 
4938
- switch( TYPE(other) )
4939
- {
4940
- case T_FLOAT:
4941
- case T_FIXNUM:
4942
- case T_BIGNUM:
4943
- {
4770
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
4944
4771
  /* 'other (op) RVec2'
4945
4772
  * -> try again as 'RVec2 (op) other'
4946
4773
  */
4947
4774
  return rb_ary_new3( 2, self, other );
4948
- }
4949
- break;
4950
-
4951
- default:
4952
- {
4775
+ } else {
4953
4776
  rb_raise( rb_eTypeError,
4954
4777
  "%s can't be coerced into %s",
4955
4778
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -4957,8 +4780,6 @@ RVec2_coerce( VALUE self, VALUE other )
4957
4780
  );
4958
4781
  return Qnil;
4959
4782
  }
4960
- break;
4961
- }
4962
4783
  }
4963
4784
 
4964
4785
  /*
@@ -5318,28 +5139,19 @@ RVec2_op_binary_mult( VALUE self, VALUE other )
5318
5139
  RVec2 result;
5319
5140
  rmReal f;
5320
5141
 
5321
- switch( TYPE(other) )
5322
- {
5323
- case T_FIXNUM:
5324
- case T_FLOAT:
5325
- {
5142
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
5326
5143
  TypedData_Get_Struct( self, RVec2, &RVec2_type, v );
5327
5144
  f = NUM2DBL( other );
5328
5145
  RVec2Scale( &result, v, f );
5329
5146
 
5330
5147
  return RVec2_from_source( &result );
5331
- }
5332
- break;
5333
-
5334
- default:
5335
- {
5148
+ } else {
5336
5149
  rb_raise( rb_eTypeError,
5337
5150
  "RVec2#* : Unknown type %s.",
5338
5151
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
5339
5152
  );
5340
5153
  return Qnil;
5341
5154
  }
5342
- } /* End : switch( TYPE(other) ) */
5343
5155
  }
5344
5156
 
5345
5157
  /*
@@ -5441,7 +5253,7 @@ RVec2_op_assign_mult( VALUE self, VALUE other )
5441
5253
  rmReal f;
5442
5254
 
5443
5255
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
5444
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
5256
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
5445
5257
  {
5446
5258
  rb_raise( rb_eTypeError,
5447
5259
  "RVec2#*= : Unknown type %s.",
@@ -5528,43 +5340,30 @@ RVec3_initialize( int argc, VALUE* argv, VALUE self )
5528
5340
  case 1:
5529
5341
  {
5530
5342
  VALUE arg = argv[0];
5531
- switch ( TYPE( arg ) )
5532
- {
5533
- case T_FIXNUM:
5534
- case T_FLOAT:
5535
- {
5343
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
5536
5344
  /* convert to float */
5537
5345
  rmReal f = NUM2DBL( arg );
5538
5346
  RVec3SetElements( v, f,f,f );
5539
5347
  return self;
5540
- }
5541
- break;
5542
-
5543
- case T_DATA:
5544
- {
5545
- if ( IsRVec3(arg) )
5546
- {
5547
- /* Copy Constructor */
5548
- RVec3* other;
5549
- TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
5550
- RVec3SetElements( v, other->x, other->y, other->z );
5551
- return self;
5552
- }
5553
- else
5554
- return Qnil;
5555
- }
5556
- break;
5557
-
5558
- default:
5559
- {
5348
+ } else {
5349
+ if ( TYPE( arg ) == T_DATA ) {
5350
+ if ( IsRVec3(arg) ) {
5351
+ /* Copy Constructor */
5352
+ RVec3* other;
5353
+ TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
5354
+ RVec3SetElements( v, other->x, other->y, other->z );
5355
+ return self;
5356
+ } else {
5357
+ return Qnil;
5358
+ }
5359
+ } else {
5560
5360
  rb_raise( rb_eTypeError,
5561
5361
  "RVec3_new : Unknown type %s.",
5562
5362
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
5563
5363
  );
5564
5364
  return Qnil;
5365
+ }
5565
5366
  }
5566
- break;
5567
- } /* End : switch ( TYPE( arg ) ) */
5568
5367
  } /* End : case 1 */
5569
5368
  break;
5570
5369
 
@@ -5574,18 +5373,10 @@ RVec3_initialize( int argc, VALUE* argv, VALUE self )
5574
5373
  int i;
5575
5374
  for ( i = 0; i < argc; ++i )
5576
5375
  {
5577
- switch ( TYPE( argv[i] ) )
5578
- {
5579
- case T_FIXNUM:
5580
- case T_FLOAT:
5581
- {
5376
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
5582
5377
  rmReal f = NUM2DBL( argv[i] );
5583
5378
  v->e[i] = f;
5584
- }
5585
- break;
5586
-
5587
- default:
5588
- {
5379
+ } else {
5589
5380
  rb_raise( rb_eTypeError,
5590
5381
  "RVec3_new : Unknown type %s. at arg %d",
5591
5382
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -5593,8 +5384,6 @@ RVec3_initialize( int argc, VALUE* argv, VALUE self )
5593
5384
  );
5594
5385
  return Qnil;
5595
5386
  }
5596
- break;
5597
- }
5598
5387
  } /* End : for ( i = 0; i < argc; ++i ) */
5599
5388
 
5600
5389
  return self;
@@ -5679,21 +5468,12 @@ RVec3_coerce( VALUE self, VALUE other )
5679
5468
  RVec3* v = NULL;
5680
5469
  TypedData_Get_Struct( self, RVec3, &RVec3_type, v );
5681
5470
 
5682
- switch( TYPE(other) )
5683
- {
5684
- case T_FLOAT:
5685
- case T_FIXNUM:
5686
- case T_BIGNUM:
5687
- {
5471
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
5688
5472
  /* 'other (op) RVec3'
5689
5473
  * -> try again as 'RVec3 (op) other'
5690
5474
  */
5691
5475
  return rb_ary_new3( 2, self, other );
5692
- }
5693
- break;
5694
-
5695
- default:
5696
- {
5476
+ } else {
5697
5477
  rb_raise( rb_eTypeError,
5698
5478
  "%s can't be coerced into %s",
5699
5479
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -5701,8 +5481,6 @@ RVec3_coerce( VALUE self, VALUE other )
5701
5481
  );
5702
5482
  return Qnil;
5703
5483
  }
5704
- break;
5705
- }
5706
5484
  }
5707
5485
 
5708
5486
  /*
@@ -6316,28 +6094,19 @@ RVec3_op_binary_mult( VALUE self, VALUE other )
6316
6094
  RVec3 result;
6317
6095
  rmReal f;
6318
6096
 
6319
- switch( TYPE(other) )
6320
- {
6321
- case T_FIXNUM:
6322
- case T_FLOAT:
6323
- {
6097
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
6324
6098
  TypedData_Get_Struct( self, RVec3, &RVec3_type, v );
6325
6099
  f = NUM2DBL( other );
6326
6100
  RVec3Scale( &result, v, f );
6327
6101
 
6328
6102
  return RVec3_from_source( &result );
6329
- }
6330
- break;
6331
-
6332
- default:
6333
- {
6103
+ } else {
6334
6104
  rb_raise( rb_eTypeError,
6335
6105
  "RVec3#* : Unknown type %s.",
6336
6106
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
6337
6107
  );
6338
6108
  return Qnil;
6339
6109
  }
6340
- } /* End : switch( TYPE(other) ) */
6341
6110
  }
6342
6111
 
6343
6112
  /*
@@ -6439,7 +6208,7 @@ RVec3_op_assign_mult( VALUE self, VALUE other )
6439
6208
  rmReal f;
6440
6209
 
6441
6210
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
6442
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
6211
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
6443
6212
  {
6444
6213
  rb_raise( rb_eTypeError,
6445
6214
  "RVec3#*= : Unknown type %s.",
@@ -6526,51 +6295,36 @@ RVec4_initialize( int argc, VALUE* argv, VALUE self )
6526
6295
  case 1:
6527
6296
  {
6528
6297
  VALUE arg = argv[0];
6529
- switch ( TYPE( arg ) )
6530
- {
6531
- case T_FIXNUM:
6532
- case T_FLOAT:
6533
- {
6298
+ if ( RB_FLOAT_TYPE_P(arg) || RB_INTEGER_TYPE_P(arg) ) {
6534
6299
  /* convert to float */
6535
6300
  rmReal f = NUM2DBL( arg );
6536
6301
  RVec4SetElements( v, f,f,f,f );
6537
6302
  return self;
6538
- }
6539
- break;
6540
-
6541
- case T_DATA:
6542
- {
6543
- if ( IsRVec3(arg) )
6544
- {
6545
- /* Create from RVec3 */
6546
- RVec3* other;
6547
- TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
6548
- RVec4SetElements( v, other->x, other->y, other->z, 0.0f );
6549
- return self;
6550
- }
6551
- else if ( IsRVec4(arg) )
6552
- {
6553
- /* Copy Constructor */
6554
- RVec4* other;
6555
- TypedData_Get_Struct( arg , RVec4, &RVec4_type, other );
6556
- RVec4SetElements( v, other->x, other->y, other->z, other->w );
6557
- return self;
6558
- }
6559
- else
6303
+ } else {
6304
+ if ( TYPE( arg ) == T_DATA ) {
6305
+ if ( IsRVec3(arg) ) {
6306
+ /* Create from RVec3 */
6307
+ RVec3* other;
6308
+ TypedData_Get_Struct( arg , RVec3, &RVec3_type, other );
6309
+ RVec4SetElements( v, other->x, other->y, other->z, 0.0f );
6310
+ return self;
6311
+ } else if ( IsRVec4(arg) ) {
6312
+ /* Copy Constructor */
6313
+ RVec4* other;
6314
+ TypedData_Get_Struct( arg , RVec4, &RVec4_type, other );
6315
+ RVec4SetElements( v, other->x, other->y, other->z, other->w );
6316
+ return self;
6317
+ } else {
6318
+ return Qnil;
6319
+ }
6320
+ } else {
6321
+ rb_raise( rb_eTypeError,
6322
+ "RVec4_new : Unknown type %s.",
6323
+ rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
6324
+ );
6560
6325
  return Qnil;
6326
+ }
6561
6327
  }
6562
- break;
6563
-
6564
- default:
6565
- {
6566
- rb_raise( rb_eTypeError,
6567
- "RVec4_new : Unknown type %s.",
6568
- rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self )
6569
- );
6570
- return Qnil;
6571
- }
6572
- break;
6573
- } /* End : switch ( TYPE( arg ) ) */
6574
6328
  } /* End : case 1 */
6575
6329
  break;
6576
6330
 
@@ -6580,18 +6334,10 @@ RVec4_initialize( int argc, VALUE* argv, VALUE self )
6580
6334
  int i;
6581
6335
  for ( i = 0; i < argc; ++i )
6582
6336
  {
6583
- switch ( TYPE( argv[i] ) )
6584
- {
6585
- case T_FIXNUM:
6586
- case T_FLOAT:
6587
- {
6337
+ if ( RB_FLOAT_TYPE_P(argv[i]) || RB_INTEGER_TYPE_P(argv[i]) ) {
6588
6338
  rmReal f = NUM2DBL( argv[i] );
6589
6339
  v->e[i] = f;
6590
- }
6591
- break;
6592
-
6593
- default:
6594
- {
6340
+ } else {
6595
6341
  rb_raise( rb_eTypeError,
6596
6342
  "RVec4_new : Unknown type %s. at arg %d",
6597
6343
  rb_special_const_p( self ) ? RSTRING_PTR( rb_inspect( self ) ) : rb_obj_classname( self ),
@@ -6599,8 +6345,6 @@ RVec4_initialize( int argc, VALUE* argv, VALUE self )
6599
6345
  );
6600
6346
  return Qnil;
6601
6347
  }
6602
- break;
6603
- }
6604
6348
  } /* End : for ( i = 0; i < argc; ++i ) */
6605
6349
 
6606
6350
  return self;
@@ -6686,21 +6430,12 @@ RVec4_coerce( VALUE self, VALUE other )
6686
6430
  RVec4* v = NULL;
6687
6431
  TypedData_Get_Struct( self, RVec4, &RVec4_type, v );
6688
6432
 
6689
- switch( TYPE(other) )
6690
- {
6691
- case T_FLOAT:
6692
- case T_FIXNUM:
6693
- case T_BIGNUM:
6694
- {
6433
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
6695
6434
  /* 'other (op) RVec4'
6696
6435
  * -> try again as 'RVec4 (op) other'
6697
6436
  */
6698
6437
  return rb_ary_new3( 2, self, other );
6699
- }
6700
- break;
6701
-
6702
- default:
6703
- {
6438
+ } else {
6704
6439
  rb_raise( rb_eTypeError,
6705
6440
  "%s can't be coerced into %s",
6706
6441
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other ),
@@ -6708,8 +6443,6 @@ RVec4_coerce( VALUE self, VALUE other )
6708
6443
  );
6709
6444
  return Qnil;
6710
6445
  }
6711
- break;
6712
- }
6713
6446
  }
6714
6447
 
6715
6448
  /*
@@ -7215,28 +6948,19 @@ RVec4_op_binary_mult( VALUE self, VALUE other )
7215
6948
  RVec4 result;
7216
6949
  rmReal f;
7217
6950
 
7218
- switch( TYPE(other) )
7219
- {
7220
- case T_FIXNUM:
7221
- case T_FLOAT:
7222
- {
6951
+ if ( RB_FLOAT_TYPE_P(other) || RB_INTEGER_TYPE_P(other) ) {
7223
6952
  TypedData_Get_Struct( self, RVec4, &RVec4_type, v );
7224
6953
  f = NUM2DBL( other );
7225
6954
  RVec4Scale( &result, v, f );
7226
6955
 
7227
6956
  return RVec4_from_source( &result );
7228
- }
7229
- break;
7230
-
7231
- default:
7232
- {
6957
+ } else {
7233
6958
  rb_raise( rb_eTypeError,
7234
6959
  "RVec4#* : Unknown type %s.",
7235
6960
  rb_special_const_p( other ) ? RSTRING_PTR( rb_inspect( other ) ) : rb_obj_classname( other )
7236
6961
  );
7237
6962
  return Qnil;
7238
6963
  }
7239
- } /* End : switch( TYPE(other) ) */
7240
6964
  }
7241
6965
 
7242
6966
  /*
@@ -7338,7 +7062,7 @@ RVec4_op_assign_mult( VALUE self, VALUE other )
7338
7062
  rmReal f;
7339
7063
 
7340
7064
  #ifdef RMATH_ENABLE_ARGUMENT_CHECK
7341
- if ( TYPE(other) != T_FIXNUM && TYPE(other) != T_FLOAT )
7065
+ if ( !RB_FLOAT_TYPE_P(other) && !RB_INTEGER_TYPE_P(other) )
7342
7066
  {
7343
7067
  rb_raise( rb_eTypeError,
7344
7068
  "RVec4#*= : Unknown type %s.",
@@ -7820,7 +7544,7 @@ Init_rmath3d()
7820
7544
 
7821
7545
  /*
7822
7546
  RMath : Ruby math module for 3D Applications
7823
- Copyright (c) 2008- vaiorabbit <http://twitter.com/vaiorabbit>
7547
+ Copyright (c) 2008-2017 vaiorabbit <http://twitter.com/vaiorabbit>
7824
7548
 
7825
7549
  This software is provided 'as-is', without any express or implied
7826
7550
  warranty. In no event will the authors be held liable for any damages