improve sw renderer
This commit is contained in:
parent
415d424057
commit
39ee0fefb7
89 changed files with 9380 additions and 2307 deletions
|
|
@ -1,4 +1,5 @@
|
|||
#include "pxl8_net.h"
|
||||
#include "pxl8_mem.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
|
@ -94,7 +95,7 @@ bool pxl8_net_connected(const pxl8_net* net) {
|
|||
}
|
||||
|
||||
pxl8_net* pxl8_net_create(const pxl8_net_config* config) {
|
||||
pxl8_net* net = calloc(1, sizeof(pxl8_net));
|
||||
pxl8_net* net = pxl8_calloc(1, sizeof(pxl8_net));
|
||||
if (!net) return NULL;
|
||||
|
||||
net->mode = config->mode;
|
||||
|
|
@ -116,7 +117,7 @@ pxl8_net* pxl8_net_create(const pxl8_net_config* config) {
|
|||
void pxl8_net_destroy(pxl8_net* net) {
|
||||
if (!net) return;
|
||||
pxl8_net_disconnect(net);
|
||||
free(net);
|
||||
pxl8_free(net);
|
||||
}
|
||||
|
||||
void pxl8_net_disconnect(pxl8_net* net) {
|
||||
|
|
@ -203,11 +204,11 @@ u64 pxl8_net_player_id(const pxl8_net* net) {
|
|||
bool pxl8_net_poll(pxl8_net* net) {
|
||||
if (!net || !net->connected) return false;
|
||||
|
||||
size_t len = pxl8_net_recv(net, net->recv_buf, sizeof(net->recv_buf));
|
||||
usize len = pxl8_net_recv(net, net->recv_buf, sizeof(net->recv_buf));
|
||||
if (len < sizeof(pxl8_msg_header)) return false;
|
||||
|
||||
pxl8_msg_header hdr;
|
||||
size_t offset = pxl8_protocol_deserialize_header(net->recv_buf, len, &hdr);
|
||||
usize offset = pxl8_protocol_deserialize_header(net->recv_buf, len, &hdr);
|
||||
if (hdr.type != PXL8_MSG_SNAPSHOT) return false;
|
||||
|
||||
pxl8_snapshot_header snap;
|
||||
|
|
@ -243,17 +244,17 @@ void pxl8_net_predicted_tick_set(pxl8_net* net, u64 tick) {
|
|||
net->predicted_tick = tick;
|
||||
}
|
||||
|
||||
size_t pxl8_net_recv(pxl8_net* net, u8* buf, size_t len) {
|
||||
usize pxl8_net_recv(pxl8_net* net, u8* buf, usize len) {
|
||||
if (!net || !net->connected) return 0;
|
||||
|
||||
struct sockaddr_in from;
|
||||
socklen_t from_len = sizeof(from);
|
||||
ssize_t received = recvfrom(net->sock, (char*)buf, len, 0,
|
||||
(struct sockaddr*)&from, &from_len);
|
||||
return (received > 0) ? (size_t)received : 0;
|
||||
return (received > 0) ? (usize)received : 0;
|
||||
}
|
||||
|
||||
pxl8_result pxl8_net_send(pxl8_net* net, const u8* data, size_t len) {
|
||||
pxl8_result pxl8_net_send(pxl8_net* net, const u8* data, usize len) {
|
||||
if (!net || !net->connected) return PXL8_ERROR_INVALID_ARGUMENT;
|
||||
|
||||
ssize_t sent = sendto(net->sock, (const char*)data, len, 0,
|
||||
|
|
@ -273,7 +274,7 @@ pxl8_result pxl8_net_send_command(pxl8_net* net, const pxl8_command_msg* cmd) {
|
|||
.sequence = 0
|
||||
};
|
||||
|
||||
size_t offset = pxl8_protocol_serialize_header(&hdr, buf, sizeof(buf));
|
||||
usize offset = pxl8_protocol_serialize_header(&hdr, buf, sizeof(buf));
|
||||
offset += pxl8_protocol_serialize_command(cmd, buf + offset, sizeof(buf) - offset);
|
||||
|
||||
return pxl8_net_send(net, buf, offset);
|
||||
|
|
@ -290,7 +291,7 @@ pxl8_result pxl8_net_send_input(pxl8_net* net, const pxl8_input_msg* input) {
|
|||
.sequence = 0
|
||||
};
|
||||
|
||||
size_t offset = pxl8_protocol_serialize_header(&hdr, buf, sizeof(buf));
|
||||
usize offset = pxl8_protocol_serialize_header(&hdr, buf, sizeof(buf));
|
||||
offset += pxl8_protocol_serialize_input(input, buf + offset, sizeof(buf) - offset);
|
||||
|
||||
return pxl8_net_send(net, buf, offset);
|
||||
|
|
|
|||
|
|
@ -41,8 +41,8 @@ u64 pxl8_net_player_id(const pxl8_net* net);
|
|||
bool pxl8_net_poll(pxl8_net* net);
|
||||
u8* pxl8_net_predicted_state(pxl8_net* net);
|
||||
void pxl8_net_predicted_tick_set(pxl8_net* net, u64 tick);
|
||||
size_t pxl8_net_recv(pxl8_net* net, u8* buf, size_t len);
|
||||
pxl8_result pxl8_net_send(pxl8_net* net, const u8* data, size_t len);
|
||||
usize pxl8_net_recv(pxl8_net* net, u8* buf, usize len);
|
||||
pxl8_result pxl8_net_send(pxl8_net* net, const u8* data, usize len);
|
||||
pxl8_result pxl8_net_send_command(pxl8_net* net, const pxl8_command_msg* cmd);
|
||||
pxl8_result pxl8_net_send_input(pxl8_net* net, const pxl8_input_msg* input);
|
||||
const pxl8_snapshot_header* pxl8_net_snapshot(const pxl8_net* net);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include "pxl8_protocol.h"
|
||||
#include "pxl8_bytes.h"
|
||||
|
||||
size_t pxl8_protocol_serialize_header(const pxl8_msg_header* msg, u8* buf, size_t len) {
|
||||
usize pxl8_protocol_serialize_header(const pxl8_msg_header* msg, u8* buf, usize len) {
|
||||
if (len < sizeof(pxl8_msg_header)) return 0;
|
||||
pxl8_write_stream s = pxl8_write_stream_create(buf, (u32)len);
|
||||
pxl8_write_u32_be(&s, msg->sequence);
|
||||
|
|
@ -11,7 +11,7 @@ size_t pxl8_protocol_serialize_header(const pxl8_msg_header* msg, u8* buf, size_
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_deserialize_header(const u8* buf, size_t len, pxl8_msg_header* msg) {
|
||||
usize pxl8_protocol_deserialize_header(const u8* buf, usize len, pxl8_msg_header* msg) {
|
||||
if (len < sizeof(pxl8_msg_header)) return 0;
|
||||
pxl8_stream s = pxl8_stream_create(buf, (u32)len);
|
||||
msg->sequence = pxl8_read_u32_be(&s);
|
||||
|
|
@ -21,7 +21,7 @@ size_t pxl8_protocol_deserialize_header(const u8* buf, size_t len, pxl8_msg_head
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_serialize_input(const pxl8_input_msg* msg, u8* buf, size_t len) {
|
||||
usize pxl8_protocol_serialize_input(const pxl8_input_msg* msg, u8* buf, usize len) {
|
||||
if (len < sizeof(pxl8_input_msg)) return 0;
|
||||
pxl8_write_stream s = pxl8_write_stream_create(buf, (u32)len);
|
||||
pxl8_write_u32_be(&s, msg->buttons);
|
||||
|
|
@ -35,7 +35,7 @@ size_t pxl8_protocol_serialize_input(const pxl8_input_msg* msg, u8* buf, size_t
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_deserialize_input(const u8* buf, size_t len, pxl8_input_msg* msg) {
|
||||
usize pxl8_protocol_deserialize_input(const u8* buf, usize len, pxl8_input_msg* msg) {
|
||||
if (len < sizeof(pxl8_input_msg)) return 0;
|
||||
pxl8_stream s = pxl8_stream_create(buf, (u32)len);
|
||||
msg->buttons = pxl8_read_u32_be(&s);
|
||||
|
|
@ -49,7 +49,7 @@ size_t pxl8_protocol_deserialize_input(const u8* buf, size_t len, pxl8_input_msg
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_serialize_command(const pxl8_command_msg* msg, u8* buf, size_t len) {
|
||||
usize pxl8_protocol_serialize_command(const pxl8_command_msg* msg, u8* buf, usize len) {
|
||||
if (len < sizeof(pxl8_command_msg)) return 0;
|
||||
pxl8_write_stream s = pxl8_write_stream_create(buf, (u32)len);
|
||||
pxl8_write_u16_be(&s, msg->cmd_type);
|
||||
|
|
@ -59,7 +59,7 @@ size_t pxl8_protocol_serialize_command(const pxl8_command_msg* msg, u8* buf, siz
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_deserialize_command(const u8* buf, size_t len, pxl8_command_msg* msg) {
|
||||
usize pxl8_protocol_deserialize_command(const u8* buf, usize len, pxl8_command_msg* msg) {
|
||||
if (len < sizeof(pxl8_command_msg)) return 0;
|
||||
pxl8_stream s = pxl8_stream_create(buf, (u32)len);
|
||||
msg->cmd_type = pxl8_read_u16_be(&s);
|
||||
|
|
@ -69,7 +69,7 @@ size_t pxl8_protocol_deserialize_command(const u8* buf, size_t len, pxl8_command
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_serialize_entity_state(const pxl8_entity_state* state, u8* buf, size_t len) {
|
||||
usize pxl8_protocol_serialize_entity_state(const pxl8_entity_state* state, u8* buf, usize len) {
|
||||
if (len < sizeof(pxl8_entity_state)) return 0;
|
||||
pxl8_write_stream s = pxl8_write_stream_create(buf, (u32)len);
|
||||
pxl8_write_u64_be(&s, state->entity_id);
|
||||
|
|
@ -77,7 +77,7 @@ size_t pxl8_protocol_serialize_entity_state(const pxl8_entity_state* state, u8*
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_deserialize_entity_state(const u8* buf, size_t len, pxl8_entity_state* state) {
|
||||
usize pxl8_protocol_deserialize_entity_state(const u8* buf, usize len, pxl8_entity_state* state) {
|
||||
if (len < sizeof(pxl8_entity_state)) return 0;
|
||||
pxl8_stream s = pxl8_stream_create(buf, (u32)len);
|
||||
state->entity_id = pxl8_read_u64_be(&s);
|
||||
|
|
@ -85,7 +85,7 @@ size_t pxl8_protocol_deserialize_entity_state(const u8* buf, size_t len, pxl8_en
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_serialize_event(const pxl8_event_msg* msg, u8* buf, size_t len) {
|
||||
usize pxl8_protocol_serialize_event(const pxl8_event_msg* msg, u8* buf, usize len) {
|
||||
if (len < sizeof(pxl8_event_msg)) return 0;
|
||||
pxl8_write_stream s = pxl8_write_stream_create(buf, (u32)len);
|
||||
pxl8_write_u8(&s, msg->event_type);
|
||||
|
|
@ -93,7 +93,7 @@ size_t pxl8_protocol_serialize_event(const pxl8_event_msg* msg, u8* buf, size_t
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_deserialize_event(const u8* buf, size_t len, pxl8_event_msg* msg) {
|
||||
usize pxl8_protocol_deserialize_event(const u8* buf, usize len, pxl8_event_msg* msg) {
|
||||
if (len < sizeof(pxl8_event_msg)) return 0;
|
||||
pxl8_stream s = pxl8_stream_create(buf, (u32)len);
|
||||
msg->event_type = pxl8_read_u8(&s);
|
||||
|
|
@ -101,7 +101,7 @@ size_t pxl8_protocol_deserialize_event(const u8* buf, size_t len, pxl8_event_msg
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_serialize_snapshot_header(const pxl8_snapshot_header* hdr, u8* buf, size_t len) {
|
||||
usize pxl8_protocol_serialize_snapshot_header(const pxl8_snapshot_header* hdr, u8* buf, usize len) {
|
||||
if (len < sizeof(pxl8_snapshot_header)) return 0;
|
||||
pxl8_write_stream s = pxl8_write_stream_create(buf, (u32)len);
|
||||
pxl8_write_u16_be(&s, hdr->entity_count);
|
||||
|
|
@ -112,7 +112,7 @@ size_t pxl8_protocol_serialize_snapshot_header(const pxl8_snapshot_header* hdr,
|
|||
return s.offset;
|
||||
}
|
||||
|
||||
size_t pxl8_protocol_deserialize_snapshot_header(const u8* buf, size_t len, pxl8_snapshot_header* hdr) {
|
||||
usize pxl8_protocol_deserialize_snapshot_header(const u8* buf, usize len, pxl8_snapshot_header* hdr) {
|
||||
if (len < sizeof(pxl8_snapshot_header)) return 0;
|
||||
pxl8_stream s = pxl8_stream_create(buf, (u32)len);
|
||||
hdr->entity_count = pxl8_read_u16_be(&s);
|
||||
|
|
|
|||
|
|
@ -70,23 +70,23 @@ typedef struct pxl8_snapshot_header {
|
|||
f32 time;
|
||||
} pxl8_snapshot_header;
|
||||
|
||||
size_t pxl8_protocol_serialize_header(const pxl8_msg_header* msg, u8* buf, size_t len);
|
||||
size_t pxl8_protocol_deserialize_header(const u8* buf, size_t len, pxl8_msg_header* msg);
|
||||
usize pxl8_protocol_serialize_header(const pxl8_msg_header* msg, u8* buf, usize len);
|
||||
usize pxl8_protocol_deserialize_header(const u8* buf, usize len, pxl8_msg_header* msg);
|
||||
|
||||
size_t pxl8_protocol_serialize_input(const pxl8_input_msg* msg, u8* buf, size_t len);
|
||||
size_t pxl8_protocol_deserialize_input(const u8* buf, size_t len, pxl8_input_msg* msg);
|
||||
usize pxl8_protocol_serialize_input(const pxl8_input_msg* msg, u8* buf, usize len);
|
||||
usize pxl8_protocol_deserialize_input(const u8* buf, usize len, pxl8_input_msg* msg);
|
||||
|
||||
size_t pxl8_protocol_serialize_command(const pxl8_command_msg* msg, u8* buf, size_t len);
|
||||
size_t pxl8_protocol_deserialize_command(const u8* buf, size_t len, pxl8_command_msg* msg);
|
||||
usize pxl8_protocol_serialize_command(const pxl8_command_msg* msg, u8* buf, usize len);
|
||||
usize pxl8_protocol_deserialize_command(const u8* buf, usize len, pxl8_command_msg* msg);
|
||||
|
||||
size_t pxl8_protocol_serialize_entity_state(const pxl8_entity_state* state, u8* buf, size_t len);
|
||||
size_t pxl8_protocol_deserialize_entity_state(const u8* buf, size_t len, pxl8_entity_state* state);
|
||||
usize pxl8_protocol_serialize_entity_state(const pxl8_entity_state* state, u8* buf, usize len);
|
||||
usize pxl8_protocol_deserialize_entity_state(const u8* buf, usize len, pxl8_entity_state* state);
|
||||
|
||||
size_t pxl8_protocol_serialize_event(const pxl8_event_msg* msg, u8* buf, size_t len);
|
||||
size_t pxl8_protocol_deserialize_event(const u8* buf, size_t len, pxl8_event_msg* msg);
|
||||
usize pxl8_protocol_serialize_event(const pxl8_event_msg* msg, u8* buf, usize len);
|
||||
usize pxl8_protocol_deserialize_event(const u8* buf, usize len, pxl8_event_msg* msg);
|
||||
|
||||
size_t pxl8_protocol_serialize_snapshot_header(const pxl8_snapshot_header* hdr, u8* buf, size_t len);
|
||||
size_t pxl8_protocol_deserialize_snapshot_header(const u8* buf, size_t len, pxl8_snapshot_header* hdr);
|
||||
usize pxl8_protocol_serialize_snapshot_header(const pxl8_snapshot_header* hdr, u8* buf, usize len);
|
||||
usize pxl8_protocol_deserialize_snapshot_header(const u8* buf, usize len, pxl8_snapshot_header* hdr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue