aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormax-001 <maxsmits21@kpnmail.nl>2024-11-06 09:52:05 +0100
committermax-001 <maxsmits21@kpnmail.nl>2024-11-06 09:52:05 +0100
commitf4083c161a1176c900629ba61d96843645fc7be5 (patch)
tree0c136c9af142a4f7018a7441ec879b3b41da02c0
parentbf4c172f2709adf5a6f210bae60e16972e8decad (diff)
parent6ce2c14077e3e6dd01398d582b42dc50e9141f54 (diff)
Merge remote-tracking branch 'origin/master' into max/scenes
-rw-r--r--contributing.md31
-rw-r--r--src/crepe/Component.cpp1
-rw-r--r--src/crepe/Component.h2
-rw-r--r--src/crepe/ComponentManager.hpp3
-rw-r--r--src/crepe/Metadata.cpp5
-rw-r--r--src/crepe/Metadata.h6
-rw-r--r--src/crepe/api/GameObject.cpp21
-rw-r--r--src/crepe/api/GameObject.h5
-rw-r--r--src/crepe/api/Transform.cpp3
-rw-r--r--src/crepe/api/Transform.h4
-rw-r--r--src/example/ecs.cpp16
-rw-r--r--src/example/rendering.cpp1
-rw-r--r--src/makefile104
13 files changed, 164 insertions, 38 deletions
diff --git a/contributing.md b/contributing.md
index 2fe46f7..e910dba 100644
--- a/contributing.md
+++ b/contributing.md
@@ -386,6 +386,37 @@ that you can click on to open them.
#endif
```
</td></tr></table></details>
+- <details><summary>
+ Variables that are being moved always use the fully qualified <code>std::move</code>
+ </summary><table><tr><th>Good</th><th>Bad</th></tr><tr><td>
+
+ ```cpp
+ using namespace std;
+ string foo = "bar";
+ ref_fn(std::move(foo));
+ ```
+ </td><td>
+
+ ```cpp
+ using namespace std;
+ string foo = "bar";
+ ref_fn(move(foo));
+ ```
+ </td></tr></table></details>
+- <details><summary>
+ If possible, classes and structs are passed to functions by (const) reference
+ </summary><table><tr><th>Good</th><th>Bad</th></tr><tr><td>
+
+ ```cpp
+ void foo(const Point & p);
+ ```
+ </td><td>
+
+ ```cpp
+ void foo(Point & p);
+ void bar(Point p);
+ ```
+ </td></tr></table></details>
## CMakeLists-specific
diff --git a/src/crepe/Component.cpp b/src/crepe/Component.cpp
index 78b47fa..41e7273 100644
--- a/src/crepe/Component.cpp
+++ b/src/crepe/Component.cpp
@@ -4,4 +4,3 @@ using namespace crepe;
Component::Component(uint32_t id) : game_object_id(id), active(true) {}
-int Component::get_instances_max() const { return -1; }
diff --git a/src/crepe/Component.h b/src/crepe/Component.h
index 039836e..8db9b2a 100644
--- a/src/crepe/Component.h
+++ b/src/crepe/Component.h
@@ -13,7 +13,7 @@ protected:
public:
virtual ~Component() = default;
- virtual int get_instances_max() const;
+ virtual int get_instances_max() const { return -1; }
public:
uint32_t game_object_id;
diff --git a/src/crepe/ComponentManager.hpp b/src/crepe/ComponentManager.hpp
index f469d12..e74f2e9 100644
--- a/src/crepe/ComponentManager.hpp
+++ b/src/crepe/ComponentManager.hpp
@@ -36,12 +36,13 @@ T & ComponentManager::add_component(uint32_t id, Args &&... args) {
// Check if the vector size is not greater than get_instances_max
if (instance->get_instances_max() != -1
&& components[type][id].size() >= instance->get_instances_max()) {
+ // TODO: Exception
throw std::runtime_error(
"Exceeded maximum number of instances for this component type");
}
// store its unique_ptr in the vector<>
- components[type][id].push_back(move(instance));
+ components[type][id].push_back(std::move(instance));
return *instance;
}
diff --git a/src/crepe/Metadata.cpp b/src/crepe/Metadata.cpp
index d362e0a..1ba150a 100644
--- a/src/crepe/Metadata.cpp
+++ b/src/crepe/Metadata.cpp
@@ -3,7 +3,6 @@
using namespace crepe;
using namespace std;
-Metadata::Metadata(uint32_t gameObjectId, string name, string tag)
- : Component(gameObjectId), name(name), tag(tag) {}
+Metadata::Metadata(uint32_t game_object_id, const string & name, const string & tag)
+ : Component(game_object_id), name(name), tag(tag) {}
-int Metadata::get_instances_max() const { return 1; }
diff --git a/src/crepe/Metadata.h b/src/crepe/Metadata.h
index 2f08476..b946fd0 100644
--- a/src/crepe/Metadata.h
+++ b/src/crepe/Metadata.h
@@ -9,13 +9,13 @@ namespace crepe {
class Metadata : public Component {
public:
- Metadata(uint32_t game_object_id, std::string name, std::string tag);
- int get_instances_max() const;
+ 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 = UINT32_MAX;
+ uint32_t parent = -1;
std::vector<uint32_t> children;
};
diff --git a/src/crepe/api/GameObject.cpp b/src/crepe/api/GameObject.cpp
index 2592d2d..8a1a235 100644
--- a/src/crepe/api/GameObject.cpp
+++ b/src/crepe/api/GameObject.cpp
@@ -6,20 +6,21 @@
using namespace crepe;
using namespace std;
-GameObject::GameObject(uint32_t id, std::string name, std::string tag,
- Point position, double rotation, double scale)
- : id(id) {
+GameObject::GameObject(uint32_t id, std::string name, std::string tag, const Point & position, double rotation, double scale) : id(id) {
ComponentManager & mgr = ComponentManager::get_instance();
mgr.add_component<Transform>(this->id, position, rotation, scale);
mgr.add_component<Metadata>(this->id, name, tag);
}
-void GameObject::set_parent(GameObject & parent) {
+void GameObject::set_parent(const GameObject & parent) {
auto & mgr = ComponentManager::get_instance();
- vector<reference_wrapper<Metadata>> thisMetadata
- = mgr.get_components_by_id<Metadata>(this->id);
- vector<reference_wrapper<Metadata>> parentMetadata
- = mgr.get_components_by_id<Metadata>(parent.id);
- thisMetadata.at(0).get().parent = parent.id;
- parentMetadata.at(0).get().children.push_back(this->id);
+
+ // 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;
+
+ // 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);
}
+
diff --git a/src/crepe/api/GameObject.h b/src/crepe/api/GameObject.h
index dcd33ad..4c87639 100644
--- a/src/crepe/api/GameObject.h
+++ b/src/crepe/api/GameObject.h
@@ -9,9 +9,8 @@ namespace crepe {
class GameObject {
public:
- GameObject(uint32_t id, std::string name, std::string tag, Point position,
- double rotation, double scale);
- void set_parent(GameObject & parent);
+ GameObject(uint32_t id, std::string name, std::string tag, const Point & position, double rotation, double scale);
+ void set_parent(const GameObject & parent);
template <typename T, typename... Args>
T & add_component(Args &&... args);
diff --git a/src/crepe/api/Transform.cpp b/src/crepe/api/Transform.cpp
index a80aff3..9c9bb06 100644
--- a/src/crepe/api/Transform.cpp
+++ b/src/crepe/api/Transform.cpp
@@ -8,11 +8,10 @@
using namespace crepe;
-Transform::Transform(uint32_t game_id, Point point, double rot, double scale)
+Transform::Transform(uint32_t game_id, const Point & point, double rot, double scale)
: Component(game_id), position(point), rotation(rot), scale(scale) {
dbg_trace();
}
Transform::~Transform() { dbg_trace(); }
-int Transform::get_instances_max() const { return 1; }
diff --git a/src/crepe/api/Transform.h b/src/crepe/api/Transform.h
index f918115..557061b 100644
--- a/src/crepe/api/Transform.h
+++ b/src/crepe/api/Transform.h
@@ -14,9 +14,9 @@ class Transform : public Component {
// works similar (or the same) as those found in GLSL?
public:
- Transform(uint32_t id, Point, double, double);
+ Transform(uint32_t id, const Point &, double, double);
~Transform();
- int get_instances_max() const;
+ virtual int get_instances_max() const { return 1; }
//! Translation (shift)
Point position;
//! Rotation, in radians
diff --git a/src/example/ecs.cpp b/src/example/ecs.cpp
index eb5eeba..6f9752e 100644
--- a/src/example/ecs.cpp
+++ b/src/example/ecs.cpp
@@ -12,16 +12,16 @@ int main() {
// Create a few GameObjects
try {
GameObject body(0, "body", "person", Point{0, 0}, 0, 1);
- GameObject rightLeg(1, "rightLeg", "person", Point{1, 1}, 0, 1);
- GameObject leftLeg(2, "leftLeg", "person", Point{1, 1}, 0, 1);
- GameObject rightFoot(3, "rightFoot", "person", Point{2, 2}, 0, 1);
- GameObject leftFoot(4, "leftFoot", "person", Point{2, 2}, 0, 1);
+ GameObject right_leg(1, "rightLeg", "person", Point{1, 1}, 0, 1);
+ GameObject left_leg(2, "leftLeg", "person", Point{1, 1}, 0, 1);
+ GameObject right_foot(3, "rightFoot", "person", Point{2, 2}, 0, 1);
+ GameObject left_foot(4, "leftFoot", "person", Point{2, 2}, 0, 1);
// Set the parent of each GameObject
- rightFoot.set_parent(rightLeg);
- leftFoot.set_parent(leftLeg);
- rightLeg.set_parent(body);
- leftLeg.set_parent(body);
+ right_foot.set_parent(right_leg);
+ left_foot.set_parent(left_leg);
+ right_leg.set_parent(body);
+ left_leg.set_parent(body);
// Adding a second Transform component is not allowed and will invoke an exception
body.add_component<Transform>(Point{10, 10}, 0, 1);
diff --git a/src/example/rendering.cpp b/src/example/rendering.cpp
index f3d8a7d..3fe43d6 100644
--- a/src/example/rendering.cpp
+++ b/src/example/rendering.cpp
@@ -17,7 +17,6 @@ using namespace std;
using namespace crepe;
int main() {
-
dbg_trace();
auto obj = GameObject(0, "name", "tag", Point{0, 0}, 1, 1);
diff --git a/src/makefile b/src/makefile
index 3f74a2a..8506a43 100644
--- a/src/makefile
+++ b/src/makefile
@@ -1,8 +1,106 @@
.PHONY: FORCE
-FMT += $(shell git ls-files '*.c' '*.cpp' '*.h' '*.hpp')
+# STEPS FOR BIG CLEANUP
+#
+# 1. Change TODO to your name (in capitals) for each file in the list below
+# that is yours (or you are going to fix)
+# 2. Update the name between parentheses below this list (see comment) to your
+# name
+# 3. Create a git commit at this point (ensure `git status` reports "working
+# tree clean")
+# 4. Run `make format` in the REPOSITORY ROOT DIRECTORY (NOT HERE), and start
+# fixing reported errors or miscorrections manually until everything works
+# again.
+# 5. Once everything is working again, create another git commit, and create a
+# pull request. Make sure to ask someone to review the code standards for
+# each ENTIRE FILE in this pull request.
+
+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
+TODO += crepe/Particle.cpp
+TODO += crepe/Particle.h
+TODO += crepe/Position.h
+TODO += crepe/api/AssetManager.cpp
+TODO += crepe/api/AssetManager.h
+TODO += crepe/api/AssetManager.hpp
+LOEK += crepe/api/AudioSource.cpp
+LOEK += crepe/api/AudioSource.h
+LOEK += crepe/api/BehaviorScript.cpp
+LOEK += crepe/api/BehaviorScript.h
+LOEK += crepe/api/BehaviorScript.hpp
+TODO += crepe/api/CircleCollider.h
+TODO += crepe/api/Color.cpp
+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
+TODO += crepe/api/ParticleEmitter.cpp
+TODO += crepe/api/ParticleEmitter.h
+TODO += crepe/api/Point.h
+TODO += crepe/api/Rigidbody.cpp
+TODO += crepe/api/Rigidbody.h
+LOEK += crepe/api/Script.cpp
+LOEK += crepe/api/Script.h
+LOEK += crepe/api/Script.hpp
+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
+TODO += crepe/facade/SDLApp.cpp
+TODO += crepe/facade/SDLApp.h
+TODO += crepe/facade/SDLContext.cpp
+TODO += crepe/facade/SDLContext.h
+LOEK += crepe/facade/Sound.cpp
+LOEK += crepe/facade/Sound.h
+LOEK += crepe/facade/SoundContext.cpp
+LOEK += crepe/facade/SoundContext.h
+TODO += crepe/system/CollisionSystem.cpp
+TODO += crepe/system/CollisionSystem.h
+TODO += crepe/system/ParticleSystem.cpp
+TODO += crepe/system/ParticleSystem.h
+TODO += crepe/system/PhysicsSystem.cpp
+TODO += crepe/system/PhysicsSystem.h
+TODO += crepe/system/RenderSystem.cpp
+TODO += crepe/system/RenderSystem.h
+LOEK += crepe/system/ScriptSystem.cpp
+LOEK += crepe/system/ScriptSystem.h
+LOEK += crepe/system/System.h
+LOEK += crepe/util/LogColor.cpp
+LOEK += crepe/util/LogColor.h
+LOEK += crepe/util/fmt.cpp
+LOEK += crepe/util/fmt.h
+LOEK += crepe/util/log.cpp
+LOEK += crepe/util/log.h
+TODO += example/asset_manager.cpp
+LOEK += example/audio_internal.cpp
+TODO += example/components_internal.cpp
+TODO += example/ecs.cpp
+LOEK += example/log.cpp
+TODO += example/particle.cpp
+TODO += example/physics.cpp
+TODO += example/rendering.cpp
+LOEK += example/script.cpp
+LOEK += test/audio.cpp
+LOEK += test/dummy.cpp
+
+FMT := $(LOEK) #<<< CHANGE THIS TO YOUR NAME FOR STEP 2
format: FORCE
- # clang-tidy -p build/compile_commands.json --fix-errors $(FMT)
+ clang-tidy -p build/compile_commands.json --fix-errors $(FMT)
-# TODO: re-enable linter after 2024-11-10
+# FMT += $(shell git ls-files '*.c' '*.cpp' '*.h' '*.hpp')
+# TODO: re-enable linter after all corrections