Started editor functionality by adding region adding key

main
noah metz 2024-11-09 22:21:26 -07:00
parent 49bb931247
commit a4300a78b1
1 changed files with 35 additions and 34 deletions

@ -1,9 +1,6 @@
#include "GLFW/glfw3.h"
#define CGLM_PRINT_PRECISION 10
#define CGLM_DEFINE_PRINTS 1
#include "cglm/cam.h"
#include "cglm/mat4.h"
#include "cglm/io.h"
#include "ui.h"
#include "gpu.h"
#include "draw.h"
@ -53,6 +50,35 @@ void* network_thread(void* data) {
return NULL;
}
VkResult add_hex_region(ClientContext* context) {
VkResult result;
HexRegion* region;
VK_RESULT(allocate_hex_region(0, 0, 0, context->hex->data.current_map, &region, context->hex, context->render));
for(uint32_t hex = 0; hex < REGION_HEX_COUNT; hex++) {
region->data.hexes[hex].color[0] = 0xFFFFFFFF;
region->data.hexes[hex].color[1] = 0xFFFFFFFF;
region->data.hexes[hex].color[2] = 0xFFFFFFFF;
region->data.hexes[hex].color[3] = 0xFFFFFFFF;
region->data.hexes[hex].color[4] = 0xFFFFFFFF;
region->data.hexes[hex].color[5] = 0xFFFFFFFF;
region->data.hexes[hex].color[6] = 0xFFFFFFFF;
region->data.hexes[hex].height[0] = 0;
region->data.hexes[hex].height[1] = 0;
region->data.hexes[hex].height[2] = 0;
region->data.hexes[hex].height[3] = 0;
region->data.hexes[hex].height[4] = 0;
region->data.hexes[hex].height[5] = 0;
}
VK_RESULT(set_hex_region(region, context->hex, context->render));
return VK_SUCCESS;
}
VkResult main_thread(ClientContext* context) {
VkResult result;
@ -87,37 +113,6 @@ VkResult main_thread(ClientContext* context) {
create_container(&container, context->render, context->ui);
HexRegion* regions[MAX_LOADED_REGIONS];
uint32_t colors[] = {
0xFF0000FF,
0x00FF00FF,
0x0000FFFF,
};
context->hex->data.current_map = 0x01;
VK_RESULT(add_transfers(
&context->hex->data.current_map,
context->hex->context,
offsetof(GPUHexContext, current_map),
sizeof(uint32_t),
context->render));
uint32_t region = 0;
for(int32_t q = -5; q < 5; q++) {
for(int32_t r = -5; r < 5; r++) {
VK_RESULT(allocate_hex_region(q, r, 0, 0x01, &regions[region], context->hex, context->render));
for(uint32_t i = 0; i < REGION_HEX_COUNT; i++) {
for(uint32_t h = 0; h < 6; h++) {
regions[region]->data.hexes[i].color[h] = colors[(q+r+50) % (sizeof(colors)/sizeof(uint32_t))];
regions[region]->data.hexes[i].height[h] = (float)i/REGION_HEX_COUNT;
}
regions[region]->data.hexes[i].color[6] = colors[(q+r+50) % (sizeof(colors)/sizeof(uint32_t))];
}
VK_RESULT(set_hex_region(regions[region], context->hex, context->render));
region++;
}
}
//
int frame = 0;
double last_frame_time = 0;
@ -275,6 +270,12 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod
context->velocity[1] -= 1;
}
break;
case GLFW_KEY_EQUAL:
if(action == GLFW_RELEASE) {
add_hex_region(context);
}
break;
}
}