Add Canvas
Canvas contains the RenderTexture2D contains the Tree and now it's eazy to add more modules
This commit is contained in:
21
src/App.cpp
21
src/App.cpp
@@ -10,17 +10,20 @@ void App::init(int screenWidth, int screenHeight)
|
||||
{
|
||||
this->screenWidth = screenWidth;
|
||||
this->screenHeight = screenHeight;
|
||||
trees.emplace_back(screenWidth);
|
||||
trees.emplace_back(screenWidth);
|
||||
canvases.assign(2, {});
|
||||
|
||||
for (auto &&tree : trees)
|
||||
tree.newTree();
|
||||
for (auto &&canvas : canvases)
|
||||
{
|
||||
canvas.init(screenWidth);
|
||||
canvas.newGen();
|
||||
}
|
||||
|
||||
center = {(float)screenWidth / 2, (float)screenHeight / 2};
|
||||
float rotation = 0.0f;
|
||||
destA = CalculateRect(center, rotation, screenWidth, screenWidth);
|
||||
destB = {destA.x, destA.y, (float)screenWidth, (float)screenWidth};
|
||||
}
|
||||
|
||||
void App::update()
|
||||
{
|
||||
if (IsMouseButtonDown(MOUSE_BUTTON_LEFT))
|
||||
@@ -35,7 +38,7 @@ void App::update()
|
||||
|
||||
if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT))
|
||||
{
|
||||
trees[1 - pos].newTree();
|
||||
canvases[1 - pos].newGen();
|
||||
pos = 1 - pos;
|
||||
rotation = 0.0f;
|
||||
center.x = screenWidth / 2;
|
||||
@@ -47,14 +50,14 @@ void App::update()
|
||||
void App::draw()
|
||||
{
|
||||
ClearBackground(RED);
|
||||
trees[pos].draw(destB, 0.0f);
|
||||
trees[1 - pos].draw(destA, rotation);
|
||||
canvases[pos].draw(destB, 0.0f);
|
||||
canvases[1 - pos].draw(destA, rotation);
|
||||
}
|
||||
|
||||
void App::deinit()
|
||||
{
|
||||
for (size_t i = 0; i < trees.size(); i++)
|
||||
for (size_t i = 0; i < canvases.size(); i++)
|
||||
{
|
||||
trees[i].deinit();
|
||||
canvases[i].deinit();
|
||||
}
|
||||
}
|
||||
30
src/Canvas.cpp
Normal file
30
src/Canvas.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include "Canvas.hpp"
|
||||
|
||||
void Canvas::init(int size)
|
||||
{
|
||||
tree.init(size);
|
||||
target = LoadRenderTexture(size, size);
|
||||
}
|
||||
|
||||
void Canvas::newGen()
|
||||
{
|
||||
BeginTextureMode(target);
|
||||
ClearBackground(WHITE);
|
||||
|
||||
tree.newGen();
|
||||
|
||||
EndTextureMode();
|
||||
}
|
||||
|
||||
void Canvas::draw(Rectangle dest, float rotation)
|
||||
{
|
||||
Rectangle source = {0, 0, (float)target.texture.width, (float)-target.texture.height};
|
||||
Vector2 origin = {0.0f, 0.0f};
|
||||
rotation = 360 - rotation;
|
||||
DrawTexturePro(target.texture, source, dest, origin, rotation, WHITE);
|
||||
}
|
||||
|
||||
void Canvas::deinit()
|
||||
{
|
||||
UnloadRenderTexture(target);
|
||||
}
|
||||
25
src/Tree.cpp
25
src/Tree.cpp
@@ -5,41 +5,20 @@
|
||||
#include "Math.hpp"
|
||||
|
||||
// Public
|
||||
Tree::Tree(int size)
|
||||
void Tree::init(int size)
|
||||
{
|
||||
this->size = size;
|
||||
target = LoadRenderTexture(size, size);
|
||||
start.x = size / 2;
|
||||
start.y = size;
|
||||
|
||||
branches.assign(11, {});
|
||||
}
|
||||
|
||||
Tree::~Tree()
|
||||
{
|
||||
}
|
||||
|
||||
void Tree::draw(Rectangle dest, float rotation)
|
||||
{
|
||||
Rectangle source = {0, 0, (float)target.texture.width, (float)-target.texture.height};
|
||||
Vector2 origin = {0.0f, 0.0f};
|
||||
rotation = 360 - rotation;
|
||||
DrawTexturePro(target.texture, source, dest, origin, rotation, WHITE);
|
||||
}
|
||||
|
||||
void Tree::newTree()
|
||||
void Tree::newGen()
|
||||
{
|
||||
generateBranches();
|
||||
|
||||
BeginTextureMode(target);
|
||||
ClearBackground(WHITE);
|
||||
drawTree();
|
||||
EndTextureMode();
|
||||
}
|
||||
|
||||
void Tree::deinit()
|
||||
{
|
||||
UnloadRenderTexture(target);
|
||||
}
|
||||
|
||||
// Private
|
||||
|
||||
Reference in New Issue
Block a user