#pragma once #include "FrameSource.h" #include "../shape/Shape.h" #include "../obj/WorldObject.h" #include "../obj/Camera.h" #include "../svg/SvgParser.h" #include "../txt/TextParser.h" #include "../lua/LuaParser.h" class FileParser { public: FileParser(std::function errorCallback = nullptr); void parse(juce::String fileName, juce::String extension, std::unique_ptr, juce::Font); std::vector> nextFrame(); Point nextSample(lua_State*& L, const LuaVariables vars, long& step, double& phase); void closeLua(lua_State*& L); bool isSample(); bool isActive(); void disable(); void enable(); std::shared_ptr getObject(); std::shared_ptr getCamera(); std::shared_ptr getSvg(); std::shared_ptr getText(); std::shared_ptr getLua(); private: bool active = true; bool sampleSource = false; juce::SpinLock lock; std::shared_ptr object; std::shared_ptr camera; std::shared_ptr svg; std::shared_ptr text; std::shared_ptr lua; juce::String fallbackLuaScript = "return { 0.0, 0.0 }"; std::function errorCallback; };