Add worlds

This commit is contained in:
Maple Redleaf
2025-11-11 12:32:14 -06:00
parent 27eb6ff7bb
commit f22b25642b
5 changed files with 56 additions and 6 deletions
+11 -2
View File
@@ -1,25 +1,34 @@
#ifndef VOID_ENTITY_H
#define VOID_ENTITY_H
#include "component.h"
#include "world.h"
#include <algorithm>
#include <cstdint>
#include <memory>
#include <utility>
#include <vector>
namespace VoidFrame {
class World;
class Entity {
public:
template <typename CompT, typename... Args>
CompT *AddComponent(Args &&...args);
Entity *AddComponent(Args &&...args);
template <typename CompT> CompT *GetComponent();
template <typename CompT> bool HasComponent();
template <typename CompT> void RemoveComponent();
template <typename CompT> Entity *RemoveComponent();
void Destroy();
void Update();
private:
Entity();
std::vector<std::unique_ptr<Component>> components;
World *world;
friend class World;
};
#include "../src/entity_i.cpp"
+18
View File
@@ -0,0 +1,18 @@
#pragma once
#include "entity.h"
#include <cstdint>
#include <memory>
#include <vector>
namespace VoidFrame {
class World {
public:
Entity *Spawn();
void Destroy(Entity *entity);
private:
std::vector<std::unique_ptr<Entity>> entities;
};
} // namespace VoidFrame