Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
155 lines
3.6 KiB
C++
155 lines
3.6 KiB
C++
// StreamingSound3D.cpp: implementation of the CStreamingSound3D class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "DefineSound.h"
|
|
#include "StreamingSound.h"
|
|
#include "StreamingSound3D.h"
|
|
#include "GMMemory.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) );
|
|
} |