Spremenil da drevo narise cez par framov da ni lega

This commit is contained in:
Nikola Petrov 2024-12-29 16:44:24 +01:00
parent ba0eecf0b7
commit e42cd89337
7 changed files with 24 additions and 3 deletions

View File

@ -1,6 +1,5 @@
#define EXT_LINK #define EXT_LINK
#define EXT_INC #define EXT_INC
#define Wextra
#include "build.hpp" #include "build.hpp"
#include <unordered_set> #include <unordered_set>

View File

@ -11,6 +11,7 @@ public:
void init(int size); void init(int size);
void deinit(); void deinit();
void newGen(RenderTexture2D &target, Dna *dna); void newGen(RenderTexture2D &target, Dna *dna);
bool tick(RenderTexture2D &target);
private: private:
BackGround backGround; BackGround backGround;

View File

@ -21,6 +21,7 @@ public:
~Tree() = default; ~Tree() = default;
void init(int size); void init(int size);
void draw(Dna *dna); void draw(Dna *dna);
bool tick();
private: private:
Dna *m_dna; Dna *m_dna;

View File

@ -6,7 +6,7 @@
#include <raylib.h> #include <raylib.h>
#define MAX_DEPTH 11 #define MAX_DEPTH 10
struct uint128 struct uint128
{ {

View File

@ -30,7 +30,8 @@ void App::init(int screenWidth, int screenHeight)
void App::update() void App::update()
{ {
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) bool isDone = canvas.tick(canvasTexure);
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && isDone)
{ {
Vector2 mouse = GetMousePosition(); Vector2 mouse = GetMousePosition();
if (CheckCollisionPointRec(mouse, disLikeBox)) if (CheckCollisionPointRec(mouse, disLikeBox))

View File

@ -19,6 +19,14 @@ void Canvas::newGen(RenderTexture2D &target, Dna *dna)
EndTextureMode(); EndTextureMode();
} }
bool Canvas::tick(RenderTexture2D &target)
{
BeginTextureMode(target);
bool ret = tree.tick();
EndTextureMode();
return ret;
}
void Canvas::deinit() void Canvas::deinit()
{ {
backGround.deinit(); backGround.deinit();

View File

@ -7,6 +7,8 @@
#include <raylib.h> #include <raylib.h>
#include <raymath.h> #include <raymath.h>
#define ITER_PER_FRAME 5000
// Public // Public
void Tree::init(int size) void Tree::init(int size)
{ {
@ -21,12 +23,21 @@ void Tree::draw(Dna *dna)
m_dna = dna; m_dna = dna;
draw_calls.push_back({start, 0, (float)size / 4, 1}); draw_calls.push_back({start, 0, (float)size / 4, 1});
}
bool Tree::tick()
{
size_t i = 0;
while (!draw_calls.empty()) while (!draw_calls.empty())
{ {
drawBranch(); drawBranch();
draw_calls.pop_front(); draw_calls.pop_front();
i++;
if (i >= ITER_PER_FRAME)
break;
} }
return draw_calls.empty();
} }
// Private // Private