renderpath2D refactor

This commit is contained in:
Turánszki János
2022-04-19 12:13:12 +02:00
parent 4cc3d6a20b
commit 6fb6e7f15e
2 changed files with 37 additions and 38 deletions
+17 -17
View File
@@ -35,7 +35,7 @@ namespace wi
}
else
{
rtStenciled = Texture(); // this will be deleted here
rtStenciled = {}; // this will be deleted here
}
{
@@ -121,13 +121,13 @@ namespace wi
switch (y.type)
{
default:
case RenderItem2D::SPRITE:
case RenderItem2D::TYPE::SPRITE:
if (y.sprite != nullptr)
{
y.sprite->Update(dt);
}
break;
case RenderItem2D::FONT:
case RenderItem2D::TYPE::FONT:
if (y.font != nullptr)
{
y.font->Update(dt);
@@ -162,13 +162,13 @@ namespace wi
switch (y.type)
{
default:
case RenderItem2D::SPRITE:
case RenderItem2D::TYPE::SPRITE:
if (y.sprite != nullptr)
{
y.sprite->FixedUpdate();
}
break;
case RenderItem2D::FONT:
case RenderItem2D::TYPE::FONT:
if (y.font != nullptr)
{
y.font->FixedUpdate();
@@ -210,7 +210,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::SPRITE &&
if (y.type == RenderItem2D::TYPE::SPRITE &&
y.sprite != nullptr &&
y.sprite->params.stencilComp != wi::image::STENCILMODE_DISABLED)
{
@@ -254,7 +254,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::SPRITE &&
if (y.type == RenderItem2D::TYPE::SPRITE &&
y.sprite != nullptr &&
y.sprite->params.stencilComp != wi::image::STENCILMODE_DISABLED)
{
@@ -274,13 +274,13 @@ namespace wi
switch (y.type)
{
default:
case RenderItem2D::SPRITE:
case RenderItem2D::TYPE::SPRITE:
if (y.sprite != nullptr && y.sprite->params.stencilComp == wi::image::STENCILMODE_DISABLED)
{
y.sprite->Draw(cmd);
}
break;
case RenderItem2D::FONT:
case RenderItem2D::TYPE::FONT:
if (y.font != nullptr)
{
y.font->Draw(cmd);
@@ -331,7 +331,7 @@ namespace wi
if (!x.name.compare(layer))
{
x.items.push_back(RenderItem2D());
x.items.back().type = RenderItem2D::SPRITE;
x.items.back().type = RenderItem2D::TYPE::SPRITE;
x.items.back().sprite = sprite;
}
}
@@ -343,7 +343,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::SPRITE && y.sprite == sprite)
if (y.type == RenderItem2D::TYPE::SPRITE && y.sprite == sprite)
{
y.sprite = nullptr;
}
@@ -357,7 +357,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::SPRITE)
if (y.type == RenderItem2D::TYPE::SPRITE)
{
y.sprite = nullptr;
}
@@ -387,7 +387,7 @@ namespace wi
if (!x.name.compare(layer))
{
x.items.push_back(RenderItem2D());
x.items.back().type = RenderItem2D::FONT;
x.items.back().type = RenderItem2D::TYPE::FONT;
x.items.back().font = font;
}
}
@@ -399,7 +399,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::FONT && y.font == font)
if (y.type == RenderItem2D::TYPE::FONT && y.font == font)
{
y.font = nullptr;
}
@@ -413,7 +413,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::FONT)
if (y.type == RenderItem2D::TYPE::FONT)
{
y.font = nullptr;
}
@@ -468,7 +468,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::SPRITE && y.sprite == sprite)
if (y.type == RenderItem2D::TYPE::SPRITE && y.sprite == sprite)
{
y.order = order;
}
@@ -482,7 +482,7 @@ namespace wi
{
for (auto& y : x.items)
{
if (y.type == RenderItem2D::FONT && y.font == font)
if (y.type == RenderItem2D::TYPE::FONT && y.font == font)
{
y.order = order;
}
+20 -21
View File
@@ -10,27 +10,6 @@ namespace wi
class Sprite;
class SpriteFont;
struct RenderItem2D
{
enum TYPE
{
SPRITE,
FONT,
} type = SPRITE;
union
{
wi::Sprite* sprite = nullptr;
wi::SpriteFont* font;
};
int order = 0;
};
struct RenderLayer2D
{
wi::vector<RenderItem2D> items;
std::string name;
int order = 0;
};
class RenderPath2D :
public RenderPath
{
@@ -79,6 +58,26 @@ namespace wi
void ClearFonts();
int GetFontOrder(wi::SpriteFont* font);
struct RenderItem2D
{
enum class TYPE
{
SPRITE,
FONT,
} type = TYPE::SPRITE;
union
{
wi::Sprite* sprite = nullptr;
wi::SpriteFont* font;
};
int order = 0;
};
struct RenderLayer2D
{
wi::vector<RenderItem2D> items;
std::string name;
int order = 0;
};
wi::vector<RenderLayer2D> layers{ 1 };
void AddLayer(const std::string& name);
void SetLayerOrder(const std::string& name, int order);