Exemple #1
0
std::shared_ptr<AudioClip> AudioClip::loadResource(ResourceLoader& loader)
{
	bool streaming = loader.getMeta().getBool("streaming", false);
	int channels = loader.getMeta().getInt("channels", 1);
	auto result = std::make_shared<AudioClip>(size_t(channels));

	if (streaming) {
		std::shared_ptr<ResourceDataStream> stream = loader.getStream();
		Concurrent::execute([stream, result] ()	{
			result->loadFromStream(stream);
		});
	} else {
		loader
			.getAsync()
			.then([result](std::unique_ptr<ResourceDataStatic> data) {
				result->loadFromStatic(std::shared_ptr<ResourceDataStatic>(std::move(data)));
			});
	}

	return result;
}