diff options
| author | JAROWMR <jarorutjes07@gmail.com> | 2024-12-02 17:17:21 +0100 | 
|---|---|---|
| committer | JAROWMR <jarorutjes07@gmail.com> | 2024-12-02 17:17:21 +0100 | 
| commit | eeb66130e2cb94c94e1748576f98f78ce0f1ee86 (patch) | |
| tree | f3a8a09b9f9245f559d1c924a7eccead5434f979 /src/crepe/system | |
| parent | d06e05d0d8dbe1ace63b439231ccd05a975e9834 (diff) | |
changed some values because of feedback and merged from master
Diffstat (limited to 'src/crepe/system')
| -rw-r--r-- | src/crepe/system/CollisionSystem.cpp | 18 | ||||
| -rw-r--r-- | src/crepe/system/CollisionSystem.h | 8 | ||||
| -rw-r--r-- | src/crepe/system/PhysicsSystem.cpp | 10 | 
3 files changed, 18 insertions, 18 deletions
| diff --git a/src/crepe/system/CollisionSystem.cpp b/src/crepe/system/CollisionSystem.cpp index 2fe3621..fbb16e8 100644 --- a/src/crepe/system/CollisionSystem.cpp +++ b/src/crepe/system/CollisionSystem.cpp @@ -146,10 +146,10 @@ std::pair<vec2,CollisionSystem::Direction> CollisionSystem::collision_handler(Co  		resolution.x = data1.rigidbody.data.linear_velocity.x * (resolution.y/data1.rigidbody.data.linear_velocity.y);  	} -	return {resolution,resolution_direction}; +	return std::make_pair(resolution,resolution_direction);  } -vec2 CollisionSystem::get_box_box_resolution(const BoxCollider& box_collider1,const BoxCollider& box_collider2,vec2 final_position1,vec2 final_position2) const +vec2 CollisionSystem::get_box_box_resolution(const BoxCollider& box_collider1,const BoxCollider& box_collider2,const vec2& final_position1,const vec2& final_position2) const  {  	vec2 resolution; // Default resolution vector  	vec2 delta = final_position2 - final_position1; @@ -183,7 +183,7 @@ vec2 CollisionSystem::get_box_box_resolution(const BoxCollider& box_collider1,co  	return resolution;  } -vec2 CollisionSystem::get_circle_circle_resolution(const CircleCollider& circle_collider1, const CircleCollider& circle_collider2, vec2 final_position1, vec2 final_position2) const  +vec2 CollisionSystem::get_circle_circle_resolution(const CircleCollider& circle_collider1, const CircleCollider& circle_collider2, const vec2& final_position1, const vec2& final_position2) const   {      vec2 delta = final_position2 - final_position1; @@ -205,7 +205,7 @@ vec2 CollisionSystem::get_circle_circle_resolution(const CircleCollider& circle_      return resolution;  } -vec2 CollisionSystem::get_circle_box_resolution(const CircleCollider& circle_collider, const BoxCollider& box_collider, vec2 circle_position, vec2 box_position) const  +vec2 CollisionSystem::get_circle_box_resolution(const CircleCollider& circle_collider, const BoxCollider& box_collider, const vec2& circle_position, const vec2& box_position) const   {      vec2 delta = circle_position - box_position; @@ -252,7 +252,7 @@ void CollisionSystem::static_collision_handler(CollisionInfo& info){  	info.first_transform.position += info.resolution;  	// If bounce is enabled mirror velocity -	if(info.first_rigidbody.data.bounce) { +	if(info.first_rigidbody.data.elastisity > 0) {  		if(info.resolution_direction == Direction::BOTH)  		{  			info.first_rigidbody.data.linear_velocity.y = -info.first_rigidbody.data.linear_velocity.y * info.first_rigidbody.data.elastisity; @@ -335,12 +335,12 @@ CollisionSystem::get_active_transform_and_rigidbody(game_object_id_t game_object      RefVector<Transform> transforms = this->component_manager.get_components_by_id<Transform>(game_object_id);      if (transforms.empty()) return std::nullopt; +		Transform& transform = transforms.front().get(); +    if (!transform.active) return std::nullopt; +      RefVector<Rigidbody> rigidbodies = this->component_manager.get_components_by_id<Rigidbody>(game_object_id);      if (rigidbodies.empty()) return std::nullopt; -    Transform& transform = transforms.front().get(); -    if (!transform.active) return std::nullopt; -      Rigidbody& rigidbody = rigidbodies.front().get();      if (!rigidbody.active) return std::nullopt; @@ -453,7 +453,7 @@ bool CollisionSystem::get_circle_circle_collision(const CircleCollider& circle1,  	return distance_squared <= radius_sum * radius_sum;  } -vec2 CollisionSystem::get_current_position(vec2 collider_offset, const Transform& transform, const Rigidbody& rigidbody) const { +vec2 CollisionSystem::get_current_position(const vec2& collider_offset, const Transform& transform, const Rigidbody& rigidbody) const {  	// Get the rotation in radians  	float radians1 = transform.rotation * (M_PI / 180.0); diff --git a/src/crepe/system/CollisionSystem.h b/src/crepe/system/CollisionSystem.h index 3f24db1..34c03ae 100644 --- a/src/crepe/system/CollisionSystem.h +++ b/src/crepe/system/CollisionSystem.h @@ -104,7 +104,7 @@ private:  		* \param rigidbody The Rigidbody of the associated game object.  		* \return The calculated position of the collider.  		*/ -	vec2 get_current_position(vec2 collider_offset, const Transform& transform, const Rigidbody& rigidbody) const; +	vec2 get_current_position(const vec2& collider_offset, const Transform& transform, const Rigidbody& rigidbody) const;  private: @@ -141,7 +141,7 @@ private:  		* \param position2 The position of the second BoxCollider.  		* \return The resolution vector for the collision.  		*/ -	vec2 get_box_box_resolution(const BoxCollider& box_collider1,const BoxCollider& box_collider2,vec2 position1,vec2 position2) const; +	vec2 get_box_box_resolution(const BoxCollider& box_collider1,const BoxCollider& box_collider2,const vec2& position1,const vec2& position2) const;  	/**  		* \brief Calculates the resolution vector for two CircleCollider. @@ -154,7 +154,7 @@ private:  		* \param position2 The position of the second CircleCollider.  		* \return The resolution vector for the collision.  		*/ -	vec2 get_circle_circle_resolution(const CircleCollider& circle_collider1, const CircleCollider& circle_collider2, vec2 final_position1, vec2 final_position2) const; +	vec2 get_circle_circle_resolution(const CircleCollider& circle_collider1, const CircleCollider& circle_collider2, const vec2& final_position1, const vec2& final_position2) const;  	/**  		* \brief Calculates the resolution vector for two CircleCollider. @@ -167,7 +167,7 @@ private:  		* \param box_position The position of the BocCollider.  		* \return The resolution vector for the collision.  		*/ -	vec2 get_circle_box_resolution(const CircleCollider& circle_collider, const BoxCollider& box_collider, vec2 circle_position, vec2 box_position) const; +	vec2 get_circle_box_resolution(const CircleCollider& circle_collider, const BoxCollider& box_collider, const vec2& circle_position, const vec2& box_position) const;  	/**  		* \brief Determines the appropriate collision handler for a collision. diff --git a/src/crepe/system/PhysicsSystem.cpp b/src/crepe/system/PhysicsSystem.cpp index 514a4b3..8f21727 100644 --- a/src/crepe/system/PhysicsSystem.cpp +++ b/src/crepe/system/PhysicsSystem.cpp @@ -25,17 +25,17 @@ void PhysicsSystem::update() {  					if (transform.game_object_id == rigidbody.game_object_id) {  						// Add gravity -						if (rigidbody.data.use_gravity) { +						if (rigidbody.data.gravity_scale > 0) {  							rigidbody.data.linear_velocity.y  								+= (rigidbody.data.mass * rigidbody.data.gravity_scale  									* gravity);  						}  						// Add damping -						if (rigidbody.data.angular_damping != 0) { -							rigidbody.data.angular_velocity *= rigidbody.data.angular_damping; +						if (rigidbody.data.angular_velocity_factor != 1 && rigidbody.data.angular_velocity_factor > 0) { +							rigidbody.data.angular_velocity *= rigidbody.data.angular_velocity_factor;  						} -						if (rigidbody.data.linear_damping != vec2{0, 0}) { -							rigidbody.data.linear_velocity *= rigidbody.data.linear_damping; +						if (rigidbody.data.linear_velocity_factor != vec2{1, 1} && rigidbody.data.linear_velocity_factor.x > 0 && rigidbody.data.linear_velocity_factor.y > 0) { +							rigidbody.data.linear_velocity *= rigidbody.data.linear_velocity_factor;  						}  						// Max velocity check |