30 lines
678 B
C
30 lines
678 B
C
#include "sprite.h"
|
||
|
||
sprite *make_sprite(void)
|
||
{
|
||
sprite *sprite = calloc(sizeof(*sprite),1);
|
||
sprite->image = JS_UNDEFINED;
|
||
return sprite;
|
||
}
|
||
|
||
void sprite_free(JSRuntime *rt, sprite *sprite)
|
||
{
|
||
JS_FreeValueRT(rt,sprite->image);
|
||
free(sprite);
|
||
}
|
||
|
||
void sprite_apply(sprite *sp)
|
||
{
|
||
/* -------- rotation + skew → 2×2 affine matrix -------- */
|
||
float rot = sp->rotation;
|
||
HMM_Vec2 k = sp->skew;
|
||
|
||
float c = cosf(rot), s = sinf(rot);
|
||
|
||
sp->affine.Columns[0] = (HMM_Vec2){ .x = c + k.x * s,
|
||
.y = k.y * c + s };
|
||
sp->affine.Columns[1] = (HMM_Vec2){ .x = -s + k.x * c,
|
||
.y = -k.y * s + c };
|
||
}
|
||
|