Program Listing for File Sound.hpp
↰ Return to documentation for file (engine/include/Cacao/Sound.hpp
)
#pragma once
#include "Cacao/ResourceManager.hpp"
#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) {
return std::shared_ptr<Sound>(new Sound(std::move(encodedAudio), addr));
}
Sound(const Sound&) = delete;
Sound(Sound&&);
Sound& operator=(const Sound&) = delete;
Sound& operator=(Sound&&);
void Realize();
std::shared_future<void> RealizeAsync();
void DropRealized();
struct Impl;
~Sound();
private:
Sound(std::vector<char>&& encodedAudio, const std::string& addr);
friend class ResourceManager;
std::unique_ptr<Impl> impl;
friend class ImplAccessor;
};
}