Added Scripting interface for AudioClips #320
|
@ -125,14 +125,29 @@ namespace SHADE
|
||||||
SHTransformComponent* listenerTransform = SHComponentManager::GetComponent_s<SHTransformComponent>(listener.GetEID());
|
SHTransformComponent* listenerTransform = SHComponentManager::GetComponent_s<SHTransformComponent>(listener.GetEID());
|
||||||
if (listenerTransform)
|
if (listenerTransform)
|
||||||
{
|
{
|
||||||
listener.SetPos(listenerTransform->GetLocalPosition());
|
listener.SetPos(listenerTransform->GetWorldPosition()); // TODO: Clean up listener
|
||||||
listener.SetForward({ (listenerTransform->GetLocalScale()[0] > 0.f) ? 1.f : -1.f, 0.f, 0.f });
|
listener.SetForward({ (listenerTransform->GetLocalScale()[0] > 0.f) ? 1.f : -1.f, 0.f, 0.f }); //TODO: USE CORRECT FORWARD
|
||||||
FMOD_VECTOR pos = { listener.pos[0] ,listener.pos[1] ,0.f };
|
FMOD_VECTOR pos = { listener.pos[0] ,listener.pos[1] ,0.f };
|
||||||
FMOD_VECTOR forward = { listener.forward[0] ,listener.forward[1] ,listener.forward[2] };
|
FMOD_VECTOR forward = { listener.forward[0] ,listener.forward[1] ,listener.forward[2] };
|
||||||
FMOD_VECTOR up = { listener.up[0] ,listener.up[1] ,listener.up[2] };
|
FMOD_VECTOR up = { listener.up[0] ,listener.up[1] ,listener.up[2] };
|
||||||
fmodSystem->set3DListenerAttributes(0, &pos, nullptr, &forward, &up);
|
fmodSystem->set3DListenerAttributes(0, &pos, nullptr, &forward, &up);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto [begin, end] = audioClipLibrary.GetDenseAccess();
|
||||||
|
for(auto it = begin; it != end; ++it)
|
||||||
|
{
|
||||||
|
if(it->instance && (it->transformRef != MAX_EID))
|
||||||
|
{
|
||||||
|
if(SHTransformComponent* transformComponent = SHComponentManager::GetComponent_s<SHTransformComponent>(it->transformRef))
|
||||||
|
{
|
||||||
|
FMOD_3D_ATTRIBUTES attribs{}; //TODO: Set other attribs
|
||||||
|
auto pos = transformComponent->GetWorldPosition();
|
||||||
|
attribs.position = {pos.x, pos.y, pos.z};
|
||||||
|
it->instance->set3DAttributes(&attribs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SHAudioSystem::AudioRoutine::AudioRoutine()
|
SHAudioSystem::AudioRoutine::AudioRoutine()
|
||||||
|
@ -372,13 +387,13 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
if (auto transform = SHComponentManager::GetComponent_s<SHTransformComponent>(eid))
|
if (auto transform = SHComponentManager::GetComponent_s<SHTransformComponent>(eid))
|
||||||
{
|
{
|
||||||
//handle->transformRef = transform;
|
handle->transformRef = eid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHAudioSystem::DetachAudioClipToObject(Handle<AudioClip> handle, EntityID eid)
|
void SHAudioSystem::DetachAudioClipFromObject(Handle<AudioClip> handle)
|
||||||
{
|
{
|
||||||
//handle->transformRef = nullptr;
|
handle->transformRef = MAX_EID;
|
||||||
}
|
}
|
||||||
|
|
||||||
//AudioClip* SHAudioSystem::CreateAudioClip(const char* path)
|
//AudioClip* SHAudioSystem::CreateAudioClip(const char* path)
|
||||||
|
|
|
@ -26,7 +26,6 @@ namespace SHADE
|
||||||
class SH_API AudioClip
|
class SH_API AudioClip
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//expose to sxripting
|
|
||||||
void Play();
|
void Play();
|
||||||
//void Play(SHVec3 position);
|
//void Play(SHVec3 position);
|
||||||
void Stop(bool fadeOut = true);
|
void Stop(bool fadeOut = true);
|
||||||
|
@ -75,7 +74,7 @@ namespace SHADE
|
||||||
void AddAudioClipToSFXChannelGroup(Handle<AudioClip> handle);
|
void AddAudioClipToSFXChannelGroup(Handle<AudioClip> handle);
|
||||||
|
|
||||||
void AttachAudioClipToObject(Handle<AudioClip> handle, EntityID eid);
|
void AttachAudioClipToObject(Handle<AudioClip> handle, EntityID eid);
|
||||||
void DetachAudioClipToObject(Handle<AudioClip> handle, EntityID eid);
|
void DetachAudioClipFromObject(Handle<AudioClip> handle);
|
||||||
///
|
///
|
||||||
float GetBgmVolume();
|
float GetBgmVolume();
|
||||||
float GetSfxVolume();
|
float GetSfxVolume();
|
||||||
|
|
Loading…
Reference in New Issue