diff --git a/CMakeLists.txt b/CMakeLists.txt index bc28cc5..e85dc6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,6 @@ set(SRC_FILES "src/gfx_device_vulkan.cpp" "src/scene.cpp" - "src/object.cpp" "src/util/files.cpp" ) @@ -46,7 +45,6 @@ set(INCLUDE_FILES "include/gfx_device.hpp" "include/scene.hpp" - "include/object.hpp" "include/util/files.hpp" ) @@ -188,4 +186,4 @@ set(ASSIMP_NO_EXPORT ON CACHE INTERNAL "" FORCE) set(ASSIMP_INSTALL OFF CACHE INTERNAL "" FORCE) add_subdirectory(dependencies/assimp) target_include_directories(${PROJECT_NAME} PRIVATE dependencies/assimp/include) -target_link_libraries(${PROJECT_NAME} PRIVATE assimp) \ No newline at end of file +target_link_libraries(${PROJECT_NAME} PRIVATE assimp) diff --git a/include/object.hpp b/include/object.hpp deleted file mode 100644 index 2127f66..0000000 --- a/include/object.hpp +++ /dev/null @@ -1,112 +0,0 @@ -#pragma once - -#include "engine_api.h" - -#include "log.hpp" - -#include -#include - -#include -#include -#include -#include - -namespace engine { - - /* forward declarations */ - class Scene; - - class Component { - - }; - - struct Transform { - // Scale, rotate (XYZ), translate - glm::vec3 position{ 0.0f }; - glm::quat rotation{}; - glm::vec3 scale{ 1.0f }; - }; - - class Object { - - public: - Object(const std::string& name, Object* parent, Scene* scene); - Object(const Object&) = delete; - Object& operator=(const Object&) = delete; - ~Object(); - - /* methods */ - - Object* getChild(const std::string& name); - std::vector getChildren(); - Object* createChild(const std::string& name); - bool deleteChild(const std::string& name); - - void printTree(int level = 0); - - // Returns the component of type T - // Returns nullptr if the component is not found. - template T* getComponent(); - template T* createComponent(); - template bool deleteComponent(); - - /* public member variables */ - - const std::string name; - - Object* const parent; - Scene* const scene; - - Transform transform; - - private: - static int s_next_id; - int m_id = s_next_id; - - // If nullptr, this is the root object - std::list> m_children{}; - std::list> m_components{}; - - - }; - - /* implementation of template functions */ - - template T* Object::getComponent() - { - for (const auto& component : m_components) { - T* derived = dynamic_cast(component.get()); - if (derived != nullptr) { - return derived; - } - } - return nullptr; - } - - template T* Object::createComponent() - { - if (std::is_base_of::value == false) { - ERROR("Object::createComponent(): attempt to create a component with a non-component class"); - return nullptr; - } - if (getComponent() != nullptr) { - ERROR("Object::createComponent(): attempt to create a component that already exists on an object"); - return nullptr; - } - m_components.emplace_back(std::make_unique(this)); - return dynamic_cast(m_components.back().get()); - } - - template bool Object::deleteComponent() - { - for (auto itr = m_components.begin(); itr != m_components.end(); ++itr) { - if (dynamic_cast((*itr).get()) != nullptr) { - m_components.erase(itr); - return true; - } - } - return false; - } - -} diff --git a/include/scene.hpp b/include/scene.hpp index 7bf0aaf..9739e9b 100644 --- a/include/scene.hpp +++ b/include/scene.hpp @@ -1,10 +1,10 @@ #pragma once -#include "object.hpp" +#include namespace engine { - class Scene : public Object { + class Scene { public: Scene(); @@ -12,8 +12,14 @@ namespace engine { Scene& operator=(const Scene&) = delete; ~Scene(); + uint32_t createEntity() + { + return m_nextEntityID++; + } + private: + uint32_t m_nextEntityID = 1000; }; -} \ No newline at end of file +} diff --git a/run.sh b/run.sh index f1b72b7..ceec117 100755 --- a/run.sh +++ b/run.sh @@ -1,3 +1,3 @@ #!/bin/sh -cd "Debug/test" +cd "Release/test" ./enginetest diff --git a/src/gfx_device_vulkan.cpp b/src/gfx_device_vulkan.cpp index 11d159c..489fdba 100644 --- a/src/gfx_device_vulkan.cpp +++ b/src/gfx_device_vulkan.cpp @@ -321,7 +321,7 @@ namespace engine { ERROR }; - constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::INFO; + constexpr MessageSeverity MESSAGE_LEVEL = MessageSeverity::WARNING; switch (MESSAGE_LEVEL) { case MessageSeverity::VERBOSE: debugMessengerInfo.messageSeverity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT; diff --git a/src/object.cpp b/src/object.cpp deleted file mode 100644 index 65bd195..0000000 --- a/src/object.cpp +++ /dev/null @@ -1,118 +0,0 @@ -#include "object.hpp" - -#include "log.hpp" - -namespace engine { - - int Object::s_next_id = 1000; - - Object::Object(const std::string& name, Object* parent, Scene* scene) - : name(name), parent(parent), scene(scene) - { - s_next_id++; - } - - Object::~Object() {} - - Object* Object::getChild(const std::string& name) - { - for (const auto& child : m_children) { - if (name == child->name) { - return child.get(); - } - } - return nullptr; - } - - std::vector Object::getChildren() - { - std::vector newVector{}; - for (const auto& child : m_children) { - newVector.push_back(child.get()); - } - return newVector; - } - - Object* Object::createChild(const std::string& name) - { - if (getChild(name) != nullptr) { - ERROR("Attempt to create child object with existing name"); - return nullptr; - } - m_children.emplace_back(std::make_unique(name, this, scene)); - return m_children.back().get(); - } - - bool Object::deleteChild(const std::string& name) - { - for (auto itr = m_children.begin(); itr != m_children.end(); ++itr) { - if ((*itr)->name == name) { - m_children.erase(itr); - return true; - } - } - return false; - } - - void Object::printTree(int level) - { - std::string buf; - for (int i = 0; i < level; i++) { - if (i + 1 == level) { - buf += "\\_______"; - } - else { - buf += " "; - } - } - buf += name; - INFO("{}", buf); - for (const auto& child : this->getChildren()) { - child->printTree(level + 1); - } - } - -/* - void Object::getAllSubComponents(struct CompList& compList, glm::mat4 parentTransform) - { - glm::mat4 objTransform{ 1.0f }; - - auto t = transform; - - // rotation - objTransform = glm::mat4_cast(t.rotation); - - // position - reinterpret_cast(objTransform[3]) = t.position; - - // scale (effectively applied first - objTransform = glm::scale(objTransform, t.scale); - - glm::mat4 newTransform = parentTransform * objTransform; - - for (const auto& compUnq : m_components) { - const auto comp = compUnq.get(); - switch (comp->getType()) { - case Component::TypeEnum::CAMERA: - compList.cameras.emplace_back(dynamic_cast(comp), newTransform); - break; - case Component::TypeEnum::RENDERER: - compList.renderers.emplace_back(dynamic_cast(comp), newTransform); - break; - case Component::TypeEnum::UI: - compList.uis.emplace_back(dynamic_cast(comp), newTransform); - break; - case Component::TypeEnum::CUSTOM: - compList.customs.emplace_back(dynamic_cast(comp), newTransform); - break; - default: - break; - } - } - for (const auto& child : m_children) { - child->getAllSubComponents(compList, newTransform); - } - } -*/ - -} \ No newline at end of file diff --git a/src/scene.cpp b/src/scene.cpp index 6e5cc4d..ddaa42f 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -3,11 +3,10 @@ namespace engine { Scene::Scene() - : Object("root", nullptr, this) { } Scene::~Scene() {} -} \ No newline at end of file +} diff --git a/src/scene_manager.cpp b/src/scene_manager.cpp index b9f311b..64d2122 100644 --- a/src/scene_manager.cpp +++ b/src/scene_manager.cpp @@ -23,8 +23,7 @@ namespace engine { void SceneManager::updateActiveScene() { if (m_activeSceneIndex >= 0) { - INFO("updating scene: {}", m_scenes[m_activeSceneIndex]->name); } } -} \ No newline at end of file +}