Skip to content

Commit

Permalink
memory fixwes
Browse files Browse the repository at this point in the history
  • Loading branch information
Kade-github committed Apr 25, 2024
1 parent 020a14c commit 77d3cf0
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 13 deletions.
11 changes: 10 additions & 1 deletion src/Game/Objects/Base/Chunk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -930,6 +930,9 @@ void Chunk::SetShadowBuffer()

void Chunk::Init()
{
if (inited)
return;
inited = true;
right = WorldManager::instance->GetChunk(position.x + CHUNK_SIZE, position.z);
left = WorldManager::instance->GetChunk(position.x - CHUNK_SIZE, position.z);
front = WorldManager::instance->GetChunk(position.x, position.z + CHUNK_SIZE);
Expand Down Expand Up @@ -959,11 +962,17 @@ void Chunk::Destroy()
glDeleteVertexArrays(1, &SHADOWVAO);
glDeleteBuffers(1, &SHADOWVBO);
glDeleteBuffers(1, &SHADOWEBO);

glDeleteVertexArrays(1, &TRANSPARENTVAO);
glDeleteBuffers(1, &TRANSPARENTVBO);
glDeleteBuffers(1, &TRANSPARENTEBO);

inited = false;
}

void Chunk::Unload()
{
DestroySubChunks();
Destroy();

vertices.clear();
indices.clear();
Expand Down
7 changes: 4 additions & 3 deletions src/Game/Objects/Base/Chunk.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,15 @@ class Chunk : public GameObject
std::vector<GameObject::VVertex> shadowVertices;
std::vector<unsigned int> shadowIndices;

void CreateFaces(Block* b);
void CreateFaces(std::shared_ptr<Block> b);

void ApplyNormal(std::vector<GameObject::VVertex>& vertices, glm::vec3 normal);
bool keepUpdating = false;

int shadowSize = 0;
int size = 0;
public:
bool inited = false;
bool isBeingLoaded = false;
bool isShadowLoaded = false;

Expand Down Expand Up @@ -90,7 +91,7 @@ class Chunk : public GameObject

void ModifyBlock(float x, float y, float z, int id);

void PlaceBlock(float x, float y, float z, std::shared_ptr<Block>b);
void PlaceBlock(float x, float y, float z, std::shared_ptr<Block> b);

void RenderSubChunk(std::shared_ptr<subChunk> c);
void RenderSubChunks();
Expand All @@ -112,7 +113,7 @@ class Chunk : public GameObject
void SetShadowBuffer();

void Init();
void Destroy();
void Destroy() override;

void Unload();

Expand Down
7 changes: 2 additions & 5 deletions src/Game/Scenes/Gameplay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ void Gameplay::QueueLoad(Chunk* c)

loadPool.detach_task([c]()
{

c->CreateSubChunks();

c->RenderSubChunks();
Expand Down Expand Up @@ -488,14 +489,10 @@ void Gameplay::UpdateChunks()

if (distance < camera->cameraFar)
{
if (c->id < 0)
{
c->id = 1;
c->Init();
}

if (!c->isLoaded)
{
c->Init();
QueueLoad(c);
return;
}
Expand Down
8 changes: 4 additions & 4 deletions src/Game/Scenes/SettingsMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ void SettingsMenu::Create()

c2d->AddObject(fov);

float renderDistancePerc = Settings::instance->renderDistance / 1.0f;
float renderDistancePerc = Settings::instance->renderDistance;

if (renderDistancePerc < 0.1f)
renderDistancePerc = 0.1f;
Expand All @@ -74,7 +74,7 @@ void SettingsMenu::Create()

c2d->AddObject(renderDistance);

float fogDistancePerc = Settings::instance->fogDistance / 2.0f;
float fogDistancePerc = Settings::instance->fogDistance;

if (fogDistancePerc < 0.1f)
fogDistancePerc = 0.1f;
Expand Down Expand Up @@ -122,9 +122,9 @@ void SettingsMenu::Draw()
else
back->selected = false;

Settings::instance->fov = fov->value * 140;
Settings::instance->fov = fov->value * 140.0f;
Settings::instance->renderDistance = renderDistance->value * 2.0f;
Settings::instance->fogDistance = fogDistance->value * 1.2f;
Settings::instance->fogDistance = fogDistance->value * 2.0f;

Scene::Draw();
}
Expand Down

0 comments on commit 77d3cf0

Please sign in to comment.