diff --git a/src/WallpaperEngine/Application/CWallpaperApplication.cpp b/src/WallpaperEngine/Application/CWallpaperApplication.cpp index 5ff380c..1df162e 100644 --- a/src/WallpaperEngine/Application/CWallpaperApplication.cpp +++ b/src/WallpaperEngine/Application/CWallpaperApplication.cpp @@ -16,6 +16,7 @@ bool g_AudioEnabled = true; int g_AudioVolume = 128; using namespace WallpaperEngine::Application; +using namespace WallpaperEngine::Core; CWallpaperApplication::CWallpaperApplication (CApplicationContext& context) : m_context (context) @@ -136,7 +137,7 @@ void CWallpaperApplication::setupContainer () void CWallpaperApplication::loadProject () { - this->m_project = CProject::fromFile ("project.json", &this->m_vfs); + this->m_project = CProject::fromFile ("project.json", this->m_vfs); // go to the right folder so the videos will play // TODO: stop doing chdir and use full path if (this->m_project->getWallpaper ()->is () == true) @@ -219,12 +220,12 @@ void CWallpaperApplication::show () // initialize OpenGL driver WallpaperEngine::Render::Drivers::COpenGLDriver videoDriver (this->m_project->getTitle ().c_str ()); // initialize render context - WallpaperEngine::Render::CRenderContext context (this->m_context.screens, videoDriver, &this->m_vfs); + WallpaperEngine::Render::CRenderContext context (this->m_context.screens, videoDriver, this->m_vfs, *this); // initialize mouse support context.setMouse (new CMouseInput (videoDriver.getWindow ())); // ensure the context knows what wallpaper to render context.setWallpaper ( - WallpaperEngine::Render::CWallpaper::fromWallpaper (this->m_project->getWallpaper (), &context, &audioContext) + WallpaperEngine::Render::CWallpaper::fromWallpaper (this->m_project->getWallpaper (), context, audioContext) ); float startTime, endTime, minimumTime = 1.0f / this->m_context.maximumFPS; diff --git a/src/WallpaperEngine/Application/CWallpaperApplication.h b/src/WallpaperEngine/Application/CWallpaperApplication.h index c5e374d..bd99b95 100644 --- a/src/WallpaperEngine/Application/CWallpaperApplication.h +++ b/src/WallpaperEngine/Application/CWallpaperApplication.h @@ -5,9 +5,13 @@ #include "WallpaperEngine/Core/CProject.h" #include "WallpaperEngine/Render/CWallpaper.h" +namespace WallpaperEngine::Render +{ + class CWallpaper; +} + namespace WallpaperEngine::Application { - using namespace WallpaperEngine::Core; using namespace WallpaperEngine::Assets; class CWallpaperApplication @@ -24,7 +28,7 @@ namespace WallpaperEngine::Application void setupProperties (); void takeScreenshot (WallpaperEngine::Render::CWallpaper* wp, const std::filesystem::path& filename, FREE_IMAGE_FORMAT format); - CProject* m_project; + Core::CProject* m_project; CApplicationContext& m_context; CCombinedContainer m_vfs; }; diff --git a/src/WallpaperEngine/Audio/CAudioStream.cpp b/src/WallpaperEngine/Audio/CAudioStream.cpp index 53d8da8..c2bc968 100644 --- a/src/WallpaperEngine/Audio/CAudioStream.cpp +++ b/src/WallpaperEngine/Audio/CAudioStream.cpp @@ -105,14 +105,14 @@ int64_t audio_seek_data_callback (void* streamarg, int64_t offset, int whence) return offset; } -CAudioStream::CAudioStream (CAudioContext* context, const std::string& filename) : +CAudioStream::CAudioStream (CAudioContext& context, const std::string& filename) : m_audioContext (context), m_swrctx (nullptr) { this->loadCustomContent (filename.c_str ()); } -CAudioStream::CAudioStream (CAudioContext* context, const void* buffer, int length) : +CAudioStream::CAudioStream (CAudioContext& context, const void* buffer, int length) : m_audioContext (context), m_swrctx (nullptr) { @@ -144,7 +144,7 @@ CAudioStream::CAudioStream (CAudioContext* context, const void* buffer, int leng this->loadCustomContent (); } -CAudioStream::CAudioStream(CAudioContext* audioContext, AVCodecContext* context) : +CAudioStream::CAudioStream(CAudioContext& audioContext, AVCodecContext* context) : m_context (context), m_queue (new PacketQueue), m_audioContext (audioContext), @@ -220,7 +220,7 @@ void CAudioStream::initialize () int64_t out_channel_layout; // set output audio channels based on the input audio channels - switch (this->m_audioContext->getChannels ()) + switch (this->m_audioContext.getChannels ()) { case 1: out_channel_layout = AV_CH_LAYOUT_MONO; break; case 2: out_channel_layout = AV_CH_LAYOUT_STEREO; break; @@ -233,8 +233,8 @@ void CAudioStream::initialize () swr_alloc_set_opts2 ( &this->m_swrctx, &this->m_out_channel_layout, - this->m_audioContext->getFormat (), - this->m_audioContext->getSampleRate (), + this->m_audioContext.getFormat (), + this->m_audioContext.getSampleRate (), &this->m_context->ch_layout, this->m_context->sample_fmt, this->m_context->sample_rate, @@ -658,9 +658,9 @@ int CAudioStream::decodeFrame (uint8_t* audioBuffer, int bufferSize) // audio resampling data_size = this->resampleAudio ( avFrame, - this->m_audioContext->getFormat (), - this->m_audioContext->getChannels (), - this->m_audioContext->getSampleRate (), + this->m_audioContext.getFormat (), + this->m_audioContext.getChannels (), + this->m_audioContext.getSampleRate (), audioBuffer ); assert(data_size <= bufferSize); diff --git a/src/WallpaperEngine/Audio/CAudioStream.h b/src/WallpaperEngine/Audio/CAudioStream.h index fd3f71b..bcf90d9 100644 --- a/src/WallpaperEngine/Audio/CAudioStream.h +++ b/src/WallpaperEngine/Audio/CAudioStream.h @@ -22,9 +22,9 @@ namespace WallpaperEngine::Audio class CAudioStream { public: - CAudioStream (CAudioContext* context, const std::string& filename); - CAudioStream (CAudioContext* context, const void* buffer, int length); - CAudioStream (CAudioContext* audioContext, AVCodecContext* context); + CAudioStream (CAudioContext& context, const std::string& filename); + CAudioStream (CAudioContext& context, const void* buffer, int length); + CAudioStream (CAudioContext& audioContext, AVCodecContext* context); ~CAudioStream (); void queuePacket (AVPacket* pkt); @@ -70,7 +70,7 @@ namespace WallpaperEngine::Audio #endif SwrContext* m_swrctx; - CAudioContext* m_audioContext; + CAudioContext& m_audioContext; bool m_initialized; bool m_repeat; AVCodecContext* m_context = nullptr; diff --git a/src/WallpaperEngine/Core/CObject.cpp b/src/WallpaperEngine/Core/CObject.cpp index 56b1b7f..679db0d 100644 --- a/src/WallpaperEngine/Core/CObject.cpp +++ b/src/WallpaperEngine/Core/CObject.cpp @@ -35,7 +35,7 @@ CObject::CObject ( { } -CObject* CObject::fromJSON (json data, CScene* scene, const CContainer* container) +CObject* CObject::fromJSON (json data, CScene* scene, const CContainer& container) { std::string json = data.dump (); diff --git a/src/WallpaperEngine/Core/CObject.h b/src/WallpaperEngine/Core/CObject.h index 36b9b56..c11f972 100644 --- a/src/WallpaperEngine/Core/CObject.h +++ b/src/WallpaperEngine/Core/CObject.h @@ -33,7 +33,7 @@ namespace WallpaperEngine::Core { friend class CScene; public: - static CObject* fromJSON (json data, CScene* scene, const CContainer* container); + static CObject* fromJSON (json data, CScene* scene, const CContainer& container); template const T* as () const { assert (is ()); return (const T*) this; } template T* as () { assert (is ()); return (T*) this; } diff --git a/src/WallpaperEngine/Core/CProject.cpp b/src/WallpaperEngine/Core/CProject.cpp index c48d7db..c579148 100644 --- a/src/WallpaperEngine/Core/CProject.cpp +++ b/src/WallpaperEngine/Core/CProject.cpp @@ -9,7 +9,7 @@ using namespace WallpaperEngine::Core; using namespace WallpaperEngine::Assets; -CProject::CProject (std::string title, std::string type, CWallpaper* wallpaper, CContainer* container) : +CProject::CProject (std::string title, std::string type, CWallpaper* wallpaper, CContainer& container) : m_title (std::move (title)), m_type (std::move (type)), m_wallpaper (wallpaper), @@ -18,7 +18,7 @@ CProject::CProject (std::string title, std::string type, CWallpaper* wallpaper, this->m_wallpaper->setProject (this); } -CProject* CProject::fromFile (const std::string& filename, CContainer* container) +CProject* CProject::fromFile (const std::string& filename, CContainer& container) { json content = json::parse (WallpaperEngine::FileSystem::loadFullFile (filename, container)); @@ -89,7 +89,7 @@ const std::vector& CProject::getProperties () const return this->m_properties; } -CContainer* CProject::getContainer () +CContainer& CProject::getContainer () { return this->m_container; } diff --git a/src/WallpaperEngine/Core/CProject.h b/src/WallpaperEngine/Core/CProject.h index 4d187c2..d17f04d 100644 --- a/src/WallpaperEngine/Core/CProject.h +++ b/src/WallpaperEngine/Core/CProject.h @@ -16,7 +16,7 @@ namespace WallpaperEngine::Core class CProject { public: - static CProject* fromFile (const std::string& filename, CContainer* container); + static CProject* fromFile (const std::string& filename, CContainer& container); CWallpaper* getWallpaper () const; @@ -24,10 +24,10 @@ namespace WallpaperEngine::Core const std::string& getType () const; const std::vector& getProperties () const; - CContainer* getContainer (); + CContainer& getContainer (); protected: - CProject (std::string title, std::string type, CWallpaper* wallpaper, CContainer* container); + CProject (std::string title, std::string type, CWallpaper* wallpaper, CContainer& container); void insertProperty (Projects::CProperty* property); private: @@ -36,6 +36,6 @@ namespace WallpaperEngine::Core std::string m_title; std::string m_type; CWallpaper* m_wallpaper; - CContainer* m_container; + CContainer& m_container; }; }; diff --git a/src/WallpaperEngine/Core/CScene.cpp b/src/WallpaperEngine/Core/CScene.cpp index c5f3b94..ba1b4bf 100644 --- a/src/WallpaperEngine/Core/CScene.cpp +++ b/src/WallpaperEngine/Core/CScene.cpp @@ -9,7 +9,7 @@ using namespace WallpaperEngine::Core; CScene::CScene ( - CContainer* container, + CContainer& container, Scenes::CCamera* camera, glm::vec3 ambientColor, CUserSettingBoolean* bloom, @@ -51,7 +51,7 @@ CScene::CScene ( { } -CScene* CScene::fromFile (const std::string& filename, CContainer* container) +CScene* CScene::fromFile (const std::string& filename, CContainer& container) { std::string stringContent = WallpaperEngine::FileSystem::loadFullFile (filename, container); json content = json::parse (WallpaperEngine::FileSystem::loadFullFile (filename, container)); @@ -126,7 +126,7 @@ void CScene::insertObject (CObject* object) } } -CContainer* CScene::getContainer () +CContainer& CScene::getContainer () { return this->m_container; } diff --git a/src/WallpaperEngine/Core/CScene.h b/src/WallpaperEngine/Core/CScene.h index ec04cca..a9be175 100644 --- a/src/WallpaperEngine/Core/CScene.h +++ b/src/WallpaperEngine/Core/CScene.h @@ -17,7 +17,7 @@ namespace WallpaperEngine::Core class CScene : public CWallpaper { public: - static CScene* fromFile (const std::string& filename, CContainer* container); + static CScene* fromFile (const std::string& filename, CContainer& container); const std::map& getObjects () const; const std::vector& getObjectsByRenderOrder () const; @@ -45,7 +45,7 @@ namespace WallpaperEngine::Core friend class CWallpaper; CScene ( - CContainer* container, + CContainer& container, Scenes::CCamera* camera, glm::vec3 ambientColor, CUserSettingBoolean* bloom, @@ -70,9 +70,9 @@ namespace WallpaperEngine::Core void insertObject (CObject* object); - CContainer* getContainer (); + CContainer& getContainer (); private: - CContainer* m_container; + CContainer& m_container; Scenes::CCamera* m_camera; // data from general section on the json diff --git a/src/WallpaperEngine/Core/Objects/CEffect.cpp b/src/WallpaperEngine/Core/Objects/CEffect.cpp index 277f7b4..f7623d4 100644 --- a/src/WallpaperEngine/Core/Objects/CEffect.cpp +++ b/src/WallpaperEngine/Core/Objects/CEffect.cpp @@ -36,7 +36,7 @@ CEffect::CEffect ( { } -CEffect* CEffect::fromJSON (json data, CUserSettingBoolean* visible, Core::CObject* object, const CContainer* container) +CEffect* CEffect::fromJSON (json data, CUserSettingBoolean* visible, Core::CObject* object, const CContainer& container) { auto file_it = jsonFindRequired (data, "file", "Object effect must have a file"); auto effectpasses_it = data.find ("passes"); @@ -204,7 +204,7 @@ void CEffect::dependencyFromJSON (json::const_iterator dependencies_it, CEffect* effect->insertDependency (cur); } -void CEffect::materialsFromJSON (json::const_iterator passes_it, CEffect* effect, const CContainer* container) +void CEffect::materialsFromJSON (json::const_iterator passes_it, CEffect* effect, const CContainer& container) { for (const auto& cur : (*passes_it)) { diff --git a/src/WallpaperEngine/Core/Objects/CEffect.h b/src/WallpaperEngine/Core/Objects/CEffect.h index e72ffc4..c75189e 100644 --- a/src/WallpaperEngine/Core/Objects/CEffect.h +++ b/src/WallpaperEngine/Core/Objects/CEffect.h @@ -35,7 +35,7 @@ namespace WallpaperEngine::Core::Objects CUserSettingBoolean* visible ); - static CEffect* fromJSON (json data, CUserSettingBoolean* visible, Core::CObject* object, const CContainer* container); + static CEffect* fromJSON (json data, CUserSettingBoolean* visible, Core::CObject* object, const CContainer& container); const std::vector& getDependencies () const; const std::vector& getMaterials () const; @@ -48,7 +48,7 @@ namespace WallpaperEngine::Core::Objects static void combosFromJSON (json::const_iterator combos_it, Core::Objects::Images::Materials::CPass* pass); static void fbosFromJSON (json::const_iterator fbos_it, CEffect* effect); static void dependencyFromJSON (json::const_iterator dependencies_it, CEffect* effect); - static void materialsFromJSON (json::const_iterator passes_it, CEffect* effect, const CContainer* container); + static void materialsFromJSON (json::const_iterator passes_it, CEffect* effect, const CContainer& container); void insertDependency (const std::string& dep); void insertMaterial (Images::CMaterial* material); diff --git a/src/WallpaperEngine/Core/Objects/CImage.cpp b/src/WallpaperEngine/Core/Objects/CImage.cpp index 2d268cc..4e55429 100644 --- a/src/WallpaperEngine/Core/Objects/CImage.cpp +++ b/src/WallpaperEngine/Core/Objects/CImage.cpp @@ -44,7 +44,7 @@ CImage::CImage ( WallpaperEngine::Core::CObject* CImage::fromJSON ( CScene* scene, json data, - const CContainer* container, + const CContainer& container, CUserSettingBoolean* visible, uint32_t id, std::string name, diff --git a/src/WallpaperEngine/Core/Objects/CImage.h b/src/WallpaperEngine/Core/Objects/CImage.h index 7c0d1b1..812c59d 100644 --- a/src/WallpaperEngine/Core/Objects/CImage.h +++ b/src/WallpaperEngine/Core/Objects/CImage.h @@ -29,7 +29,7 @@ namespace WallpaperEngine::Core::Objects static CObject* fromJSON ( CScene* scene, json data, - const CContainer* container, + const CContainer& container, CUserSettingBoolean* visible, uint32_t id, std::string name, diff --git a/src/WallpaperEngine/Core/Objects/CParticle.cpp b/src/WallpaperEngine/Core/Objects/CParticle.cpp index 635ac49..6083db1 100644 --- a/src/WallpaperEngine/Core/Objects/CParticle.cpp +++ b/src/WallpaperEngine/Core/Objects/CParticle.cpp @@ -6,7 +6,7 @@ using namespace WallpaperEngine::Core::Objects; CParticle* CParticle::fromFile ( CScene* scene, const std::string& filename, - const CContainer* container, + const CContainer& container, CUserSettingBoolean* visible, uint32_t id, std::string name, diff --git a/src/WallpaperEngine/Core/Objects/CParticle.h b/src/WallpaperEngine/Core/Objects/CParticle.h index b27fbfd..252d494 100644 --- a/src/WallpaperEngine/Core/Objects/CParticle.h +++ b/src/WallpaperEngine/Core/Objects/CParticle.h @@ -19,7 +19,7 @@ namespace WallpaperEngine::Core::Objects static CParticle* fromFile ( CScene* scene, const std::string& filename, - const CContainer* container, + const CContainer& container, CUserSettingBoolean* visible, uint32_t id, std::string name, diff --git a/src/WallpaperEngine/Core/Objects/Images/CMaterial.cpp b/src/WallpaperEngine/Core/Objects/Images/CMaterial.cpp index 091c7b1..ec50736 100644 --- a/src/WallpaperEngine/Core/Objects/Images/CMaterial.cpp +++ b/src/WallpaperEngine/Core/Objects/Images/CMaterial.cpp @@ -15,13 +15,13 @@ CMaterial::CMaterial (const std::string& name) : { } -CMaterial* CMaterial::fromFile (const std::string& filename, const CContainer* container) +CMaterial* CMaterial::fromFile (const std::string& filename, const CContainer& container) { return fromJSON ( filename, json::parse (WallpaperEngine::FileSystem::loadFullFile (filename, container)) ); } -CMaterial* CMaterial::fromFile (const std::string& filename, const std::string& target, const CContainer* container) +CMaterial* CMaterial::fromFile (const std::string& filename, const std::string& target, const CContainer& container) { return fromJSON ( filename, json::parse (WallpaperEngine::FileSystem::loadFullFile (filename, container)), target diff --git a/src/WallpaperEngine/Core/Objects/Images/CMaterial.h b/src/WallpaperEngine/Core/Objects/Images/CMaterial.h index 4598f62..7068e7b 100644 --- a/src/WallpaperEngine/Core/Objects/Images/CMaterial.h +++ b/src/WallpaperEngine/Core/Objects/Images/CMaterial.h @@ -14,9 +14,9 @@ namespace WallpaperEngine::Core::Objects::Images class CMaterial { public: - static CMaterial* fromFile (const std::string& filename, const CContainer* container); + static CMaterial* fromFile (const std::string& filename, const CContainer& container); static CMaterial* fromJSON (const std::string& name, json data); - static CMaterial* fromFile (const std::string& filename, const std::string& target, const CContainer* container); + static CMaterial* fromFile (const std::string& filename, const std::string& target, const CContainer& container); static CMaterial* fromJSON (const std::string& name, json data, const std::string& target); void insertPass (Materials::CPass* mass); diff --git a/src/WallpaperEngine/FileSystem/FileSystem.cpp b/src/WallpaperEngine/FileSystem/FileSystem.cpp index 3990833..42c6aed 100644 --- a/src/WallpaperEngine/FileSystem/FileSystem.cpp +++ b/src/WallpaperEngine/FileSystem/FileSystem.cpp @@ -5,10 +5,10 @@ using namespace WallpaperEngine; -std::string FileSystem::loadFullFile (const std::string& file, const WallpaperEngine::Assets::CContainer* containers) +std::string FileSystem::loadFullFile (const std::string& file, const WallpaperEngine::Assets::CContainer& containers) { uint32_t length = 0; - const void* contents = containers->readFile (file, &length); + const void* contents = containers.readFile (file, &length); // build a new buffer that can fit in the string char* filedata = new char [length + 1]; diff --git a/src/WallpaperEngine/FileSystem/FileSystem.h b/src/WallpaperEngine/FileSystem/FileSystem.h index e2b1f0a..46e2747 100644 --- a/src/WallpaperEngine/FileSystem/FileSystem.h +++ b/src/WallpaperEngine/FileSystem/FileSystem.h @@ -17,5 +17,5 @@ namespace WallpaperEngine::FileSystem * @param file * @return */ - std::string loadFullFile (const std::string& file, const WallpaperEngine::Assets::CContainer* containers); + std::string loadFullFile (const std::string& file, const WallpaperEngine::Assets::CContainer& containers); } diff --git a/src/WallpaperEngine/Render/CObject.cpp b/src/WallpaperEngine/Render/CObject.cpp index 2faef07..7a6262e 100644 --- a/src/WallpaperEngine/Render/CObject.cpp +++ b/src/WallpaperEngine/Render/CObject.cpp @@ -21,7 +21,7 @@ CScene* CObject::getScene () const return this->m_scene; } -const CContainer* CObject::getContainer () const +const CContainer& CObject::getContainer () const { return this->getScene ()->getContainer (); } diff --git a/src/WallpaperEngine/Render/CObject.h b/src/WallpaperEngine/Render/CObject.h index be0efc8..018b2e3 100644 --- a/src/WallpaperEngine/Render/CObject.h +++ b/src/WallpaperEngine/Render/CObject.h @@ -21,7 +21,7 @@ namespace WallpaperEngine::Render virtual void render () = 0; CScene* getScene () const; - const CContainer* getContainer () const; + const CContainer& getContainer () const; const int getId () const; protected: diff --git a/src/WallpaperEngine/Render/CRenderContext.cpp b/src/WallpaperEngine/Render/CRenderContext.cpp index 0cd76b7..da29901 100644 --- a/src/WallpaperEngine/Render/CRenderContext.cpp +++ b/src/WallpaperEngine/Render/CRenderContext.cpp @@ -52,12 +52,13 @@ int CustomXIOErrorHandler (Display* dsp) return 0; } -CRenderContext::CRenderContext (std::vector screens, CVideoDriver& driver, CContainer* container) : +CRenderContext::CRenderContext (std::vector screens, CVideoDriver& driver, CContainer& container, CWallpaperApplication& app) : m_wallpaper (nullptr), m_screens (std::move (screens)), m_driver (driver), m_container (container), - m_textureCache (new CTextureCache (this)) + m_app (app), + m_textureCache (new CTextureCache (*this)) { this->initialize (); } @@ -274,11 +275,16 @@ CWallpaper* CRenderContext::getWallpaper () const return this->m_wallpaper; } -const CContainer* CRenderContext::getContainer () const +const CContainer& CRenderContext::getContainer () const { return this->m_container; } +const CWallpaperApplication& CRenderContext::getApp () const +{ + return this->m_app; +} + const ITexture* CRenderContext::resolveTexture (const std::string& name) { return this->m_textureCache->resolve (name); diff --git a/src/WallpaperEngine/Render/CRenderContext.h b/src/WallpaperEngine/Render/CRenderContext.h index ad962d4..c1dcab9 100644 --- a/src/WallpaperEngine/Render/CRenderContext.h +++ b/src/WallpaperEngine/Render/CRenderContext.h @@ -5,10 +5,12 @@ #include "WallpaperEngine/Input/CMouseInput.h" #include "WallpaperEngine/Render/Drivers/CVideoDriver.h" +#include "WallpaperEngine/Application/CWallpaperApplication.h" #include "CTextureCache.h" #include "CWallpaper.h" #include +using namespace WallpaperEngine::Application; using namespace WallpaperEngine::Assets; using namespace WallpaperEngine::Input; using namespace WallpaperEngine::Render::Drivers; @@ -18,6 +20,11 @@ namespace WallpaperEngine::Render::Drivers class CVideoDriver; } +namespace WallpaperEngine::Application +{ + class CWallpaperApplication; +} + namespace WallpaperEngine::Render { class CWallpaper; @@ -26,7 +33,7 @@ namespace WallpaperEngine::Render class CRenderContext { public: - CRenderContext (std::vector screens, CVideoDriver& driver, CContainer* container); + CRenderContext (std::vector screens, CVideoDriver& driver, CContainer& container, CWallpaperApplication& app); ~CRenderContext (); void initialize (); @@ -35,7 +42,8 @@ namespace WallpaperEngine::Render CMouseInput* getMouse () const; void setMouse (CMouseInput* mouse); CWallpaper* getWallpaper () const; - const CContainer* getContainer () const; + const CContainer& getContainer () const; + const CWallpaperApplication& getApp () const; const ITexture* resolveTexture (const std::string& name); private: @@ -62,7 +70,8 @@ namespace WallpaperEngine::Render std::vector m_viewports; CWallpaper* m_wallpaper; CMouseInput* m_mouse; - CContainer* m_container; + CContainer& m_container; + CWallpaperApplication& m_app; CTextureCache* m_textureCache; }; } \ No newline at end of file diff --git a/src/WallpaperEngine/Render/CScene.cpp b/src/WallpaperEngine/Render/CScene.cpp index 407fb41..400a514 100644 --- a/src/WallpaperEngine/Render/CScene.cpp +++ b/src/WallpaperEngine/Render/CScene.cpp @@ -14,7 +14,7 @@ extern float g_TimeLast; using namespace WallpaperEngine; using namespace WallpaperEngine::Render; -CScene::CScene (Core::CScene* scene, CRenderContext* context, CAudioContext* audioContext) : +CScene::CScene (Core::CScene* scene, CRenderContext& context, CAudioContext& audioContext) : CWallpaper (scene, Type, context, audioContext) { // setup the scene camera @@ -245,7 +245,7 @@ void CScene::renderFrame (glm::ivec4 viewport) void CScene::updateMouse (glm::ivec4 viewport) { // update virtual mouse position first - CMouseInput* mouse = this->getContext ()->getMouse (); + CMouseInput* mouse = this->getContext ().getMouse (); // TODO: PROPERLY TRANSLATE THESE TO WHAT'S VISIBLE ON SCREEN (FOR BACKGROUNDS THAT DO NOT EXACTLY FIT ON SCREEN) // rollover the position to the last diff --git a/src/WallpaperEngine/Render/CScene.h b/src/WallpaperEngine/Render/CScene.h index 22fb0f5..4c2f4f1 100644 --- a/src/WallpaperEngine/Render/CScene.h +++ b/src/WallpaperEngine/Render/CScene.h @@ -15,7 +15,7 @@ namespace WallpaperEngine::Render class CScene : public CWallpaper { public: - CScene (Core::CScene* scene, CRenderContext* context, CAudioContext* audioContext); + CScene (Core::CScene* scene, CRenderContext& context, CAudioContext& audioContext); CCamera* getCamera () const; diff --git a/src/WallpaperEngine/Render/CTextureCache.cpp b/src/WallpaperEngine/Render/CTextureCache.cpp index 451abac..5557bf6 100644 --- a/src/WallpaperEngine/Render/CTextureCache.cpp +++ b/src/WallpaperEngine/Render/CTextureCache.cpp @@ -2,7 +2,7 @@ using namespace WallpaperEngine::Render; -CTextureCache::CTextureCache (CRenderContext* context) : +CTextureCache::CTextureCache (CRenderContext& context) : m_context (context) { } @@ -18,7 +18,7 @@ const ITexture* CTextureCache::resolve (const std::string& filename) if (found != this->m_textureCache.end ()) return (*found).second; - const ITexture* texture = this->m_context->getContainer ()->readTexture (filename); + const ITexture* texture = this->m_context.getContainer ().readTexture (filename); this->store (filename, texture); diff --git a/src/WallpaperEngine/Render/CTextureCache.h b/src/WallpaperEngine/Render/CTextureCache.h index d0cbe5e..2eb6896 100644 --- a/src/WallpaperEngine/Render/CTextureCache.h +++ b/src/WallpaperEngine/Render/CTextureCache.h @@ -15,7 +15,7 @@ namespace WallpaperEngine::Render class CTextureCache { public: - CTextureCache (CRenderContext* context); + CTextureCache (CRenderContext& context); ~CTextureCache (); /** @@ -36,7 +36,7 @@ namespace WallpaperEngine::Render void store (const std::string& name, const ITexture* texture); private: - CRenderContext* m_context; + CRenderContext& m_context; std::map m_textureCache; }; } diff --git a/src/WallpaperEngine/Render/CVideo.cpp b/src/WallpaperEngine/Render/CVideo.cpp index f57b506..fbe77a7 100644 --- a/src/WallpaperEngine/Render/CVideo.cpp +++ b/src/WallpaperEngine/Render/CVideo.cpp @@ -15,7 +15,7 @@ void* get_proc_address (void* ctx, const char* name) return reinterpret_cast (glfwGetProcAddress (name)); } -CVideo::CVideo (Core::CVideo* video, CRenderContext* context, CAudioContext* audioContext) : +CVideo::CVideo (Core::CVideo* video, CRenderContext& context, CAudioContext& audioContext) : CWallpaper (video, Type, context, audioContext), m_width (16), m_height (16) diff --git a/src/WallpaperEngine/Render/CVideo.h b/src/WallpaperEngine/Render/CVideo.h index 0764ac2..cfa437e 100644 --- a/src/WallpaperEngine/Render/CVideo.h +++ b/src/WallpaperEngine/Render/CVideo.h @@ -12,7 +12,7 @@ namespace WallpaperEngine::Render class CVideo : public CWallpaper { public: - CVideo (Core::CVideo* video, CRenderContext* context, CAudioContext* audioContext); + CVideo (Core::CVideo* video, CRenderContext& context, CAudioContext& audioContext); Core::CVideo* getVideo (); diff --git a/src/WallpaperEngine/Render/CWallpaper.cpp b/src/WallpaperEngine/Render/CWallpaper.cpp index 6a2727e..fd6229b 100644 --- a/src/WallpaperEngine/Render/CWallpaper.cpp +++ b/src/WallpaperEngine/Render/CWallpaper.cpp @@ -9,7 +9,7 @@ using namespace WallpaperEngine::Render; -CWallpaper::CWallpaper (Core::CWallpaper* wallpaperData, std::string type, CRenderContext* context, CAudioContext* audioContext) : +CWallpaper::CWallpaper (Core::CWallpaper* wallpaperData, std::string type, CRenderContext& context, CAudioContext& audioContext) : m_wallpaperData (wallpaperData), m_type (std::move(type)), m_context (context), @@ -54,9 +54,9 @@ CWallpaper::~CWallpaper () { } -const CContainer* CWallpaper::getContainer () const +const CContainer& CWallpaper::getContainer () const { - return this->m_context->getContainer (); + return this->m_context.getContainer (); } WallpaperEngine::Core::CWallpaper* CWallpaper::getWallpaperData () const @@ -325,12 +325,12 @@ void CWallpaper::setupFramebuffers () ); } -CRenderContext* CWallpaper::getContext () +CRenderContext& CWallpaper::getContext () { return this->m_context; } -CAudioContext* CWallpaper::getAudioContext () +CAudioContext& CWallpaper::getAudioContext () { return this->m_audioContext; } @@ -365,7 +365,7 @@ CFBO* CWallpaper::getFBO () const return this->m_sceneFBO; } -CWallpaper* CWallpaper::fromWallpaper (Core::CWallpaper* wallpaper, CRenderContext* context, CAudioContext* audioContext) +CWallpaper* CWallpaper::fromWallpaper (Core::CWallpaper* wallpaper, CRenderContext& context, CAudioContext& audioContext) { if (wallpaper->is () == true) return new WallpaperEngine::Render::CScene (wallpaper->as (), context, audioContext); diff --git a/src/WallpaperEngine/Render/CWallpaper.h b/src/WallpaperEngine/Render/CWallpaper.h index 0721aa9..d1a0075 100644 --- a/src/WallpaperEngine/Render/CWallpaper.h +++ b/src/WallpaperEngine/Render/CWallpaper.h @@ -27,7 +27,7 @@ namespace WallpaperEngine::Render template bool is () { return this->m_type == T::Type; } - CWallpaper (Core::CWallpaper* wallpaperData, std::string type, CRenderContext* context, CAudioContext* audioContext); + CWallpaper (Core::CWallpaper* wallpaperData, std::string type, CRenderContext& context, CAudioContext& audioContext); ~CWallpaper (); /** @@ -38,17 +38,17 @@ namespace WallpaperEngine::Render /** * @return The container to resolve files for this wallpaper */ - const CContainer* getContainer () const; + const CContainer& getContainer () const; /** * @return The current context rendering this wallpaper */ - CRenderContext* getContext (); + CRenderContext& getContext (); /** * @return The current audio context for this wallpaper */ - CAudioContext* getAudioContext (); + CAudioContext& getAudioContext (); /** * @return The scene's framebuffer @@ -112,7 +112,7 @@ namespace WallpaperEngine::Render * * @return */ - static CWallpaper* fromWallpaper (Core::CWallpaper* wallpaper, CRenderContext* context, CAudioContext* audioContext); + static CWallpaper* fromWallpaper (Core::CWallpaper* wallpaper, CRenderContext& context, CAudioContext& audioContext); protected: /** @@ -166,10 +166,10 @@ namespace WallpaperEngine::Render /** * Context that is using this wallpaper */ - CRenderContext* m_context; + CRenderContext& m_context; /* * Audio context that is using this wallpaper */ - CAudioContext* m_audioContext; + CAudioContext& m_audioContext; }; } diff --git a/src/WallpaperEngine/Render/Objects/CImage.cpp b/src/WallpaperEngine/Render/Objects/CImage.cpp index 8e338aa..de8667b 100644 --- a/src/WallpaperEngine/Render/Objects/CImage.cpp +++ b/src/WallpaperEngine/Render/Objects/CImage.cpp @@ -69,7 +69,7 @@ CImage::CImage (CScene* scene, Core::Objects::CImage* image) : else { // get the first texture on the first pass (this one represents the image assigned to this object) - this->m_texture = this->getScene ()->getContext ()->resolveTexture (textureName); + this->m_texture = this->getScene ()->getContext ().resolveTexture (textureName); } } else diff --git a/src/WallpaperEngine/Render/Objects/CSound.cpp b/src/WallpaperEngine/Render/Objects/CSound.cpp index 67dc8e0..64a2265 100644 --- a/src/WallpaperEngine/Render/Objects/CSound.cpp +++ b/src/WallpaperEngine/Render/Objects/CSound.cpp @@ -16,7 +16,7 @@ void CSound::load () for (const auto& cur : this->m_sound->getSounds ()) { uint32_t filesize = 0; - const void* filebuffer = this->getContainer ()->readFile (cur, &filesize); + const void* filebuffer = this->getContainer ().readFile (cur, &filesize); auto stream = new Audio::CAudioStream (this->getScene ()->getAudioContext (), filebuffer, filesize); @@ -26,7 +26,7 @@ void CSound::load () this->m_soundBuffer.push_back (filebuffer); // add the stream to the context so it can be played - this->getScene ()->getAudioContext ()->addStream (stream); + this->getScene ()->getAudioContext ().addStream (stream); } } diff --git a/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp b/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp index 7b084dd..aca8be0 100644 --- a/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp +++ b/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp @@ -524,7 +524,7 @@ void CPass::setupUniforms () textureRef = this->getMaterial ()->getImage ()->getScene ()->findFBO (textureName); } else - textureRef = this->getMaterial ()->getImage ()->getScene ()->getContext ()->resolveTexture (textureName); + textureRef = this->getMaterial ()->getImage ()->getScene ()->getContext ().resolveTexture (textureName); this->m_finalTextures.insert_or_assign ((*fragCur).first, textureRef); } @@ -553,7 +553,7 @@ void CPass::setupUniforms () textureRef = this->getMaterial ()->getImage ()->getScene ()->findFBO (textureName); } else - textureRef = this->getMaterial ()->getImage ()->getScene ()->getContext ()->resolveTexture (textureName); + textureRef = this->getMaterial ()->getImage ()->getScene ()->getContext ().resolveTexture (textureName); this->m_finalTextures.insert_or_assign ((*vertCur).first, textureRef); } @@ -693,7 +693,7 @@ void CPass::setupTextures () else { this->m_textures.emplace_back ( - this->m_material->getImage ()->getScene ()->getContext ()->resolveTexture ((*cur)) + this->m_material->getImage ()->getScene ()->getContext ().resolveTexture ((*cur)) ); } } diff --git a/src/WallpaperEngine/Render/Shaders/Compiler.cpp b/src/WallpaperEngine/Render/Shaders/Compiler.cpp index 07aa242..3fee2a8 100644 --- a/src/WallpaperEngine/Render/Shaders/Compiler.cpp +++ b/src/WallpaperEngine/Render/Shaders/Compiler.cpp @@ -27,7 +27,7 @@ using namespace WallpaperEngine::Assets; namespace WallpaperEngine::Render::Shaders { Compiler::Compiler ( - const CContainer* container, + const CContainer& container, std::string filename, Type type, std::map * combos, @@ -48,11 +48,11 @@ namespace WallpaperEngine::Render::Shaders m_baseCombos () { if (type == Type_Vertex) - this->m_content = this->m_container->readVertexShader (this->m_file); + this->m_content = this->m_container.readVertexShader (this->m_file); else if (type == Type_Pixel) - this->m_content = this->m_container->readFragmentShader (this->m_file); + this->m_content = this->m_container.readFragmentShader (this->m_file); else if (type == Type_Include) - this->m_content = this->m_container->readIncludeShader (this->m_file); + this->m_content = this->m_container.readIncludeShader (this->m_file); // clone the combos into the baseCombos to keep track of values that must be embedded no matter what for (const auto& cur : *this->m_combos) diff --git a/src/WallpaperEngine/Render/Shaders/Compiler.h b/src/WallpaperEngine/Render/Shaders/Compiler.h index ab77a96..8e3e247 100644 --- a/src/WallpaperEngine/Render/Shaders/Compiler.h +++ b/src/WallpaperEngine/Render/Shaders/Compiler.h @@ -51,7 +51,7 @@ namespace WallpaperEngine::Render::Shaders * @param recursive Whether the compiler should add base definitions or not */ Compiler ( - const CContainer* container, + const CContainer& container, std::string filename, Type type, std::map* combos, @@ -259,7 +259,7 @@ namespace WallpaperEngine::Render::Shaders /** * The container to load files from */ - const CContainer* m_container; + const CContainer& m_container; /** * List of textures that the shader expects (inferred from sampler2D and it's JSON data) */