diff --git a/enginecustom/applicationclass.cpp b/enginecustom/applicationclass.cpp
index bc6974c..56c669a 100644
--- a/enginecustom/applicationclass.cpp
+++ b/enginecustom/applicationclass.cpp
@@ -30,6 +30,7 @@ ApplicationClass::ApplicationClass()
 	m_Frustum = 0;
 	m_DisplayPlane = 0;
 	m_ReflectionShader = 0;
+	m_Physics = 0;
 }
 
 
@@ -388,6 +389,8 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd)
 		return false;
 	}
 
+	m_Physics = new Physics;
+
 	return true;
 }
 
@@ -626,7 +629,7 @@ bool ApplicationClass::Frame(InputClass* Input)
 	static int lastMouseX = 0, lastMouseY = 0;
 
 	static float rotation = 360.0f;
-	static float x = 6.f;
+	static float x = 0.f;
 	static float y = 3.f;
 	static float z = 0.f;
 
@@ -710,13 +713,23 @@ bool ApplicationClass::Frame(InputClass* Input)
 		rotation += 360.0f;
 	}
 
-	// Update the x position variable each frame.
-	x -= 0.0174532925f * 0.6f;
+	//// Update the x position variable each frame.
+	//x -= 0.0174532925f * 0.6f;
 
-	y -= 0.0174532925f * 0.2f;
+	//y -= 0.0174532925f * 0.2f;
 
-	// Update the z position variable each frame.
-	z -= 0.0174532925f * 0.2f;
+	//// Update the z position variable each frame.
+	//z -= 0.0174532925f * 0.2f;
+
+	for (auto object : m_object)
+	{
+		m_Physics->ApplyGravity(object, frameTime);
+		if (XMVectorGetY(object->GetPosition()) < -10.0f)
+		{
+			object->SetPosition(XMVectorSet(0.0f, 20.0f, 0.0f, 0.0f));
+		}
+	}
+	
 
 	// Render the scene to a render texture.
 	result = RenderSceneToTexture(rotation);
@@ -838,7 +851,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
 
 		cube->Render(m_Direct3D->GetDeviceContext());
 
-		result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0),
+		result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), cube->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, cube->GetTexture(0),
 			diffuseColor, lightPosition);
 		if (!result)
 		{
@@ -861,7 +874,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
 
 		object->Render(m_Direct3D->GetDeviceContext());
 
-		result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0),
+		result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), object->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, object->GetTexture(0),
 			diffuseColor, lightPosition);
 
 		if (!result)
diff --git a/enginecustom/applicationclass.h b/enginecustom/applicationclass.h
index 820f2d7..48a1f8d 100644
--- a/enginecustom/applicationclass.h
+++ b/enginecustom/applicationclass.h
@@ -34,6 +34,7 @@
 #include "displayplaneclass.h"
 #include "translateshaderclass.h"
 #include "reflectionshaderclass.h"
+#include "physics.h"
 
 
 /////////////
@@ -157,6 +158,8 @@ private :
 	TextClass* m_FpsString;
 	int m_previousFps;
 
+	Physics* m_Physics;
+	float m_gravity;
 };
 
 #endif
\ No newline at end of file
diff --git a/enginecustom/enginecustom.vcxproj b/enginecustom/enginecustom.vcxproj
index 81c17e5..5d31d16 100644
--- a/enginecustom/enginecustom.vcxproj
+++ b/enginecustom/enginecustom.vcxproj
@@ -48,6 +48,7 @@
     <ClCompile Include="modellistclass.cpp" />
     <ClCompile Include="Multitextureshaderclass.cpp" />
     <ClCompile Include="normalmapshaderclass.cpp" />
+    <ClCompile Include="physics.cpp" />
     <ClCompile Include="positionclass.cpp" />
     <ClCompile Include="reflectionshaderclass.cpp" />
     <ClCompile Include="rendertextureclass.cpp" />
@@ -90,6 +91,7 @@
     <ClInclude Include="modellistclass.h" />
     <ClInclude Include="Multitextureshaderclass.h" />
     <ClInclude Include="normalmapshaderclass.h" />
+    <ClInclude Include="physics.h" />
     <ClInclude Include="positionclass.h" />
     <ClInclude Include="reflectionshaderclass.h" />
     <ClInclude Include="rendertextureclass.h" />
diff --git a/enginecustom/enginecustom.vcxproj.filters b/enginecustom/enginecustom.vcxproj.filters
index 07bef64..76766ec 100644
--- a/enginecustom/enginecustom.vcxproj.filters
+++ b/enginecustom/enginecustom.vcxproj.filters
@@ -156,6 +156,9 @@
     <ClCompile Include="reflectionshaderclass.cpp">
       <Filter>Fichiers sources</Filter>
     </ClCompile>
+    <ClCompile Include="physics.cpp">
+      <Filter>Fichiers sources</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="systemclass.h">
@@ -281,6 +284,9 @@
     <ClInclude Include="reflectionshaderclass.h">
       <Filter>Fichiers d%27en-tĂȘte</Filter>
     </ClInclude>
+    <ClInclude Include="physics.h">
+      <Filter>Fichiers d%27en-tĂȘte</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <Image Include="font01.tga">
diff --git a/enginecustom/imgui.ini b/enginecustom/imgui.ini
index 21e4b2c..8f6e492 100644
--- a/enginecustom/imgui.ini
+++ b/enginecustom/imgui.ini
@@ -11,6 +11,6 @@ Pos=222,19
 Size=492,353
 
 [Window][Terrain]
-Pos=892,19
+Pos=890,19
 Size=418,94
 
diff --git a/enginecustom/physics.cpp b/enginecustom/physics.cpp
new file mode 100644
index 0000000..3e7eff7
--- /dev/null
+++ b/enginecustom/physics.cpp
@@ -0,0 +1,32 @@
+#include "physics.h"
+
+Physics::Physics()
+{
+	m_gravity = -9.81f;
+}
+
+
+Physics::Physics(const Physics& other)
+{
+	m_gravity = other.m_gravity; // Copy gravity value from the other object
+}
+
+
+Physics::~Physics()
+{
+}
+
+float Physics::GetGravity() // Changed the method to return the gravity value
+{
+	return m_gravity;
+}
+
+void Physics::ApplyGravity(Object* object, float frameTime)
+{
+	// Update the position of the object by adding the change in position due to gravity.
+	XMVECTOR position = object->GetPosition(); // Get the current position
+	position = XMVectorSetY(position, XMVectorGetY(position) + m_gravity * frameTime); // Update the y value
+	object->SetPosition(position); // Set the updated position
+
+	return;
+}
\ No newline at end of file
diff --git a/enginecustom/physics.h b/enginecustom/physics.h
new file mode 100644
index 0000000..cfe9153
--- /dev/null
+++ b/enginecustom/physics.h
@@ -0,0 +1,22 @@
+#ifndef _PHYSICS_H_
+#define _PHYSICS_H_
+
+#include "object.h"
+
+class Physics
+{
+public:
+    public:
+    Physics();
+    Physics(const Physics&);
+    ~Physics();
+
+    float GetGravity();
+    void ApplyGravity(Object*, float);
+
+private:
+    float m_gravity;
+};
+
+#endif
+