Program Listing for File Sound.hpp

↰ Return to documentation for file (engine/include/Cacao/Sound.hpp)

#pragma once

#include "DllHelper.hpp"
#include "Asset.hpp"

#include <memory>
#include <vector>

namespace Cacao {
    class CACAO_API Sound final : public Asset {
      public:
        static std::shared_ptr<Sound> Create(std::vector<char>&& encodedAudio, const std::string& addr);

        Sound(const Sound&) = delete;
        Sound(Sound&&);
        Sound& operator=(const Sound&) = delete;
        Sound& operator=(Sound&&);

        void Bake() override;

        void Discard() override;

        struct Impl;

        ~Sound();

      private:
        Sound(std::vector<char>&& encodedAudio, const std::string& addr);
        friend class ResourceManager;

        std::unique_ptr<Impl> impl;
        friend class ImplAccessor;
    };
}