Add compat layer for v2 demos
parent
56b7b30684
commit
8b437d53cd
|
@ -20,6 +20,8 @@ typedef struct {
|
||||||
uint64_t delay;
|
uint64_t delay;
|
||||||
} replay_record;
|
} replay_record;
|
||||||
|
|
||||||
|
#include "debug_replay_compat_v2.c"
|
||||||
|
|
||||||
static uint8_t is_recording = false;
|
static uint8_t is_recording = false;
|
||||||
static replay_record *records = NULL;
|
static replay_record *records = NULL;
|
||||||
static uint64_t last_record_time = 0.0f;
|
static uint64_t last_record_time = 0.0f;
|
||||||
|
@ -32,7 +34,7 @@ static ecs_entity_t plr = 0;
|
||||||
static ecs_entity_t *temp_actors = NULL;
|
static ecs_entity_t *temp_actors = NULL;
|
||||||
|
|
||||||
#define REPLAY_MAGIC 0x421DC97E
|
#define REPLAY_MAGIC 0x421DC97E
|
||||||
#define REPLAY_VERSION 2
|
#define REPLAY_VERSION 3
|
||||||
|
|
||||||
static char replay_filename[1024] = {0};
|
static char replay_filename[1024] = {0};
|
||||||
static char replaybuf[sizeof(replay_record)*UINT16_MAX + 32];
|
static char replaybuf[sizeof(replay_record)*UINT16_MAX + 32];
|
||||||
|
@ -75,7 +77,11 @@ void debug_replay_load(void) {
|
||||||
ZPL_ASSERT(uc.item.type == CWP_ITEM_POSITIVE_INTEGER && uc.item.as.u64 == REPLAY_MAGIC);
|
ZPL_ASSERT(uc.item.type == CWP_ITEM_POSITIVE_INTEGER && uc.item.as.u64 == REPLAY_MAGIC);
|
||||||
|
|
||||||
cw_unpack_next(&uc);
|
cw_unpack_next(&uc);
|
||||||
ZPL_ASSERT(uc.item.type == CWP_ITEM_POSITIVE_INTEGER && uc.item.as.u64 == REPLAY_VERSION);
|
ZPL_ASSERT(uc.item.type == CWP_ITEM_POSITIVE_INTEGER);
|
||||||
|
|
||||||
|
uint64_t version = uc.item.as.u64;
|
||||||
|
|
||||||
|
ZPL_ASSERT(version >= 2);
|
||||||
|
|
||||||
cw_unpack_next(&uc);
|
cw_unpack_next(&uc);
|
||||||
ZPL_ASSERT(uc.item.type == CWP_ITEM_ARRAY);
|
ZPL_ASSERT(uc.item.type == CWP_ITEM_ARRAY);
|
||||||
|
@ -86,9 +92,17 @@ void debug_replay_load(void) {
|
||||||
for (size_t i = 0; i < items; i++) {
|
for (size_t i = 0; i < items; i++) {
|
||||||
cw_unpack_next(&uc);
|
cw_unpack_next(&uc);
|
||||||
ZPL_ASSERT(uc.item.type == CWP_ITEM_BIN);
|
ZPL_ASSERT(uc.item.type == CWP_ITEM_BIN);
|
||||||
|
|
||||||
replay_record rec = {0};
|
replay_record rec = {0};
|
||||||
|
|
||||||
|
switch (version) {
|
||||||
|
case 2:{
|
||||||
|
debug_replay_load_record_v2(&rec, uc.item.as.bin.start);
|
||||||
|
}break;
|
||||||
|
|
||||||
|
default:{
|
||||||
zpl_memcopy(&rec, uc.item.as.bin.start, sizeof(replay_record));
|
zpl_memcopy(&rec, uc.item.as.bin.start, sizeof(replay_record));
|
||||||
|
}break;
|
||||||
|
}
|
||||||
zpl_array_append(records, rec);
|
zpl_array_append(records, rec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
typedef struct {
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
uint8_t use;
|
||||||
|
uint8_t sprint;
|
||||||
|
} pkt_send_keystate_v2;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
replay_kind kind;
|
||||||
|
pkt_send_keystate_v2 pkt;
|
||||||
|
uint64_t delay;
|
||||||
|
} replay_record_v2;
|
||||||
|
|
||||||
|
void debug_replay_load_record_v2(replay_record *rec, void const *buf) {
|
||||||
|
replay_record_v2 v2_rec;
|
||||||
|
zpl_memcopy(&v2_rec, buf, sizeof(replay_record_v2));
|
||||||
|
|
||||||
|
pkt_send_keystate pkt = {
|
||||||
|
.x = v2_rec.pkt.x,
|
||||||
|
.y = v2_rec.pkt.y,
|
||||||
|
.sprint = v2_rec.pkt.sprint,
|
||||||
|
.use = v2_rec.pkt.use,
|
||||||
|
};
|
||||||
|
|
||||||
|
rec->kind = v2_rec.kind;
|
||||||
|
rec->pkt = pkt;
|
||||||
|
rec->delay = v2_rec.delay;
|
||||||
|
}
|
|
@ -16,6 +16,7 @@ typedef struct {
|
||||||
uint8_t swap_from;
|
uint8_t swap_from;
|
||||||
uint8_t swap_to;
|
uint8_t swap_to;
|
||||||
} pkt_send_keystate;
|
} pkt_send_keystate;
|
||||||
|
|
||||||
size_t pkt_send_keystate_send(uint16_t view_id,
|
size_t pkt_send_keystate_send(uint16_t view_id,
|
||||||
float x,
|
float x,
|
||||||
float y,
|
float y,
|
||||||
|
|
|
@ -156,11 +156,19 @@ void VehicleHandling(ecs_iter_t *it) {
|
||||||
debug_v2 b2 = {p[i].x + zpl_cos(car->heading)*(car->wheel_base), p[i].y + zpl_sin(car->heading)*(car->wheel_base)};
|
debug_v2 b2 = {p[i].x + zpl_cos(car->heading)*(car->wheel_base), p[i].y + zpl_sin(car->heading)*(car->wheel_base)};
|
||||||
debug_push_line((debug_v2){p[i].x, p[i].y}, b2, 0x0000FFFF);
|
debug_push_line((debug_v2){p[i].x, p[i].y}, b2, 0x0000FFFF);
|
||||||
|
|
||||||
|
// NOTE(zaklaus): force
|
||||||
{
|
{
|
||||||
float dx = zpl_cos(car->heading);
|
float dx = zpl_cos(car->heading);
|
||||||
float dy = zpl_sin(car->heading);
|
float dy = zpl_sin(car->heading);
|
||||||
debug_push_circle((debug_v2){p[i].x+dx*car->force, p[i].y+dy*car->force}, 5.0f, 0x00FF00FF);
|
debug_push_circle((debug_v2){p[i].x+dx*car->force, p[i].y+dy*car->force}, 5.0f, 0x00FF00FF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE(zaklaus): steer
|
||||||
|
{
|
||||||
|
float dx = zpl_sin(car->heading);
|
||||||
|
float dy = -zpl_cos(car->heading);
|
||||||
|
debug_push_circle((debug_v2){p[i].x+dx*car->steer*-20, p[i].y+dy*car->steer*-20}, 5.0f, 0x00FFAAFF);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue