implemented TileMap, still need Shader for it with billboarding and all that jizz XD

This commit is contained in:
2026-02-02 20:52:28 +01:00
parent 2f3fdf83ae
commit ea2dc4f6b5
7 changed files with 130 additions and 81 deletions

View File

@@ -0,0 +1,56 @@
#pragma once
#define TILE_MAP typeid(TSE::TileMap).name()
#include <unordered_map>
#include "elements/BehaviourScript.hpp"
#include "Vector2.hpp"
#include "elements/Sprite.hpp"
#include "elements/TileSet.hpp"
namespace TSE
{
enum SortingOrder
{
TopRight,
TopLeft,
BottomRight,
BottomLeft,
};
struct TileMapChunk
{
private:
SortingOrder order;
int chunksize;
std::unordered_map<Vector2, Sprite> sprites;
public:
Vector2 pos;
TileMapChunk(int _chunksize, const Vector2& _pos, SortingOrder _order);
void SetTile(const Vector2& p, const Vector2& Spriteindex, TileSet* set);
void RemoveTile(Vector2 p);
void SetOrdering(SortingOrder _order);
};
class TileMap : public BehaviourScript
{
public:
int chunkSize = 16;
SortingOrder order = TopRight;
TileSet* set;
std::unordered_map<Vector2, TileMapChunk> chunks;
void RemoveTile(Vector2 p);
void SetTile(Vector2 p, Vector2 Spriteindex);
inline const char* GetName() override
{
return "Tile Map";
}
private:
Vector2 LocalToChunkPos(const Vector2& v);
Vector2 ChunkToLocalPos(const Vector2& v, const TileMapChunk& chunk);
};
} // namespace TSE