inline void PhysicsSystem::Update(DeltaTime deltaTime) { std::vector<std::shared_ptr<Entity>> entities = _entityManager->GetEntities(); for (auto it = entities.begin(); it != entities.end(); it++) { auto transformable = it->get()->GetComponent<Transform>(); auto renderable = it->get()->GetComponent<Render>(); auto aabb = it->get()->GetComponent<AABB>(); if (transformable != nullptr && renderable != nullptr && aabb != nullptr) { glm::mat4 scale = glm::mat4(1); glm::mat4 rotation = glm::mat4(1); glm::mat4 position = glm::mat4(1); std::vector<glm::vec3> vertexData = renderable->GetVertexData(); std::vector<glm::vec4> transVertDat; scale = glm::scale(scale, transformable->GetScale()); rotation = glm::rotate(rotation, transformable->GetRotationRad().x, glm::vec3(1.0f, 0.0f, 0.0f)); rotation = glm::rotate(rotation, transformable->GetRotationRad().y, glm::vec3(0.0f, 1.0f, 0.0f)); rotation = glm::rotate(rotation, transformable->GetRotationRad().z, glm::vec3(0.0f, 0.0f, 1.0f)); glm::mat4 trans; trans = rotation * scale; for (size_t i = 0; i < vertexData.size(); i++) { if (i % 3 == 0) { transVertDat.push_back(trans * glm::vec4(vertexData[i], 1)); } } glm::vec3 min = glm::vec3(transVertDat[0].x, transVertDat[0].y, transVertDat[0].z); glm::vec3 max = glm::vec3(transVertDat[0].x, transVertDat[0].y, transVertDat[0].z); for (size_t i = 0; i < transVertDat.size(); i++) { if (transVertDat[i].x < min.x) { min.x = transVertDat[i].x; } if (transVertDat[i].y < min.y) { min.y = transVertDat[i].y; } if (transVertDat[i].z < min.z) { min.z = transVertDat[i].z; } if (transVertDat[i].x > max.x) { max.x = transVertDat[i].x; } if (transVertDat[i].y > max.y) { max.y = transVertDat[i].y; } if (transVertDat[i].z > max.z) { max.z = transVertDat[i].z; } } //for (size_t i = 0; i < transVertDat.size(); i++) aabb->UpdateAABB(min, max); } //if (transformable != nullptr && renderable != nullptr) } //for (auto it = entities.begin(); it != entities.end(); it++) };