Открыть боковую панель
Сапожник Максим Валентинович
re3
Коммиты
ee93e4bc
Коммит
ee93e4bc
создал
Авг 25, 2021
по автору
Sergeanur
Просмотр файлов
Audio: refactoring, type fixes, renaming cAudioManager fields
владелец
9ecca45b
Изменения
8
Развернуть все
Скрыть пробелы
Построчно
Рядом
src/audio/AudioCollision.cpp
Просмотр файла @
ee93e4bc
...
...
@@ -18,7 +18,7 @@ cAudioManager::ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface
CVector
v1
;
CVector
v2
;
if
(
!
m_bIsInitialised
||
m_nCollisionEntity
<
0
||
m_
nUser
Pause
||
if
(
!
m_bIsInitialised
||
m_nCollisionEntity
<
0
||
m_
bIs
Pause
d
||
(
velocity
<
0.0016
f
&&
collisionPower
<
0.01
f
))
return
;
...
...
src/audio/AudioLogic.cpp
Просмотр файла @
ee93e4bc
Это отличие свёрнуто
Нажмите, чтобы развернуть
src/audio/AudioManager.cpp
Просмотр файла @
ee93e4bc
...
...
@@ -24,9 +24,9 @@ cAudioManager::cAudioManager()
m_fSpeedOfSound
=
SPEED_OF_SOUND
/
TIME_SPENT
;
m_nTimeSpent
=
TIME_SPENT
;
m_nActiveSamples
=
NUM_CHANNELS_GENERIC
;
m_nActive
Sample
Queue
=
1
;
m_nActiveQueue
=
1
;
ClearRequestedQueue
();
m_nActive
Sample
Queue
=
0
;
m_nActiveQueue
=
0
;
ClearRequestedQueue
();
ClearActiveSamples
();
GenerateIntegerRandomNumberTable
();
...
...
@@ -35,11 +35,11 @@ cAudioManager::cAudioManager()
m_bDynamicAcousticModelingStatus
=
TRUE
;
#endif
for
(
int
i
=
0
;
i
<
NUM_AUDIOENTITIES
;
i
++
)
{
for
(
u
int
32
i
=
0
;
i
<
NUM_AUDIOENTITIES
;
i
++
)
{
m_asAudioEntities
[
i
].
m_bIsUsed
=
FALSE
;
m_a
n
AudioEntity
Indices
[
i
]
=
NUM_AUDIOENTITIES
;
m_aAudioEntity
OrderList
[
i
]
=
NUM_AUDIOENTITIES
;
}
m_nAudioEntities
Total
=
0
;
m_nAudioEntities
Count
=
0
;
m_FrameCounter
=
0
;
m_bReduceReleasingPriority
=
FALSE
;
m_bTimerJustReset
=
FALSE
;
...
...
@@ -64,7 +64,7 @@ cAudioManager::Initialise()
if
(
m_nActiveSamples
<=
1
)
{
Terminate
();
}
else
{
--
m_nActiveSamples
;
m_nActiveSamples
--
;
#else
{
m_nActiveSamples
=
NUM_CHANNELS_GENERIC
;
...
...
@@ -86,10 +86,10 @@ cAudioManager::Terminate()
for
(
uint32
i
=
0
;
i
<
NUM_AUDIOENTITIES
;
i
++
)
{
m_asAudioEntities
[
i
].
m_bIsUsed
=
FALSE
;
m_a
n
AudioEntity
Indices
[
i
]
=
ARRAY_SIZE
(
m_a
n
AudioEntity
Indices
);
m_aAudioEntity
OrderList
[
i
]
=
ARRAY_SIZE
(
m_aAudioEntity
OrderList
);
}
m_nAudioEntities
Total
=
0
;
m_nAudioEntities
Count
=
0
;
m_sAudioScriptObjectManager
.
m_nScriptObjectEntityTotal
=
0
;
PreTerminateGameSpecificShutdown
();
...
...
@@ -115,8 +115,8 @@ cAudioManager::Service()
m_bTimerJustReset
=
FALSE
;
}
if
(
m_bIsInitialised
)
{
m_
nPreviousUser
Pause
=
m_
nUser
Pause
;
m_
nUser
Pause
=
CTimer
::
GetIsUserPaused
();
m_
bWas
Pause
d
=
m_
bIs
Pause
d
;
m_
bIs
Pause
d
=
CTimer
::
GetIsUserPaused
();
#ifdef AUDIO_REFLECTIONS
UpdateReflections
();
#endif
...
...
@@ -138,12 +138,12 @@ cAudioManager::CreateEntity(eAudioType type, void *entity)
#ifdef FIX_BUGS
// since sound could still play after entity deletion let's make sure we don't override one that is in use
// find all the free entity IDs that are being used by queued samples
int32
stillUsedEntities
[
NUM_CHANNELS_GENERIC
*
NUM_SOUND
S_SAMPLES_BANK
S
];
int32
stillUsedEntities
[
NUM_CHANNELS_GENERIC
*
NUM_SOUND
_QUEUE
S
];
uint32
stillUsedEntitiesCount
=
0
;
for
(
uint8
i
=
0
;
i
<
NUM_SOUND
S_SAMPLES_BANK
S
;
i
++
)
for
(
uint8
j
=
0
;
j
<
m_
Sample
Request
QueuesStatus
[
i
];
j
++
)
{
tSound
&
sound
=
m_a
sSamples
[
i
][
m_abSampleQueueIndexTable
[
i
][
j
]];
for
(
uint8
i
=
0
;
i
<
NUM_SOUND
_QUEUE
S
;
i
++
)
for
(
uint8
j
=
0
;
j
<
m_
n
Request
edCount
[
i
];
j
++
)
{
tSound
&
sound
=
m_a
RequestedQueue
[
i
][
m_aRequestedOrderList
[
i
][
j
]];
if
(
sound
.
m_nEntityIndex
<
0
)
continue
;
if
(
!
m_asAudioEntities
[
sound
.
m_nEntityIndex
].
m_bIsUsed
)
{
bool
found
=
false
;
...
...
@@ -159,7 +159,7 @@ cAudioManager::CreateEntity(eAudioType type, void *entity)
}
#endif
for
(
uint32
i
=
0
;
i
<
ARRAY_SIZE
(
m_asAudioEntities
)
;
i
++
)
{
for
(
uint32
i
=
0
;
i
<
NUM_AUDIOENTITIES
;
i
++
)
{
if
(
!
m_asAudioEntities
[
i
].
m_bIsUsed
)
{
#ifdef FIX_BUGS
// skip if ID is still used by queued sample
...
...
@@ -184,7 +184,7 @@ cAudioManager::CreateEntity(eAudioType type, void *entity)
m_asAudioEntities
[
i
].
m_awAudioEvent
[
2
]
=
SOUND_NO_SOUND
;
m_asAudioEntities
[
i
].
m_awAudioEvent
[
3
]
=
SOUND_NO_SOUND
;
m_asAudioEntities
[
i
].
m_AudioEvents
=
0
;
m_a
n
AudioEntity
Indices
[
m_nAudioEntities
Total
++
]
=
i
;
m_aAudioEntity
OrderList
[
m_nAudioEntities
Count
++
]
=
i
;
return
i
;
}
}
...
...
@@ -196,11 +196,11 @@ cAudioManager::DestroyEntity(int32 id)
{
if
(
m_bIsInitialised
&&
id
>=
0
&&
id
<
NUM_AUDIOENTITIES
&&
m_asAudioEntities
[
id
].
m_bIsUsed
)
{
m_asAudioEntities
[
id
].
m_bIsUsed
=
FALSE
;
for
(
int32
i
=
0
;
i
<
m_nAudioEntities
Total
;
++
i
)
{
if
(
id
==
m_a
n
AudioEntity
Indices
[
i
])
{
for
(
u
int32
i
=
0
;
i
<
m_nAudioEntities
Count
;
i
++
)
{
if
(
id
==
m_aAudioEntity
OrderList
[
i
])
{
if
(
i
<
NUM_AUDIOENTITIES
-
1
)
memmove
(
&
m_a
n
AudioEntity
Indices
[
i
],
&
m_a
n
AudioEntity
Indices
[
i
+
1
],
NUM_AUDIOENTITY_EVENTS
*
(
m_nAudioEntities
Total
-
(
i
+
1
)));
m_a
n
AudioEntity
Indices
[
--
m_nAudioEntities
Total
]
=
NUM_AUDIOENTITIES
;
memmove
(
&
m_aAudioEntity
OrderList
[
i
],
&
m_aAudioEntity
OrderList
[
i
+
1
],
NUM_AUDIOENTITY_EVENTS
*
(
m_nAudioEntities
Count
-
(
i
+
1
)));
m_aAudioEntity
OrderList
[
--
m_nAudioEntities
Count
]
=
NUM_AUDIOENTITIES
;
return
;
}
}
...
...
@@ -257,13 +257,13 @@ cAudioManager::PlayOneShot(int32 index, uint16 sound, float vol)
if
(
entity
.
m_AudioEvents
<
ARRAY_SIZE
(
entity
.
m_awAudioEvent
))
{
entity
.
m_awAudioEvent
[
i
]
=
sound
;
entity
.
m_afVolume
[
i
]
=
vol
;
++
entity
.
m_AudioEvents
;
entity
.
m_AudioEvents
++
;
}
return
;
}
if
(
OneShotPriority
[
entity
.
m_awAudioEvent
[
i
]]
>
OneShotPriority
[
sound
])
break
;
++
i
;
i
++
;
}
if
(
i
<
NUM_AUDIOENTITY_EVENTS
-
1
)
{
memmove
(
&
entity
.
m_awAudioEvent
[
i
+
1
],
&
entity
.
m_awAudioEvent
[
i
],
(
NUM_AUDIOENTITY_EVENTS
-
1
-
i
)
*
NUM_AUDIOENTITY_EVENTS
/
2
);
...
...
@@ -272,7 +272,7 @@ cAudioManager::PlayOneShot(int32 index, uint16 sound, float vol)
entity
.
m_awAudioEvent
[
i
]
=
sound
;
entity
.
m_afVolume
[
i
]
=
vol
;
if
(
entity
.
m_AudioEvents
<
ARRAY_SIZE
(
entity
.
m_awAudioEvent
))
++
entity
.
m_AudioEvents
;
entity
.
m_AudioEvents
++
;
}
}
}
...
...
@@ -317,14 +317,14 @@ cAudioManager::ResetTimers(uint32 time)
m_bTimerJustReset
=
TRUE
;
m_nTimer
=
time
;
ClearRequestedQueue
();
if
(
m_nActive
Sample
Queue
)
{
m_nActive
Sample
Queue
=
0
;
if
(
m_nActiveQueue
)
{
m_nActiveQueue
=
0
;
ClearRequestedQueue
();
m_nActive
Sample
Queue
=
1
;
m_nActiveQueue
=
1
;
}
else
{
m_nActive
Sample
Queue
=
1
;
m_nActiveQueue
=
1
;
ClearRequestedQueue
();
m_nActive
Sample
Queue
=
0
;
m_nActiveQueue
=
0
;
}
ClearActiveSamples
();
ClearMissionAudio
();
...
...
@@ -344,7 +344,7 @@ cAudioManager::DestroyAllGameCreatedEntities()
cAudioScriptObject
*
entity
;
if
(
m_bIsInitialised
)
{
for
(
uint32
i
=
0
;
i
<
ARRAY_SIZE
(
m_asAudioEntities
)
;
i
++
)
{
for
(
uint32
i
=
0
;
i
<
NUM_AUDIOENTITIES
;
i
++
)
{
if
(
m_asAudioEntities
[
i
].
m_bIsUsed
)
{
switch
(
m_asAudioEntities
[
i
].
m_nType
)
{
case
AUDIOTYPE_PHYSICAL
:
...
...
@@ -422,13 +422,13 @@ cAudioManager::SetCurrent3DProvider(uint8 which)
#else
if
(
!
m_bIsInitialised
)
return
-
1
;
for
(
uint8
i
=
0
;
i
<
m_nActiveSamples
+
1
;
++
i
)
for
(
uint8
i
=
0
;
i
<
m_nActiveSamples
+
1
;
i
++
)
SampleManager
.
StopChannel
(
i
);
ClearRequestedQueue
();
if
(
m_nActive
Sample
Queue
==
0
)
m_nActive
Sample
Queue
=
1
;
if
(
m_nActiveQueue
==
0
)
m_nActiveQueue
=
1
;
else
m_nActive
Sample
Queue
=
0
;
m_nActiveQueue
=
0
;
ClearRequestedQueue
();
ClearActiveSamples
();
int8
current
=
SampleManager
.
SetCurrent3DProvider
(
which
);
...
...
@@ -436,7 +436,7 @@ cAudioManager::SetCurrent3DProvider(uint8 which)
#ifdef EXTERNAL_3D_SOUND
m_nActiveSamples
=
SampleManager
.
GetMaximumSupportedChannels
();
if
(
m_nActiveSamples
>
1
)
--
m_nActiveSamples
;
m_nActiveSamples
--
;
#endif
}
return
current
;
...
...
@@ -514,23 +514,23 @@ cAudioManager::ServiceSoundEffects()
if
(
CTimer
::
GetLogicalFramesPassed
()
!=
0
)
#endif
m_bReduceReleasingPriority
=
(
m_FrameCounter
++
%
5
)
==
0
;
if
(
m_
nUser
Pause
&&
!
m_
nPreviousUser
Pause
)
{
if
(
m_
bIs
Pause
d
&&
!
m_
bWas
Pause
d
)
{
for
(
int32
i
=
0
;
i
<
NUM_CHANNELS
;
i
++
)
SampleManager
.
StopChannel
(
i
);
ClearRequestedQueue
();
if
(
m_nActive
Sample
Queue
)
{
m_nActive
Sample
Queue
=
0
;
if
(
m_nActiveQueue
)
{
m_nActiveQueue
=
0
;
ClearRequestedQueue
();
m_nActive
Sample
Queue
=
1
;
m_nActiveQueue
=
1
;
}
else
{
m_nActive
Sample
Queue
=
1
;
m_nActiveQueue
=
1
;
ClearRequestedQueue
();
m_nActive
Sample
Queue
=
0
;
m_nActiveQueue
=
0
;
}
ClearActiveSamples
();
}
m_nActive
Sample
Queue
=
m_nActive
Sample
Queue
==
1
?
0
:
1
;
m_nActiveQueue
=
m_nActiveQueue
==
1
?
0
:
1
;
ProcessReverb
();
ProcessSpecial
();
ClearRequestedQueue
();
...
...
@@ -547,7 +547,7 @@ cAudioManager::ServiceSoundEffects()
#ifdef AUDIO_OAL
SampleManager
.
Service
();
#endif
for
(
int32
i
=
0
;
i
<
m_sAudioScriptObjectManager
.
m_nScriptObjectEntityTotal
;
++
i
)
{
for
(
int32
i
=
0
;
i
<
m_sAudioScriptObjectManager
.
m_nScriptObjectEntityTotal
;
i
++
)
{
cAudioScriptObject
*
object
=
(
cAudioScriptObject
*
)
m_asAudioEntities
[
m_sAudioScriptObjectManager
.
m_anScriptObjectEntityIndices
[
i
]].
m_pEntity
;
delete
object
;
m_asAudioEntities
[
m_sAudioScriptObjectManager
.
m_anScriptObjectEntityIndices
[
i
]].
m_pEntity
=
nil
;
...
...
@@ -636,9 +636,9 @@ cAudioManager::RandomDisplacement(uint32 seed)
void
cAudioManager
::
InterrogateAudioEntities
()
{
for
(
int32
i
=
0
;
i
<
m_nAudioEntities
Total
;
i
++
)
{
ProcessEntity
(
m_a
n
AudioEntity
Indices
[
i
]);
m_asAudioEntities
[
m_a
n
AudioEntity
Indices
[
i
]].
m_AudioEvents
=
0
;
for
(
u
int32
i
=
0
;
i
<
m_nAudioEntities
Count
;
i
++
)
{
ProcessEntity
(
m_aAudioEntity
OrderList
[
i
]);
m_asAudioEntities
[
m_aAudioEntity
OrderList
[
i
]].
m_AudioEvents
=
0
;
}
}
...
...
@@ -653,13 +653,13 @@ cAudioManager::AddSampleToRequestedQueue()
if
(
m_sQueueSample
.
m_nSampleIndex
<
TOTAL_AUDIO_SAMPLES
)
{
finalPriority
=
m_sQueueSample
.
m_nPriority
*
(
MAX_VOLUME
-
m_sQueueSample
.
m_nVolume
);
sampleIndex
=
m_
Sample
Request
QueuesStatus
[
m_nActive
Sample
Queue
];
sampleIndex
=
m_
n
Request
edCount
[
m_nActiveQueue
];
if
(
sampleIndex
>=
m_nActiveSamples
)
{
sampleIndex
=
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
m_nActiveSamples
-
1
];
if
(
m_a
sSamples
[
m_nActive
Sample
Queue
][
sampleIndex
].
m_nFinalPriority
<=
finalPriority
)
sampleIndex
=
m_a
RequestedOrderList
[
m_nActiveQueue
][
m_nActiveSamples
-
1
];
if
(
m_a
RequestedQueue
[
m_nActiveQueue
][
sampleIndex
].
m_nFinalPriority
<=
finalPriority
)
return
;
}
else
{
++
m_SampleRequestQueuesStatus
[
m_nActive
Sample
Queue
];
m_nRequestedCount
[
m_nActiveQueue
]
++
;
}
#if GTA_VERSION < GTA3_PC_10
if
(
m_sQueueSample
.
m_bStatic
)
{
...
...
@@ -688,7 +688,7 @@ cAudioManager::AddSampleToRequestedQueue()
m_sQueueSample
.
m_bReverb
=
FALSE
;
#endif
m_a
sSamples
[
m_nActive
Sample
Queue
][
sampleIndex
]
=
m_sQueueSample
;
m_a
RequestedQueue
[
m_nActiveQueue
][
sampleIndex
]
=
m_sQueueSample
;
AddDetailsToRequestedOrderList
(
sampleIndex
);
#ifdef AUDIO_REFLECTIONS
...
...
@@ -704,15 +704,15 @@ cAudioManager::AddDetailsToRequestedOrderList(uint8 sample)
uint32
i
=
0
;
if
(
sample
!=
0
)
{
for
(;
i
<
sample
;
i
++
)
{
if
(
m_a
sSamples
[
m_nActive
Sample
Queue
][
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
i
]].
m_nFinalPriority
>
m_a
sSamples
[
m_nActive
Sample
Queue
][
sample
].
m_nFinalPriority
)
if
(
m_a
RequestedQueue
[
m_nActiveQueue
][
m_a
RequestedOrderList
[
m_nActiveQueue
][
i
]].
m_nFinalPriority
>
m_a
RequestedQueue
[
m_nActiveQueue
][
sample
].
m_nFinalPriority
)
break
;
}
if
(
i
<
sample
)
{
memmove
(
&
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
i
+
1
],
&
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
i
],
m_nActiveSamples
-
i
-
1
);
memmove
(
&
m_a
RequestedOrderList
[
m_nActiveQueue
][
i
+
1
],
&
m_a
RequestedOrderList
[
m_nActiveQueue
][
i
],
m_nActiveSamples
-
i
-
1
);
}
}
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
i
]
=
sample
;
m_a
RequestedOrderList
[
m_nActiveQueue
][
i
]
=
sample
;
}
#ifdef AUDIO_REFLECTIONS
...
...
@@ -810,17 +810,17 @@ cAudioManager::AddReleasingSounds()
bool8
toProcess
[
44
];
#endif
int8
queue
=
m_nActive
Sample
Queue
==
0
?
1
:
0
;
u
int8
queue
=
m_nActiveQueue
==
0
?
1
:
0
;
for
(
int
32
i
=
0
;
i
<
m_
Sample
Request
QueuesStatus
[
queue
];
i
++
)
{
tSound
&
sample
=
m_a
sSamples
[
queue
][
m_abSampleQueueIndexTable
[
queue
][
i
]];
for
(
u
int
8
i
=
0
;
i
<
m_
n
Request
edCount
[
queue
];
i
++
)
{
tSound
&
sample
=
m_a
RequestedQueue
[
queue
][
m_aRequestedOrderList
[
queue
][
i
]];
if
(
sample
.
m_bIsPlayingFinished
)
continue
;
toProcess
[
i
]
=
FALSE
;
for
(
int
32
j
=
0
;
j
<
m_
Sample
Request
QueuesStatus
[
m_nActive
Sample
Queue
];
j
++
)
{
if
(
sample
.
m_nEntityIndex
==
m_a
sSamples
[
m_nActive
Sample
Queue
][
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
j
]].
m_nEntityIndex
&&
sample
.
m_nCounter
==
m_a
sSamples
[
m_nActive
Sample
Queue
][
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
j
]].
m_nCounter
)
{
for
(
u
int
8
j
=
0
;
j
<
m_
n
Request
edCount
[
m_nActiveQueue
];
j
++
)
{
if
(
sample
.
m_nEntityIndex
==
m_a
RequestedQueue
[
m_nActiveQueue
][
m_a
RequestedOrderList
[
m_nActiveQueue
][
j
]].
m_nEntityIndex
&&
sample
.
m_nCounter
==
m_a
RequestedQueue
[
m_nActiveQueue
][
m_a
RequestedOrderList
[
m_nActiveQueue
][
j
]].
m_nCounter
)
{
toProcess
[
i
]
=
TRUE
;
break
;
}
...
...
@@ -954,18 +954,18 @@ cAudioManager::ProcessActiveQueues()
#endif
#ifdef USE_TIME_SCALE_FOR_AUDIO
float
timeScale
=
m_
nUser
Pause
?
1.0
f
:
CTimer
::
GetTimeScale
();
float
timeScale
=
m_
bIs
Pause
d
?
1.0
f
:
CTimer
::
GetTimeScale
();
#endif
for
(
int
32
i
=
0
;
i
<
m_nActiveSamples
;
i
++
)
{
m_a
sSamples
[
m_nActive
Sample
Queue
][
i
].
m_bIsBeingPlayed
=
FALSE
;
for
(
u
int
8
i
=
0
;
i
<
m_nActiveSamples
;
i
++
)
{
m_a
RequestedQueue
[
m_nActiveQueue
][
i
].
m_bIsBeingPlayed
=
FALSE
;
m_asActiveSamples
[
i
].
m_bIsBeingPlayed
=
FALSE
;
}
for
(
int
32
i
=
0
;
i
<
m_
Sample
Request
QueuesStatus
[
m_nActive
Sample
Queue
];
i
++
)
{
tSound
&
sample
=
m_a
sSamples
[
m_nActive
Sample
Queue
][
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
i
]];
for
(
u
int
8
i
=
0
;
i
<
m_
n
Request
edCount
[
m_nActiveQueue
];
i
++
)
{
tSound
&
sample
=
m_a
RequestedQueue
[
m_nActiveQueue
][
m_a
RequestedOrderList
[
m_nActiveQueue
][
i
]];
if
(
sample
.
m_nSampleIndex
!=
NO_SAMPLE
)
{
for
(
int
32
j
=
0
;
j
<
m_nActiveSamples
;
j
++
)
{
for
(
u
int
8
j
=
0
;
j
<
m_nActiveSamples
;
j
++
)
{
if
(
sample
.
m_nEntityIndex
==
m_asActiveSamples
[
j
].
m_nEntityIndex
&&
sample
.
m_nCounter
==
m_asActiveSamples
[
j
].
m_nCounter
&&
sample
.
m_nSampleIndex
==
m_asActiveSamples
[
j
].
m_nSampleIndex
)
{
if
(
sample
.
m_nLoopCount
>
0
)
{
...
...
@@ -1052,15 +1052,15 @@ cAudioManager::ProcessActiveQueues()
}
}
}
for
(
int
32
i
=
0
;
i
<
m_nActiveSamples
;
i
++
)
{
for
(
u
int
8
i
=
0
;
i
<
m_nActiveSamples
;
i
++
)
{
if
(
m_asActiveSamples
[
i
].
m_nSampleIndex
!=
NO_SAMPLE
&&
!
m_asActiveSamples
[
i
].
m_bIsBeingPlayed
)
{
SampleManager
.
StopChannel
(
i
);
m_asActiveSamples
[
i
].
m_nSampleIndex
=
NO_SAMPLE
;
m_asActiveSamples
[
i
].
m_nEntityIndex
=
AEHANDLE_NONE
;
}
}
for
(
uint8
i
=
0
;
i
<
m_
Sample
Request
QueuesStatus
[
m_nActive
Sample
Queue
];
i
++
)
{
tSound
&
sample
=
m_a
sSamples
[
m_nActive
Sample
Queue
][
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
i
]];
for
(
uint8
i
=
0
;
i
<
m_
n
Request
edCount
[
m_nActiveQueue
];
i
++
)
{
tSound
&
sample
=
m_a
RequestedQueue
[
m_nActiveQueue
][
m_a
RequestedOrderList
[
m_nActiveQueue
][
i
]];
if
(
!
sample
.
m_bIsBeingPlayed
&&
!
sample
.
m_bIsPlayingFinished
&&
m_asAudioEntities
[
sample
.
m_nEntityIndex
].
m_bIsUsed
&&
sample
.
m_nSampleIndex
<
NO_SAMPLE
)
{
#ifdef AUDIO_REFLECTIONS
if
(
sample
.
m_nCounter
>
255
&&
sample
.
m_nLoopCount
>
0
&&
sample
.
m_nReflectionDelay
>
0
)
{
// check if reflection
...
...
@@ -1154,10 +1154,9 @@ cAudioManager::ProcessActiveQueues()
void
cAudioManager
::
ClearRequestedQueue
()
{
for
(
int32
i
=
0
;
i
<
m_nActiveSamples
;
i
++
)
{
m_abSampleQueueIndexTable
[
m_nActiveSampleQueue
][
i
]
=
m_nActiveSamples
;
}
m_SampleRequestQueuesStatus
[
m_nActiveSampleQueue
]
=
0
;
for
(
uint8
i
=
0
;
i
<
m_nActiveSamples
;
i
++
)
m_aRequestedOrderList
[
m_nActiveQueue
][
i
]
=
m_nActiveSamples
;
m_nRequestedCount
[
m_nActiveQueue
]
=
0
;
}
void
...
...
@@ -1212,17 +1211,16 @@ cAudioManager::LoadBankIfNecessary(uint8 bank)
void
cAudioManager
::
GenerateIntegerRandomNumberTable
()
{
for
(
int32
i
=
0
;
i
<
ARRAY_SIZE
(
m_anRandomTable
);
i
++
)
{
for
(
u
int32
i
=
0
;
i
<
ARRAY_SIZE
(
m_anRandomTable
);
i
++
)
m_anRandomTable
[
i
]
=
myrand
();
}
}
#ifdef EXTERNAL_3D_SOUND
void
cAudioManager
::
AdjustSamplesVolume
()
{
for
(
int
i
=
0
;
i
<
m_
Sample
Request
QueuesStatus
[
m_nActive
Sample
Queue
];
i
++
)
{
tSound
*
pSample
=
&
m_a
sSamples
[
m_nActive
Sample
Queue
][
m_a
bSampleQueueIndexTable
[
m_nActive
Sample
Queue
][
i
]];
for
(
u
int
8
i
=
0
;
i
<
m_
n
Request
edCount
[
m_nActiveQueue
];
i
++
)
{
tSound
*
pSample
=
&
m_a
RequestedQueue
[
m_nActiveQueue
][
m_a
RequestedOrderList
[
m_nActiveQueue
][
i
]];
if
(
!
pSample
->
m_bIs2D
)
pSample
->
m_nEmittingVolume
=
ComputeEmittingVolume
(
pSample
->
m_nEmittingVolume
,
pSample
->
m_MaxDistance
,
pSample
->
m_fDistance
);
...
...
src/audio/AudioManager.h
Просмотр файла @
ee93e4bc
...
...
@@ -58,7 +58,7 @@ public:
bool8
m_bIsBeingPlayed
;
// Set to TRUE when the sound was added or changed on current frame to avoid it being overwritten
bool8
m_bIsPlayingFinished
;
// Not sure about the name. Set to TRUE when sampman channel becomes free
#if GTA_VERSION < GTA3_PC_10
int32
unk
;
// Only on PS2, used by static non-looped sounds (AFAIK)
int32
unk
;
//
(inherited from GTA 2)
Only on PS2, used by static non-looped sounds (AFAIK)
// Looks like it's keeping a number of frames left to play with the purpose of setting m_bIsPlayingFinished=TRUE once value reaches 0
// Default value is -3 for whatever reason
#endif
...
...
@@ -219,16 +219,16 @@ public:
#endif
float
m_fSpeedOfSound
;
bool8
m_bTimerJustReset
;
int32
m_nTimer
;
u
int32
m_nTimer
;
tSound
m_sQueueSample
;
uint8
m_nActive
Sample
Queue
;
tSound
m_a
sSamples
[
NUM_SOUNDS_SAMPLES_BANK
S
][
NUM_CHANNELS_GENERIC
];
uint8
m_a
bSampleQueueIndexTable
[
NUM_SOUNDS_SAMPLES_BANK
S
][
NUM_CHANNELS_GENERIC
];
uint8
m_
Sample
Request
QueuesStatus
[
NUM_SOUNDS_SAMPLES_BANK
S
];
uint8
m_nActiveQueue
;
tSound
m_a
RequestedQueue
[
NUM_SOUND_QUEUE
S
][
NUM_CHANNELS_GENERIC
];
uint8
m_a
RequestedOrderList
[
NUM_SOUND_QUEUE
S
][
NUM_CHANNELS_GENERIC
];
uint8
m_
n
Request
edCount
[
NUM_SOUND_QUEUE
S
];
tSound
m_asActiveSamples
[
NUM_CHANNELS_GENERIC
];
tAudioEntity
m_asAudioEntities
[
NUM_AUDIOENTITIES
];
int32
m_a
n
AudioEntity
Indices
[
NUM_AUDIOENTITIES
];
int32
m_nAudioEntities
Total
;
u
int32
m_aAudioEntity
OrderList
[
NUM_AUDIOENTITIES
];
u
int32
m_nAudioEntities
Count
;
#ifdef AUDIO_REFLECTIONS
CVector
m_avecReflectionsPos
[
MAX_REFLECTIONS
];
float
m_afReflectionsDistances
[
MAX_REFLECTIONS
];
...
...
@@ -253,13 +253,13 @@ public:
uint8
m_nMissionAudioLoadingStatus
;
uint8
m_nMissionAudioPlayStatus
;
bool8
m_bIsMissionAudioPlaying
;
int32
m_nMissionAudioFramesToPlay
;
int32
m_nMissionAudioFramesToPlay
;
// possibly unsigned
bool8
m_bIsMissionAudioAllowedToPlay
;
int32
m_anRandomTable
[
5
];
uint8
m_nTimeSpent
;
bool8
m_
nUser
Pause
;
bool8
m_
nPreviousUser
Pause
;
bool8
m_
bIs
Pause
d
;
bool8
m_
bWas
Pause
d
;
uint32
m_FrameCounter
;
cAudioManager
();
...
...
src/audio/MusicManager.cpp
Просмотр файла @
ee93e4bc
...
...
@@ -363,14 +363,14 @@ cMusicManager::GetRadioInCar(void)
CVehicle
*
veh
=
FindPlayerVehicle
();
if
(
veh
!=
nil
){
if
(
UsesPoliceRadio
(
veh
))
{
if
(
m_nRadioInCar
==
NO_TRACK
||
(
CReplay
::
IsPlayingBack
()
&&
!
AudioManager
.
m_
nUser
Pause
))
if
(
m_nRadioInCar
==
NO_TRACK
||
(
CReplay
::
IsPlayingBack
()
&&
!
AudioManager
.
m_
bIs
Pause
d
))
return
POLICE_RADIO
;
return
m_nRadioInCar
;
}
else
return
veh
->
m_nRadioStation
;
}
}
if
(
m_nRadioInCar
==
NO_TRACK
||
(
CReplay
::
IsPlayingBack
()
&&
!
AudioManager
.
m_
nUser
Pause
))
if
(
m_nRadioInCar
==
NO_TRACK
||
(
CReplay
::
IsPlayingBack
()
&&
!
AudioManager
.
m_
bIs
Pause
d
))
return
RADIO_OFF
;
return
m_nRadioInCar
;
}
...
...
@@ -418,7 +418,7 @@ cMusicManager::ResetMusicAfterReload()
void
cMusicManager
::
ResetTimers
(
int32
time
)
cMusicManager
::
ResetTimers
(
u
int32
time
)
{
m_bResetTimers
=
TRUE
;
m_nResetTime
=
time
;
...
...
@@ -469,7 +469,7 @@ cMusicManager::ServiceFrontEndMode()
switch
(
m_nNextTrack
)
{
case
STREAMED_SOUND_MISSION_COMPLETED
:
if
(
!
AudioManager
.
m_
nUser
Pause
)
if
(
!
AudioManager
.
m_
bIs
Pause
d
)
ChangeMusicMode
(
MUSICMODE_GAME
);
break
;
case
STREAMED_SOUND_GAME_COMPLETED
:
...
...
@@ -543,7 +543,7 @@ cMusicManager::ServiceGameMode()
nFramesSinceCutsceneEnded
=
-
1
;
}
if
(
AudioManager
.
m_
nPreviousUser
Pause
)
if
(
AudioManager
.
m_
bWas
Pause
d
)
m_bPreviousPlayerInCar
=
FALSE
;
if
(
!
m_bPlayerInCar
)
{
if
(
m_bPreviousPlayerInCar
)
{
...
...
src/audio/MusicManager.h
Просмотр файла @
ee93e4bc
...
...
@@ -66,7 +66,7 @@ public:
void
ResetMusicAfterReload
();
void
ResetTimers
(
int32
);
void
ResetTimers
(
u
int32
);
void
Service
();
void
ServiceFrontEndMode
();
void
ServiceGameMode
();
...
...
src/audio/PolRadio.cpp
Просмотр файла @
ee93e4bc
...
...
@@ -149,7 +149,7 @@ cAudioManager::ServicePoliceRadio()
if
(
!
m_bIsInitialised
)
return
;
if
(
!
m_
nUser
Pause
)
{
if
(
!
m_
bIs
Pause
d
)
{
bool8
crimeReport
=
SetupCrimeReport
();
#ifdef FIX_BUGS // Crash at 0x5fe6ef
if
(
CReplay
::
IsPlayingBack
()
||
!
FindPlayerPed
()
||
!
FindPlayerPed
()
->
m_pWanted
)
...
...
@@ -188,14 +188,14 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel)
if
(
!
m_bIsInitialised
)
return
;
if
(
m_
nUser
Pause
)
{
if
(
m_
bIs
Pause
d
)
{
if
(
SampleManager
.
GetChannelUsedFlag
(
CHANNEL_POLICE_RADIO
))
SampleManager
.
StopChannel
(
CHANNEL_POLICE_RADIO
);
if
(
g_nMissionAudioSfx
!=
TOTAL_AUDIO_SAMPLES
&&
bMissionAudioPhysicalPlayingStatus
==
PLAY_STATUS_PLAYING
&&
SampleManager
.
IsStreamPlaying
(
1
))
{
SampleManager
.
PauseStream
(
TRUE
,
1
);
}
}
else
{
if
(
m_
nPreviousUser
Pause
&&
g_nMissionAudioSfx
!=
TOTAL_AUDIO_SAMPLES
&&
if
(
m_
bWas
Pause
d
&&
g_nMissionAudioSfx
!=
TOTAL_AUDIO_SAMPLES
&&
bMissionAudioPhysicalPlayingStatus
==
PLAY_STATUS_PLAYING
)
{
SampleManager
.
PauseStream
(
FALSE
,
1
);
}
...
...
src/core/config.h
Просмотр файла @
ee93e4bc
...
...
@@ -129,7 +129,7 @@ enum Config {
NUM_PED_COMMENTS_BANKS
=
2
,
NUM_PED_COMMENTS_SLOTS
=
20
,
NUM_SOUND
S_SAMPLES_BANK
S
=
2
,
NUM_SOUND
_QUEUE
S
=
2
,
NUM_AUDIOENTITIES
=
200
,
NUM_SCRIPT_MAX_ENTITIES
=
40
,
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать