sound now works
This commit is contained in:
@@ -48,6 +48,7 @@ DECLARE_BUILD_STAGE(install_game)
|
|||||||
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/textures");
|
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/textures");
|
||||||
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/physics");
|
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/physics");
|
||||||
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/fonts");
|
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/fonts");
|
||||||
|
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/sounds");
|
||||||
filesystem2->CopyFile(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/default.cfg");
|
filesystem2->CopyFile(CUtlString("%s/core/",szOutputDir.GetString()), "funnyassets/default.cfg");
|
||||||
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "build/funnygame/assets/shaders");
|
filesystem2->CopyDirectory(CUtlString("%s/core/",szOutputDir.GetString()), "build/funnygame/assets/shaders");
|
||||||
if (Target_t::DefaultTarget().kernel == TARGET_KERNEL_WINDOWS)
|
if (Target_t::DefaultTarget().kernel == TARGET_KERNEL_WINDOWS)
|
||||||
|
|||||||
@@ -1,25 +1,155 @@
|
|||||||
#include "iaudio.h"
|
#include "iaudio.h"
|
||||||
|
#include "tier0/lib.h"
|
||||||
|
#include "tier1/utlvector.h"
|
||||||
|
#include "tier1/utlstring.h"
|
||||||
|
#define MINIAUDIO_IMPLEMENTATION
|
||||||
#include "miniaudio.h"
|
#include "miniaudio.h"
|
||||||
|
|
||||||
class CAudioPlayer
|
class CMiniAudio;
|
||||||
|
class CMiniAudioManager;
|
||||||
|
|
||||||
|
class CMiniAudioPlayer: public IAudioPlayer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void StartAt( double fTime ) = 0;
|
virtual void StartAt( double fTime ) override;
|
||||||
virtual double GetPlayTime() = 0;
|
virtual double GetPlayTime() override;
|
||||||
virtual double Stop() = 0;
|
virtual double Stop() override;
|
||||||
virtual void Continue() = 0;
|
virtual void Continue() override;
|
||||||
|
|
||||||
|
virtual void SetDirection( Vector v ) override;
|
||||||
|
virtual void SetVolume( float fValue ) override;
|
||||||
|
|
||||||
|
ma_sound m_sound;
|
||||||
|
CMiniAudio *m_pAudio;
|
||||||
|
|
||||||
|
bool m_bIsPlaying;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CAudio
|
class CMiniAudio: public IAudio
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual IAudioPlayer *SpawnPlayer() = 0;
|
virtual IAudioPlayer *SpawnPlayer() override;
|
||||||
|
|
||||||
|
CMiniAudioManager *m_pManager;
|
||||||
|
CUtlString m_szName;
|
||||||
|
ma_sound m_sound;
|
||||||
|
CUtlVector<CMiniAudioPlayer*> m_players;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CAudioManager: public IAppSystem
|
class CMiniAudioManager: public IAudioManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void CreateAudio( const char *szFile ) = 0;
|
virtual void Init() override;
|
||||||
virtual void SetEarsPosition( Vector v ) = 0;
|
virtual void Shutdown() override;
|
||||||
virtual void SetEarsRotation( Quat q ) = 0;
|
virtual void Frame() override;
|
||||||
|
virtual IAudio *CreateAudio( const char *szFile ) override;
|
||||||
|
virtual void DestroyAudio( IAudio *pAudio ) override;
|
||||||
|
|
||||||
|
ma_engine m_engine;
|
||||||
|
CUtlVector<CMiniAudio*> m_audios;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void CMiniAudioPlayer::StartAt( double fTime )
|
||||||
|
{
|
||||||
|
ma_sound_seek_to_second(&m_sound, -fTime*1000);
|
||||||
|
ma_sound_start(&m_sound);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
double CMiniAudioPlayer::GetPlayTime()
|
||||||
|
{
|
||||||
|
return ma_sound_get_time_in_milliseconds(&m_sound)/1000.0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
double CMiniAudioPlayer::Stop()
|
||||||
|
{
|
||||||
|
ma_sound_stop(&m_sound);
|
||||||
|
return GetPlayTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMiniAudioPlayer::Continue()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMiniAudioPlayer::SetDirection( Vector v )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMiniAudioPlayer::SetVolume( float fValue )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
IAudioPlayer *CMiniAudio::SpawnPlayer()
|
||||||
|
{
|
||||||
|
CMiniAudioPlayer *pPlayer;
|
||||||
|
ma_result r;
|
||||||
|
|
||||||
|
pPlayer = new CMiniAudioPlayer;
|
||||||
|
r = ma_sound_init_from_file(&m_pManager->m_engine, m_szName, MA_SOUND_FLAG_DECODE | MA_SOUND_FLAG_WAIT_INIT, NULL, NULL, &pPlayer->m_sound);
|
||||||
|
if (r != MA_SUCCESS)
|
||||||
|
{
|
||||||
|
delete pPlayer;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
m_players.AppendTail(pPlayer);
|
||||||
|
return pPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMiniAudioManager::Init()
|
||||||
|
{
|
||||||
|
ma_device_config config;
|
||||||
|
ma_result r;
|
||||||
|
|
||||||
|
r = ma_engine_init(NULL, &m_engine);
|
||||||
|
if ( r != MA_SUCCESS )
|
||||||
|
{
|
||||||
|
V_printf("ma_engine_init failed\n");
|
||||||
|
}
|
||||||
|
r = ma_engine_start(&m_engine);
|
||||||
|
if ( r != MA_SUCCESS )
|
||||||
|
{
|
||||||
|
V_printf("ma_engine_start failed\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMiniAudioManager::Shutdown()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMiniAudioManager::Frame()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
IAudio *CMiniAudioManager::CreateAudio( const char *szFile )
|
||||||
|
{
|
||||||
|
|
||||||
|
ma_result r;
|
||||||
|
CMiniAudio *pAudio;
|
||||||
|
|
||||||
|
pAudio = new CMiniAudio;
|
||||||
|
r = ma_sound_init_from_file(&m_engine, szFile, MA_SOUND_FLAG_DECODE | MA_SOUND_FLAG_ASYNC, NULL, NULL, &pAudio->m_sound);
|
||||||
|
if (r != MA_SUCCESS)
|
||||||
|
{
|
||||||
|
delete pAudio;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
pAudio->m_pManager = this;
|
||||||
|
pAudio->m_szName = szFile;
|
||||||
|
m_audios.AppendTail(pAudio);
|
||||||
|
return pAudio;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMiniAudioManager::DestroyAudio( IAudio *pAudio )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPOSE_INTERFACE(CMiniAudioManager, IAudioManager, AUDIO_MANAGER_INTERFACE_VERSION);
|
||||||
|
|||||||
BIN
funnyassets/sounds/bonk.wav
Normal file
BIN
funnyassets/sounds/bonk.wav
Normal file
Binary file not shown.
@@ -70,8 +70,13 @@ void CFunnyGameBridge::Init()
|
|||||||
|
|
||||||
g_pHumanDeviceManager->SetDefaultInput(g_pMainInput);
|
g_pHumanDeviceManager->SetDefaultInput(g_pMainInput);
|
||||||
|
|
||||||
CreateInterfaceFn fnEngineFactory = Sys_GetFactory("engine");
|
CreateInterfaceFn fnEngineFactory = GetEngineFactory();
|
||||||
g_pKotUI = (IKotUIManager*)fnEngineFactory(KOT_UI_INTEFACE_VERSION, NULL);
|
g_pKotUI = (IKotUIManager*)fnEngineFactory(KOT_UI_INTEFACE_VERSION, NULL);
|
||||||
|
g_pAudioManager = (IAudioManager*)fnEngineFactory(AUDIO_MANAGER_INTERFACE_VERSION, NULL);
|
||||||
|
g_pAudioManager->Init();
|
||||||
|
IAudio *pAudio = g_pAudioManager->CreateAudio("game/core/sounds/bonk.wav");
|
||||||
|
IAudioPlayer *pAudioPlayer = pAudio->SpawnPlayer();
|
||||||
|
pAudioPlayer->StartAt(0.35);
|
||||||
|
|
||||||
g_pKotUI->ConnectInterface(g_pRenderContext, RENDER_CONTEXT_INTERFACE_VERSION);
|
g_pKotUI->ConnectInterface(g_pRenderContext, RENDER_CONTEXT_INTERFACE_VERSION);
|
||||||
g_pKotUI->Init();
|
g_pKotUI->Init();
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ IPhysics *g_pPhysics;
|
|||||||
IPhysicsWorld *g_pPhysicsWorld;
|
IPhysicsWorld *g_pPhysicsWorld;
|
||||||
|
|
||||||
IKotUIManager *g_pKotUI;
|
IKotUIManager *g_pKotUI;
|
||||||
|
IAudioManager *g_pAudioManager;
|
||||||
|
|
||||||
CreateInterfaceFn GetEngineFactory()
|
CreateInterfaceFn GetEngineFactory()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include "iphysics.h"
|
#include "iphysics.h"
|
||||||
#include "ihumandevice.h"
|
#include "ihumandevice.h"
|
||||||
#include "kottui/kottui.h"
|
#include "kottui/kottui.h"
|
||||||
|
#include "iaudio.h"
|
||||||
|
|
||||||
class CEngineVars
|
class CEngineVars
|
||||||
{
|
{
|
||||||
@@ -42,6 +43,8 @@ extern IPhysicsWorld *g_pPhysicsWorld;
|
|||||||
|
|
||||||
extern IKotUIManager *g_pKotUI;
|
extern IKotUIManager *g_pKotUI;
|
||||||
|
|
||||||
|
extern IAudioManager *g_pAudioManager;
|
||||||
|
|
||||||
#define FUNNY_SECURE_PORT 27015
|
#define FUNNY_SECURE_PORT 27015
|
||||||
#define FUNNY_QUERY_PORT 27016
|
#define FUNNY_QUERY_PORT 27016
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,9 @@ public:
|
|||||||
virtual double GetPlayTime() = 0;
|
virtual double GetPlayTime() = 0;
|
||||||
virtual double Stop() = 0;
|
virtual double Stop() = 0;
|
||||||
virtual void Continue() = 0;
|
virtual void Continue() = 0;
|
||||||
|
|
||||||
|
virtual void SetDirection( Vector v ) = 0;
|
||||||
|
virtual void SetVolume( float fValue ) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
abstract_class IAudio
|
abstract_class IAudio
|
||||||
@@ -23,9 +26,11 @@ public:
|
|||||||
abstract_class IAudioManager: public IAppSystem
|
abstract_class IAudioManager: public IAppSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void CreateAudio( const char *szFile ) = 0;
|
virtual void Frame() = 0;
|
||||||
virtual void SetEarsPosition( Vector v ) = 0;
|
virtual IAudio *CreateAudio( const char *szFile ) = 0;
|
||||||
virtual void SetEarsRotation( Quat q ) = 0;
|
virtual void DestroyAudio( IAudio *pAudio ) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define AUDIO_MANAGER_INTERFACE_VERSION "Audio001"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user