#pragma once #include #include #include "../defines.hpp" #include "../helpers/AnimatedVariable.hpp" #include "../desktop/DesktopTypes.hpp" #include "eventLoop/EventLoopTimer.hpp" class CHyprAnimationManager : public Hyprutils::Animation::CAnimationManager { public: CHyprAnimationManager(); void tick(); virtual void scheduleTick(); virtual void onTicked(); using SAnimationPropertyConfig = Hyprutils::Animation::SAnimationPropertyConfig; template void createAnimation(const VarType& v, PHLANIMVAR& pav, SP pConfig, eAVarDamagePolicy policy) { constexpr const eAnimatedVarType EAVTYPE = typeToeAnimatedVarType; const auto PAV = makeShared>(); PAV->create(EAVTYPE, static_cast(this), PAV, v); PAV->setConfig(pConfig); PAV->m_Context.eDamagePolicy = policy; pav = std::move(PAV); } template void createAnimation(const VarType& v, PHLANIMVAR& pav, SP pConfig, PHLWINDOW pWindow, eAVarDamagePolicy policy) { createAnimation(v, pav, pConfig, policy); pav->m_Context.pWindow = pWindow; } template void createAnimation(const VarType& v, PHLANIMVAR& pav, SP pConfig, PHLWORKSPACE pWorkspace, eAVarDamagePolicy policy) { createAnimation(v, pav, pConfig, policy); pav->m_Context.pWorkspace = pWorkspace; } template void createAnimation(const VarType& v, PHLANIMVAR& pav, SP pConfig, PHLLS pLayer, eAVarDamagePolicy policy) { createAnimation(v, pav, pConfig, policy); pav->m_Context.pLayer = pLayer; } void onWindowPostCreateClose(PHLWINDOW, bool close = false); std::string styleValidInConfigVar(const std::string&, const std::string&); SP m_pAnimationTimer; float m_fLastTickTime; // in ms private: bool m_bTickScheduled = false; // Anim stuff void animationPopin(PHLWINDOW, bool close = false, float minPerc = 0.f); void animationSlide(PHLWINDOW, std::string force = "", bool close = false); }; inline std::unique_ptr g_pAnimationManager;