Water can now collide with the bricks, added new ship model
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
# Blender MTL File: 'Ship.blend'
|
||||||
|
# Material Count: 1
|
||||||
|
|
||||||
|
newmtl Material.001
|
||||||
|
Ns 96.078431
|
||||||
|
Ka 0.000000 0.000000 0.000000
|
||||||
|
Kd 0.800000 0.800000 0.800000
|
||||||
|
Ks 0.500000 0.500000 0.500000
|
||||||
|
Ni 1.000000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd ShipTexture.png
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
@@ -227,15 +227,6 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event)
|
|||||||
//TODO: Add support for power-up collisions
|
//TODO: Add support for power-up collisions
|
||||||
}
|
}
|
||||||
|
|
||||||
auto brick = m_World->GetComponent<Components::Brick>(otherEntitiy);
|
|
||||||
if (brick != nullptr) {
|
|
||||||
auto transform = m_World->GetComponent<Components::Transform>(otherEntitiy);
|
|
||||||
auto physics = m_World->GetComponent<Components::Physics>(otherEntitiy);
|
|
||||||
auto rectangle = m_World->GetComponent<Components::RectangleShape>(otherEntitiy);
|
|
||||||
int hey = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
//if this is a brick thats dead do not collide :)
|
|
||||||
|
|
||||||
auto ballTransform = m_World->GetComponent<Components::Transform>(ballEntity);
|
auto ballTransform = m_World->GetComponent<Components::Transform>(ballEntity);
|
||||||
glm::vec2 ballVelocity = glm::vec2(ballTransform->Velocity.x, ballTransform->Velocity.y);
|
glm::vec2 ballVelocity = glm::vec2(ballTransform->Velocity.x, ballTransform->Velocity.y);
|
||||||
@@ -273,8 +264,12 @@ bool dd::Systems::BallSystem::Contact(const Events::Contact &event)
|
|||||||
m_Contacts[ballEntity] = normalList;
|
m_Contacts[ballEntity] = normalList;
|
||||||
}
|
}
|
||||||
|
|
||||||
//glm::vec2 reflectedVelocity = glm::reflect(ballVelocity, event.Normal);
|
auto brick = m_World->GetComponent<Components::Brick>(otherEntitiy);
|
||||||
//ballTransform->Velocity = glm::vec3(reflectedVelocity, 0.f);
|
if (brick != nullptr) {
|
||||||
|
auto physicsComponent = m_World->GetComponent<Components::Physics>(otherEntitiy);
|
||||||
|
physicsComponent->CollisionType = CollisionType::Type::Dynamic;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -302,6 +297,8 @@ void dd::Systems::BallSystem::ResolveContacts()
|
|||||||
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
auto transform = m_World->GetComponent<Components::Transform>(entity);
|
||||||
glm::vec2 velocity = glm::vec2(transform->Velocity.x, transform->Velocity.y);
|
glm::vec2 velocity = glm::vec2(transform->Velocity.x, transform->Velocity.y);
|
||||||
glm::vec2 reflectedVelocity = glm::reflect(velocity, finalNormal);
|
glm::vec2 reflectedVelocity = glm::reflect(velocity, finalNormal);
|
||||||
|
auto ballComponent = m_World->GetComponent<Components::Ball>(entity);
|
||||||
|
reflectedVelocity = glm::normalize(reflectedVelocity) * ballComponent->Speed;
|
||||||
transform->Velocity = glm::vec3(reflectedVelocity, 0.f);
|
transform->Velocity = glm::vec3(reflectedVelocity, 0.f);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ void dd::Systems::LevelSystem::Initialize()
|
|||||||
cRec->Dimensions = glm::vec2(0.9f, 0.35f);
|
cRec->Dimensions = glm::vec2(0.9f, 0.35f);
|
||||||
std::shared_ptr<Components::Physics> cPhys = m_World->AddComponent<Components::Physics>(m_BrickTemplate);
|
std::shared_ptr<Components::Physics> cPhys = m_World->AddComponent<Components::Physics>(m_BrickTemplate);
|
||||||
std::shared_ptr<Components::Template> cTemplate = m_World->AddComponent<Components::Template>(m_BrickTemplate);
|
std::shared_ptr<Components::Template> cTemplate = m_World->AddComponent<Components::Template>(m_BrickTemplate);
|
||||||
cPhys->CollisionType = CollisionType::Type::Dynamic;
|
cPhys->CollisionType = CollisionType::Type::Static;
|
||||||
cPhys->GravityScale = 0.f;
|
cPhys->GravityScale = 0.f;
|
||||||
cPhys->Category = CollisionLayer::Type::Brick;
|
cPhys->Category = CollisionLayer::Type::Brick;
|
||||||
cPhys->Mask = CollisionLayer::Type::Ball;
|
cPhys->Mask = CollisionLayer::Type::Ball;
|
||||||
|
|||||||
@@ -33,16 +33,16 @@ void dd::Systems::PadSystem::Initialize()
|
|||||||
auto ent = m_World->CreateEntity();
|
auto ent = m_World->CreateEntity();
|
||||||
m_World->SetProperty(ent, "Name", "Pad");
|
m_World->SetProperty(ent, "Name", "Pad");
|
||||||
auto ctransform = m_World->AddComponent<Components::Transform>(ent);
|
auto ctransform = m_World->AddComponent<Components::Transform>(ent);
|
||||||
ctransform->Position = glm::vec3(0.f, -3.5f, -10.f);
|
ctransform->Position = glm::vec3(0.f, -4.8f, -10.f);
|
||||||
auto rectangleShape = m_World->AddComponent<Components::RectangleShape>(ent);
|
auto rectangleShape = m_World->AddComponent<Components::RectangleShape>(ent);
|
||||||
rectangleShape->Dimensions = glm::vec2(1.f, 0.5f);
|
rectangleShape->Dimensions = glm::vec2(1.f, 0.1f);
|
||||||
auto physics = m_World->AddComponent<Components::Physics>(ent);
|
auto physics = m_World->AddComponent<Components::Physics>(ent);
|
||||||
physics->CollisionType = CollisionType::Type::Dynamic;
|
physics->CollisionType = CollisionType::Type::Dynamic;
|
||||||
physics->Category = CollisionLayer::Type::Pad;
|
physics->Category = CollisionLayer::Type::Pad;
|
||||||
physics->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Ball | CollisionLayer::PowerUp);
|
physics->Mask = static_cast<CollisionLayer::Type>(CollisionLayer::Ball | CollisionLayer::PowerUp);
|
||||||
physics->Calculate = true;
|
physics->Calculate = true;
|
||||||
auto cModel = m_World->AddComponent<Components::Model>(ent);
|
auto cModel = m_World->AddComponent<Components::Model>(ent);
|
||||||
cModel->ModelFile = "Models/Submarine2.obj";
|
cModel->ModelFile = "Models/Ship/Ship.obj";
|
||||||
|
|
||||||
auto pad = m_World->AddComponent<Components::Pad>(ent);
|
auto pad = m_World->AddComponent<Components::Pad>(ent);
|
||||||
m_World->CommitEntity(ent);
|
m_World->CommitEntity(ent);
|
||||||
|
|||||||
@@ -89,6 +89,16 @@ void dd::Systems::PhysicsSystem::SyncEntitiesWithBodies()
|
|||||||
filter.categoryBits = physicsComponent->Category;
|
filter.categoryBits = physicsComponent->Category;
|
||||||
filter.maskBits = physicsComponent->Mask;
|
filter.maskBits = physicsComponent->Mask;
|
||||||
body->GetFixtureList()->SetFilterData(filter);
|
body->GetFixtureList()->SetFilterData(filter);
|
||||||
|
|
||||||
|
if (physicsComponent->CollisionType == CollisionType::Type::Static) {
|
||||||
|
body->SetType(b2_staticBody);
|
||||||
|
}
|
||||||
|
else if (physicsComponent->CollisionType == CollisionType::Type::Dynamic) {
|
||||||
|
body->SetType(b2_dynamicBody);
|
||||||
|
}
|
||||||
|
else if (physicsComponent->CollisionType == CollisionType::Type::Kinematic) {
|
||||||
|
body->SetType(b2_dynamicBody);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user