From 0440bc6f134f45a496193b003458e3723dba8383 Mon Sep 17 00:00:00 2001 From: Isuru Samarathunga Date: Mon, 8 Sep 2025 22:19:26 +0530 Subject: [PATCH] Hot Fixes --- Src/IAEngine/CMakeLists.txt | 7 ++ .../imp/cpp/Components/ParticleEmitter.cpp | 28 ++++++++ .../imp/cpp/Components/ParticleRenderer.cpp | 0 .../IAEngine/Components/ParticleEmitter.hpp | 70 +++++++++++++++++++ .../IAEngine/Components/ParticleRenderer.hpp | 0 5 files changed, 105 insertions(+) create mode 100644 Src/IAEngine/imp/cpp/Components/ParticleEmitter.cpp delete mode 100644 Src/IAEngine/imp/cpp/Components/ParticleRenderer.cpp create mode 100644 Src/IAEngine/inc/IAEngine/Components/ParticleEmitter.hpp delete mode 100644 Src/IAEngine/inc/IAEngine/Components/ParticleRenderer.hpp diff --git a/Src/IAEngine/CMakeLists.txt b/Src/IAEngine/CMakeLists.txt index 115e37f..016e617 100644 --- a/Src/IAEngine/CMakeLists.txt +++ b/Src/IAEngine/CMakeLists.txt @@ -7,13 +7,20 @@ set(IAEngine_Sources imp/cpp/Input.cpp imp/cpp/Scene.cpp imp/cpp/Random.cpp + imp/cpp/ResourceManager.cpp + imp/cpp/Events/Event.cpp + imp/cpp/Nodes/Transform.cpp imp/cpp/Nodes/Node.cpp + imp/cpp/Components/AtlasRenderer.cpp imp/cpp/Components/SpriteRenderer.cpp imp/cpp/Components/SoundEmitter.cpp + imp/cpp/Components/Collider.cpp + imp/cpp/Components/ParticleEmitter.cpp + imp/cpp/Components/StackedCollider.cpp ) add_library(IAEngine STATIC ${IAEngine_Sources}) diff --git a/Src/IAEngine/imp/cpp/Components/ParticleEmitter.cpp b/Src/IAEngine/imp/cpp/Components/ParticleEmitter.cpp new file mode 100644 index 0000000..b015187 --- /dev/null +++ b/Src/IAEngine/imp/cpp/Components/ParticleEmitter.cpp @@ -0,0 +1,28 @@ +#include + +namespace ia::iae +{ + ParticleEmitterComponent::ParticleEmitterComponent(IN Node *node) : IComponent(node) + { + } + + VOID ParticleEmitterComponent::AddAnimation(IN SpriteRendererComponent::Animation anim) + { + const auto spriteRenderer = MakeRefPtr(m_node); + spriteRenderer->AddAnimation(anim); + spriteRenderer->BakeAnimations(); + m_sprites.pushBack(spriteRenderer); + } + + VOID ParticleEmitterComponent::Draw() + { + for(auto& s: m_sprites) + s->Draw(); + } + + VOID ParticleEmitterComponent::Update() + { + for(auto& s: m_sprites) + s->Update(); + } +} // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/imp/cpp/Components/ParticleRenderer.cpp b/Src/IAEngine/imp/cpp/Components/ParticleRenderer.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Src/IAEngine/inc/IAEngine/Components/ParticleEmitter.hpp b/Src/IAEngine/inc/IAEngine/Components/ParticleEmitter.hpp new file mode 100644 index 0000000..378ad13 --- /dev/null +++ b/Src/IAEngine/inc/IAEngine/Components/ParticleEmitter.hpp @@ -0,0 +1,70 @@ +// IAEngine: 2D Game Engine by IA +// Copyright (C) 2025 IAS (ias@iasoft.dev) +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +#include + +namespace ia::iae +{ + class ParticleEmitterComponent : public IComponent + { + public: + ParticleEmitterComponent(IN Node *node); + + VOID AddAnimation(IN SpriteRendererComponent::Animation anim); + + public: + CONST INT32 &LifeTime() CONST + { + return m_lifeTime; + } + + CONST INT32 &CreationFrequency() CONST + { + return m_creationFrequency; + } + + CONST Vector> &Sprites() CONST + { + return m_sprites; + } + + INT32 &LifeTime() + { + return m_lifeTime; + } + + INT32 &CreationFrequency() + { + return m_creationFrequency; + } + + Vector> &Sprites() + { + return m_sprites; + } + + public: + VOID Draw(); + VOID Update(); + + private: + INT32 m_lifeTime{}; + INT32 m_creationFrequency{}; + Vector> m_sprites{}; + }; +} // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/inc/IAEngine/Components/ParticleRenderer.hpp b/Src/IAEngine/inc/IAEngine/Components/ParticleRenderer.hpp deleted file mode 100644 index e69de29..0000000