Files
Client/GameTools/SoundLib/StreamingSound3D.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

155 lines
3.6 KiB
C++

// StreamingSound3D.cpp: implementation of the CStreamingSound3D class.
//
//////////////////////////////////////////////////////////////////////
#include "DefineSound.h"
#include "StreamingSound.h"
#include "StreamingSound3D.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CStreamingSound3D::CStreamingSound3D() : m_pStreamingSound(NULL),
m_pDS3DBuffer(NULL)
{
ZeroMemory( &m_Prop, sizeof(DS3DBUFFER) );
}
CStreamingSound3D::~CStreamingSound3D()
{
Destroy();
}
bool CStreamingSound3D::Create( char* strFileName )
{
m_pStreamingSound = new CStreamingSound;
m_pStreamingSound->m_bSound3D = true;
if( !m_pStreamingSound->Create( strFileName ) )
{
Destroy();
return false;
}
m_pStreamingSound->m_pDSBuffer->QueryInterface( IID_IDirectSound3DBuffer8, (VOID**) &m_pDS3DBuffer );
m_Prop.dwSize = sizeof(DS3DBUFFER);
m_pDS3DBuffer->GetAllParameters( &m_Prop );
return true;
}
void CStreamingSound3D::Destroy()
{
SAFE_RELEASE( m_pDS3DBuffer );
SAFE_DELETE( m_pStreamingSound );
}
void CStreamingSound3D::SetConeAngles( DWORD dwInside, DWORD dwOutside )
{
m_pDS3DBuffer->SetConeAngles( dwInside, dwOutside, DS3D_IMMEDIATE );
m_Prop.dwInsideConeAngle = dwInside;
m_Prop.dwOutsideConeAngle = dwOutside;
}
void CStreamingSound3D::SetConeOrientation( D3DVECTOR& vOrientation )
{
m_pDS3DBuffer->SetConeOrientation( vOrientation.x,
vOrientation.y,
vOrientation.z, DS3D_IMMEDIATE );
memcpy( &m_Prop.vConeOrientation, &vOrientation, sizeof(D3DVECTOR) );
}
void CStreamingSound3D::SetConeOutsideVolume( float fVolume )
{
m_pDS3DBuffer->SetConeOutsideVolume( LinearToLogVol(fVolume), DS3D_IMMEDIATE );
m_Prop.lConeOutsideVolume = LinearToLogVol(fVolume);
}
void CStreamingSound3D::SetMaxDistance( float fMaxDist )
{
m_pDS3DBuffer->SetMaxDistance( fMaxDist, DS3D_IMMEDIATE );
m_Prop.flMaxDistance = fMaxDist;
}
void CStreamingSound3D::SetMinDistance( float fMinDist )
{
m_pDS3DBuffer->SetMinDistance( fMinDist, DS3D_IMMEDIATE );
m_Prop.flMinDistance = fMinDist;
}
void CStreamingSound3D::SetMode( DWORD dwMode )
{
m_pDS3DBuffer->SetMode( dwMode, DS3D_IMMEDIATE );
m_Prop.dwMode = dwMode;
}
void CStreamingSound3D::SetPosition( D3DVECTOR& vPos )
{
m_pDS3DBuffer->SetPosition( vPos.x, vPos.y, vPos.z, DS3D_IMMEDIATE );
memcpy( &m_Prop.vPosition, &vPos, sizeof(D3DVECTOR) );
}
void CStreamingSound3D::SetVelocity( const D3DVECTOR& vVel )
{
m_pDS3DBuffer->SetVelocity( vVel.x, vVel.y, vVel.z, DS3D_IMMEDIATE );
memcpy( &m_Prop.vVelocity, &vVel, sizeof(D3DVECTOR) );
}
void CStreamingSound3D::GetConeAngles( DWORD& dwInside, DWORD& dwOutside )
{
dwInside = m_Prop.dwInsideConeAngle;
dwOutside = m_Prop.dwOutsideConeAngle;
}
void CStreamingSound3D::GetConeOrientation( D3DVECTOR& vOrientation )
{
memcpy( &vOrientation, &m_Prop.vConeOrientation, sizeof(D3DVECTOR) );
}
void CStreamingSound3D::GetConeOutsideVolume( float& fVolume )
{
fVolume = LogToLinearVol( m_Prop.lConeOutsideVolume );
}
void CStreamingSound3D::GetMaxDistance( float& fMaxDist )
{
fMaxDist = m_Prop.flMaxDistance;
}
void CStreamingSound3D::GetMinDistance( float& fMinDist )
{
fMinDist = m_Prop.flMinDistance;
}
void CStreamingSound3D::GetMode( DWORD& dwMode )
{
dwMode = m_Prop.dwMode;
}
void CStreamingSound3D::GetPosition( D3DVECTOR& vPos )
{
memcpy( &vPos, &m_Prop.vPosition, sizeof(D3DVECTOR) );
}
void CStreamingSound3D::GetVelocity( D3DVECTOR& vVel )
{
memcpy( &vVel, &m_Prop.vVelocity, sizeof(D3DVECTOR) );
}