]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/client/client_player.h
Add items
[dragonblocks_alpha.git] / src / client / client_player.h
1 #ifndef _CLIENT_PLAYER_H_
2 #define _CLIENT_PLAYER_H_
3
4 #include <pthread.h>
5 #include "client/client_entity.h"
6 #include "types.h"
7
8 extern struct ClientPlayer {
9         v3f64 velocity; // velocity is changed and read from the same thread, no lock needed
10         ToClientMovement movement;
11         pthread_rwlock_t lock_movement;
12 } client_player;
13
14 typedef struct {
15         struct {
16                 ItemStack left;
17                 ItemStack right;
18         } inventory;
19         struct ClientPlayerBones {
20                 ModelNode *nametag;
21                 ModelNode *neck;
22                 ModelNode *eyes;
23                 ModelNode *arm_left;
24                 ModelNode *arm_right;
25                 ModelNode *hand_left;
26                 ModelNode *hand_right;
27                 ModelNode *leg_left;
28                 ModelNode *leg_right;
29         } bones;
30 } ClientPlayerData;
31
32 void client_player_init();                           // called on startup
33 void client_player_deinit();                         // called on shutdown
34
35 void client_player_gfx_init();
36 void client_player_gfx_deinit();
37
38 ClientEntity *client_player_entity(u64 id);         // grab and return client entity by id
39 ClientEntity *client_player_entity_local();         // grab and return local client entity
40
41 void client_player_jump();                           // jump if possible
42
43 void client_player_update_pos(ClientEntity *entity); // entity needs to be the client entity
44 void client_player_update_rot(ClientEntity *entity); // entity needs to be the client entity
45
46 void client_player_tick(f64 dtime);                  // to be called every frame
47
48 #endif // _CLIENT_PLAYER_H_