10#include "galaxy/error/Log.hpp"
11#include "galaxy/flags/DenySerialization.hpp"
16#ifdef GALAXY_WIN_PLATFORM
31 this->
m_name = std::move(m.m_name);
39 this->
m_name = std::move(m.m_name);
54 for (
auto& layer : level.allLayers())
56 auto render_layer = 0;
58 if (layer.isVisible())
60 switch (layer.getType())
62 case ldtk::LayerType::IntGrid:
66 case ldtk::LayerType::Entities:
70 case ldtk::LayerType::Tiles:
71 case ldtk::LayerType::AutoLayer:
83 GALAXY_LOG(GALAXY_WARNING,
"IntGrid layer is not supported at this time.");
88 for (
const auto& entity : layer.allEntities())
91 const auto&
id = entity.getName();
94 if (
id ==
"COLLISION")
99 tag.
m_tag =
id + std::to_string(count);
103 GALAXY_LOG(GALAXY_WARNING,
"Attempted to parse unknown entity '{0}'.", entity.getName());
117 tag.m_tag = layer.getName();
120 tilemap.
m_batch.
init(
static_cast<int>(layer.allTiles().size()));
122 for (
const auto& tile : layer.allTiles())
124 auto ldtk_verts = tile.getVertices();
126 std::array<graphics::Vertex, 4>
vertices;
128 for (
auto i = 0; i < ldtk_verts.size(); ++i)
130 vertices[i].m_pos.x = ldtk_verts[i].pos.x;
131 vertices[i].m_pos.y = ldtk_verts[i].pos.y;
132 vertices[i].m_texels.x = ldtk_verts[i].tex.x;
133 vertices[i].m_texels.y = ldtk_verts[i].tex.y;
141 auto file = std::filesystem::path(layer.getTileset().path).filename().string();
142 tilemap.set_texture(file);
143 tilemap.m_render_layer = render_layer;
144 tilemap.m_tint = glm::vec4(1.0f, 1.0f, 1.0f, layer.getOpacity());
147 transform.
m_tf.
set_pos(layer.getOffset().x, layer.getOffset().y);
158#ifdef GALAXY_WIN_PLATFORM
#define GALAXY_LOG(level, msg,...)
#define GALAXY_DISABLE_WARNING_POP
#define GALAXY_DISABLE_WARNING(x)
#define GALAXY_DISABLE_WARNING_PUSH
Macro for windows platform detection.
thread_local const float vertices[]
Video.cpp galaxy.
Rendering data for a single level/map in a LDTK world.
graphics::VertexBatch m_batch
Vertex data batch.
entt::entity create()
Create an entity with some default components.
entt::registry m_entt
Scene entities.
Used to stop an entity from being updated/rendered.
void init(const int max_quads)
Initialize vertex batch data.
void parse_entitiy_layer(const ldtk::Layer &layer)
Parse LDTK entity layer.
core::Registry m_registry
Map entities.
std::string m_name
Map name.
void parse_tile_layer(const ldtk::Layer &layer, const int render_layer)
Parse LDTK tile layer / auto layer.
Map & operator=(Map &&)
Move assignment operator.
void load(const ldtk::Level &level)
Load a map from an ldtk level.
const std::string & name() const
Get map name.
void parse_intgrid_layer(const ldtk::Layer &layer)
Parse LDTK int-grid layer.