1
0
mirror of https://github.com/borgesdan/xn65 synced 2024-12-29 21:54:47 +01:00

Implementações em SoundEffects

This commit is contained in:
Danilo 2024-05-28 09:06:10 -03:00
parent a51a5ef1af
commit 6a48d6d664
5 changed files with 52 additions and 4 deletions

View File

@ -1,6 +1,7 @@
#include "platform-dx/init.hpp"
#include "csharp/type.hpp"
#include "graphics/readers/texture2D.hpp"
#include "audio/readers/soundeffect.hpp"
#include "content/typereadermanager.hpp"
#include "content/defaultreaders.hpp"
#include "platform-dx/implementations.hpp"
@ -47,6 +48,7 @@ namespace xna {
insertRegisteredReader<Vector3Reader>("Vector3Reader");
insertRegisteredReader<Vector4Reader>("Vector4Reader");
insertRegisteredReader<Texture2DReader>("Texture2DReader");
insertRegisteredReader<SoundEffect>("SoundEffectReader");
}
void PlatformInit::InitActivadors()
@ -74,5 +76,6 @@ namespace xna {
insertActivadorReader<Vector3Reader>();
insertActivadorReader<Vector4Reader>();
insertActivadorReader<Texture2DReader>();
insertActivadorReader<SoundEffect>();
}
}

View File

@ -11,6 +11,9 @@ namespace xna {
impl = nullptr;
}
SoundEffect::SoundEffect() {
}
SoundEffect::SoundEffect(String const& fileName) {
if (!AudioEngine::impl || !AudioEngine::impl->_dxAudioEngine)
return;
@ -19,8 +22,37 @@ namespace xna {
impl->_dxSoundEffect = unew<DxSoundEffect>(AudioEngine::impl->_dxAudioEngine.get(), file.c_str());
}
SoundEffect::~SoundEffect() {
impl = nullptr;
SoundEffect::SoundEffect(
std::vector<Byte> format,
std::vector<Byte> data,
Int loopStart,
Int loopLength,
TimeSpan const& duration) {
if (!AudioEngine::impl || !AudioEngine::impl->_dxAudioEngine)
return;
auto wavData = unew<Byte[]>(data.size());
for (size_t i = 0; i < data.size(); ++i)
wavData[i] = data[i];
auto wavFormat = reinterpret_cast<WAVEFORMATEX*>(format.data());
auto startAudio = wavData.get() + sizeof(WAVEFORMATEX);
/*auto se = new DxSoundEffect(
AudioEngine::impl->_dxAudioEngine.get(),
wavData,
wavFormat,
startAudio,
data.size(),
loopStart,
loopLength);*/
impl->_dxSoundEffect = unew<DxSoundEffect>(
AudioEngine::impl->_dxAudioEngine.get(),
wavData,
wavFormat,
startAudio,
data.size(),
loopStart,
loopLength);
}
void SoundEffect::Play() {

View File

@ -12,7 +12,13 @@ namespace xna {
SoundEffectReader() : ContentTypeReaderT(typeof<SoundEffect>()) {}
PSoundEffect Read(ContentReader& input, PSoundEffect& existingInstance) override {
return nullptr;
const auto count1 = input.ReadInt32();
auto format = input.ReadBytes(count1);
auto count2 = input.ReadInt32();
auto data = input.ReadBytes(count2);
auto loopStart = input.ReadInt32();
auto loopLength = input.ReadInt32();
auto num = input.ReadInt32();
}
};
}

View File

@ -27,7 +27,12 @@ namespace xna {
public:
SoundEffect();
SoundEffect(String const& fileName);
~SoundEffect();
SoundEffect(
std::vector<Byte> format,
std::vector<Byte> data,
Int loopStart,
Int loopLength,
TimeSpan const& duration);
void Play();
void Play(float volume, float pitch, float pan);
uptr<SoundEffectInstance> CreateInstance();

View File

@ -27,6 +27,8 @@ namespace xna {
void LoadContent() override {
spriteBatch = New<SpriteBatch>(*graphicsDevice);
auto effect = Content()->Load<PSoundEffect>("ExitReached");
Game::LoadContent();
}