Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
104 lines
3.1 KiB
C++
104 lines
3.1 KiB
C++
//===========================================================================//
|
|
// File: audiorenderer.hpp //
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 03/22/99 SMJ Initial coding. //
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1999, Microsoft Corporation //
|
|
// All Rights reserved worldwide //
|
|
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
|
//===========================================================================//
|
|
|
|
#pragma once
|
|
|
|
#include "Adept.hpp"
|
|
|
|
namespace Adept {
|
|
|
|
class AudioChannel;
|
|
class AudioSample;
|
|
|
|
//##########################################################################
|
|
//############################ AudioCommand ##########################
|
|
//##########################################################################
|
|
|
|
class AudioCommand:
|
|
public Stuff::Plug
|
|
{
|
|
friend class AudioRenderer;
|
|
friend class AudioChannel;
|
|
|
|
public:
|
|
typedef Stuff::Plug BaseClass;
|
|
|
|
static void InitializeClass(size_t block_count = 20, size_t block_delta = 10);
|
|
static void TerminateClass();
|
|
|
|
static ClassData *DefaultData;
|
|
|
|
void TestInstance() const;
|
|
|
|
void Play(gosAudio_PlayMode mode=gosAudio_PlayOnce);
|
|
void Stop();
|
|
|
|
static AudioCommand *Create(
|
|
int type,
|
|
const ResourceID &hint_ID,
|
|
Stuff::Scalar priority,
|
|
Stuff::Scalar volume,
|
|
Stuff::Scalar min_restart = 0.5f,
|
|
Stuff::Scalar min_replace = 0.8f
|
|
);
|
|
static AudioCommand *Create(
|
|
int type,
|
|
const char* name,
|
|
Stuff::Scalar priority,
|
|
Stuff::Scalar volume,
|
|
Stuff::Scalar min_restart = 0.5f,
|
|
Stuff::Scalar min_replace = 0.8f
|
|
);
|
|
|
|
gosAudio_PlayMode GetPlayMode()
|
|
{Check_Object(this); return m_playMode;}
|
|
|
|
void SetChannel(AudioChannel *channel)
|
|
{Check_Object(this); Check_Object(channel); m_channel = channel;}
|
|
|
|
virtual bool ConnectToChannel(AudioSample* sample);
|
|
virtual bool AddLoop();
|
|
|
|
virtual Stuff::Scalar ComputeEnergy(AudioChannel *channel);
|
|
|
|
Stuff::Scalar m_priority, m_volume, m_energy;
|
|
Stuff::Scalar m_minRestartDelay, m_minReplaceDelay;
|
|
|
|
protected:
|
|
AudioCommand(
|
|
ClassData *class_data,
|
|
int type,
|
|
const ResourceID &hint_ID,
|
|
Stuff::Scalar priority,
|
|
Stuff::Scalar volume,
|
|
Stuff::Scalar min_restart,
|
|
Stuff::Scalar min_replace
|
|
);
|
|
~AudioCommand();
|
|
|
|
void*
|
|
operator new(size_t size)
|
|
{Verify(size == sizeof(AudioCommand)); return s_AllocatedMemory->New();}
|
|
void
|
|
operator delete(void *where)
|
|
{s_AllocatedMemory->Delete(where);}
|
|
|
|
ResourceID m_handleResourceID;
|
|
int m_type;
|
|
AudioChannel* m_channel;
|
|
gosAudio_PlayMode m_playMode;
|
|
|
|
private:
|
|
static Stuff::MemoryBlock *s_AllocatedMemory;
|
|
};
|
|
}
|