Files
DemoGame/include/Engine/Level/Fixed.h
2025-01-02 00:15:37 -05:00

36 lines
1.1 KiB
C++

#pragma once
#include "J3ML/LinearAlgebra/Vector2i.hpp"
#include "J3ML/Geometry/AABB2D.hpp"
#include "JGL/types/Texture.h"
using J3ML::LinearAlgebra::Vector2i;
using JGL::Texture;
// Things that are considered non-movable parts of the level.
// TODO instanced textures.
class Fixed {
private:
void GenerateCollision();
protected:
std::vector<Vector2i> collision{};
bool enabled = false;
bool collidable = false;
Vector2i position = {0, 0};
const Texture* texture = nullptr;
public:
[[nodiscard]] bool Collidable() const;
[[nodiscard]] Vector2i GetPosition() const;
[[nodiscard]] AABB2D GetBounds() const;
[[nodiscard]] bool Enabled() const;
[[nodiscard]] std::vector<Vector2i> GetCollision();
[[nodiscard]] const Texture* GetTexture();
public:
void Enable();
void Disable();
virtual void Render() {};
public:
Fixed(const Vector2i& position, bool enabled, bool collidable, const Texture* texture) : position(position), enabled(enabled), collidable(collidable), texture(texture)
{ if (collidable) GenerateCollision(); }
virtual ~Fixed();
};