Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions LastTowerDefense/include/Cylinder.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include "Base/GameObject.h"
#include "Graphic/Model.h"
#include "Physics/RigidBody.h"

class Cylinder : public GameObject
{
private:
RigidBody* rigidbody;
Transform transform;
Graphic::Model* model;
public:
Cylinder();
virtual ~Cylinder();
void Draw() override;
void Update(unsigned int delta) override;
void OnTriggerEnter(void* ptr) override;
};
2 changes: 2 additions & 0 deletions LastTowerDefense/include/Game.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "Floor.h"
#include "Level.h"
#include "Wall.h"
#include "Cylinder.h"
#include "Physics/Physics.h"
#include "Graphic/GUI.h"
#include "Graphic/GUILine.h"
Expand Down Expand Up @@ -42,6 +43,7 @@ class Game : public GameState
Floor* floor;
Cube* cube;
Sphere* sphere;
Cylinder* cylinder;

DirectionalLight directionalLight;
PointLight point1;
Expand Down
35 changes: 35 additions & 0 deletions LastTowerDefense/src/Cylinder.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
include "Cylinder.h"
#include "Base/ResourceManager.h"

Cylinder::Cylinder()
{
id = 103;
model = (Graphic::Model*)ResourceManager::GetPtr()->GetElement("cylinder");
transform.SetTranslation(2.0f, 200.0f, 2.0f);
transform.SetScale(3.0f, 3.8f, 3.0f);
rigidbody = new RigidBody(4, transform.GetTranslation(), 3.0f, 2.5f, this);
}

Cylinder::~Cylinder()
{
//TODO
}

void Cylinder::Draw()
{
model->SetTransform(transform);
model->Draw();
}

void Cylinder::Update(unsigned int delta)
{
transform.SetTranslation(rigidbody->GetObjectPosition());
transform.SetRotation(rigidbody->GetObjectRotation());
}

void Cylinder::OnTriggerEnter(void* ptr)
{
auto obj0 = static_cast<GameObject*>(ptr);

std::cout << "hit cylinder";
}
4 changes: 4 additions & 0 deletions LastTowerDefense/src/Game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ void Game::InitResources()
resourceManager->Add(ResourceType::Model3d, "wall");
resourceManager->Add(ResourceType::Model3d, "cube");
resourceManager->Add(ResourceType::Model3d, "sphere");
resourceManager->Add(ResourceType::Model3d, "cylinder");

resourceManager->Add(ResourceType::Texture, "pina_normal");
resourceManager->Add(ResourceType::Texture, "pina");
Expand Down Expand Up @@ -65,6 +66,7 @@ void Game::Init()
floor = new Floor();
cube = new Cube();
sphere = new Sphere();
cylinder = new Cylinder();

LoadShaders();

Expand Down Expand Up @@ -112,6 +114,7 @@ void Game::Draw()
floor->Draw();
cube->Draw();
sphere->Draw();
cylinder->Draw();
}
void Game::DrawMap()
{
Expand Down Expand Up @@ -144,6 +147,7 @@ void Game::Update(unsigned int delta)

cube->Update(delta);
sphere->Update(delta);
cylinder->Update(delta);
physics->Update(delta);
}

Expand Down
13 changes: 12 additions & 1 deletion PlayEngine/Physics/RigidBody.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,18 @@ RigidBody::RigidBody(const float& mass, const glm::vec3& pos, const float radio,
startTransform.setOrigin(btVector3(pos.x, pos.y, pos.z));
rigidBody = Physics::GetPtr()->createRigidBody(mass, startTransform, colShape);
rigidBody->setRollingFriction(0);
rigidBody->setUserPointer(this);
rigidBody->setUserPointer(obj);
}

RigidBody::RigidBody(const float& mass, const glm::vec3& pos, const float height, const float radio1, const float radio2, GameObject* obj)
{
btCylinderShape* colShape = new btCylinderShape(radio1, height, radio2 );//TODO arreglar tamanio de la caja de colision
btTransform startTransform;
startTransform.setIdentity();
startTransform.setOrigin(btVector3(pos.x, pos.y, pos.z));
rigidBody = Physics::GetPtr()->createRigidBody(mass, startTransform, colShape);
rigidBody->setRollingFriction(0);
rigidBody->setUserPointer(obj);
}

glm::vec3 RigidBody::GetObjectPosition()
Expand Down
1 change: 1 addition & 0 deletions PlayEngine/include/Physics/RigidBody.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class PLAYENGINE RigidBody
public:
RigidBody(const float &mass,const glm::vec3 &pos, const glm::vec3 &box, GameObject* obj);
RigidBody(const float& mass, const glm::vec3& pos, const float radio, GameObject* obj);
RigidBody(const float& mass, const glm::vec3& pos, const float radio1, const float height, const float radio2, GameObject* obj);

glm::vec3 GetObjectPosition();
glm::vec3 GetObjectRotation();
Expand Down