X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fplayer.c;fp=src%2Fplayer.c;h=0e683939f4ba80b5f369bbf9bff499e571e41839;hb=3c7da38bbf5936211348c5b6c31874364060dca8;hp=0000000000000000000000000000000000000000;hpb=0a754b5aac897ffde09e93027aed78c95b81b99b;p=vrlugburz diff --git a/src/player.c b/src/player.c new file mode 100644 index 0000000..0e68393 --- /dev/null +++ b/src/player.c @@ -0,0 +1,26 @@ +#include "player.h" + +void init_player(struct player *p) +{ + memset(p, 0, sizeof *p); + cgm_qcons(&p->vrot, 0, 0, 0, 1); + + p->height = 1.75; + p->hp = p->hp_max = 10; + p->mp = p->mp_max = 10; +} + +void upd_player_xform(struct player *p) +{ + cgm_vec3 pos; + float celld = p->lvl ? p->lvl->cell_size : DEF_CELL_SIZE; + + cgm_vcons(&pos, p->cx * celld, p->height, p->cy * celld); + cgm_vadd(&pos, &p->cpos); + + cgm_midentity(p->view_xform); + cgm_mprerotate_x(p->view_xform, -p->phi); + cgm_mprerotate_y(p->view_xform, -p->theta); + cgm_mrotate_quat(p->view_xform, &p->vrot); + cgm_mpretranslate(p->view_xform, -pos.x, -pos.y, -pos.z); +}