diff options
author | UnavailableDev <69792062+UnavailableDev@users.noreply.github.com> | 2023-03-22 10:45:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-22 10:45:34 +0100 |
commit | d32a4942c7e16af5daf71a769906b17cb44de8e1 (patch) | |
tree | 8da86d27d30d841d786a5beca634e3fbaaf00570 /src/engine/camera.c | |
parent | 6d82f9e3d165e0200bed2f2784a1183f47b37fa3 (diff) | |
parent | 7f51cd925883bbf958baa289d4d19231667c9eba (diff) |
Merge branch 'lonkaars:dev' into dev
Diffstat (limited to 'src/engine/camera.c')
-rw-r--r-- | src/engine/camera.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/engine/camera.c b/src/engine/camera.c new file mode 100644 index 0000000..2c3e517 --- /dev/null +++ b/src/engine/camera.c @@ -0,0 +1,35 @@ +#include "engine/camera.h" + +#include "ppu/consts.h" + + +vec_cor hh_update_camera(vec_cen new, vec2 min, vec2 max){ + + //TODO: change floating point math to fix point math + //TODO: remove magic number at y camera offset + + // new = vec_cen2cor(new,(vec2){.x=max.x/2,.y=max.y/2}); + new = vec_cen2cor((vec2){.x=new.x+(HH_PPU_SPRITE_WIDTH),.y=new.y+(HH_PPU_SPRITE_HEIGHT*8)},(vec2){.x=max.x/2,.y=max.y/2}); + // new.x = new.x << HH_MATH_FIXED_POINT; + // new.y = new.y << HH_MATH_FIXED_POINT; + static vec_cor old; + // old.x = old.x << HH_MATH_FIXED_POINT; + // old.y = old.y << HH_MATH_FIXED_POINT; + + // int16_t some = 0; + // some = some <<= HH_MATH_FIXED_POINT-1; + + // Camera smoothing + new.x = (int)((float)new.x*0.1f + (float)old.x*0.9f); + new.y = (int)((float)new.y*0.1f + (float)old.y*0.9f); + + // old.x = old.x >> HH_MATH_FIXED_POINT; + // old.y = old.y >> HH_MATH_FIXED_POINT; + + + old.x = CLAMP(new.x,min.x,max.x); + old.y = CLAMP(new.y,min.y,max.y); + + return old; +} + |