Some refactor again

This commit is contained in:
MihailRis 2022-06-29 17:47:40 +03:00 committed by GitHub
parent e8ca11894d
commit ffc39fccaf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 23 deletions

View File

@ -54,6 +54,8 @@ using namespace glm;
#include "player_control.h" #include "player_control.h"
float gravity = 19.6f;
int WIDTH = 1280; int WIDTH = 1280;
int HEIGHT = 720; int HEIGHT = 720;
@ -71,9 +73,11 @@ void write_world(World* world, Level* level){
} }
wfile->write(); wfile->write();
world->wfile->writePlayer(level->player);
} }
void update_level(World* world, Level* level, VoxelRenderer* renderer, vec3 position, float delta, long frame){ void update_level(World* world, Level* level, vec3 position, float delta, long frame){
update_controls(level->physics, level->chunks, level->player, delta); update_controls(level->physics, level->chunks, level->player, delta);
update_interaction(level, lineBatch); update_interaction(level, lineBatch);
@ -85,52 +89,60 @@ void update_level(World* world, Level* level, VoxelRenderer* renderer, vec3 posi
level->chunksController->loadVisible(world->wfile); level->chunksController->loadVisible(world->wfile);
} }
Level* load_level(World* world, Player* player) {
Level* level = new Level(player, new Chunks(34,1,34, 0,0,0), new PhysicsSolver(vec3(0, -gravity, 0)));
world->wfile->readPlayer(player);
int main() { Camera* camera = player->camera;
setup_definitions(); camera->rotation = mat4(1.0f);
camera->rotate(player->camY, player->camX, 0);
return level;
}
int initialize(Assets*& assets){
Audio::initialize(); Audio::initialize();
Window::initialize(WIDTH, HEIGHT, "Window 2.0"); Window::initialize(WIDTH, HEIGHT, "Window 2.0");
Events::initialize(); Events::initialize();
assets = new Assets();
std::cout << "-- loading assets" << std::endl; std::cout << "-- loading assets" << std::endl;
Assets* assets = new Assets();
int result = initialize_assets(assets); int result = initialize_assets(assets);
if (result){ if (result){
delete assets; delete assets;
Window::terminate(); Window::terminate();
return result; return result;
} }
return 0;
}
int main() {
setup_definitions();
Assets* assets;
int status = initialize(assets);
if (status) return status;
std::cout << "-- loading world" << std::endl; std::cout << "-- loading world" << std::endl;
vec3 playerPosition = vec3(-320,200,32);
Camera* camera = new Camera(vec3(-320,200,32), radians(90.0f)); Camera* camera = new Camera(playerPosition, radians(90.0f));
World* world = new World("world-1", "world/"); World* world = new World("world-1", "world/");
Player* player = new Player(vec3(camera->position), 4.0f, camera); Player* player = new Player(playerPosition, 4.0f, camera);
Level* level = new Level(player, new Chunks(34,1,34, 0,0,0), new PhysicsSolver(vec3(0, -9.8f*2.0f, 0))); Level* level = load_level(world, player);
world->wfile->readPlayer(player);
camera->rotation = mat4(1.0f);
camera->rotate(player->camY, player->camX, 0);
std::cout << "-- preparing systems" << std::endl; std::cout << "-- preparing systems" << std::endl;
VoxelRenderer renderer(1024*1024);
init_renderer(); init_renderer();
float lastTime = glfwGetTime(); float lastTime = glfwGetTime();
float delta = 0.0f; float delta = 0.0f;
long frame = 0; long frame = 0;
bool occlusion = false; bool occlusion = false;
bool devdata = false; bool devdata = false;
glfwSwapInterval(0); glfwSwapInterval(0);
std::cout << "-- initializing finished" << std::endl; std::cout << "-- initializing finished" << std::endl;
while (!Window::isShouldClose()){ while (!Window::isShouldClose()){
frame++; frame++;
float currentTime = glfwGetTime(); float currentTime = glfwGetTime();
@ -145,7 +157,7 @@ int main() {
devdata = !devdata; devdata = !devdata;
} }
update_level(world, level, &renderer, camera->position, delta, frame); update_level(world, level, camera->position, delta, frame);
draw_world(world, level, camera, assets, occlusion); draw_world(world, level, camera, assets, occlusion);
draw_hud(world, level, assets, devdata, fps); draw_hud(world, level, assets, devdata, fps);
@ -153,13 +165,10 @@ int main() {
Events::pullEvents(); Events::pullEvents();
} }
std::cout << "-- saving world" << std::endl; std::cout << "-- saving world" << std::endl;
world->wfile->writePlayer(player);
write_world(world, level); write_world(world, level);
delete world; delete world;
std::cout << "-- shutting down" << std::endl; std::cout << "-- shutting down" << std::endl;
delete assets; delete assets;
finalize_renderer(); finalize_renderer();
Audio::finalize(); Audio::finalize();

View File

@ -46,6 +46,7 @@ int uiscale = 2;
LineBatch *lineBatch; LineBatch *lineBatch;
Batch2D *batch; Batch2D *batch;
Camera *uicamera; Camera *uicamera;
VoxelRenderer *renderer;
void init_renderer(){ void init_renderer(){
crosshair = new Mesh(vertices, 4, attrs); crosshair = new Mesh(vertices, 4, attrs);
@ -55,6 +56,8 @@ void init_renderer(){
uicamera = new Camera(glm::vec3(), Window::height / uiscale); uicamera = new Camera(glm::vec3(), Window::height / uiscale);
uicamera->perspective = false; uicamera->perspective = false;
uicamera->flipped = true; uicamera->flipped = true;
renderer = new VoxelRenderer(1024*1024);
} }
@ -62,6 +65,7 @@ void finalize_renderer(){
delete crosshair; delete crosshair;
delete lineBatch; delete lineBatch;
delete batch; delete batch;
delete renderer;
} }
void draw_chunk(size_t index, Camera* camera, Shader* shader, bool occlusion){ void draw_chunk(size_t index, Camera* camera, Shader* shader, bool occlusion){