Remove copy method from drawable

This commit is contained in:
Georg Hagen
2024-07-06 14:08:20 +02:00
parent 7e9c568779
commit c41b04db9b
4 changed files with 2 additions and 9 deletions

View File

@@ -45,8 +45,6 @@ namespace OpenVulkano::Scene
void SetShader(Shader* shader) { m_shader = shader; } void SetShader(Shader* shader) { m_shader = shader; }
[[nodiscard]] virtual Drawable* Copy() = 0;
[[nodiscard]] Scene* GetScene() const { return m_scene; } [[nodiscard]] Scene* GetScene() const { return m_scene; }
[[nodiscard]] const auto& GetNodes() const { return m_nodes; } [[nodiscard]] const auto& GetNodes() const { return m_nodes; }

View File

@@ -125,10 +125,9 @@ namespace OpenVulkano::Scene
for (auto& drawable : drawables) for (auto& drawable : drawables)
{ {
Scene* drawableScene = drawable->GetScene(); Scene* drawableScene = drawable->GetScene();
if(drawableScene && drawableScene != scene) if(drawableScene && drawableScene != scene) [[unlikely]]
{ {
Logger::SCENE->warn("Drawable is already associated with a scene! Creating copy."); throw std::runtime_error("Drawable is already associated with a scene! Creating copy.");
drawable = drawable->Copy();
} }
drawable->SetScene(scene); drawable->SetScene(scene);
} }

View File

@@ -19,7 +19,5 @@ namespace OpenVulkano::Scene
GridDrawable(); GridDrawable();
[[nodiscard]] Shader& GetShader() { return m_shader; } [[nodiscard]] Shader& GetShader() { return m_shader; }
[[nodiscard]] Drawable* Copy() override { return new GridDrawable(); }
}; };
} }

View File

@@ -39,8 +39,6 @@ namespace OpenVulkano::Scene
void Init(SimpleDrawable* drawable); void Init(SimpleDrawable* drawable);
[[nodiscard]] Drawable* Copy() override { return new SimpleDrawable(this); }
[[nodiscard]] Geometry* GetMesh() const { return m_mesh; } [[nodiscard]] Geometry* GetMesh() const { return m_mesh; }
[[nodiscard]] Material* GetMaterial() const { return m_material; } [[nodiscard]] Material* GetMaterial() const { return m_material; }