162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
# File 'ext/cglm/rb_cglm_affine.c', line 162
VALUE rb_cglm_scale(int argc, VALUE *argv, VALUE self) {
VALUE factor, dest;
rb_scan_args(argc, argv, "11", &factor, &dest);
if (NIL_P(dest)) dest = MAT4_NEW(ALLOC_MAT4);
if (RB_FLOAT_TYPE_P(factor) || RB_INTEGER_TYPE_P(factor)) {
memcpy(&VAL2MAT4(dest), &VAL2MAT4(self), sizeof(mat4));
glm_scale_uni(VAL2MAT4(dest), (float) NUM2DBL(factor));
} else {
glm_scale_to(VAL2MAT4(self), VAL2VEC3(factor), VAL2MAT4(dest));
}
return dest;
}
|