#pragma once #include #include "WallpaperEngine/Data/JSON.h" #include "WallpaperEngine/Data/Model/Object.h" namespace WallpaperEngine::Data::Model { struct ObjectData; } namespace WallpaperEngine::Data::Parsers { using JSON = WallpaperEngine::Data::JSON::JSON; using namespace WallpaperEngine::Data::Model; class ObjectParser { public: /** ImageAlignment flags from an alignment name, images re-read it when a script changes it */ static uint32_t parseAlignment (const std::string& alignment); static ObjectUniquePtr parse (const JSON& it, const Project& project); private: static std::vector parseDependencies (const JSON& it); static SoundUniquePtr parseSound (const JSON& it, const Project& project, ObjectData base); static SoundPlaybackMode parsePlaybackMode (const std::string& mode); static ImageUniquePtr parseImage (const JSON& it, const Project& project, ObjectData base, const std::string& image); static ParticleUniquePtr parseParticle (const JSON& it, const Project& project, ObjectData base, int depth = 0); static TextUniquePtr parseText (const JSON& it, const Project& project, ObjectData base); static LightUniquePtr parseLight (const JSON& it, const Project& project, ObjectData base); static MeshUniquePtr parseMesh (const JSON& it, ObjectData base); static SceneCameraUniquePtr parseCamera (const JSON& it, const Project& project, ObjectData base); static std::vector parseEffects (const JSON& it, const Project& project); static ImageEffectUniquePtr parseEffect (const JSON& it, const Project& project); static std::vector parseEffectPassOverrides (const JSON& it, const Project& project); static ImageEffectPassOverrideUniquePtr parseEffectPass (const JSON& it, const Project& project); static ComboMap parseComboMap (const JSON& it); static std::vector parseAnimationLayers (const JSON& it, const Project& project); static ImageAnimationLayerUniquePtr parseAnimationLayer (const JSON& it, const Project& project); static ParticleEmitter parseParticleEmitter (const JSON& it); static ParticleInitializerUniquePtr parseParticleInitializer (const JSON& it, const Properties& properties); static ParticleOperatorUniquePtr parseParticleOperator (const JSON& it, const Properties& properties); static ParticleRenderer parseParticleRenderer (const JSON& it); static ParticleControlPoint parseParticleControlPoint (const JSON& it); static ParticleEventInput parseParticleEventInput (const JSON& it, ParticleEventInput fallback); static ParticleChild parseParticleChild ( const JSON& it, const JSON& owner, const Project& project, const ObjectData& ownerBase, size_t index, int depth ); static ParticleInstanceOverride parseParticleInstanceOverride (const JSON& it, const Properties& properties); }; } // namespace WallpaperEngine::Data::Parsers