diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-20 14:59:34 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-20 14:59:34 +0100 |
commit | e2c27d8c99a71e5d94ffe49027ec13afeb74b021 (patch) | |
tree | 4bed8f7654c112e84bae6f8cce2ca2b2abe94cb4 /src/crepe | |
parent | c52742e049e68d5ad0beabf8647f543bc2497596 (diff) |
replace more vector<reference_wrapper<T>> with RefVector
Diffstat (limited to 'src/crepe')
-rw-r--r-- | src/crepe/api/GameObject.cpp | 6 | ||||
-rw-r--r-- | src/crepe/api/Script.h | 2 | ||||
-rw-r--r-- | src/crepe/api/Script.hpp | 5 | ||||
-rw-r--r-- | src/crepe/system/AnimatorSystem.cpp | 5 | ||||
-rw-r--r-- | src/crepe/system/ParticleSystem.cpp | 3 | ||||
-rw-r--r-- | src/crepe/system/PhysicsSystem.cpp | 6 | ||||
-rw-r--r-- | src/crepe/system/RenderSystem.cpp | 13 | ||||
-rw-r--r-- | src/crepe/system/RenderSystem.h | 3 | ||||
-rw-r--r-- | src/crepe/system/ScriptSystem.cpp | 13 | ||||
-rw-r--r-- | src/crepe/system/ScriptSystem.h | 6 |
10 files changed, 23 insertions, 39 deletions
diff --git a/src/crepe/api/GameObject.cpp b/src/crepe/api/GameObject.cpp index 287e81d..4874426 100644 --- a/src/crepe/api/GameObject.cpp +++ b/src/crepe/api/GameObject.cpp @@ -23,12 +23,10 @@ void GameObject::set_parent(const GameObject & parent) { ComponentManager & mgr = this->component_manager; // Set parent on own Metadata component - vector<reference_wrapper<Metadata>> this_metadata - = mgr.get_components_by_id<Metadata>(this->id); + RefVector<Metadata> this_metadata = mgr.get_components_by_id<Metadata>(this->id); this_metadata.at(0).get().parent = parent.id; // Add own id to children list of parent's Metadata component - vector<reference_wrapper<Metadata>> parent_metadata - = mgr.get_components_by_id<Metadata>(parent.id); + RefVector<Metadata> parent_metadata = mgr.get_components_by_id<Metadata>(parent.id); parent_metadata.at(0).get().children.push_back(this->id); } diff --git a/src/crepe/api/Script.h b/src/crepe/api/Script.h index 2b70379..839d937 100644 --- a/src/crepe/api/Script.h +++ b/src/crepe/api/Script.h @@ -62,7 +62,7 @@ protected: * \returns List of component references */ template <typename T> - std::vector<std::reference_wrapper<T>> get_components() const; + RefVector<T> get_components() const; protected: // NOTE: Script must have a constructor without arguments so the game programmer doesn't need diff --git a/src/crepe/api/Script.hpp b/src/crepe/api/Script.hpp index a064a90..a85d814 100644 --- a/src/crepe/api/Script.hpp +++ b/src/crepe/api/Script.hpp @@ -10,7 +10,7 @@ namespace crepe { template <typename T> T & Script::get_component() const { using namespace std; - vector<reference_wrapper<T>> all_components = this->get_components<T>(); + RefVector<T> all_components = this->get_components<T>(); if (all_components.size() < 1) throw runtime_error( format("Script: no component found with type = {}", typeid(T).name())); @@ -19,9 +19,8 @@ T & Script::get_component() const { } template <typename T> -std::vector<std::reference_wrapper<T>> Script::get_components() const { +RefVector<T> Script::get_components() const { auto & mgr = *this->component_manager_ref; - return mgr.get_components_by_id<T>(this->game_object_id); } diff --git a/src/crepe/system/AnimatorSystem.cpp b/src/crepe/system/AnimatorSystem.cpp index 9d18873..676e485 100644 --- a/src/crepe/system/AnimatorSystem.cpp +++ b/src/crepe/system/AnimatorSystem.cpp @@ -1,6 +1,4 @@ #include <cstdint> -#include <functional> -#include <vector> #include "api/Animator.h" #include "facade/SDLContext.h" @@ -13,8 +11,7 @@ using namespace crepe; void AnimatorSystem::update() { ComponentManager & mgr = this->component_manager; - std::vector<std::reference_wrapper<Animator>> animations - = mgr.get_components_by_type<Animator>(); + RefVector<Animator> animations = mgr.get_components_by_type<Animator>(); uint64_t tick = SDLContext::get_instance().get_ticks(); for (Animator & a : animations) { diff --git a/src/crepe/system/ParticleSystem.cpp b/src/crepe/system/ParticleSystem.cpp index 7316309..fcf7522 100644 --- a/src/crepe/system/ParticleSystem.cpp +++ b/src/crepe/system/ParticleSystem.cpp @@ -14,8 +14,7 @@ using namespace crepe; void ParticleSystem::update() { // Get all emitters ComponentManager & mgr = this->component_manager; - std::vector<std::reference_wrapper<ParticleEmitter>> emitters - = mgr.get_components_by_type<ParticleEmitter>(); + RefVector<ParticleEmitter> emitters = mgr.get_components_by_type<ParticleEmitter>(); for (ParticleEmitter & emitter : emitters) { // Get transform linked to emitter diff --git a/src/crepe/system/PhysicsSystem.cpp b/src/crepe/system/PhysicsSystem.cpp index 4a7dbfb..bcde431 100644 --- a/src/crepe/system/PhysicsSystem.cpp +++ b/src/crepe/system/PhysicsSystem.cpp @@ -12,10 +12,8 @@ using namespace crepe; void PhysicsSystem::update() { ComponentManager & mgr = this->component_manager; - std::vector<std::reference_wrapper<Rigidbody>> rigidbodies - = mgr.get_components_by_type<Rigidbody>(); - std::vector<std::reference_wrapper<Transform>> transforms - = mgr.get_components_by_type<Transform>(); + RefVector<Rigidbody> rigidbodies = mgr.get_components_by_type<Rigidbody>(); + RefVector<Transform> transforms = mgr.get_components_by_type<Transform>(); double gravity = Config::get_instance().physics.gravity; for (Rigidbody & rigidbody : rigidbodies) { diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index 96c5f27..7ee03e5 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -1,6 +1,5 @@ #include <algorithm> #include <cassert> -#include <functional> #include <stdexcept> #include <vector> @@ -20,7 +19,7 @@ void RenderSystem::present_screen() { this->context.present_screen(); } void RenderSystem::update_camera() { ComponentManager & mgr = this->component_manager; - std::vector<std::reference_wrapper<Camera>> cameras = mgr.get_components_by_type<Camera>(); + RefVector<Camera> cameras = mgr.get_components_by_type<Camera>(); if (cameras.size() == 0) throw std::runtime_error("No cameras in current scene"); @@ -37,10 +36,8 @@ bool sorting_comparison(const Sprite & a, const Sprite & b) { return false; } -std::vector<std::reference_wrapper<Sprite>> -RenderSystem::sort(std::vector<std::reference_wrapper<Sprite>> & objs) { - - std::vector<std::reference_wrapper<Sprite>> sorted_objs(objs); +RefVector<Sprite> RenderSystem::sort(RefVector<Sprite> & objs) { + RefVector<Sprite> sorted_objs(objs); std::sort(sorted_objs.begin(), sorted_objs.end(), sorting_comparison); return sorted_objs; @@ -48,8 +45,8 @@ RenderSystem::sort(std::vector<std::reference_wrapper<Sprite>> & objs) { void RenderSystem::render_sprites() { ComponentManager & mgr = this->component_manager; - vector<reference_wrapper<Sprite>> sprites = mgr.get_components_by_type<Sprite>(); - vector<reference_wrapper<Sprite>> sorted_sprites = this->sort(sprites); + RefVector<Sprite> sprites = mgr.get_components_by_type<Sprite>(); + RefVector<Sprite> sorted_sprites = this->sort(sprites); for (const Sprite & sprite : sorted_sprites) { auto transforms = mgr.get_components_by_id<Transform>(sprite.game_object_id); diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h index 57b9c73..40978ae 100644 --- a/src/crepe/system/RenderSystem.h +++ b/src/crepe/system/RenderSystem.h @@ -47,8 +47,7 @@ private: * \param objs the vector that will do a sorting algorithm on * \return returns a sorted reference vector */ - std::vector<std::reference_wrapper<Sprite>> - sort(std::vector<std::reference_wrapper<Sprite>> & objs); + RefVector<Sprite> sort(RefVector<Sprite> & objs); /** * \todo Include color handling for sprites. diff --git a/src/crepe/system/ScriptSystem.cpp b/src/crepe/system/ScriptSystem.cpp index c4d724c..c33309c 100644 --- a/src/crepe/system/ScriptSystem.cpp +++ b/src/crepe/system/ScriptSystem.cpp @@ -1,6 +1,4 @@ -#include <forward_list> #include <functional> -#include <vector> #include "../ComponentManager.h" #include "../api/BehaviorScript.h" @@ -14,7 +12,7 @@ using namespace crepe; void ScriptSystem::update() { dbg_trace(); - forward_list<reference_wrapper<Script>> scripts = this->get_scripts(); + RefVector<Script> scripts = this->get_scripts(); for (auto & script_ref : scripts) { Script & script = script_ref.get(); @@ -26,18 +24,17 @@ void ScriptSystem::update() { } } -forward_list<reference_wrapper<Script>> ScriptSystem::get_scripts() const { - forward_list<reference_wrapper<Script>> scripts = {}; +RefVector<Script> ScriptSystem::get_scripts() const { + RefVector<Script> scripts = {}; ComponentManager & mgr = this->component_manager; - vector<reference_wrapper<BehaviorScript>> behavior_scripts - = mgr.get_components_by_type<BehaviorScript>(); + RefVector<BehaviorScript> behavior_scripts = mgr.get_components_by_type<BehaviorScript>(); for (auto behavior_script_ref : behavior_scripts) { BehaviorScript & behavior_script = behavior_script_ref.get(); if (!behavior_script.active) continue; Script * script = behavior_script.script.get(); if (script == nullptr) continue; - scripts.push_front(*script); + scripts.push_back(*script); } return scripts; diff --git a/src/crepe/system/ScriptSystem.h b/src/crepe/system/ScriptSystem.h index deb89cb..32e1fcd 100644 --- a/src/crepe/system/ScriptSystem.h +++ b/src/crepe/system/ScriptSystem.h @@ -1,9 +1,9 @@ #pragma once -#include <forward_list> - #include "System.h" +#include "../types.h" + namespace crepe { class Script; @@ -33,7 +33,7 @@ private: * * \returns List of active \c Script instances */ - std::forward_list<std::reference_wrapper<Script>> get_scripts() const; + RefVector<Script> get_scripts() const; }; } // namespace crepe |