aboutsummaryrefslogtreecommitdiff
path: root/src/crepe
diff options
context:
space:
mode:
authorjaroWMR <jarorutjes07@gmail.com>2024-10-23 20:03:18 +0200
committerjaroWMR <jarorutjes07@gmail.com>2024-10-23 20:03:18 +0200
commit3789031ac520b393969bbedd55444e3fd2b7f1fa (patch)
tree212f78845ae1f8972a96636e8425b080a64c7e05 /src/crepe
parentedbb6c892299e3b7f93638abcc9e55b2cfce2358 (diff)
parentc9246515fe785563411e9170aedd0231165ab988 (diff)
merge with niels/rendering
Diffstat (limited to 'src/crepe')
-rw-r--r--src/crepe/CMakeLists.txt5
-rw-r--r--src/crepe/RenderSystem.cpp23
-rw-r--r--src/crepe/SdlContext.cpp2
-rw-r--r--src/crepe/api/CMakeLists.txt6
-rw-r--r--src/crepe/api/Rigidbody.h2
-rw-r--r--src/crepe/api/Sprite.cpp6
-rw-r--r--src/crepe/api/Sprite.h2
-rw-r--r--src/crepe/api/Transform.cpp6
-rw-r--r--src/crepe/api/Transform.h3
9 files changed, 29 insertions, 26 deletions
diff --git a/src/crepe/CMakeLists.txt b/src/crepe/CMakeLists.txt
index afaa74c..1b4b1c2 100644
--- a/src/crepe/CMakeLists.txt
+++ b/src/crepe/CMakeLists.txt
@@ -13,6 +13,7 @@ target_sources(crepe PUBLIC
CollisionSystem.cpp
Collider.cpp
SdlContext.cpp
+
RenderSystem.cpp
)
@@ -20,9 +21,7 @@ target_sources(crepe PUBLIC FILE_SET HEADERS FILES
Asset.h
Sound.h
SoundContext.h
- ParticleSystem.h
- Particle.h
- SDLApp.h
+ SdlContext.h
ComponentManager.h
ComponentManager.hpp
Component.h
diff --git a/src/crepe/RenderSystem.cpp b/src/crepe/RenderSystem.cpp
index 6aae3bb..b5503d3 100644
--- a/src/crepe/RenderSystem.cpp
+++ b/src/crepe/RenderSystem.cpp
@@ -6,7 +6,6 @@
#include "api/Sprite.h"
#include "api/Transform.h"
#include "util/log.h"
-#include <cstddef>
#include <functional>
#include <vector>
@@ -17,25 +16,27 @@ RenderSystem::RenderSystem() { dbg_trace(); }
RenderSystem::~RenderSystem() { dbg_trace(); }
-RenderSystem& RenderSystem::get_instance(){
+RenderSystem & RenderSystem::get_instance() {
static RenderSystem instance;
return instance;
}
void RenderSystem::update() {
- ComponentManager& mgr = ComponentManager::get_instance();
-
- std::vector<std::reference_wrapper<Sprite>> sprites = mgr.get_components_by_type<Sprite>();
- std::vector<std::reference_wrapper<Transform>> transforms = mgr.get_components_by_type<Transform>();
+ ComponentManager & mgr = ComponentManager::get_instance();
- SdlContext& render = SdlContext::get_instance();
+ std::vector<std::reference_wrapper<Sprite>> sprites
+ = mgr.get_components_by_type<Sprite>();
+
+ SdlContext & render = SdlContext::get_instance();
render.clear_screen();
- for (size_t i = 0; i < sprites.size(); ++i) {
- render.draw(sprites[i].get(), transforms[i].get());
- }
+ for (const Sprite & sprite : sprites) {
+ std::vector<std::reference_wrapper<Transform>> transforms = mgr.get_components_by_id<Transform>(sprite.gameObjectId);
+ for (const Transform& transform : transforms) {
+ render.draw(sprite, transform);
+ }
+ }
render.present_screen();
-
}
diff --git a/src/crepe/SdlContext.cpp b/src/crepe/SdlContext.cpp
index cc5148c..09d9c9b 100644
--- a/src/crepe/SdlContext.cpp
+++ b/src/crepe/SdlContext.cpp
@@ -57,7 +57,7 @@ SdlContext::SdlContext() {
m_game_window = SDL_CreateWindow(
"Crepe Game Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
- 1920, 1080, SDL_WINDOW_HIDDEN);
+ 1920, 1080, SDL_WINDOW_SHOWN);
if (!m_game_window) {
std::cerr << "Window could not be created! SDL_Error: "
<< SDL_GetError() << std::endl;
diff --git a/src/crepe/api/CMakeLists.txt b/src/crepe/api/CMakeLists.txt
index f6de96e..f2d45eb 100644
--- a/src/crepe/api/CMakeLists.txt
+++ b/src/crepe/api/CMakeLists.txt
@@ -4,13 +4,14 @@ target_sources(crepe PUBLIC
Script.cpp
GameObject.cpp
Rigidbody.cpp
- Sprite.cpp
Force.cpp
ParticleEmitter.cpp
Transform.cpp
Color.cpp
Texture.cpp
AssetManager.cpp
+ Collider.cpp
+ Sprite.cpp
)
target_sources(crepe PUBLIC FILE_SET HEADERS FILES
@@ -21,9 +22,6 @@ target_sources(crepe PUBLIC FILE_SET HEADERS FILES
GameObject.hpp
Rigidbody.h
Sprite.h
- Force.h
- ParticleEmitter.h
- Transform.h
Point.h
Color.h
Texture.h
diff --git a/src/crepe/api/Rigidbody.h b/src/crepe/api/Rigidbody.h
index b7a0064..e59e217 100644
--- a/src/crepe/api/Rigidbody.h
+++ b/src/crepe/api/Rigidbody.h
@@ -3,7 +3,7 @@
#include "../Component.h"
#include <cstdint>
-namespace crepe::api {
+namespace crepe::api{
enum class BodyType {
Static, // Does not move (e.g. walls, ground ...)
diff --git a/src/crepe/api/Sprite.cpp b/src/crepe/api/Sprite.cpp
index d9e26ab..3cc263e 100644
--- a/src/crepe/api/Sprite.cpp
+++ b/src/crepe/api/Sprite.cpp
@@ -1,8 +1,10 @@
#include "Sprite.h"
+#include "Component.h"
#include "api/Texture.h"
#include "util/log.h"
+#include <cstdint>
#include <memory>
#include <utility>
@@ -10,8 +12,8 @@ using namespace std;
using namespace crepe;
using namespace crepe::api;
-Sprite::Sprite(shared_ptr<Texture> image, const Color & color,
- const flip_settings & flip) : color(color), flip(flip), sprite_image(image) {
+Sprite::Sprite(uint32_t id, shared_ptr<Texture> image, const Color & color,
+ const flip_settings & flip) : Component(id), color(color), flip(flip), sprite_image(image) {
dbg_trace();
}
diff --git a/src/crepe/api/Sprite.h b/src/crepe/api/Sprite.h
index 920f91e..3d9e911 100644
--- a/src/crepe/api/Sprite.h
+++ b/src/crepe/api/Sprite.h
@@ -17,7 +17,7 @@ struct flip_settings{
class Sprite : public Component {
public:
- Sprite(std::shared_ptr<Texture> image, const Color& color, const flip_settings& flip );
+ Sprite(uint32_t game_id, std::shared_ptr<Texture> image, const Color& color, const flip_settings& flip );
~Sprite();
std::shared_ptr<Texture> sprite_image;
Color color;
diff --git a/src/crepe/api/Transform.cpp b/src/crepe/api/Transform.cpp
index c83461f..4f22843 100644
--- a/src/crepe/api/Transform.cpp
+++ b/src/crepe/api/Transform.cpp
@@ -1,13 +1,15 @@
#include "Transform.h"
+#include "Component.h"
#include "api/Point.h"
#include "util/log.h"
+#include <cstdint>
using namespace crepe::api;
-Transform::Transform(Point & point, double rot, double scale)
- : position(point), rotation(rot), scale(scale) {
+Transform::Transform(uint32_t game_id, Point & point, double rot, double scale)
+ : 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 a34ebb1..29e2a3d 100644
--- a/src/crepe/api/Transform.h
+++ b/src/crepe/api/Transform.h
@@ -2,11 +2,12 @@
#include "Component.h"
#include "api/Point.h"
+#include <cstdint>
namespace crepe::api {
class Transform : public Component {
public:
- Transform(Point&, double, double);
+ Transform(uint32_t id, Point&, double, double);
~Transform();
Point position; // Translation (shift)
double rotation; // Rotation, in radians