Files
cell/source/sprite.c
John Alanbrook a85b1873dd
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
sprite rework
2025-05-04 11:28:45 -05:00

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
};
}