diff --git a/src/GameWorld.cpp b/src/GameWorld.cpp index 92626d5..a358342 100755 --- a/src/GameWorld.cpp +++ b/src/GameWorld.cpp @@ -557,191 +557,20 @@ void GameWorld::Initialize() auto shape = CreateEntity(debri); auto shapetransform = AddComponent(shape); auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDestroyed.obj"; + shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDestroyed.obj"; //Lägg in ny collision modell m_WallDebrisTemplates.push_back(debri); } #pragma endregion Region for wall debris -#pragma region Walls +#pragma region Wall_Regin -#pragma region Wall1 - { - auto wall = CreateEntity(); - auto transform = AddComponent(wall); - transform->Position = glm::vec3(0, -16, 0); - - auto physics = AddComponent(wall); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Fixed; - - auto walldebris = AddComponent(wall); - walldebris->Walldebris = m_WallDebrisTemplates; - - auto model = AddComponent(wall); - model->ModelFile = "Models/Wall/WallWhole/Wall.obj"; - - auto health = AddComponent(wall); - health->Amount = 50.f; - - auto shape = CreateEntity(wall); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallCollision/Collision.obj"; - - CommitEntity(shape); - CommitEntity(wall); - } -#pragma endregion Region for wall1 - -#pragma endregion Region for all walls - - { - auto wall = CreateEntity(); - auto transform = AddComponent(wall); - transform->Position = glm::vec3(20, 10, 30); - - auto physics = AddComponent(wall); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Fixed; - - auto model = AddComponent(wall); - model->ModelFile = "Models/Wall/WallDestroyed/WallDestroyed.obj"; - - auto shape = CreateEntity(wall); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDestroyed.obj"; - - CommitEntity(shape); - CommitEntity(wall); + for(int i = 0; i < 5; i++) + { + EntityID Wall = CreateWall(glm::vec3(i*10.f, -15.f, 0.f), glm::quat()); } - { - auto wall_trash = CreateEntity(); - auto transform = AddComponent(wall_trash); - transform->Position = glm::vec3(20, 12, 30); - - auto physics = AddComponent(wall_trash); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Fixed; - - auto model = AddComponent(wall_trash); - model->ModelFile = "Models/Wall/WallDestroyed/WallDebris1.obj"; - - auto shape = CreateEntity(wall_trash); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDebris1.obj"; - - CommitEntity(shape); - CommitEntity(wall_trash); - } - - { - auto wall_trash = CreateEntity(); - auto transform = AddComponent(wall_trash); - transform->Position = glm::vec3(20, 10, 45); - - auto physics = AddComponent(wall_trash); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Keyframed; - - auto model = AddComponent(wall_trash); - model->ModelFile = "Models/Wall/WallDestroyed/WallDebris2.obj"; - - auto shape = CreateEntity(wall_trash); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDebris2.obj"; - - CommitEntity(shape); - CommitEntity(wall_trash); - } - - { - auto wall_trash = CreateEntity(); - auto transform = AddComponent(wall_trash); - transform->Position = glm::vec3(23, 10, 45); - - auto physics = AddComponent(wall_trash); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Keyframed; - - auto model = AddComponent(wall_trash); - model->ModelFile = "Models/Wall/WallDestroyed/WallDebris3.obj"; - - auto shape = CreateEntity(wall_trash); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDebris3.obj"; - - CommitEntity(shape); - CommitEntity(wall_trash); - } - - { - auto wall_trash = CreateEntity(); - auto transform = AddComponent(wall_trash); - transform->Position = glm::vec3(20, 12, 30); - - auto physics = AddComponent(wall_trash); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Fixed; - - auto model = AddComponent(wall_trash); - model->ModelFile = "Models/Wall/WallDestroyed/WallDebris4.obj"; - - auto shape = CreateEntity(wall_trash); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDebris4.obj"; - - CommitEntity(shape); - CommitEntity(wall_trash); - } - - { - auto wall_trash = CreateEntity(); - auto transform = AddComponent(wall_trash); - transform->Position = glm::vec3(29, 10, 45); - - auto physics = AddComponent(wall_trash); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Fixed; - - auto model = AddComponent(wall_trash); - model->ModelFile = "Models/Wall/WallDestroyed/WallDebris5.obj"; - - auto shape = CreateEntity(wall_trash); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDebris5.obj"; - - CommitEntity(shape); - CommitEntity(wall_trash); - } - - { - auto wall_trash = CreateEntity(); - auto transform = AddComponent(wall_trash); - transform->Position = glm::vec3(32, 10, 45); - - auto physics = AddComponent(wall_trash); - physics->Mass = 100.f; - physics->MotionType = Components::Physics::MotionTypeEnum::Fixed; - - auto model = AddComponent(wall_trash); - model->ModelFile = "Models/Wall/WallDestroyed/WallDebris6.obj"; - - auto shape = CreateEntity(wall_trash); - auto shapetransform = AddComponent(shape); - auto shapemesh = AddComponent(shape); - shapemesh->ResourceName = "Models/Wall/WallDestroyed/WallDebris6.obj"; - - CommitEntity(shape); - CommitEntity(wall_trash); - } +#pragma endregion Region for all wall creations EntityID tank1 = CreateTank(1); { @@ -1004,7 +833,7 @@ EntityID GameWorld::CreateTank(int playerID) modelComponent->ModelFile = "Models/Placeholders/rocket/Rocket.obj"; auto tankShellComponent = AddComponent(shot); tankShellComponent->Damage = 20.f; - tankShellComponent->ExplosionRadius = 30.f; + tankShellComponent->ExplosionRadius = 5.f; tankShellComponent->ExplosionStrength = 300000.f; { auto shape = CreateEntity(shot); @@ -1101,6 +930,38 @@ EntityID GameWorld::CreateTank(int playerID) return tank; } +EntityID GameWorld::CreateWall(glm::vec3 pos, glm::quat orientation) +{ + auto wall = CreateEntity(); + auto transform = AddComponent(wall); + transform->Position = pos; + transform->Orientation = orientation; + + auto physics = AddComponent(wall); + physics->Mass = 100.f; + physics->MotionType = Components::Physics::MotionTypeEnum::Fixed; + + auto walldebris = AddComponent(wall); + walldebris->Walldebris = m_WallDebrisTemplates; + + auto model = AddComponent(wall); + model->ModelFile = "Models/Wall/WallWhole/Wall.obj"; + + auto health = AddComponent(wall); + health->Amount = 50.f; + + auto shape = CreateEntity(wall); + auto shapetransform = AddComponent(shape); + auto shapemesh = AddComponent(shape); + shapemesh->ResourceName = "Models/Wall/WallCollision/Collision.obj"; + + CommitEntity(shape); + CommitEntity(wall); + + return wall; + +} + void GameWorld::AddTankWheelPair(EntityID tankEntity, glm::vec3 position, int axleID, bool front) { const float separation = 1.77f; diff --git a/src/GameWorld.h b/src/GameWorld.h index a4538d4..fd061be 100755 --- a/src/GameWorld.h +++ b/src/GameWorld.h @@ -75,6 +75,7 @@ private: EntityID CreateTank(int playerID); void AddTankWheelPair(EntityID tankEntity, glm::vec3 position, int axleID, bool steering); EntityID CreateJeep(int playerID); + EntityID CreateWall(glm::vec3 pos, glm::quat orientation); std::vector m_WallDebrisTemplates; }; diff --git a/src/Model.cpp b/src/Model.cpp index dd5757c..1186671 100755 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -93,7 +93,7 @@ Model::Model(std::shared_ptr rm, OBJ &obj) if (Vertices.size() > 0) { CreateTangents(); - getSimilarVertexIndex(); + //getSimilarVertexIndex(); CreateBuffers(Vertices, Normals, TangentNormals, BiTangentNormals, TextureCoords); } else diff --git a/src/Systems/WallSystem.cpp b/src/Systems/WallSystem.cpp index b523611..4f50c68 100644 --- a/src/Systems/WallSystem.cpp +++ b/src/Systems/WallSystem.cpp @@ -40,7 +40,7 @@ bool Systems::WallSystem::Damage( const Events::Damage &event ) // DO STUFF! :D float distance = glm::distance(transform->Position, transformComponent->Position); float radius = 5.f; - float strength = (1.f - pow(distance / radius, 2)) * 400.f; + float strength = (1.f - pow(distance / radius, 2)) * 500.f; glm::vec3 direction = glm::normalize(transformComponent->Position - transform->Position); Events::ApplyPointImpulse e;