]> git.lizzy.rs Git - dragonblocks_alpha.git/blobdiff - src/client/client_entity.h
You can now see other players
[dragonblocks_alpha.git] / src / client / client_entity.h
index 05651c4daafd86a79afda8165652cffa56db6231..53125dbbfe9a7c3cc212d5b9b323498f23ec2b5e 100644 (file)
@@ -4,6 +4,7 @@
 #include <dragonnet/peer.h>
 #include <dragonstd/refcount.h>
 #include <pthread.h>
+#include "client/gui.h"
 #include "client/model.h"
 #include "entity.h"
 #include "types.h"
@@ -14,27 +15,42 @@ typedef struct {
        Refcount rc;
 
        Model *model;
+       GUIElement *nametag;
+       void *extra;
+
+       aabb3f32 box_collision;
+       aabb3f32 box_culling;   // ToDo
+       mat4x4 *nametag_offset;
 
        pthread_rwlock_t lock_pos_rot;
-       pthread_rwlock_t lock_box_eye;
        pthread_rwlock_t lock_nametag;
+       pthread_rwlock_t lock_box_off;
 } ClientEntity;
 
+// Entity is pronounced N-Tiddy, hmmmm...
+
 typedef struct ClientEntityType {
        void (*add   )(ClientEntity *entity); // called when server sent addition of entity
        void (*remove)(ClientEntity *entity); // called when server sent removal of entity
        void (*free  )(ClientEntity *entity); // called when entity is garbage collected
 
        void (*update_pos_rot)(ClientEntity *entity);
-       void (*update_box_eye)(ClientEntity *entity);
        void (*update_nametag)(ClientEntity *entity);
 
        void (*transform)(ClientEntity *entity);
 } ClientEntityType;
 
+extern ClientEntityType client_entity_types[];
+extern Mesh client_entity_cube;
+extern ModelShader client_entity_shader;
+
 void client_entity_init();
 void client_entity_deinit();
 
+bool client_entity_gfx_init();
+void client_entity_gfx_deinit();
+void client_entity_gfx_update();
+
 ClientEntity *client_entity_grab(u64 id);
 void client_entity_drop(ClientEntity *entity);
 
@@ -43,9 +59,6 @@ void client_entity_transform(ClientEntity *entity);
 void client_entity_add(DragonnetPeer *peer, ToClientEntityAdd *pkt);
 void client_entity_remove(DragonnetPeer *peer, ToClientEntityRemove *pkt);
 void client_entity_update_pos_rot(DragonnetPeer *peer, ToClientEntityUpdatePosRot *pkt);
-void client_entity_update_box_eye(DragonnetPeer *peer, ToClientEntityUpdateBoxEye *pkt);
 void client_entity_update_nametag(DragonnetPeer *peer, ToClientEntityUpdateNametag *pkt);
 
-extern ClientEntityType client_entity_types[];
-
 #endif // _CLIENT_ENTITY_H_