diff --git a/openVulkanoCpp/Controller/ArCameraController.cpp b/openVulkanoCpp/Controller/ArCameraController.cpp index a0fc1d5..d101081 100644 --- a/openVulkanoCpp/Controller/ArCameraController.cpp +++ b/openVulkanoCpp/Controller/ArCameraController.cpp @@ -16,7 +16,7 @@ namespace OpenVulkano ArCameraController::ArCameraController(Scene::Camera* camera, const std::shared_ptr& session, const Math::Matrix4f& registration) : CameraController(camera), m_arSession(session), m_registration(registration), m_updated(false) { - Init(); + CommonInit(); } ArCameraController::~ArCameraController() @@ -24,7 +24,7 @@ namespace OpenVulkano if (m_arSession) Close(); } - void ArCameraController::Init() + void ArCameraController::CommonInit() { //m_registration = Math::Utils::translate(Math::Vector3f_SIMD(0.0f, 0.0f, -2.5f)) * Math::Utils::rotate(Math::Matrix4f(1), M_PI_2f, {0,1,0}); if (m_arSession) @@ -70,7 +70,7 @@ namespace OpenVulkano CameraController::Init(camera); m_arSession = session; m_registration = registration; - Init(); + CommonInit(); } void ArCameraController::Tick() diff --git a/openVulkanoCpp/Controller/ArCameraController.hpp b/openVulkanoCpp/Controller/ArCameraController.hpp index 58f6ab0..b4bdd42 100644 --- a/openVulkanoCpp/Controller/ArCameraController.hpp +++ b/openVulkanoCpp/Controller/ArCameraController.hpp @@ -34,7 +34,10 @@ namespace OpenVulkano ~ArCameraController() override; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Woverloaded-virtual" void Init(Scene::Camera* camera, const std::shared_ptr& session = nullptr, const Math::Matrix4f& registration = Math::Matrix4f (1)); +#pragma clang diagnostic pop void Tick() override; @@ -45,7 +48,7 @@ namespace OpenVulkano [[nodiscard]] std::shared_ptr GetArSession() const { return m_arSession; } private: - void Init(); + void CommonInit(); void UpdateCameraViewMatrix(const Math::Matrix4f& transform); }; diff --git a/openVulkanoCpp/IO/Archive/LibArchiveHelper.hpp b/openVulkanoCpp/IO/Archive/LibArchiveHelper.hpp index 9efe466..c4eec60 100644 --- a/openVulkanoCpp/IO/Archive/LibArchiveHelper.hpp +++ b/openVulkanoCpp/IO/Archive/LibArchiveHelper.hpp @@ -20,6 +20,8 @@ namespace OpenVulkano namespace LibArchiveHelper { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wswitch" constexpr mode_t GetFileType(std::filesystem::file_type type) { switch (type) @@ -49,6 +51,7 @@ namespace OpenVulkano } return std::filesystem::file_type::unknown; } +#pragma clang diagnostic pop template inline ssize_t CopyArchiveData(struct archive* archiveReader, struct archive* archiveWriter) @@ -93,7 +96,7 @@ namespace OpenVulkano struct archive* m_archive; char* m_buffer; size_t m_currentBlockSize; - int64_t offset, r; + int64_t offset; bool ReadNextBlock() { diff --git a/openVulkanoCpp/Scene/Material.hpp b/openVulkanoCpp/Scene/Material.hpp index 5c6e206..8bf0dab 100644 --- a/openVulkanoCpp/Scene/Material.hpp +++ b/openVulkanoCpp/Scene/Material.hpp @@ -15,8 +15,9 @@ namespace OpenVulkano::Scene { }; - struct Material + class Material { + public: MaterialProperties properties; Texture* texture = nullptr; }; diff --git a/openVulkanoCpp/Scene/MorphableCameraController.hpp b/openVulkanoCpp/Scene/MorphableCameraController.hpp index 8b38888..4eaa80d 100644 --- a/openVulkanoCpp/Scene/MorphableCameraController.hpp +++ b/openVulkanoCpp/Scene/MorphableCameraController.hpp @@ -26,7 +26,10 @@ namespace OpenVulkano::Scene public: MorphableCameraController(MorphableCamera* camera = nullptr); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Woverloaded-virtual" void Init(MorphableCamera* camera); +#pragma clang diagnostic pop void Tick() override; void SetDuration(double duration) { m_animationDuration = duration; } diff --git a/openVulkanoCpp/Scene/Node.cpp b/openVulkanoCpp/Scene/Node.cpp index d21a12e..93a11c0 100644 --- a/openVulkanoCpp/Scene/Node.cpp +++ b/openVulkanoCpp/Scene/Node.cpp @@ -12,7 +12,7 @@ namespace OpenVulkano::Scene { Node::Node() - : localMat(1), worldMat(1) + : localMat(1), worldMat(1), enabled(true) {} Node::~Node() noexcept @@ -57,6 +57,11 @@ namespace OpenVulkano::Scene node->UpdateWorldMatrix(worldMat); } + void Node::AddChildIfParentless(Node* node) + { + if (!node->parent) AddChild(node); + } + void Node::RemoveChild(Node* node) { if (node->parent == this) diff --git a/openVulkanoCpp/Scene/Node.hpp b/openVulkanoCpp/Scene/Node.hpp index 3b5331a..60955a2 100644 --- a/openVulkanoCpp/Scene/Node.hpp +++ b/openVulkanoCpp/Scene/Node.hpp @@ -39,7 +39,7 @@ namespace OpenVulkano::Scene public: Node(); - ~Node() override; + ~Node() noexcept override; void Init(); @@ -47,6 +47,8 @@ namespace OpenVulkano::Scene void AddChild(Node* node); + void AddChildIfParentless(Node* node); + inline void AddChild(Drawable* drawable) { AddDrawable(drawable); } void RemoveChild(Node* node); diff --git a/openVulkanoCpp/Scene/SimpleDrawable.hpp b/openVulkanoCpp/Scene/SimpleDrawable.hpp index 559c07f..321eee5 100644 --- a/openVulkanoCpp/Scene/SimpleDrawable.hpp +++ b/openVulkanoCpp/Scene/SimpleDrawable.hpp @@ -11,7 +11,7 @@ namespace OpenVulkano::Scene { class Geometry; - struct Material; + class Material; class SimpleDrawable final : public Drawable { diff --git a/openVulkanoCpp/Vulkan/Scene/VulkanNode.hpp b/openVulkanoCpp/Vulkan/Scene/VulkanNode.hpp index 8e4aced..fdab92a 100644 --- a/openVulkanoCpp/Vulkan/Scene/VulkanNode.hpp +++ b/openVulkanoCpp/Vulkan/Scene/VulkanNode.hpp @@ -13,8 +13,9 @@ namespace OpenVulkano::Vulkan { - struct VulkanNode : IRecordable, ICloseable + class VulkanNode : public IRecordable, public ICloseable { + public: Scene::Node* node = nullptr; UniformBuffer* buffer = nullptr; diff --git a/openVulkanoCpp/Vulkan/SwapChain.hpp b/openVulkanoCpp/Vulkan/SwapChain.hpp index a2378a2..5dd5f02 100644 --- a/openVulkanoCpp/Vulkan/SwapChain.hpp +++ b/openVulkanoCpp/Vulkan/SwapChain.hpp @@ -10,6 +10,7 @@ #include "Image.hpp" #include "FrameBuffer.hpp" #include "Base/UI/IWindow.hpp" +#include "Base/Logger.hpp" #include namespace OpenVulkano @@ -90,15 +91,19 @@ namespace OpenVulkano void Present(vk::Queue& queue ,std::vector& semaphores) const { - queue.presentKHR(vk::PresentInfoKHR(semaphores.size(), semaphores.data(), + const vk::Result result = queue.presentKHR(vk::PresentInfoKHR(semaphores.size(), semaphores.data(), 1, &swapChain, ¤tFrameBufferId)); + if (result != vk::Result::eSuccess) [[unlikely]] + { + Logger::RENDER->error("Failed to preset swap chain image: {}", to_string(result)); + } } [[nodiscard]] bool UseVsync() const { return useVsync; } - void SetVsync(bool useVsync) + void SetVsync(bool vsync) { //TODO change swap chain - this->useVsync = useVsync; + this->useVsync = vsync; } [[nodiscard]] uint32_t GetImageCount() const