56 std::execution::par_unseq,
57 updated_scene_transforms.begin(),
58 updated_scene_transforms.end(),
61 auto& transform = registry.get<transform_component>(entity_id);
62 const auto& scene = registry.get<scene_component>(entity_id);
65 scene.object->set_transform(transform.world);
68 updated_scene_transforms.clear();
77 renderer->
render(t + dt * alpha, dt, alpha, *collection);
84 layers.push_back(layer);
94 this->renderer = renderer;
104 component.
object->set_transform(transform->world);
107 for (std::size_t i = 0;
i < layers.size(); ++
i)
109 if (component.layer_mask &
static_cast<std::uint8_t
>(1 << i))
111 layers[
i]->add_object(*component.object);
120 for (std::size_t i = 0;
i < layers.size(); ++
i)
126 if (component.layer_mask &
static_cast<std::uint8_t
>(1 << i))
138 for (std::size_t i = 0;
i < layers.size(); ++
i)
140 if (component.layer_mask &
static_cast<std::uint8_t
>(1 << i))
142 layers[
i]->remove_object(*component.object);
void render(float t, float dt, float alpha, scene::collection &collection)
Renders a collection of scene objects.
void add_layer(scene::collection *layer)
render_system(entity::registry ®istry)
void set_renderer(::render::renderer *renderer)
virtual void update(float t, float dt)
Perform's a system's update() function.
Collection of scene objects.
void add_object(object_base &object)
Adds an object to the collection.
void remove_object(const object_base &object)
Removes an object from the collection.
void set_transform(const transform_type &transform)
Sets the transform of the object.
Abstract base class for lights, cameras, model instances, and other scene objects.
Abstract base class for updatable systems.
entity::registry & registry
Registry on which the system operate.
entt::registry registry
Component registry type.
entt::entity id
Entity ID type.
std::shared_ptr< scene::object_base > object