aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crepe/api/BoxCollider.cpp4
-rw-r--r--src/crepe/api/BoxCollider.h2
-rw-r--r--src/crepe/api/Camera.h2
-rw-r--r--src/crepe/api/Rigidbody.h4
-rw-r--r--src/crepe/api/Scene.h2
-rw-r--r--src/example/demo.cpp46
6 files changed, 50 insertions, 10 deletions
diff --git a/src/crepe/api/BoxCollider.cpp b/src/crepe/api/BoxCollider.cpp
index c097a24..a893d41 100644
--- a/src/crepe/api/BoxCollider.cpp
+++ b/src/crepe/api/BoxCollider.cpp
@@ -4,7 +4,7 @@
using namespace crepe;
-BoxCollider::BoxCollider(game_object_id_t game_object_id, const vec2 & offset,
- const vec2 & dimensions)
+BoxCollider::BoxCollider(game_object_id_t game_object_id, const vec2 & dimensions,
+ const vec2 & offset)
: Collider(game_object_id, offset),
dimensions(dimensions) {}
diff --git a/src/crepe/api/BoxCollider.h b/src/crepe/api/BoxCollider.h
index 1ac4d46..3835e2c 100644
--- a/src/crepe/api/BoxCollider.h
+++ b/src/crepe/api/BoxCollider.h
@@ -13,7 +13,7 @@ namespace crepe {
*/
class BoxCollider : public Collider {
public:
- BoxCollider(game_object_id_t game_object_id, const vec2 & offset, const vec2 & dimensions);
+ BoxCollider(game_object_id_t game_object_id, const vec2 & dimensions, const vec2 & offset = { 0, 0 });
//! Width and height of the box collider
vec2 dimensions;
diff --git a/src/crepe/api/Camera.h b/src/crepe/api/Camera.h
index 48f2ff2..2fea9f3 100644
--- a/src/crepe/api/Camera.h
+++ b/src/crepe/api/Camera.h
@@ -47,7 +47,7 @@ public:
~Camera(); // dbg_trace only
public:
- Camera::Data data;
+ Data data;
//! viewport is the area of the world visible through the camera (in world units)
const vec2 viewport_size;
diff --git a/src/crepe/api/Rigidbody.h b/src/crepe/api/Rigidbody.h
index b08c8db..b2bfc0d 100644
--- a/src/crepe/api/Rigidbody.h
+++ b/src/crepe/api/Rigidbody.h
@@ -61,7 +61,7 @@ public:
* gravity force, allowing for fine-grained control over how the object responds to gravity.
*
*/
- float gravity_scale = 0;
+ float gravity_scale = 1.0;
//! Defines the type of the physics body, which determines how the physics system interacts with the object.
BodyType body_type = BodyType::DYNAMIC;
@@ -139,7 +139,7 @@ public:
* Each element represents a layer ID, and the GameObject will only detect
* collisions with other GameObjects that belong to these layers.
*/
- std::set<int> collision_layers;
+ std::set<int> collision_layers = {0};
};
public:
diff --git a/src/crepe/api/Scene.h b/src/crepe/api/Scene.h
index dcca9d4..5c34b36 100644
--- a/src/crepe/api/Scene.h
+++ b/src/crepe/api/Scene.h
@@ -39,7 +39,7 @@ public:
* \brief Get the scene's name
* \return The scene's name
*/
- virtual std::string get_name() const = 0;
+ virtual std::string get_name() const { return ""; };
// TODO: Late references should ALWAYS be private! This is currently kept as-is so unit tests
// keep passing, but this reference should not be directly accessible by the user!!!
diff --git a/src/example/demo.cpp b/src/example/demo.cpp
index a7d784e..d7adbdb 100644
--- a/src/example/demo.cpp
+++ b/src/example/demo.cpp
@@ -2,23 +2,63 @@
#include <crepe/api/Engine.h>
#include <crepe/api/Scene.h>
#include <crepe/api/Camera.h>
+#include <crepe/api/BehaviorScript.h>
+#include <crepe/api/Rigidbody.h>
+#include <crepe/api/Config.h>
using namespace crepe;
using namespace std;
+class PlayerController : public Script {
+ void update() {
+ }
+};
+
class DemoScene : public Scene {
string get_name() const override { return "DemoScene"; }
void load_scene() override {
GameObject camera = new_object("camera");
- camera.add_component<Camera>(vec2{10, 10}, Camera::Data{});
+ camera.add_component<Camera>(vec2{10, 10}, Camera::Data{
+ .bg_color = {0x22, 0x22, 0x22},
+ });
+
+
+ GameObject ground = new_object("ground");
+ Sprite & ground_sprite = ground.add_component<Sprite>(
+ Asset{"asset/demo/floor.png"},
+ Sprite::Data{
+ .size = {10, 2},
+ }
+ );
+ ground.transform.position = {0, 4};
+ ground.add_component<Rigidbody>(Rigidbody::Data{
+ .body_type = Rigidbody::BodyType::STATIC,
+ });
+ ground.add_component<BoxCollider>(ground_sprite.data.size);
+
+
+ GameObject player = new_object("player");
+ Sprite & player_sprite = player.add_component<Sprite>(
+ Asset{"asset/demo/player.png"},
+ Sprite::Data{
+ .size = { 1, 1 },
+ }
+ );
+ player.add_component<Rigidbody>(Rigidbody::Data{});
+ player.add_component<BoxCollider>(player_sprite.data.size);
+ player.add_component<BehaviorScript>().set_script<PlayerController>();
}
};
int main() {
- Engine demo;
+ Config::get_instance() = {
+ .window = {
+ .size = {800, 800},
+ },
+ };
+ Engine demo;
demo.add_scene<DemoScene>();
-
return demo.main();
}