mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-16 00:18:59 +00:00
ProcessEscalators + some fixes
This commit is contained in:
parent
a9c3fdd63f
commit
b2e3d90734
2 changed files with 56 additions and 10 deletions
|
@ -39,6 +39,7 @@
|
|||
#include "sampman.h"
|
||||
#include "Bike.h"
|
||||
#include "WindModifiers.h"
|
||||
#include "Fluff.h"
|
||||
|
||||
|
||||
const int channels = ARRAY_SIZE(cAudioManager::m_asActiveSamples);
|
||||
|
@ -400,7 +401,7 @@ cAudioManager::ProcessEntity(int32 id)
|
|||
case AUDIOTYPE_ESCALATOR:
|
||||
if (!m_nUserPause) {
|
||||
m_sQueueSample.m_bReverbFlag = true;
|
||||
//ProcessEscalators(); //TODO
|
||||
ProcessEscalators();
|
||||
}
|
||||
break;
|
||||
case AUDIOTYPE_EXTRA_SOUNDS:
|
||||
|
@ -3072,6 +3073,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams *params)
|
|||
return true;
|
||||
}
|
||||
|
||||
//TODO use it in ProcessVehicle
|
||||
void
|
||||
cAudioManager::ProcessPlane(cVehicleParams *params)
|
||||
{
|
||||
|
@ -4557,12 +4559,14 @@ cAudioManager::ProcessWaterCannon(int32)
|
|||
}
|
||||
}
|
||||
|
||||
//positon of arcade machines
|
||||
CVector aVecExtraSoundPosition[] = { {-1042.546, 88.793999, 11.324}, {-1004.476, 181.69701, 11.324} };
|
||||
|
||||
void
|
||||
cAudioManager::ProcessExtraSounds()
|
||||
{
|
||||
const float extraSoundIntensity = 18;
|
||||
const float extraSoundIntensity = 18.0f;
|
||||
const uint8 extraSoundVolume = 50;
|
||||
|
||||
float distance;
|
||||
|
||||
|
@ -4574,22 +4578,22 @@ cAudioManager::ProcessExtraSounds()
|
|||
m_sQueueSample.m_fDistance = Sqrt(distance);
|
||||
else
|
||||
m_sQueueSample.m_fDistance = 0.0f;
|
||||
m_sQueueSample.m_nVolume = ComputeVolume(50, 18.0f, m_sQueueSample.m_fDistance);
|
||||
m_sQueueSample.m_nVolume = ComputeVolume(extraSoundVolume, extraSoundIntensity, m_sQueueSample.m_fDistance);
|
||||
if (m_sQueueSample.m_nVolume != 0) {
|
||||
this->m_sQueueSample.m_nCounter = i;
|
||||
this->m_sQueueSample.m_nSampleIndex = SFX_ARCADE;
|
||||
this->m_sQueueSample.m_nBankIndex = 0;
|
||||
this->m_sQueueSample.m_nBankIndex = SFX_BANK_0;
|
||||
this->m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ARCADE);
|
||||
this->m_sQueueSample.m_bIs2D = false;
|
||||
this->m_sQueueSample.m_nLoopCount = 0;
|
||||
this->m_sQueueSample.m_bReleasingSoundFlag = false;
|
||||
this->m_sQueueSample.m_nReleasingVolumeModificator = 4;
|
||||
this->m_sQueueSample.m_fSpeedMultiplier = 3.0;
|
||||
this->m_sQueueSample.m_nEmittingVolume = 50;
|
||||
this->m_sQueueSample.m_fSpeedMultiplier = 3.0f;
|
||||
this->m_sQueueSample.m_nEmittingVolume = extraSoundVolume;
|
||||
this->m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_ARCADE);
|
||||
this->m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_ARCADE);
|
||||
this->m_sQueueSample.m_bReverbFlag = true;
|
||||
this->m_sQueueSample.m_fSoundIntensity = 18.0f;
|
||||
this->m_sQueueSample.m_fSoundIntensity = extraSoundIntensity;
|
||||
this->m_sQueueSample.m_bRequireReflection = false;
|
||||
this->m_sQueueSample.m_nReleasingVolumeDivider = 3;
|
||||
AddSampleToRequestedQueue();
|
||||
|
@ -4598,6 +4602,48 @@ cAudioManager::ProcessExtraSounds()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
cAudioManager::ProcessEscalators()
|
||||
{
|
||||
const float escalatorsSoundIntensity = 30.0f;
|
||||
const uint8 escalatorsSoundVolume = 26;
|
||||
|
||||
float distance;
|
||||
|
||||
for (int i = 0; i < CEscalators::NumEscalators; i++) {
|
||||
if (!CEscalators::aEscalators[i].m_bIsActive)
|
||||
continue;
|
||||
m_sQueueSample.m_vecPos = CEscalators::aEscalators[i].m_midPoint;
|
||||
distance = GetDistanceSquared(m_sQueueSample.m_vecPos);
|
||||
if (distance < SQR(escalatorsSoundIntensity)) {
|
||||
if (distance > 0.0)
|
||||
m_sQueueSample.m_fDistance = Sqrt(distance);
|
||||
else
|
||||
m_sQueueSample.m_fDistance = 0.0f;
|
||||
m_sQueueSample.m_nVolume = ComputeVolume(escalatorsSoundVolume, escalatorsSoundIntensity, m_sQueueSample.m_fDistance);
|
||||
if (m_sQueueSample.m_nVolume != 0) {
|
||||
this->m_sQueueSample.m_nSampleIndex = SFX_BOAT_V12_LOOP;
|
||||
this->m_sQueueSample.m_nBankIndex = SFX_BANK_0;
|
||||
this->m_sQueueSample.m_nFrequency = i * 50 % 250 + 3973;
|
||||
this->m_sQueueSample.m_nReleasingVolumeModificator = 3;
|
||||
this->m_sQueueSample.m_fSpeedMultiplier = 3.0f;
|
||||
this->m_sQueueSample.m_nReleasingVolumeDivider = 5;
|
||||
this->m_sQueueSample.m_fSoundIntensity = escalatorsSoundIntensity;
|
||||
this->m_sQueueSample.m_nCounter = i;
|
||||
this->m_sQueueSample.m_bIs2D = false;
|
||||
this->m_sQueueSample.m_nLoopCount = 0;
|
||||
this->m_sQueueSample.m_nEmittingVolume = escalatorsSoundVolume;
|
||||
this->m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_BOAT_V12_LOOP);
|
||||
this->m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_BOAT_V12_LOOP);
|
||||
this->m_sQueueSample.m_bReverbFlag = true;
|
||||
this->m_sQueueSample.m_bReleasingSoundFlag = false;
|
||||
this->m_sQueueSample.m_bRequireReflection = false;
|
||||
AddSampleToRequestedQueue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma region SCRIPT_OBJECTS
|
||||
const int SCRIPT_OBJECT_INTENSITY_S = 30;
|
||||
const int SCRIPT_OBJECT_INTENSITY_L = 80;
|
||||
|
|
|
@ -90,15 +90,15 @@ class CEscalator
|
|||
CVector m_pos2;
|
||||
CVector m_pos3;
|
||||
CMatrix m_matrix;
|
||||
bool m_bIsActive;
|
||||
bool m_bIsMovingDown;
|
||||
int32 m_stepsCount;
|
||||
float m_lowerEnd;
|
||||
float m_upperEnd;
|
||||
CVector m_midPoint;
|
||||
float m_radius;
|
||||
CObject *m_pSteps[24];
|
||||
public:
|
||||
bool m_bIsActive;//TODO also recheck!
|
||||
CVector m_midPoint;
|
||||
CEscalator();
|
||||
void Update(void);
|
||||
void SwitchOff(void);
|
||||
|
@ -107,8 +107,8 @@ public:
|
|||
|
||||
class CEscalators
|
||||
{
|
||||
static CEscalator aEscalators[NUM_ESCALATORS];
|
||||
public:
|
||||
static CEscalator aEscalators[NUM_ESCALATORS];//TODO need recheck this!
|
||||
static int32 NumEscalators;
|
||||
static void Init(void);
|
||||
static void Update(void);
|
||||
|
|
Loading…
Reference in a new issue