diff options
| author | JAROWMR <jarorutjes07@gmail.com> | 2024-12-16 21:26:11 +0100 | 
|---|---|---|
| committer | JAROWMR <jarorutjes07@gmail.com> | 2024-12-16 21:26:11 +0100 | 
| commit | 6e92c59b3364b00eb15c310120b93acc83ca504e (patch) | |
| tree | cf24c206bf444bf8c3e1e51b6ac73be56e69c98c | |
| parent | 5bece30f9ad495a0e82097b2c5668e979856fb69 (diff) | |
| parent | 4cddaf8e8b809a69a8e03e79c4f7902920745a9a (diff) | |
pulled api change
| -rw-r--r-- | src/crepe/api/BoxCollider.cpp | 4 | ||||
| -rw-r--r-- | src/crepe/api/BoxCollider.h | 3 | ||||
| -rw-r--r-- | src/crepe/api/CircleCollider.cpp | 4 | ||||
| -rw-r--r-- | src/crepe/api/CircleCollider.h | 3 | ||||
| -rw-r--r-- | src/crepe/api/Rigidbody.h | 2 | ||||
| -rw-r--r-- | src/example/game.cpp | 35 | ||||
| -rw-r--r-- | src/test/CollisionTest.cpp | 12 | 
7 files changed, 32 insertions, 31 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..d643e7f 100644 --- a/src/crepe/api/BoxCollider.h +++ b/src/crepe/api/BoxCollider.h @@ -13,7 +13,8 @@ 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/CircleCollider.cpp b/src/crepe/api/CircleCollider.cpp index a4271e9..90ab5e7 100644 --- a/src/crepe/api/CircleCollider.cpp +++ b/src/crepe/api/CircleCollider.cpp @@ -2,7 +2,7 @@  using namespace crepe; -CircleCollider::CircleCollider(game_object_id_t game_object_id, const vec2 & offset, -							   float radius) +CircleCollider::CircleCollider(game_object_id_t game_object_id, float radius, +							   const vec2 & offset)  	: Collider(game_object_id, offset),  	  radius(radius) {} diff --git a/src/crepe/api/CircleCollider.h b/src/crepe/api/CircleCollider.h index c7bf66e..22da836 100644 --- a/src/crepe/api/CircleCollider.h +++ b/src/crepe/api/CircleCollider.h @@ -13,7 +13,8 @@ namespace crepe {   */  class CircleCollider : public Collider {  public: -	CircleCollider(game_object_id_t game_object_id, const vec2 & offset, float radius); +	CircleCollider(game_object_id_t game_object_id, float radius, +				   const vec2 & offset = {0, 0});  	//! Radius of the circle collider.  	float radius; diff --git a/src/crepe/api/Rigidbody.h b/src/crepe/api/Rigidbody.h index 8566d00..0f6be21 100644 --- a/src/crepe/api/Rigidbody.h +++ b/src/crepe/api/Rigidbody.h @@ -132,7 +132,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/example/game.cpp b/src/example/game.cpp index 01a509f..a8b3d5d 100644 --- a/src/example/game.cpp +++ b/src/example/game.cpp @@ -37,7 +37,8 @@ class MyScript1 : public Script {  			}  			case Keycode::W: {  				Rigidbody & tf = this->get_component<Rigidbody>(); -				tf.data.linear_velocity.y -= 1; +				// tf.data.linear_velocity.y -= 1; +				tf.add_force_linear({0, -1});  				break;  			}  			case Keycode::S: { @@ -197,19 +198,19 @@ public:  			.mass = 0,  			.gravity_scale = 0,  			.body_type = Rigidbody::BodyType::STATIC, -			.collision_layers = {0},  		});  		world.add_component<BoxCollider>( -			vec2{0, 0 - (screen_size_height / 2 + world_collider / 2)}, -			vec2{world_collider, world_collider}); -		; // Top -		world.add_component<BoxCollider>(vec2{0, screen_size_height / 2 + world_collider / 2}, -										 vec2{world_collider, world_collider}); // Bottom +			vec2{world_collider, world_collider}, +			vec2{0, 0 - (screen_size_height / 2 + world_collider / 2)}); // Top +		world.add_component<BoxCollider>( +			vec2{world_collider, world_collider}, +			vec2{0, screen_size_height / 2 + world_collider / 2}); // Bottom  		world.add_component<BoxCollider>( -			vec2{0 - (screen_size_width / 2 + world_collider / 2), 0}, -			vec2{world_collider, world_collider}); // Left -		world.add_component<BoxCollider>(vec2{screen_size_width / 2 + world_collider / 2, 0}, -										 vec2{world_collider, world_collider}); // right +			vec2{world_collider, world_collider}, +			vec2{0 - (screen_size_width / 2 + world_collider / 2), 0}); // Left +		world.add_component<BoxCollider>( +			vec2{world_collider, world_collider}, +			vec2{screen_size_width / 2 + world_collider / 2, 0}); // right  		world.add_component<Camera>(  			ivec2{static_cast<int>(screen_size_width), static_cast<int>(screen_size_height)},  			vec2{screen_size_width, screen_size_height}, @@ -227,10 +228,9 @@ public:  			.linear_velocity = {0, 1},  			.constraints = {0, 0, 0},  			.elastisity_coefficient = 1, -			.collision_layers = {0},  		});  		// add box with boxcollider -		game_object1.add_component<BoxCollider>(vec2{0, 0}, vec2{20, 20}); +		game_object1.add_component<BoxCollider>(vec2{20, 20});  		game_object1.add_component<BehaviorScript>().set_script<MyScript1>();  		Asset img1{"asset/texture/test_ap43.png"}; @@ -242,7 +242,7 @@ public:  												 });  		//add circle with cirlcecollider deactiveated -		game_object1.add_component<CircleCollider>(vec2{0, 0}, 10).active = false; +		game_object1.add_component<CircleCollider>(10).active = false;  		Asset img2{"asset/texture/circle.png"};  		game_object1  			.add_component<Sprite>(img2, @@ -260,11 +260,10 @@ public:  			.body_type = Rigidbody::BodyType::KINEMATIC,  			.linear_velocity = {0, 0},  			.constraints = {0, 0, 0}, -			.elastisity_coefficient = 0.66, -			.collision_layers = {0}, +			.elastisity_coefficient = 1,  		});  		// add box with boxcollider -		game_object2.add_component<BoxCollider>(vec2{0, 0}, vec2{INFINITY, 20}); +		game_object2.add_component<BoxCollider>(vec2{20, 20});  		game_object2.add_component<BehaviorScript>().set_script<MyScript2>();  		game_object2.add_component<Sprite>(img1, Sprite::Data{ @@ -272,7 +271,7 @@ public:  												 });  		//add circle with cirlcecollider deactiveated -		game_object2.add_component<CircleCollider>(vec2{0, 0}, 10).active = false; +		game_object2.add_component<CircleCollider>(10).active = false;  		game_object2  			.add_component<Sprite>(img2, diff --git a/src/test/CollisionTest.cpp b/src/test/CollisionTest.cpp index 3cb7f33..50e862d 100644 --- a/src/test/CollisionTest.cpp +++ b/src/test/CollisionTest.cpp @@ -68,10 +68,10 @@ public:  			.body_type = Rigidbody::BodyType::STATIC,  		});  		// Create a box with an inner size of 10x10 units -		world.add_component<BoxCollider>(vec2{0, -100}, vec2{100, 100}); // Top -		world.add_component<BoxCollider>(vec2{0, 100}, vec2{100, 100}); // Bottom -		world.add_component<BoxCollider>(vec2{-100, 0}, vec2{100, 100}); // Left -		world.add_component<BoxCollider>(vec2{100, 0}, vec2{100, 100}); // right +		world.add_component<BoxCollider>(vec2{100, 100}, vec2{0, -100}); // Top +		world.add_component<BoxCollider>(vec2{100, 100}, vec2{0, 100}); // Bottom +		world.add_component<BoxCollider>(vec2{100, 100}, vec2{-100, 0}); // Left +		world.add_component<BoxCollider>(vec2{100, 100}, vec2{100, 0}); // right  		game_object1.add_component<Rigidbody>(Rigidbody::Data{  			.mass = 1, @@ -82,7 +82,7 @@ public:  			.elastisity_coefficient = 1,  			.collision_layers = {0},  		}); -		game_object1.add_component<BoxCollider>(vec2{0, 0}, vec2{10, 10}); +		game_object1.add_component<BoxCollider>(vec2{10, 10}, vec2{0, 0});  		BehaviorScript & script_object1  			= game_object1.add_component<BehaviorScript>().set_script<CollisionHandler>(1);  		script_object1_ref = static_cast<CollisionHandler *>(script_object1.script.get()); @@ -97,7 +97,7 @@ public:  			.elastisity_coefficient = 1,  			.collision_layers = {0},  		}); -		game_object2.add_component<BoxCollider>(vec2{0, 0}, vec2{10, 10}); +		game_object2.add_component<BoxCollider>(vec2{10, 10}, vec2{0, 0});  		BehaviorScript & script_object2  			= game_object2.add_component<BehaviorScript>().set_script<CollisionHandler>(2);  		script_object2_ref = static_cast<CollisionHandler *>(script_object2.script.get());  |