feat: object id et objects collisions

feat:
+ Ajout d'un id pour chaque objet cree
+ Ajout de collision entre les objets
This commit is contained in:
StratiX0 2024-04-25 10:18:46 +02:00
parent 50d206649b
commit 9dd129b7bc
5 changed files with 37 additions and 6 deletions

View File

@ -716,7 +716,7 @@ bool ApplicationClass::Frame(InputClass* Input)
} }
// Update the rotation variable each frame. // Update the rotation variable each frame.
rotation -= 0.0174532925f * speed; rotation -= 0.0174532925f * m_speed;
if (rotation < 0.0f) if (rotation < 0.0f)
{ {
rotation += 360.0f; rotation += 360.0f;
@ -760,6 +760,20 @@ bool ApplicationClass::Frame(InputClass* Input)
} }
} }
for (auto& object2 : m_object)
{
if (object->GetId() != object2->GetId() && object2 != nullptr)
{
if (m_Physics->IsColliding(object, object2))
{
// Stop movement in any direction
object->SetVelocity(XMVectorZero());
object->SetAcceleration(XMVectorZero());
}
}
}
// Apply forces // Apply forces
float forceX = 0, forceY = 0, forceZ = 0, forceW = 0; float forceX = 0, forceY = 0, forceZ = 0, forceW = 0;
@ -1328,9 +1342,11 @@ void ApplicationClass::AddKobject(WCHAR* filepath)
Object* newObject = new Object(); Object* newObject = new Object();
newObject->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), modelFilename, textureFilename, textureFilename2, textureFilename3); newObject->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), modelFilename, textureFilename, textureFilename2, textureFilename3);
newObject->SetMass(1.0f); newObject->SetMass(1.0f);
newObject->SetTranslateMatrix(XMMatrixTranslation(0.0f, 50.0f, 0.0f)); newObject->SetTranslateMatrix(XMMatrixTranslation(0.0f, 50.0f, 0.0f));
newObject->SetName(filename); newObject->SetName(filename);
newObject->SetId(m_ObjectId);
m_ObjectId++;
m_object.push_back(newObject); m_object.push_back(newObject);
} }

View File

@ -64,8 +64,8 @@ public:
int GetScreenWidth() const; int GetScreenWidth() const;
int GetScreenHeight() const; int GetScreenHeight() const;
float GetSpeed() const { return speed; }; float GetSpeed() const { return m_speed; };
void SetSpeed(float speed) { this->speed = speed; }; void SetSpeed(float speed) { this->m_speed = speed; };
void AddCube(); void AddCube();
void DeleteKobject(int index); void DeleteKobject(int index);
@ -116,8 +116,9 @@ private :
Object* m_SelectedObject; Object* m_SelectedObject;
std::vector<Object*> m_cubes; std::vector<Object*> m_cubes;
std::vector<Object*> m_terrainChunk; std::vector<Object*> m_terrainChunk;
float speed = 0.1f; // speed for the demo spinning object float m_speed = 0.1f; // speed for the demo spinning object
std::vector<Object*> m_object; std::vector<Object*> m_object;
int m_ObjectId = 0;
// ----------------------------------- // // ----------------------------------- //
// ------------- LIGHTS -------------- // // ------------- LIGHTS -------------- //

View File

@ -7,7 +7,7 @@ Pos=-1,652
Size=694,210 Size=694,210
[Window][Objects] [Window][Objects]
Pos=6,299 Pos=7,299
Size=492,353 Size=492,353
[Window][Terrain] [Window][Terrain]

View File

@ -12,6 +12,7 @@ Object::Object() : ModelClass()
m_acceleration = XMVectorZero(); m_acceleration = XMVectorZero();
m_mass = NULL; m_mass = NULL;
m_isGrounded = false; m_isGrounded = false;
m_id = NULL;
} }
Object::~Object() Object::~Object()
@ -213,3 +214,13 @@ bool Object::GetGrounded() const
return m_isGrounded; return m_isGrounded;
} }
int Object::SetId(int id)
{
return m_id = id;
}
int Object::GetId() const
{
return m_id;
}

View File

@ -47,11 +47,14 @@ public:
std::string GetName(); std::string GetName();
void SetName(std::string name); void SetName(std::string name);
int SetId(int id);
int GetId() const;
public : public :
bool m_demoSpinning = false; bool m_demoSpinning = false;
XMVECTOR m_previousPosition; XMVECTOR m_previousPosition;
XMVECTOR m_velocity; XMVECTOR m_velocity;
int m_id;
private: private:
XMMATRIX m_scaleMatrix; XMMATRIX m_scaleMatrix;