vecs
Fast, flexible ecs in C++ with ergonomic API
Loading...
Searching...
No Matches
vecs::World Class Reference

The ECS world. More...

#include <vecs.h>

Public Member Functions

template<typename T>
Worldadd_resource (T *resource)
 Adds a non-owned resource to the world.
 
template<typename T>
Resource< T > & get_resource () const
 Retrieves a non-owned resource of type T.
 
template<typename Func>
void add_system (ScheduleLabel label, Func &&func)
 Adds a system to the specified schedule.
 
template<typename Func>
void add_system (Func &&func)
 Adds a system to the Update schedule.
 
void progress ()
 Progresses the ECS world by one tick, with automatically calculated delta time.
 
void progress (float delta_time)
 Progresses the ECS world by one tick, with a supplied delta time.
 
EntityBuilder spawn ()
 
EntityBuilder entity (Entity entity)
 
template<typename... Components>
Query< Components... > query ()
 
template<typename... Components>
Observer< Components... > & observe ()
 
Commandscommands ()
 
void despawn (Entity entity)
 
void log_archetypes ()
 

Friends

template<typename... Components>
class Query
 
class EntityBuilder
 
class EntityCommands
 
AddFlags operator| (AddFlags a, AddFlags b)
 
AddFlags operator& (AddFlags a, AddFlags b)
 

Detailed Description

The ECS world.

Member Function Documentation

◆ add_resource()

template<typename T>
World & vecs::World::add_resource ( T * resource)
inline

Adds a non-owned resource to the world.

The resource must have the same lifetime as the world, as the world does not manage its memory.

Template Parameters
TThe type of the resource to add.
Parameters
resourceA pointer to the resource to add.
Returns
A reference to the world for method chaining.

◆ add_system() [1/2]

template<typename Func>
void vecs::World::add_system ( Func && func)
inline

Adds a system to the Update schedule.

Parameters
funcThe system function, which accepts anything that implements into_system_param trait.

Example usage:

world.add_system([](const Time& time, Query<Position, const Velocity>& query) {
for (auto [p, v] : query) {
p.x += v.x * time.delta;
p.y += v.y * time.delta;
}
});
Definition vecs.h:567

◆ add_system() [2/2]

template<typename Func>
void vecs::World::add_system ( ScheduleLabel label,
Func && func )
inline

Adds a system to the specified schedule.

Parameters
labelThe schedule label indicating the phase for system execution
funcThe system function, which accepts anything that implements into_system_param trait.

Example usage:

world.add_system(ScheduleLabel::Startup, [](Query<Position>& query) {
for (auto [p] : query) {
printf("Startup Position: (%f, %f)\n", p.x, p.y);
}
});

◆ get_resource()

template<typename T>
Resource< T > & vecs::World::get_resource ( ) const
inline

Retrieves a non-owned resource of type T.

Asserts if the resource is not found. The resource must have been previously added using add_resource and must have a matching lifetime with the world.

Template Parameters
TThe type of the resource to retrieve.
Returns
A reference to the resource wrapper of type Resource<T>.

◆ progress()

void vecs::World::progress ( float delta_time)
inline

Progresses the ECS world by one tick, with a supplied delta time.

Note: Calling this without delta time will use built-in clock


The documentation for this class was generated from the following file: