Some checks failed
Build and Deploy / package-dist (push) Has been cancelled
Build and Deploy / deploy-itch (push) Has been cancelled
Build and Deploy / deploy-gitea (push) Has been cancelled
Build and Deploy / build-windows (CLANG64) (push) Has been cancelled
Build and Deploy / build-linux (push) Has been cancelled
33 lines
637 B
C
33 lines
637 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)
|
|
{
|
|
float rot = sp->rotation;
|
|
HMM_Vec2 k = sp->skew;
|
|
HMM_Vec2 s = sp->scale;
|
|
|
|
float c = cosf(rot), si = sinf(rot);
|
|
|
|
sp->affine.Columns[0] = (HMM_Vec2){
|
|
.x = (c + k.x * si) * s.x,
|
|
.y = (k.y * c + si) * s.x
|
|
};
|
|
sp->affine.Columns[1] = (HMM_Vec2){
|
|
.x = (-si + k.x * c) * s.y,
|
|
.y = (-k.y * si + c) * s.y
|
|
};
|
|
}
|