LumixEngine/src/audio/clip_manager.h
Mikulas Florek fecc8912a2 cleanup
2016-06-22 01:15:50 +02:00

57 lines
1.1 KiB
C++

#pragma once
#include "engine/array.h"
#include "engine/resource.h"
#include "engine/resource_manager_base.h"
namespace Lumix
{
class Clip : public Resource
{
public:
Clip(const Path& path, ResourceManager& manager, IAllocator& allocator)
: Resource(path, manager, allocator)
, m_data(allocator)
{
}
void unload(void) override;
bool load(FS::IFile& file) override;
int getChannels() const { return m_channels; }
int getSampleRate() const { return m_sample_rate; }
int getSize() const { return m_data.size() * sizeof(m_data[0]); }
uint16* getData() { return &m_data[0]; }
float getLengthSeconds() const { return m_data.size() / float(m_channels * m_sample_rate); }
private:
int m_channels;
int m_sample_rate;
Array<uint16> m_data;
};
class ClipManager : public ResourceManagerBase
{
public:
explicit ClipManager(IAllocator& allocator)
: ResourceManagerBase(allocator)
, m_allocator(allocator)
{
}
~ClipManager() {}
protected:
Resource* createResource(const Path& path) override;
void destroyResource(Resource& resource) override;
private:
IAllocator& m_allocator;
};
} // namespace Lumix