diff options
-rw-r--r-- | src/crepe/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/crepe/Component.cpp | 2 | ||||
-rw-r--r-- | src/crepe/Component.h | 25 | ||||
-rw-r--r-- | src/crepe/ComponentManager.cpp | 5 | ||||
-rw-r--r-- | src/crepe/ComponentManager.h | 95 | ||||
-rw-r--r-- | src/crepe/ComponentManager.hpp | 35 | ||||
-rw-r--r-- | src/crepe/Metadata.h | 23 | ||||
-rw-r--r-- | src/crepe/api/AudioSource.h | 2 | ||||
-rw-r--r-- | src/crepe/api/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/crepe/api/GameObject.cpp | 26 | ||||
-rw-r--r-- | src/crepe/api/GameObject.h | 49 | ||||
-rw-r--r-- | src/crepe/api/GameObject.hpp | 4 | ||||
-rw-r--r-- | src/crepe/api/Metadata.cpp (renamed from src/crepe/Metadata.cpp) | 2 | ||||
-rw-r--r-- | src/crepe/api/Metadata.h | 43 | ||||
-rw-r--r-- | src/crepe/api/Script.hpp | 2 | ||||
-rw-r--r-- | src/crepe/api/Transform.cpp | 4 | ||||
-rw-r--r-- | src/crepe/api/Transform.h | 26 | ||||
-rw-r--r-- | src/crepe/system/PhysicsSystem.cpp | 4 | ||||
-rw-r--r-- | src/crepe/system/RenderSystem.cpp | 2 | ||||
-rw-r--r-- | src/example/ecs.cpp | 14 | ||||
-rw-r--r-- | src/example/particle.cpp | 1 | ||||
-rw-r--r-- | src/example/scene_manager.cpp | 31 | ||||
-rw-r--r-- | src/makefile | 28 |
23 files changed, 291 insertions, 136 deletions
diff --git a/src/crepe/CMakeLists.txt b/src/crepe/CMakeLists.txt index 867329f..8830e05 100644 --- a/src/crepe/CMakeLists.txt +++ b/src/crepe/CMakeLists.txt @@ -4,7 +4,6 @@ target_sources(crepe PUBLIC ComponentManager.cpp Component.cpp Collider.cpp - Metadata.cpp ) target_sources(crepe PUBLIC FILE_SET HEADERS FILES @@ -13,7 +12,6 @@ target_sources(crepe PUBLIC FILE_SET HEADERS FILES ComponentManager.hpp Component.h Collider.h - Metadata.h ) add_subdirectory(api) diff --git a/src/crepe/Component.cpp b/src/crepe/Component.cpp index 358ce31..cdbda67 100644 --- a/src/crepe/Component.cpp +++ b/src/crepe/Component.cpp @@ -2,4 +2,4 @@ using namespace crepe; -Component::Component(uint32_t id) : game_object_id(id), active(true) {} +Component::Component(uint32_t id) : GAME_OBJECT_ID(id) {} diff --git a/src/crepe/Component.h b/src/crepe/Component.h index 8db9b2a..41badc3 100644 --- a/src/crepe/Component.h +++ b/src/crepe/Component.h @@ -6,18 +6,39 @@ namespace crepe { class ComponentManager; +/** + * \brief Base class for all components + * + * This class is the base class for all components. It provides a common + * interface for all components. + */ class Component { protected: + //! Only the ComponentManager can create components friend class crepe::ComponentManager; + /** + * \param id The id of the GameObject this component belongs to + */ Component(uint32_t id); public: virtual ~Component() = default; + /** + * \brief Get the maximum number of instances for this component + * + * This method returns -1 by default, which means that there is no limit + * for the number of instances. Concrete components can override this method + * to set a limit. + * + * \return The maximum number of instances for this component + */ virtual int get_instances_max() const { return -1; } public: - uint32_t game_object_id; - bool active; + //! The id of the GameObject this component belongs to + const uint32_t GAME_OBJECT_ID; + //! Whether the component is active + bool active = true; }; } // namespace crepe diff --git a/src/crepe/ComponentManager.cpp b/src/crepe/ComponentManager.cpp index 8bde33a..01bc8d7 100644 --- a/src/crepe/ComponentManager.cpp +++ b/src/crepe/ComponentManager.cpp @@ -1,6 +1,7 @@ -#include "ComponentManager.h" #include "util/log.h" +#include "ComponentManager.h" + using namespace crepe; ComponentManager & ComponentManager::get_instance() { @@ -10,7 +11,7 @@ ComponentManager & ComponentManager::get_instance() { void ComponentManager::delete_all_components_of_id(uint32_t id) { // Loop through all the types (in the unordered_map<>) - for (auto & [type, componentArray] : components) { + for (auto & [type, componentArray] : this->components) { // Make sure that the id (that we are looking for) is within the boundaries of the vector<> if (id < componentArray.size()) { // Clear the components at this specific id diff --git a/src/crepe/ComponentManager.h b/src/crepe/ComponentManager.h index 2b5e1df..f3b0ace 100644 --- a/src/crepe/ComponentManager.h +++ b/src/crepe/ComponentManager.h @@ -10,47 +10,110 @@ namespace crepe { +/** + * \brief Manages all components + * + * This class manages all components. It provides methods to add, delete and get + * components. + */ class ComponentManager { public: - // Singleton + /** + * \brief Get the instance of the ComponentManager + * + * \return The instance of the ComponentManager + */ static ComponentManager & get_instance(); ComponentManager(const ComponentManager &) = delete; ComponentManager(ComponentManager &&) = delete; ComponentManager & operator=(const ComponentManager &) = delete; ComponentManager & operator=(ComponentManager &&) = delete; + ~ComponentManager(); -public: - //! Add a component of a specific type + /** + * \brief Add a component to the ComponentManager + * + * This method adds a component to the ComponentManager. The component is + * created with the given arguments and added to the ComponentManager. + * + * \tparam T The type of the component + * \tparam Args The types of the arguments + * \param id The id of the GameObject this component belongs to + * \param args The arguments to create the component + * \return The created component + */ template <typename T, typename... Args> T & add_component(uint32_t id, Args &&... args); - //! Deletes all components of a specific type and id + /** + * \brief Delete all components of a specific type and id + * + * This method deletes all components of a specific type and id. + * + * \tparam T The type of the component + * \param id The id of the GameObject this component belongs to + */ template <typename T> void delete_components_by_id(uint32_t id); - //! Deletes all components of a specific type + /** + * \brief Delete all components of a specific type + * + * This method deletes all components of a specific type. + * + * \tparam T The type of the component + */ template <typename T> void delete_components(); - //! Deletes all components of a specific id + /** + * \brief Delete all components of a specific id + * + * This method deletes all components of a specific id. + * + * \param id The id of the GameObject this component belongs to + */ void delete_all_components_of_id(uint32_t id); - //! Deletes all components + /** + * \brief Delete all components + * + * This method deletes all components. + */ void delete_all_components(); - - //! Get a vector<> of all components at specific type and id + /** + * \brief Get all components of a specific type and id + * + * This method gets all components of a specific type and id. + * + * \tparam T The type of the component + * \param id The id of the GameObject this component belongs to + * \return A vector of all components of the specific type and id + */ template <typename T> std::vector<std::reference_wrapper<T>> get_components_by_id(uint32_t id) const; - //! Get a vector<> of all components of a specific type + /** + * \brief Get all components of a specific type + * + * This method gets all components of a specific type. + * + * \tparam T The type of the component + * \return A vector of all components of the specific type + */ template <typename T> std::vector<std::reference_wrapper<T>> get_components_by_type() const; private: ComponentManager(); - virtual ~ComponentManager(); - /* - * The std::unordered_map<std::type_index, std::vector<std::vector<std::unique_ptr<Component>>>> below might seem a bit strange, let me explain this structure: - * The std::unordered_map<> has a key and value. The key is a std::type_index and the value is a std::vector. So, a new std::vector will be created for each new std::type_index. - * The first std::vector<> stores another vector<>. This first vector<> is to bind the entity's id to a component. - * The second std::vector<> stores unique_ptrs. Each component can be gathered via an unique_ptr. This second vector<> allows multiple components of the same std::type_index for one entity (id). +private: + /** + * \brief The components + * + * This unordered_map stores all components. The key is the type of the + * component and the value is a vector of vectors of unique pointers to the + * components. + * Every component type has its own vector of vectors of unique pointers to + * the components. The first vector is for the ids of the GameObjects and the + * second vector is for the components (because a GameObject might have multiple + * components). */ std::unordered_map<std::type_index, std::vector<std::vector<std::unique_ptr<Component>>>> diff --git a/src/crepe/ComponentManager.hpp b/src/crepe/ComponentManager.hpp index 89ed111..489e188 100644 --- a/src/crepe/ComponentManager.hpp +++ b/src/crepe/ComponentManager.hpp @@ -17,15 +17,15 @@ T & ComponentManager::add_component(uint32_t id, Args &&... args) { type_index type = typeid(T); // Check if this component type is already in the unordered_map<> - if (components.find(type) == components.end()) { + if (this->components.find(type) == this->components.end()) { //If not, create a new (empty) vector<> of vector<unique_ptr<Component>> - components[type] = vector<vector<unique_ptr<Component>>>(); + this->components[type] = vector<vector<unique_ptr<Component>>>(); } // Resize the vector<> if the id is greater than the current size - if (id >= components[type].size()) { + if (id >= this->components[type].size()) { // Initialize new slots to nullptr (resize does automatically init to nullptr) - components[type].resize(id + 1); + this->components[type].resize(id + 1); } // Create a new component of type T (arguments directly forwarded). The @@ -46,7 +46,7 @@ T & ComponentManager::add_component(uint32_t id, Args &&... args) { } // store its unique_ptr in the vector<> - components[type][id].push_back(std::move(instance)); + this->components[type][id].push_back(std::move(instance)); return instance_ref; } @@ -59,10 +59,10 @@ void ComponentManager::delete_components_by_id(uint32_t id) { type_index type = typeid(T); // Find the type (in the unordered_map<>) - if (components.find(type) != components.end()) { + if (this->components.find(type) != this->components.end()) { // Get the correct vector<> vector<vector<unique_ptr<Component>>> & component_array - = components[type]; + = this->components[type]; // Make sure that the id (that we are looking for) is within the boundaries of the vector<> if (id < component_array.size()) { @@ -77,9 +77,9 @@ void ComponentManager::delete_components() { // Determine the type of T (this is used as the key of the unordered_map<>) std::type_index type = typeid(T); - if (components.find(type) == components.end()) return; + if (this->components.find(type) == this->components.end()) return; - components[type].clear(); + this->components[type].clear(); } template <typename T> @@ -93,11 +93,12 @@ ComponentManager::get_components_by_id(uint32_t id) const { // Create an empty vector<> vector<reference_wrapper<T>> component_vector; - if (components.find(type) == components.end()) return component_vector; + if (this->components.find(type) == this->components.end()) + return component_vector; // Get the correct vector<> const vector<vector<unique_ptr<Component>>> & component_array - = components.at(type); + = this->components.at(type); // Make sure that the id (that we are looking for) is within the boundaries of the vector<> if (id >= component_array.size()) return component_vector; @@ -126,15 +127,14 @@ ComponentManager::get_components_by_type() const { // Create an empty vector<> vector<reference_wrapper<T>> component_vector; - // Set the id to 0 (the id will also be stored in the returned vector<>) - // uint32_t id = 0; // Find the type (in the unordered_map<>) - if (components.find(type) == components.end()) return component_vector; + if (this->components.find(type) == this->components.end()) + return component_vector; // Get the correct vector<> const vector<vector<unique_ptr<Component>>> & component_array - = components.at(type); + = this->components.at(type); // Loop through the whole vector<> for (const vector<unique_ptr<Component>> & component : component_array) { @@ -146,12 +146,9 @@ ComponentManager::get_components_by_type() const { // Ensure that the cast was successful if (casted_component == nullptr) continue; - // Pair the dereferenced raw pointer and the id and add it to the vector<> + // Add the dereferenced raw pointer to the vector<> component_vector.emplace_back(ref(*casted_component)); } - - // Increase the id (the id will also be stored in the returned vector<>) - //++id; } // Return the vector<> diff --git a/src/crepe/Metadata.h b/src/crepe/Metadata.h deleted file mode 100644 index 1577987..0000000 --- a/src/crepe/Metadata.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <string> -#include <vector> - -#include "Component.h" - -namespace crepe { - -class Metadata : public Component { -public: - Metadata(uint32_t game_object_id, const std::string & name, - const std::string & tag); - virtual int get_instances_max() const { return 1; } - -public: - std::string name; - std::string tag; - uint32_t parent = -1; - std::vector<uint32_t> children; -}; - -} // namespace crepe diff --git a/src/crepe/api/AudioSource.h b/src/crepe/api/AudioSource.h index 42add50..1e24ae8 100644 --- a/src/crepe/api/AudioSource.h +++ b/src/crepe/api/AudioSource.h @@ -10,7 +10,7 @@ namespace crepe { class Sound; //! Audio source component -class AudioSource : Component { +class AudioSource : public Component { public: AudioSource(std::unique_ptr<Asset> audio_clip); virtual ~AudioSource() = default; diff --git a/src/crepe/api/CMakeLists.txt b/src/crepe/api/CMakeLists.txt index 7fd8ffd..dbd6bf1 100644 --- a/src/crepe/api/CMakeLists.txt +++ b/src/crepe/api/CMakeLists.txt @@ -11,6 +11,7 @@ target_sources(crepe PUBLIC Texture.cpp AssetManager.cpp Sprite.cpp + Metadata.cpp Scene.cpp SceneManager.cpp ) @@ -31,6 +32,7 @@ target_sources(crepe PUBLIC FILE_SET HEADERS FILES AssetManager.h AssetManager.hpp Scene.h + Metadata.h SceneManager.h SceneManager.hpp ) diff --git a/src/crepe/api/GameObject.cpp b/src/crepe/api/GameObject.cpp index 51cd08f..b1b8f85 100644 --- a/src/crepe/api/GameObject.cpp +++ b/src/crepe/api/GameObject.cpp @@ -6,24 +6,26 @@ using namespace crepe; using namespace std; -GameObject::GameObject(uint32_t id, std::string name, std::string tag, - const Point & position, double rotation, double scale) - : id(id) { +GameObject::GameObject(uint32_t id, const std::string & name, + const std::string & tag, const Point & position, + double rotation, double scale) + : ID(id) { + // Add Transform and Metadata components ComponentManager & mgr = ComponentManager::get_instance(); - mgr.add_component<Transform>(this->id, position, rotation, scale); - mgr.add_component<Metadata>(this->id, name, tag); + mgr.add_component<Transform>(this->ID, position, rotation, scale); + mgr.add_component<Metadata>(this->ID, name, tag); } void GameObject::set_parent(const GameObject & parent) { - auto & mgr = ComponentManager::get_instance(); + ComponentManager & mgr = ComponentManager::get_instance(); - // set parent on own Metadata component + // Set parent on own Metadata component vector<reference_wrapper<Metadata>> this_metadata - = mgr.get_components_by_id<Metadata>(this->id); - this_metadata.at(0).get().parent = parent.id; + = 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 + // 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); - parent_metadata.at(0).get().children.push_back(this->id); + = mgr.get_components_by_id<Metadata>(parent.ID); + parent_metadata.at(0).get().children.push_back(this->ID); } diff --git a/src/crepe/api/GameObject.h b/src/crepe/api/GameObject.h index 602f33c..2992787 100644 --- a/src/crepe/api/GameObject.h +++ b/src/crepe/api/GameObject.h @@ -3,20 +3,59 @@ #include <cstdint> #include <string> -#include "api/Point.h" - namespace crepe { +class Point; + +/** + * \brief Represents a GameObject + * + * This class represents a GameObject. The GameObject class is only used + * as an interface for the game programmer. The actual implementation is + * done in the ComponentManager. + */ class GameObject { public: - GameObject(uint32_t id, std::string name, std::string tag, + /** + * This constructor creates a new GameObject. It creates a new + * Transform and Metadata component and adds them to the ComponentManager. + * + * \param id The id of the GameObject + * \param name The name of the GameObject + * \param tag The tag of the GameObject + * \param position The position of the GameObject + * \param rotation The rotation of the GameObject + * \param scale The scale of the GameObject + */ + GameObject(uint32_t id, const std::string & name, const std::string & tag, const Point & position, double rotation, double scale); + /** + * \brief Set the parent of this GameObject + * + * This method sets the parent of this GameObject. It sets the parent + * in the Metadata component of this GameObject and adds this GameObject + * to the children list of the parent GameObject. + * + * \param parent The parent GameObject + */ void set_parent(const GameObject & parent); - + /** + * \brief Add a component to the GameObject + * + * This method adds a component to the GameObject. It forwards the + * arguments to the ComponentManager. + * + * \tparam T The type of the component + * \tparam Args The types of the arguments + * \param args The arguments to create the component + * \return The created component + */ template <typename T, typename... Args> T & add_component(Args &&... args); - uint32_t id; +public: + //! The id of the GameObject + const uint32_t ID; }; } // namespace crepe diff --git a/src/crepe/api/GameObject.hpp b/src/crepe/api/GameObject.hpp index 77cf40e..7e6148c 100644 --- a/src/crepe/api/GameObject.hpp +++ b/src/crepe/api/GameObject.hpp @@ -8,8 +8,8 @@ namespace crepe { template <typename T, typename... Args> T & GameObject::add_component(Args &&... args) { - auto & mgr = ComponentManager::get_instance(); - return mgr.add_component<T>(this->id, std::forward<Args>(args)...); + ComponentManager & mgr = ComponentManager::get_instance(); + return mgr.add_component<T>(this->ID, std::forward<Args>(args)...); } } // namespace crepe diff --git a/src/crepe/Metadata.cpp b/src/crepe/api/Metadata.cpp index 53d93da..55d9ae2 100644 --- a/src/crepe/Metadata.cpp +++ b/src/crepe/api/Metadata.cpp @@ -5,4 +5,4 @@ using namespace std; Metadata::Metadata(uint32_t game_object_id, const string & name, const string & tag) - : Component(game_object_id), name(name), tag(tag) {} + : Component(game_object_id), NAME(name), TAG(tag) {} diff --git a/src/crepe/api/Metadata.h b/src/crepe/api/Metadata.h new file mode 100644 index 0000000..fdbed41 --- /dev/null +++ b/src/crepe/api/Metadata.h @@ -0,0 +1,43 @@ +#pragma once + +#include <string> +#include <vector> + +#include "../Component.h" + +namespace crepe { + +/** + * \brief Metadata component + * + * This class represents the Metadata component. It stores the name, tag, parent + * and children of a GameObject. + */ +class Metadata : public Component { +public: + /** + * \param game_object_id The id of the GameObject this component belongs to + * \param name The name of the GameObject + * \param tag The tag of the GameObject + */ + Metadata(uint32_t game_object_id, const std::string & name, + const std::string & tag); + /** + * \brief Get the maximum number of instances for this component + * + * \return The maximum number of instances for this component + */ + virtual int get_instances_max() const { return 1; } + +public: + //! The name of the GameObject + const std::string NAME; + //! The tag of the GameObject + const std::string TAG; + //! The id of the parent GameObject (-1 if no parent) + uint32_t parent = -1; + //! The ids of the children GameObjects + std::vector<uint32_t> children; +}; + +} // namespace crepe diff --git a/src/crepe/api/Script.hpp b/src/crepe/api/Script.hpp index d96c0e8..6d111af 100644 --- a/src/crepe/api/Script.hpp +++ b/src/crepe/api/Script.hpp @@ -19,7 +19,7 @@ T & Script::get_component() { template <typename T> std::vector<std::reference_wrapper<T>> Script::get_components() { ComponentManager & mgr = ComponentManager::get_instance(); - return mgr.get_components_by_id<T>(this->parent->game_object_id); + return mgr.get_components_by_id<T>(this->parent->GAME_OBJECT_ID); } } // namespace crepe diff --git a/src/crepe/api/Transform.cpp b/src/crepe/api/Transform.cpp index 1d8d401..be1769e 100644 --- a/src/crepe/api/Transform.cpp +++ b/src/crepe/api/Transform.cpp @@ -1,9 +1,7 @@ #include <cstdint> -#include "api/Point.h" #include "util/log.h" -#include "Component.h" #include "Transform.h" using namespace crepe; @@ -13,5 +11,3 @@ Transform::Transform(uint32_t game_id, const Point & point, double rot, : Component(game_id), position(point), rotation(rot), scale(scale) { dbg_trace(); } - -Transform::~Transform() { dbg_trace(); } diff --git a/src/crepe/api/Transform.h b/src/crepe/api/Transform.h index 557061b..69ea48f 100644 --- a/src/crepe/api/Transform.h +++ b/src/crepe/api/Transform.h @@ -8,15 +8,29 @@ namespace crepe { +/** + * \brief Transform component + * + * This class represents the Transform component. It stores the position, + * rotation and scale of a GameObject. + */ class Transform : public Component { - // FIXME: What's the difference between the `Point` and `Position` - // classes/structs? How about we replace both with a universal `Vec2` that - // works similar (or the same) as those found in GLSL? - public: - Transform(uint32_t id, const Point &, double, double); - ~Transform(); + /** + * \param id The id of the GameObject this component belongs to + * \param point The position of the GameObject + * \param rot The rotation of the GameObject + * \param scale The scale of the GameObject + */ + Transform(uint32_t id, const Point & point, double rot, double scale); + /** + * \brief Get the maximum number of instances for this component + * + * \return The maximum number of instances for this component + */ virtual int get_instances_max() const { return 1; } + +public: //! Translation (shift) Point position; //! Rotation, in radians diff --git a/src/crepe/system/PhysicsSystem.cpp b/src/crepe/system/PhysicsSystem.cpp index cea8062..dd80312 100644 --- a/src/crepe/system/PhysicsSystem.cpp +++ b/src/crepe/system/PhysicsSystem.cpp @@ -23,12 +23,12 @@ void PhysicsSystem::update() { switch (rigidbody.body_type) { case BodyType::DYNAMIC: for (Transform & transform : transforms) { - if (transform.game_object_id == rigidbody.game_object_id) { + if (transform.GAME_OBJECT_ID == rigidbody.GAME_OBJECT_ID) { rigidbody.velocity_x = 0; rigidbody.velocity_y = 0; std::vector<std::reference_wrapper<Force>> forces = mgr.get_components_by_id<Force>( - rigidbody.game_object_id); + rigidbody.GAME_OBJECT_ID); rigidbody.velocity_y += rigidbody.gravity_scale * 1 * rigidbody.mass; diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index 5a07cc2..2003eaf 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -32,7 +32,7 @@ void RenderSystem::update() { for (const Sprite & sprite : sprites) { std::vector<std::reference_wrapper<Transform>> transforms - = mgr.get_components_by_id<Transform>(sprite.game_object_id); + = mgr.get_components_by_id<Transform>(sprite.GAME_OBJECT_ID); for (const Transform & transform : transforms) { render.draw(sprite, transform); } diff --git a/src/example/ecs.cpp b/src/example/ecs.cpp index 6f9752e..7593faf 100644 --- a/src/example/ecs.cpp +++ b/src/example/ecs.cpp @@ -1,9 +1,9 @@ #include <iostream> -#include "../crepe/ComponentManager.h" -#include "../crepe/Metadata.h" -#include "../crepe/api/GameObject.h" -#include "../crepe/api/Transform.h" +#include <crepe/ComponentManager.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Metadata.h> +#include <crepe/api/Transform.h> using namespace crepe; using namespace std; @@ -38,8 +38,8 @@ int main() { // Print the Metadata and Transform components for (auto & m : metadata) { - cout << "Id: " << m.get().game_object_id << " Name: " << m.get().name - << " Tag: " << m.get().tag << " Parent: " << m.get().parent + cout << "Id: " << m.get().GAME_OBJECT_ID << " Name: " << m.get().NAME + << " Tag: " << m.get().TAG << " Parent: " << m.get().parent << " Children: "; for (auto & c : m.get().children) { cout << c << " "; @@ -47,7 +47,7 @@ int main() { cout << endl; } for (auto & t : transform) { - cout << "Id: " << t.get().game_object_id << " Position: [" + cout << "Id: " << t.get().GAME_OBJECT_ID << " Position: [" << t.get().position.x << ", " << t.get().position.y << "]" << endl; } diff --git a/src/example/particle.cpp b/src/example/particle.cpp index 69da015..607530d 100644 --- a/src/example/particle.cpp +++ b/src/example/particle.cpp @@ -7,6 +7,7 @@ #include <crepe/Particle.h> #include <crepe/api/GameObject.h> #include <crepe/api/ParticleEmitter.h> +#include <crepe/api/Point.h> #include <crepe/facade/SDLApp.h> #include <crepe/system/ParticleSystem.h> diff --git a/src/example/scene_manager.cpp b/src/example/scene_manager.cpp index 2fcdbec..bfa9479 100644 --- a/src/example/scene_manager.cpp +++ b/src/example/scene_manager.cpp @@ -1,17 +1,18 @@ #include <iostream> -#include "../crepe/ComponentManager.h" -#include "../crepe/Metadata.h" -#include "../crepe/api/GameObject.h" -#include "../crepe/api/Scene.h" -#include "../crepe/api/SceneManager.h" +#include <crepe/ComponentManager.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Metadata.h> +#include <crepe/api/Point.h> +#include <crepe/api/Scene.h> +#include <crepe/api/SceneManager.h> using namespace crepe; using namespace std; -class concreteScene1 : public Scene { +class ConcreteScene1 : public Scene { public: - concreteScene1(string name) : Scene(name) {} + ConcreteScene1(string name) : Scene(name) {} void load_scene() { GameObject object1(0, "scene_1", "tag_scene_1", Point{0, 0}, 0, 1); @@ -20,9 +21,9 @@ public: } }; -class concreteScene2 : public Scene { +class ConcreteScene2 : public Scene { public: - concreteScene2(string name) : Scene(name) {} + ConcreteScene2(string name) : Scene(name) {} void load_scene() { GameObject object1(0, "scene_2", "tag_scene_2", Point{0, 0}, 0, 1); @@ -36,8 +37,8 @@ int main() { SceneManager & scene_mgr = SceneManager::get_instance(); // Add the scenes to the scene manager - scene_mgr.add_scene<concreteScene1>("scene1"); - scene_mgr.add_scene<concreteScene2>("scene2"); + scene_mgr.add_scene<ConcreteScene1>("scene1"); + scene_mgr.add_scene<ConcreteScene2>("scene2"); // There is no need to call set_next_scene() at the beginnen, because the first scene will be automatically set as the next scene // Load scene1 (the first scene added) @@ -51,8 +52,8 @@ int main() { cout << "Metadata components of Scene1:" << endl; // Print the Metadata for (auto & m : metadata) { - cout << "Id: " << m.get().game_object_id << " Name: " << m.get().name - << " Tag: " << m.get().tag << endl; + cout << "Id: " << m.get().GAME_OBJECT_ID << " Name: " << m.get().NAME + << " Tag: " << m.get().TAG << endl; } // Set scene2 as the next scene @@ -66,8 +67,8 @@ int main() { cout << "Metadata components of Scene2:" << endl; // Print the Metadata for (auto & m : metadata) { - cout << "Id: " << m.get().game_object_id << " Name: " << m.get().name - << " Tag: " << m.get().tag << endl; + cout << "Id: " << m.get().GAME_OBJECT_ID << " Name: " << m.get().NAME + << " Tag: " << m.get().TAG << endl; } return 0; diff --git a/src/makefile b/src/makefile index 8506a43..be1548c 100644 --- a/src/makefile +++ b/src/makefile @@ -19,13 +19,13 @@ LOEK += crepe/Asset.cpp LOEK += crepe/Asset.h TODO += crepe/Collider.cpp TODO += crepe/Collider.h -TODO += crepe/Component.cpp -TODO += crepe/Component.h -TODO += crepe/ComponentManager.cpp -TODO += crepe/ComponentManager.h -TODO += crepe/ComponentManager.hpp -TODO += crepe/Metadata.cpp -TODO += crepe/Metadata.h +MAX += crepe/Component.cpp +MAX += crepe/Component.h +MAX += crepe/ComponentManager.cpp +MAX += crepe/ComponentManager.h +MAX += crepe/ComponentManager.hpp +MAX += crepe/api/Metadata.cpp +MAX += crepe/api/Metadata.h TODO += crepe/Particle.cpp TODO += crepe/Particle.h TODO += crepe/Position.h @@ -43,9 +43,9 @@ TODO += crepe/api/Color.h LOEK += crepe/api/Config.h TODO += crepe/api/Force.cpp TODO += crepe/api/Force.h -TODO += crepe/api/GameObject.cpp -TODO += crepe/api/GameObject.h -TODO += crepe/api/GameObject.hpp +MAX += crepe/api/GameObject.cpp +MAX += crepe/api/GameObject.h +MAX += crepe/api/GameObject.hpp TODO += crepe/api/ParticleEmitter.cpp TODO += crepe/api/ParticleEmitter.h TODO += crepe/api/Point.h @@ -58,8 +58,8 @@ TODO += crepe/api/Sprite.cpp TODO += crepe/api/Sprite.h TODO += crepe/api/Texture.cpp TODO += crepe/api/Texture.h -TODO += crepe/api/Transform.cpp -TODO += crepe/api/Transform.h +MAX += crepe/api/Transform.cpp +MAX += crepe/api/Transform.h TODO += crepe/facade/SDLApp.cpp TODO += crepe/facade/SDLApp.h TODO += crepe/facade/SDLContext.cpp @@ -88,7 +88,7 @@ LOEK += crepe/util/log.h TODO += example/asset_manager.cpp LOEK += example/audio_internal.cpp TODO += example/components_internal.cpp -TODO += example/ecs.cpp +MAX += example/ecs.cpp LOEK += example/log.cpp TODO += example/particle.cpp TODO += example/physics.cpp @@ -97,7 +97,7 @@ LOEK += example/script.cpp LOEK += test/audio.cpp LOEK += test/dummy.cpp -FMT := $(LOEK) #<<< CHANGE THIS TO YOUR NAME FOR STEP 2 +FMT := $(MAX) #<<< CHANGE THIS TO YOUR NAME FOR STEP 2 format: FORCE clang-tidy -p build/compile_commands.json --fix-errors $(FMT) |