Browse Source

rotation bug

vlod 1 year ago
parent
commit
2fd4316f74

+ 4 - 4
Pika/gameplay/containers/physicsTest/physicsTest.h

@@ -41,7 +41,7 @@ struct PhysicsTest: public Container
 		{
 			//if (i == 1) { mass = 0; }
 
-			if (0)
+			if (1)
 			{
 				float w = rand() % 100 + 20;
 				float h = rand() % 100 + 20;
@@ -51,7 +51,7 @@ struct PhysicsTest: public Container
 				physicsEngine.bodies.back().motionState.rotation = ((rand() % 800) / 800.f) * 3.14159f;
 			}
 
-			for (int j = 0; j < 2; j++)
+			for (int j = 0; j < 0; j++)
 			{
 				float r = rand() % 35 + 10;
 
@@ -71,7 +71,7 @@ struct PhysicsTest: public Container
 		//physicsEngine.addBody({600, 600}, ph2d::createBoxCollider({350, 100}));
 		//physicsEngine.bodies[1].motionState.rotation = glm::radians(30.f);
 
-		physicsEngine.addBody({500, 500}, ph2d::createCircleCollider({55}));
+		//physicsEngine.addBody({500, 500}, ph2d::createCircleCollider({55}));
 		//physicsEngine.addBody({800, 100}, ph2d::createCircleCollider({55}));
 		//physicsEngine.addBody({900, 500}, ph2d::createCircleCollider({25}));
 		//physicsEngine.addBody({550, 700}, ph2d::createCircleCollider({25}));
@@ -89,7 +89,7 @@ struct PhysicsTest: public Container
 		//std::cout << ph2d::rotationToVector(ph2d::vectorToRotation({0,-1})).x << " " << ph2d::rotationToVector(ph2d::vectorToRotation({0,-1})).y << "\n";
 		//std::cout << ph2d::rotationToVector(ph2d::vectorToRotation({1,0}) ).x << " " << ph2d::rotationToVector(ph2d::vectorToRotation({1,0}) ).y  << "\n";
 
-		physicsEngine.addHalfSpaceStaticObject({0, floorPos}, {0.1, 1});
+		physicsEngine.addHalfSpaceStaticObject({0, floorPos}, {0.0, 1});
 		//physicsEngine.addBody({500, floorPos}, ph2d::createBoxCollider({900, 50}));
 		//physicsEngine.bodies.back().motionState.mass = 0;
 		//physicsEngine.bodies.back().motionState.momentOfInertia = 0;

+ 4 - 2
Pika/resources/logs.txt

@@ -1,2 +1,4 @@
-#2024-11-21 14:41:13: Created container: PhysicsTest
-#2024-11-21 14:41:46: Destroyed continer: PhysicsTest #1
+#2024-11-21 14:44:48[warning]: Couldn't reloaded dll
+#2024-11-21 14:44:48: Reloaded dll
+#2024-11-21 14:44:50: Created container: PhysicsTest
+#2024-11-21 14:49:32: Destroyed continer: PhysicsTest #1

+ 8 - 8
Pika/thirdparty/ph2d/src/ph2d.cpp

@@ -912,10 +912,10 @@ void ph2d::MotionState::applyImpulseObjectPosition(glm::vec2 impulse, glm::vec2
 		velocity += (1.0f / mass) * impulse;
 	}
 
-	//if (momentOfInertia != 0 && momentOfInertia != INFINITY)
-	//{
-	//	angularVelocity -= (1.0f / momentOfInertia) * cross(contactVector, impulse);
-	//}
+	if (momentOfInertia != 0 && momentOfInertia != INFINITY)
+	{
+		angularVelocity -= (1.0f / momentOfInertia) * cross(contactVector, impulse);
+	}
 }
 
 void ph2d::MotionState::applyImpulseWorldPosition(glm::vec2 impulse, glm::vec2 contactVectorWorldPos)
@@ -983,8 +983,8 @@ void ph2d::PhysicsEngine::runSimulation(float deltaTime)
 			if (B.motionState.momentOfInertia == 0 || B.motionState.momentOfInertia == INFINITY) { momentOfInertiaInverseB = 0; }
 
 			//remove moment of inertia
-			momentOfInertiaInverseA = 0;
-			momentOfInertiaInverseB = 0;
+			//momentOfInertiaInverseA = 0;
+			//momentOfInertiaInverseB = 0;
 
 			// Solve for magnitude to apply along the friction vector
 			float jt = -glm::dot(rv, tangent);
@@ -1058,8 +1058,8 @@ void ph2d::PhysicsEngine::runSimulation(float deltaTime)
 			}
 
 			//remove moment of inertia
-			inertiaDivisorA = 0;
-			inertiaDivisorB = 0;
+			//inertiaDivisorA = 0;
+			//inertiaDivisorB = 0;
 
 			// Calculate impulse scalar
 			float j = -(1.f + e) * velAlongNormal;