Easys
A minimalist, header-only C++ ECS library for efficient and fuss-free entity and component management.
Loading...
Searching...
No Matches
view.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <algorithm>
4#include <vector>
5
6#include "entity.hpp"
7
8namespace Easys {
9
10// TODO: We could store a ref to ecs for convenient view member functions, but im not sure this is the right approach.
11
12// template <typename ECSType, typename... ComponentTypes>
13
30class View {
31 private:
32 // ECSType& ecs;
33 std::vector<Easys::Entity> entities;
34
35 public:
42 explicit View(std::vector<Easys::Entity> ents) noexcept : entities(std::move(ents)) {}
43
44 // explicit View(ECSType& ecs) noexcept : ecs(ecs), entities(ecs.getEntities<ComponentTypes...>()) {}
45
46 View(View&&) noexcept = default;
47 View& operator=(View&&) noexcept = default;
48
49 View(const View&) = default;
50 View& operator=(const View&) = default;
51
52 auto begin() noexcept { return entities.begin(); }
53 auto end() noexcept { return entities.end(); }
54
55 auto begin() const noexcept { return entities.begin(); }
56 auto end() const noexcept { return entities.end(); }
57
62 const auto& data() const noexcept { return entities; }
63
68 size_t size() const noexcept { return entities.size(); }
69
74 bool empty() const noexcept { return entities.empty(); }
75
81 auto find(Entity e) const noexcept { return std::find(entities.begin(), entities.end(), e); }
82
88 bool contains(Entity e) const noexcept { return find(e) != entities.end(); }
89};
90
91} // namespace Easys
A lightweight, read-only snapshot of a set of entities.
Definition view.hpp:30
size_t size() const noexcept
Number of entities in the view.
Definition view.hpp:68
View(std::vector< Easys::Entity > ents) noexcept
Constructs a View by taking ownership of a vector of entities.
Definition view.hpp:42
auto begin() const noexcept
Definition view.hpp:55
bool empty() const noexcept
Checks if the view is empty.
Definition view.hpp:74
auto end() const noexcept
Definition view.hpp:56
auto find(Entity e) const noexcept
Finds an entity in the view.
Definition view.hpp:81
View(View &&) noexcept=default
auto begin() noexcept
Definition view.hpp:52
bool contains(Entity e) const noexcept
Checks if the view contains the given entity.
Definition view.hpp:88
auto end() noexcept
Definition view.hpp:53
const auto & data() const noexcept
Access the internal vector of entities.
Definition view.hpp:62
Definition ecs.hpp:14
EASYS_ENTITY_TYPE Entity
Definition entity.hpp:11