Dayz 1.25
Dayz Code Explorer by KGB
Загрузка...
Поиск...
Не найдено
Класс DynamicMusicPlayer

Защищенные члены

bool IsPriotitizedCategorySelected ()
 
void DetermineTrackByCategory (EDynamicMusicPlayerCategory category)
 
bool IsPlaybackActive ()
 
void OnProfileOptionChanged (EDayZProfilesOptions option, int value)
 
void OnCategorySet (EDynamicMusicPlayerCategory category, bool forced)
 
void OnTrackEnded ()
 
void OnTrackStopped ()
 
void OnNextTrackSelected (DynamicMusicTrackData track, float waitTime)
 
void OnLocationMatched (EDynamicMusicPlayerCategory category, bool isPriorityLocation)
 
void OnFadeoutFinished (EDynamicMusicPlayerCategory category)
 
float GetWaitTimeForCategory (EDynamicMusicPlayerCategory category)
 

Защищенные данные

const float TICK_TIME_OF_DATE_UPDATE_SECONDS = 300.0
 
const float TICK_LOCATION_CACHE_UPDATE_SECONDS = 120.0
 
const float TICK_LOCATION_UPDATE_SECONDS = 120.0
 
const float TICK_PRIORITY_LOCATION_UPDATE_SECONDS = 30.0
 
const float TICK_FADEOUT_PROCESSOR_SECONDS = 0.2
 
const int TRACKS_BUFFER_HISTORY_SIZE = 2
 
const float LOCATION_DISTANCE_MAX = 500
 
float m_TickTimeOfDateElapsed
 
float m_TickLocationCacheUpdateElapsed
 
float m_TickLocationUpdateElapsed
 
float m_TickPriorityLocationUpdateElapsed
 
float m_TickFadeOutProcessingElapsed
 
EDynamicMusicPlayerCategory m_CategorySelected
 
DynamicMusicTrackData m_CurrentTrack
 
ref DynamicMusicPlayerRegistry m_DynamicMusicPlayerRegistry
 
ref array< ref DynamicMusicTrackDatam_TracksLocationMatchedPlayerInside
 static prio + filtered by the distance between player and center of zone
 
AbstractWave m_SoundPlaying
 

Закрытые члены

void DynamicMusicPlayer (DynamicMusicPlayerRegistry configuration)
 
void OnUpdate (float timeslice)
 
void SetCategory (EDynamicMusicPlayerCategory category, bool forced)
 
void RegisterDynamicLocation (notnull Entity caller, int locationType, float locationSize)
 
void UnregisterDynamicLocation (notnull Entity caller)
 
void PlayTrack (DynamicMusicTrackData track)
 
void StopTrack ()
 
void ResetWaitingQueue ()
 
void FadeoutTrack (float fadeoutSeconds)
 
void ProcessFadeOut ()
 
bool PlayerInsideOfLocationFilter (ref array< ref DynamicMusicTrackData > locations)
 
bool PlayerInsideOfLocationFilter (ref map< int, ref DynamicMusicLocationDynamicData > locations)
 
bool SetSelectedTrackFromCategory (EDynamicMusicPlayerCategory category, notnull ref array< ref DynamicMusicTrackData > tracklist, int historyLookupType=DynamicMusicPlayerTrackHistoryLookupType.ANY)
 
int SelectRandomTrackIndexFromCategoryPriorityFlagFirst (EDynamicMusicPlayerCategory category, notnull array< ref DynamicMusicTrackData > tracks)
 
int SelectRandomTrackIndexFromCategory (EDynamicMusicPlayerCategory category, int lookupType, notnull array< ref DynamicMusicTrackData > tracks)
 
void SetTimeOfDate ()
 
float GetMinWaitTimePerCategory (EDynamicMusicPlayerCategory category)
 
float GetMaxWaitTimePerCategory (EDynamicMusicPlayerCategory category)
 
float GetPreviousTrackFadeoutSeconds (EDynamicMusicPlayerCategory category)
 
void RefreshTracksCache ()
 

Закрытые данные

ref array< ref DynamicMusicTrackDatam_TracksLocationStaticCached
 map of dynamically registered locations during runtime
 
ref array< ref DynamicMusicTrackDatam_TracksLocationStaticPrioritizedCached
 static + filtered by the distance between player and center of zone
 
bool m_WaitingForPlayback
 
ref map< EDynamicMusicPlayerCategory, ref SimpleCircularBuffer< int > > m_LastPlayedTrackBufferPerCategory
 gets the playback mode as set in sounds menu; 0 - all; 1 - menu only
 
vector m_PlayerPosition
 
float m_FadeoutTimeElapsed
 
float m_FadeoutTimeRequested
 
bool m_FadeoutInProgress
 
bool m_Created
 

Подробное описание

Конструктор(ы)

◆ DynamicMusicPlayer()

void DynamicMusicPlayer ( DynamicMusicPlayerRegistry configuration)
inlineprivate

fadeout settings

137 {
139 m_RequestedPlaybackMode = g_Game.GetProfileOptionInt(EDayZProfilesOptions.AMBIENT_MUSIC_MODE);
140
143
145
148
152
156
158
160
164
165 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(RefreshTracksCache, 5000);
166
168
169 m_Created = true;
170 }
DayZGame g_Game
Definition DayZGame.c:3746
EDayZProfilesOptions
Definition EDayZProfilesOptions.c:2
EDynamicMusicPlayerCategory
Definition EDynamicMusicPlayerCategory.c:2
Definition DayZGame.c:398
static ref ScriptInvoker m_OnIntOptionChanged
Definition DayZGame.c:403
const int TRACKS_BUFFER_HISTORY_SIZE
Definition DynamicMusicPlayer.c:101
float m_FadeoutTimeRequested
Definition DynamicMusicPlayer.c:131
bool m_Created
Definition DynamicMusicPlayer.c:134
EDynamicMusicPlayerCategory m_CategorySelected
Definition DynamicMusicPlayer.c:111
void SetTimeOfDate()
Definition DynamicMusicPlayer.c:659
ref DynamicMusicPlayerRegistry m_DynamicMusicPlayerRegistry
Definition DynamicMusicPlayer.c:113
ref map< EDynamicMusicPlayerCategory, ref SimpleCircularBuffer< int > > m_LastPlayedTrackBufferPerCategory
gets the playback mode as set in sounds menu; 0 - all; 1 - menu only
Definition DynamicMusicPlayer.c:126
void OnProfileOptionChanged(EDayZProfilesOptions option, int value)
Definition DynamicMusicPlayer.c:355
float m_FadeoutTimeElapsed
Definition DynamicMusicPlayer.c:130
void RefreshTracksCache()
Definition DynamicMusicPlayer.c:723
ref array< ref DynamicMusicTrackData > m_TracksLocationStaticPrioritizedCached
static + filtered by the distance between player and center of zone
Definition DynamicMusicPlayer.c:118
ref array< ref DynamicMusicTrackData > m_TracksLocationMatchedPlayerInside
static prio + filtered by the distance between player and center of zone
Definition DynamicMusicPlayer.c:120
ref array< ref DynamicMusicTrackData > m_TracksLocationStaticCached
map of dynamically registered locations during runtime
Definition DynamicMusicPlayer.c:117
Definition EntityAI.c:95
const int CALL_CATEGORY_SYSTEM
Definition tools.c:8

Перекрестные ссылки CALL_CATEGORY_SYSTEM, g_Game, m_CategorySelected, m_Created, m_DynamicMusicPlayerRegistry, m_FadeoutTimeElapsed, m_FadeoutTimeRequested, m_LastPlayedTrackBufferPerCategory, DayZProfilesOptions::m_OnIntOptionChanged, m_TracksLocationMatchedPlayerInside, m_TracksLocationStaticCached, m_TracksLocationStaticPrioritizedCached, OnProfileOptionChanged(), RefreshTracksCache(), SetTimeOfDate() и TRACKS_BUFFER_HISTORY_SIZE.

Методы

◆ DetermineTrackByCategory()

void DetermineTrackByCategory ( EDynamicMusicPlayerCategory category)
inlineprotected
303 {
305 return;
306
307 if (IsPlaybackActive())
308 return;
309
310 switch (category)
311 {
314 break;
315
316 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(DetermineTrackByCategory, 5000, false, category);
317 break;
318
321 break;
322
323 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(DetermineTrackByCategory, 5000, false, category);
324 break;
325 case EDynamicMusicPlayerCategory.LOCATION_STATIC:
327 break;
328
329 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(DetermineTrackByCategory, 5000, false, category);
330 break;
331 case EDynamicMusicPlayerCategory.LOCATION_STATIC_PRIORITY:
333 break;
334
335 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(DetermineTrackByCategory, 5000, false, category);
336 break;
337 case EDynamicMusicPlayerCategory.LOCATION_DYNAMIC:
339 break;
340
341 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(DetermineTrackByCategory, 5000, false, category);
342
343 break;
344 }
345 }
bool SetSelectedTrackFromCategory(EDynamicMusicPlayerCategory category, notnull ref array< ref DynamicMusicTrackData > tracklist, int historyLookupType=DynamicMusicPlayerTrackHistoryLookupType.ANY)
Definition DynamicMusicPlayer.c:576
void DetermineTrackByCategory(EDynamicMusicPlayerCategory category)
Definition DynamicMusicPlayer.c:302
bool IsPlaybackActive()
Definition DynamicMusicPlayer.c:347

Перекрестные ссылки CALL_CATEGORY_SYSTEM, DetermineTrackByCategory(), g_Game, IsPlaybackActive(), m_CategorySelected, m_DynamicMusicPlayerRegistry, m_TracksLocationMatchedPlayerInside и SetSelectedTrackFromCategory().

Используется в DetermineTrackByCategory(), OnCategorySet() и OnUpdate().

◆ FadeoutTrack()

void FadeoutTrack ( float fadeoutSeconds)
inlineprivate
507 {
509 return;
510
512 {
513 #ifdef DIAG_DEVELOPER
514 DMPDebugPrint(string.Format("Stopping currently played track %1", m_CurrentTrack.m_SoundSet));
515 DMPDebugPrint(string.Format("-- Setting fadeout to %1", fadeoutSeconds));
516 #endif
517 m_FadeoutInProgress = true;
519 }
520 }
AbstractWave m_SoundPlaying
Definition DynamicMusicPlayer.c:122
bool m_FadeoutInProgress
Definition DynamicMusicPlayer.c:132
DynamicMusicTrackData m_CurrentTrack
Definition DynamicMusicPlayer.c:112
string m_SoundSet
Definition DynamicMusicPlayer.c:67

Перекрестные ссылки m_CurrentTrack, m_FadeoutInProgress, m_FadeoutTimeRequested, m_SoundPlaying и DynamicMusicTrackData::m_SoundSet.

Используется в OnLocationMatched().

◆ GetMaxWaitTimePerCategory()

float GetMaxWaitTimePerCategory ( EDynamicMusicPlayerCategory category)
inlineprivate
705 {
706 float waitTime = m_DynamicMusicPlayerRegistry.m_SettingsByCategory[category].m_MaxWaitTimeSeconds;
707 #ifdef DIAG_DEVELOPER
708 if (FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.DYNAMIC_MUSIC_PLAYER))
709 {
710 float timeAccel = FeatureTimeAccel.GetFeatureTimeAccelValue();
711 if (timeAccel > 0)
712 return waitTime / FeatureTimeAccel.GetFeatureTimeAccelValue();
713 }
714 #endif
715 return waitTime;
716 }

Перекрестные ссылки m_DynamicMusicPlayerRegistry.

Используется в GetWaitTimeForCategory().

◆ GetMinWaitTimePerCategory()

float GetMinWaitTimePerCategory ( EDynamicMusicPlayerCategory category)
inlineprivate
691 {
692 float waitTime = m_DynamicMusicPlayerRegistry.m_SettingsByCategory[category].m_MinWaitTimeSeconds;
693 #ifdef DIAG_DEVELOPER
694 if (FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.DYNAMIC_MUSIC_PLAYER))
695 {
696 float timeAccel = FeatureTimeAccel.GetFeatureTimeAccelValue();
697 if (timeAccel > 0)
698 return waitTime / FeatureTimeAccel.GetFeatureTimeAccelValue();
699 }
700 #endif
701 return waitTime;
702 }

Перекрестные ссылки m_DynamicMusicPlayerRegistry.

Используется в GetWaitTimeForCategory().

◆ GetPreviousTrackFadeoutSeconds()

float GetPreviousTrackFadeoutSeconds ( EDynamicMusicPlayerCategory category)
inlineprivate
719 {
720 return m_DynamicMusicPlayerRegistry.m_SettingsByCategory[category].m_PreviousTrackFadeoutSeconds;
721 }

Перекрестные ссылки m_DynamicMusicPlayerRegistry.

Используется в OnLocationMatched().

◆ GetWaitTimeForCategory()

float GetWaitTimeForCategory ( EDynamicMusicPlayerCategory category)
inlineprotected
686 {
688 }
float GetMinWaitTimePerCategory(EDynamicMusicPlayerCategory category)
Definition DynamicMusicPlayer.c:690
float GetMaxWaitTimePerCategory(EDynamicMusicPlayerCategory category)
Definition DynamicMusicPlayer.c:704
Definition EnMath.c:7
static float RandomFloatInclusive(float min, float max)
Returns a random float number between and min [inclusive] and max [inclusive].
Definition EnMath.c:106

Перекрестные ссылки GetMaxWaitTimePerCategory(), GetMinWaitTimePerCategory() и Math::RandomFloatInclusive().

Используется в SetSelectedTrackFromCategory().

◆ IsPlaybackActive()

bool IsPlaybackActive ( )
inlineprotected
348 {
350 }
bool m_WaitingForPlayback
Definition DynamicMusicPlayer.c:123

Перекрестные ссылки m_SoundPlaying и m_WaitingForPlayback.

Используется в DetermineTrackByCategory() и OnUpdate().

◆ IsPriotitizedCategorySelected()

bool IsPriotitizedCategorySelected ( )
inlineprotected
298 {
299 return m_CategorySelected == EDynamicMusicPlayerCategory.LOCATION_STATIC_PRIORITY || m_CategorySelected == EDynamicMusicPlayerCategory.LOCATION_DYNAMIC;
300 }

Перекрестные ссылки m_CategorySelected.

Используется в OnFadeoutFinished(), OnLocationMatched() и OnUpdate().

◆ OnCategorySet()

void OnCategorySet ( EDynamicMusicPlayerCategory category,
bool forced )
inlineprotected
370 {
371 #ifdef DIAG_DEVELOPER
372 DMPDebugPrint(string.Format(
373 "OnCategorySet() - category: %1, forced: %2",
375 forced),
376 );
377 #endif
378
380 }
Definition EnConvert.c:590
static string EnumToString(typename e, int enumValue)
Return string name of enum value.
Definition EnConvert.c:601

Перекрестные ссылки DetermineTrackByCategory() и EnumTools::EnumToString().

Используется в SetCategory().

◆ OnFadeoutFinished()

void OnFadeoutFinished ( EDynamicMusicPlayerCategory category)
inlineprotected
451 {
452 if (m_SoundPlaying)
453 m_SoundPlaying.GetEvents().Event_OnSoundWaveEnded.Remove(OnTrackEnded);
454
455 StopTrack();
457 }
AbstractWaveEvents GetEvents()
Definition Sound.c:164
bool IsPriotitizedCategorySelected()
Definition DynamicMusicPlayer.c:297
void StopTrack()
Definition DynamicMusicPlayer.c:490
void SetCategory(EDynamicMusicPlayerCategory category, bool forced)
Definition DynamicMusicPlayer.c:268
void OnTrackEnded()
Definition DynamicMusicPlayer.c:382

Перекрестные ссылки AbstractWave::GetEvents(), IsPriotitizedCategorySelected(), m_SoundPlaying, OnTrackEnded(), SetCategory() и StopTrack().

Используется в OnUpdate().

◆ OnLocationMatched()

void OnLocationMatched ( EDynamicMusicPlayerCategory category,
bool isPriorityLocation )
inlineprotected

play prio location track (no fadeout)

play location track (no fadeout)

428 {
429 #ifdef DIAG_DEVELOPER
430 string messagePriority;
432 messagePriority = "(with priority)";
433 DMPDebugPrint(string.Format("Location matched %1", messagePriority));
434 #endif
435
437 {
439 {
442 }
443 else
444 SetCategory(category, true);
445 }
446 else
447 SetCategory(category, false);
448 }
float GetPreviousTrackFadeoutSeconds(EDynamicMusicPlayerCategory category)
Definition DynamicMusicPlayer.c:718
void FadeoutTrack(float fadeoutSeconds)
Definition DynamicMusicPlayer.c:506

Перекрестные ссылки FadeoutTrack(), GetPreviousTrackFadeoutSeconds(), IsPriotitizedCategorySelected(), m_CategorySelected и SetCategory().

Используется в OnUpdate().

◆ OnNextTrackSelected()

void OnNextTrackSelected ( DynamicMusicTrackData track,
float waitTime )
inlineprotected
408 {
411
412 if (m_Created)
413 m_Created = false;
414
415 #ifdef DIAG_DEVELOPER
416 DMPDebugPrint(string.Format(
417 "WaitTime set to %1s, deferring playback of \"%2\"",
418 (int)waitTime,
419 track.m_SoundSet),
420 );
422 #endif
423
424 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(PlayTrack, (int)waitTime * 1000, false, track);
425 }
void PlayTrack(DynamicMusicTrackData track)
Definition DynamicMusicPlayer.c:460

Перекрестные ссылки CALL_CATEGORY_SYSTEM, g_Game, m_Created, m_CurrentTrack, m_WaitingForPlayback и PlayTrack().

Используется в SetSelectedTrackFromCategory().

◆ OnProfileOptionChanged()

void OnProfileOptionChanged ( EDayZProfilesOptions option,
int value )
inlineprotected

Events

356 {
357 if (option == EDayZProfilesOptions.AMBIENT_MUSIC_MODE)
358 {
360
362 {
363 StopTrack();
365 }
366 }
367 }
void ResetWaitingQueue()
Definition DynamicMusicPlayer.c:496

Перекрестные ссылки m_CategorySelected, ResetWaitingQueue() и StopTrack().

Используется в DynamicMusicPlayer().

◆ OnTrackEnded()

void OnTrackEnded ( )
inlineprotected
383 {
384 #ifdef DIAG_DEVELOPER
385 if (m_CurrentTrack)
386 DMPDebugPrint(string.Format("Track END - %1", m_CurrentTrack.m_SoundSet));
387 #endif
388
391 m_WaitingForPlayback = false;
392 }

Перекрестные ссылки m_CurrentTrack, m_SoundPlaying, DynamicMusicTrackData::m_SoundSet и m_WaitingForPlayback.

Используется в OnFadeoutFinished() и PlayTrack().

◆ OnTrackStopped()

void OnTrackStopped ( )
inlineprotected

stopped only by fadeouts

395 {
397 #ifdef DIAG_DEVELOPER
398 if (m_CurrentTrack)
399 DMPDebugPrint(string.Format("Track STOP - %1", m_CurrentTrack.m_SoundSet));
400 #endif
401
404 m_WaitingForPlayback = false;
405 }

Перекрестные ссылки m_CurrentTrack, m_SoundPlaying, DynamicMusicTrackData::m_SoundSet и m_WaitingForPlayback.

Используется в PlayTrack().

◆ OnUpdate()

void OnUpdate ( float timeslice)
inlineprivate

handle fadeouts

caching of locations based on distance from player (<= LOCATION_DISTANCE_MAX)

no playback at all OR playback of non-prioritized category

works as default category selector

menu only

173 {
175 return;
176
182
185 {
189 {
192 m_FadeoutInProgress = false;
194 }
195 else
197 }
198 else
199 {
201 {
204 {
207 }
208
210 {
211 if (g_Game.GetPlayer())
212 {
213 m_PlayerPosition = g_Game.GetPlayer().GetPosition();
214 m_PlayerPosition[1] = 0.0;
215 }
216
218
221 {
223 OnLocationMatched(EDynamicMusicPlayerCategory.LOCATION_DYNAMIC, true);
225 OnLocationMatched(EDynamicMusicPlayerCategory.LOCATION_STATIC_PRIORITY, true);
226 }
227 }
228
230 {
232
233 if (!IsPlaybackActive())
234 {
236 OnLocationMatched(EDynamicMusicPlayerCategory.LOCATION_STATIC, false);
237 }
238 }
239
241 {
244
248 }
249 }
250 else
251 {
252 if (!IsPlaybackActive())
254 }
255
256 }
257
258 #ifdef DIAG_DEVELOPER
259 if (DiagMenu.GetBool(DiagMenuIDs.SOUNDS_DYNAMIC_MUSIC_PLAYER_STATS))
260 {
261 DisplayDebugStats(true);
263 }
264 #endif
265 }
DiagMenuIDs
Definition EDiagMenuIDs.c:2
Definition EnDebug.c:233
const float TICK_PRIORITY_LOCATION_UPDATE_SECONDS
Definition DynamicMusicPlayer.c:96
float m_TickLocationCacheUpdateElapsed
Definition DynamicMusicPlayer.c:105
const float TICK_FADEOUT_PROCESSOR_SECONDS
Definition DynamicMusicPlayer.c:99
float m_TickTimeOfDateElapsed
Definition DynamicMusicPlayer.c:104
float m_TickFadeOutProcessingElapsed
Definition DynamicMusicPlayer.c:108
const float TICK_TIME_OF_DATE_UPDATE_SECONDS
Definition DynamicMusicPlayer.c:93
void OnLocationMatched(EDynamicMusicPlayerCategory category, bool isPriorityLocation)
Definition DynamicMusicPlayer.c:427
const float TICK_LOCATION_CACHE_UPDATE_SECONDS
Definition DynamicMusicPlayer.c:94
const float TICK_LOCATION_UPDATE_SECONDS
Definition DynamicMusicPlayer.c:95
void ProcessFadeOut()
Definition DynamicMusicPlayer.c:522
bool PlayerInsideOfLocationFilter(ref array< ref DynamicMusicTrackData > locations)
Definition DynamicMusicPlayer.c:531
float m_TickPriorityLocationUpdateElapsed
Definition DynamicMusicPlayer.c:107
void OnFadeoutFinished(EDynamicMusicPlayerCategory category)
Definition DynamicMusicPlayer.c:450
float m_TickLocationUpdateElapsed
Definition DynamicMusicPlayer.c:106
vector m_PlayerPosition
Definition DynamicMusicPlayer.c:128
static proto bool GetBool(int id, bool reverse=false)
Get value as bool from the given script id.

Перекрестные ссылки DetermineTrackByCategory(), g_Game, DiagMenu::GetBool(), IsPlaybackActive(), IsPriotitizedCategorySelected(), m_CategorySelected, m_DynamicMusicPlayerRegistry, m_FadeoutInProgress, m_FadeoutTimeElapsed, m_FadeoutTimeRequested, m_PlayerPosition, m_TickFadeOutProcessingElapsed, m_TickLocationCacheUpdateElapsed, m_TickLocationUpdateElapsed, m_TickPriorityLocationUpdateElapsed, m_TickTimeOfDateElapsed, m_TracksLocationStaticCached, m_TracksLocationStaticPrioritizedCached, OnFadeoutFinished(), OnLocationMatched(), PlayerInsideOfLocationFilter(), ProcessFadeOut(), RefreshTracksCache(), SetCategory(), SetTimeOfDate(), TICK_FADEOUT_PROCESSOR_SECONDS, TICK_LOCATION_CACHE_UPDATE_SECONDS, TICK_LOCATION_UPDATE_SECONDS, TICK_PRIORITY_LOCATION_UPDATE_SECONDS и TICK_TIME_OF_DATE_UPDATE_SECONDS.

◆ PlayerInsideOfLocationFilter() [1/2]

bool PlayerInsideOfLocationFilter ( ref array< ref DynamicMusicTrackData > locations)
inlineprivate
532 {
534
535 if (locations.Count() > 0)
536 {
538 {
539 foreach (int locationId, array<vector> bounds : track.locationBoundaries)
540 {
542 {
545
546 #ifdef DIAG_DEVELOPER
547 DMPDebugPrint(string.Format("Player inside location <%1, %2>", bounds[0], bounds[1]));
548 #endif
549 }
550 }
551 }
552 }
553
554 return m_TracksLocationMatchedPlayerInside.Count() > 0;
555 }
Definition DynamicMusicPlayer.c:63
const int INDEX_NOT_FOUND
Definition gameplay.c:13
static proto bool IsPointInRectangle(vector mi, vector ma, vector p)
Returns if point is inside rectangle.

Перекрестные ссылки INDEX_NOT_FOUND, Math::IsPointInRectangle(), m_PlayerPosition и m_TracksLocationMatchedPlayerInside.

Используется в OnUpdate().

◆ PlayerInsideOfLocationFilter() [2/2]

bool PlayerInsideOfLocationFilter ( ref map< int, ref DynamicMusicLocationDynamicData > locations)
inlineprivate
558 {
559 if (locations.Count() > 0)
560 {
562 {
564 {
565 #ifdef DIAG_DEVELOPER
566 DMPDebugPrint(string.Format("Player inside location <%1, %2>", location.m_Min, location.m_Max));
567 #endif
568 return true;
569 }
570 }
571 }
572
573 return false;
574 }

Перекрестные ссылки Math::IsPointInRectangle() и m_PlayerPosition.

◆ PlayTrack()

void PlayTrack ( DynamicMusicTrackData track)
inlineprivate

register callbacks

invalid sound set is used

461 {
462 SoundParams soundParams = new SoundParams(track.m_SoundSet);
463 if (soundParams.IsValid())
464 {
466 SoundObject soundObject = soundBuilder.BuildSoundObject();
467 soundObject.SetKind(WaveKind.WAVEMUSIC);
468
469 m_SoundPlaying = GetGame().GetSoundScene().Play2D(soundObject, soundBuilder);
470 if (m_SoundPlaying)
471 {
472 m_SoundPlaying.Loop(false);
474
476 m_SoundPlaying.GetEvents().Event_OnSoundWaveEnded.Insert(OnTrackEnded);
477 m_SoundPlaying.GetEvents().Event_OnSoundWaveStopped.Insert(OnTrackStopped);
478
479 m_WaitingForPlayback = false;
480 }
481 }
482 else
483 {
484 m_WaitingForPlayback = false;
486 }
487
488 }
WaveKind
Definition Sound.c:2
class SoundObjectBuilder SoundObject(SoundParams soundParams)
void SoundObjectBuilder(SoundParams soundParams)
proto void Play()
proto void Loop(bool setLoop)
void OnTrackStopped()
Definition DynamicMusicPlayer.c:394
Definition Sound.c:46
Definition Sound.c:101
proto native CGame GetGame()

Перекрестные ссылки AbstractWave::GetEvents(), GetGame(), AbstractWave::Loop(), m_CurrentTrack, m_SoundPlaying, m_WaitingForPlayback, OnTrackEnded(), OnTrackStopped(), AbstractWave::Play(), SoundObject() и SoundObjectBuilder().

Используется в OnNextTrackSelected() и ResetWaitingQueue().

◆ ProcessFadeOut()

void ProcessFadeOut ( )
inlineprivate
523 {
524 if (m_SoundPlaying)
525 {
528 }
529 }
proto void SetFadeOutFactor(float volume)

Перекрестные ссылки m_FadeoutTimeElapsed, m_FadeoutTimeRequested, m_SoundPlaying и AbstractWave::SetFadeOutFactor().

Используется в OnUpdate().

◆ RefreshTracksCache()

void RefreshTracksCache ( )
inlineprivate
724 {
726 {
728 foreach (DynamicMusicTrackData track : m_DynamicMusicPlayerRegistry.m_TracksLocationStatic)
729 {
730 foreach (array<vector> bounds : track.locationBoundaries)
731 {
733 continue;
734 }
735
737 }
738
740 foreach (DynamicMusicTrackData trackPrio : m_DynamicMusicPlayerRegistry.m_TracksLocationStaticPrioritized)
741 {
742 foreach (array<vector> boundsPrio : trackPrio.locationBoundaries)
743 {
745 continue;
746 }
747
749 }
750 }
751 }
const float LOCATION_DISTANCE_MAX
Definition DynamicMusicPlayer.c:102
Definition EnConvert.c:106
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
static vector CenterOfRectangle(vector min, vector max)
Definition EnMath.c:703

Перекрестные ссылки Math::CenterOfRectangle(), vector::Distance(), LOCATION_DISTANCE_MAX, m_DynamicMusicPlayerRegistry, m_PlayerPosition, m_TracksLocationStaticCached и m_TracksLocationStaticPrioritizedCached.

Используется в DynamicMusicPlayer() и OnUpdate().

◆ RegisterDynamicLocation()

void RegisterDynamicLocation ( notnull Entity caller,
int locationType,
float locationSize )
inlineprivate
279 {
280 int id = caller.GetID();
281 if (!m_LocationsDynamic.Contains(id))
282 {
283 array<vector> minMax = DynamicMusicLocationDynamicData.GetRectangularCoordsFromSize(caller.GetPosition(), locationSize);
285 location.m_Type = locationType;
286 location.m_Min = minMax[0];
287 location.m_Max = minMax[1];
288 m_LocationsDynamic.Insert(id, location);
289 }
290 }

◆ ResetWaitingQueue()

void ResetWaitingQueue ( )
inlineprivate
497 {
499 {
500 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).Remove(PlayTrack);
501 m_WaitingForPlayback = false;
503 }
504 }

Перекрестные ссылки CALL_CATEGORY_SYSTEM, g_Game, m_CurrentTrack, m_WaitingForPlayback и PlayTrack().

Используется в OnProfileOptionChanged().

◆ SelectRandomTrackIndexFromCategory()

int SelectRandomTrackIndexFromCategory ( EDynamicMusicPlayerCategory category,
int lookupType,
notnull array< ref DynamicMusicTrackData > tracks )
inlineprivate
633 {
634 int count = tracks.Count();
635 if (count > 0)
636 {
637 int index = Math.RandomInt(0, count);
638
639 switch (lookupType)
640 {
642 return index;
643
645 // fallback - num of track is smaller than actual history size;
647 return index;
648
650 return index;
651
652 return INDEX_NOT_FOUND;
653 }
654 }
655
656 return INDEX_NOT_FOUND;
657 }
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].

Перекрестные ссылки INDEX_NOT_FOUND, m_LastPlayedTrackBufferPerCategory, Math::RandomInt() и TRACKS_BUFFER_HISTORY_SIZE.

Используется в SetSelectedTrackFromCategory().

◆ SelectRandomTrackIndexFromCategoryPriorityFlagFirst()

int SelectRandomTrackIndexFromCategoryPriorityFlagFirst ( EDynamicMusicPlayerCategory category,
notnull array< ref DynamicMusicTrackData > tracks )
inlineprivate

main menu priority tracks first

fallback in case there is no priority track

607 {
610 {
612
613 foreach (int i, DynamicMusicTrackData track : tracks)
614 {
615
616 if (!track.m_HasPriority)
617 continue;
618
619 priorityFlagIndices.Insert(i);
620 }
621
622 if (priorityFlagIndices.Count() > 0)
623 return priorityFlagIndices[priorityFlagIndices.GetRandomIndex()];
624
626 return tracks.GetRandomIndex();
627 }
628
629 return INDEX_NOT_FOUND;
630 }

Перекрестные ссылки INDEX_NOT_FOUND.

Используется в SetSelectedTrackFromCategory().

◆ SetCategory()

void SetCategory ( EDynamicMusicPlayerCategory category,
bool forced )
inlineprivate
269 {
271 return;
272
274
276 }
void OnCategorySet(EDynamicMusicPlayerCategory category, bool forced)
Definition DynamicMusicPlayer.c:369

Перекрестные ссылки m_CategorySelected, m_DynamicMusicPlayerRegistry и OnCategorySet().

Используется в OnFadeoutFinished(), OnLocationMatched() и OnUpdate().

◆ SetSelectedTrackFromCategory()

bool SetSelectedTrackFromCategory ( EDynamicMusicPlayerCategory category,
notnull ref array< ref DynamicMusicTrackData > tracklist,
int historyLookupType = DynamicMusicPlayerTrackHistoryLookupType.ANY )
inlineprivate

currently prioritize main menu track on DMP start

577 {
578 if (tracklist.Count() == 0)
579 return true;
580
583 {
584 if (filteredTrack.m_TimeOfDay == m_ActualTimeOfDay || filteredTrack.m_TimeOfDay == DynamicMusicPlayerTimeOfDay.ANY)
586 }
587
588 float trackIndex;
592 else
594
596 {
599
600 return true;
601 }
602
603 return false;
604 }
float GetWaitTimeForCategory(EDynamicMusicPlayerCategory category)
Definition DynamicMusicPlayer.c:685
int SelectRandomTrackIndexFromCategory(EDynamicMusicPlayerCategory category, int lookupType, notnull array< ref DynamicMusicTrackData > tracks)
Definition DynamicMusicPlayer.c:632
void OnNextTrackSelected(DynamicMusicTrackData track, float waitTime)
Definition DynamicMusicPlayer.c:407
int SelectRandomTrackIndexFromCategoryPriorityFlagFirst(EDynamicMusicPlayerCategory category, notnull array< ref DynamicMusicTrackData > tracks)
Definition DynamicMusicPlayer.c:606

Перекрестные ссылки GetWaitTimeForCategory(), INDEX_NOT_FOUND, m_Created, m_LastPlayedTrackBufferPerCategory, OnNextTrackSelected(), SelectRandomTrackIndexFromCategory() и SelectRandomTrackIndexFromCategoryPriorityFlagFirst().

Используется в DetermineTrackByCategory().

◆ SetTimeOfDate()

void SetTimeOfDate ( )
inlineprivate
660 {
661 if (g_Game.GetMission())
662 {
663 int year, month, day, hour, minute;
664 GetGame().GetWorld().GetDate(year, month, day, hour, minute);
665
666 float sunriseTimeStart = g_Game.GetMission().GetWorldData().GetApproxSunriseTime(month);
667 float sunsetTimeStart = g_Game.GetMission().GetWorldData().GetApproxSunsetTime(month);
668 if (hour >= sunriseTimeStart && hour < (sunriseTimeStart + 2))
669 {
671 return;
672 }
673
674 if (hour >= sunsetTimeStart && hour < (sunsetTimeStart + 2))
675 {
677 return;
678 }
679
680 }
681
682 m_ActualTimeOfDay = g_Game.GetWorld().GetSunOrMoon();
683 }

Перекрестные ссылки g_Game и GetGame().

Используется в DynamicMusicPlayer() и OnUpdate().

◆ StopTrack()

void StopTrack ( )
inlineprivate
491 {
492 if (m_SoundPlaying)
494 }
proto void Stop()

Перекрестные ссылки m_SoundPlaying и AbstractWave::Stop().

Используется в OnFadeoutFinished() и OnProfileOptionChanged().

◆ UnregisterDynamicLocation()

void UnregisterDynamicLocation ( notnull Entity caller)
inlineprivate
293 {
294 m_LocationsDynamic.Remove(caller.GetID());
295 }

Поля

◆ LOCATION_DISTANCE_MAX

const float LOCATION_DISTANCE_MAX = 500
protected

Используется в RefreshTracksCache().

◆ m_CategorySelected

◆ m_Created

bool m_Created
private

◆ m_CurrentTrack

◆ m_DynamicMusicPlayerRegistry

◆ m_FadeoutInProgress

bool m_FadeoutInProgress
private

Используется в FadeoutTrack() и OnUpdate().

◆ m_FadeoutTimeElapsed

float m_FadeoutTimeElapsed
private

Используется в DynamicMusicPlayer(), OnUpdate() и ProcessFadeOut().

◆ m_FadeoutTimeRequested

float m_FadeoutTimeRequested
private

◆ m_LastPlayedTrackBufferPerCategory

ref map<EDynamicMusicPlayerCategory, ref SimpleCircularBuffer<int> > m_LastPlayedTrackBufferPerCategory
private

gets the playback mode as set in sounds menu; 0 - all; 1 - menu only

Используется в DynamicMusicPlayer(), SelectRandomTrackIndexFromCategory() и SetSelectedTrackFromCategory().

◆ m_PlayerPosition

vector m_PlayerPosition
private

◆ m_SoundPlaying

◆ m_TickFadeOutProcessingElapsed

float m_TickFadeOutProcessingElapsed
protected

Используется в OnUpdate().

◆ m_TickLocationCacheUpdateElapsed

float m_TickLocationCacheUpdateElapsed
protected

Используется в OnUpdate().

◆ m_TickLocationUpdateElapsed

float m_TickLocationUpdateElapsed
protected

Используется в OnUpdate().

◆ m_TickPriorityLocationUpdateElapsed

float m_TickPriorityLocationUpdateElapsed
protected

Используется в OnUpdate().

◆ m_TickTimeOfDateElapsed

float m_TickTimeOfDateElapsed
protected

Используется в OnUpdate().

◆ m_TracksLocationMatchedPlayerInside

ref array<ref DynamicMusicTrackData> m_TracksLocationMatchedPlayerInside
protected

static prio + filtered by the distance between player and center of zone

Используется в DetermineTrackByCategory(), DynamicMusicPlayer() и PlayerInsideOfLocationFilter().

◆ m_TracksLocationStaticCached

ref array<ref DynamicMusicTrackData> m_TracksLocationStaticCached
private

map of dynamically registered locations during runtime

Используется в DynamicMusicPlayer(), OnUpdate() и RefreshTracksCache().

◆ m_TracksLocationStaticPrioritizedCached

ref array<ref DynamicMusicTrackData> m_TracksLocationStaticPrioritizedCached
private

static + filtered by the distance between player and center of zone

Используется в DynamicMusicPlayer(), OnUpdate() и RefreshTracksCache().

◆ m_WaitingForPlayback

bool m_WaitingForPlayback
private

◆ TICK_FADEOUT_PROCESSOR_SECONDS

const float TICK_FADEOUT_PROCESSOR_SECONDS = 0.2
protected

Используется в OnUpdate().

◆ TICK_LOCATION_CACHE_UPDATE_SECONDS

const float TICK_LOCATION_CACHE_UPDATE_SECONDS = 120.0
protected

Используется в OnUpdate().

◆ TICK_LOCATION_UPDATE_SECONDS

const float TICK_LOCATION_UPDATE_SECONDS = 120.0
protected

Используется в OnUpdate().

◆ TICK_PRIORITY_LOCATION_UPDATE_SECONDS

const float TICK_PRIORITY_LOCATION_UPDATE_SECONDS = 30.0
protected

Используется в OnUpdate().

◆ TICK_TIME_OF_DATE_UPDATE_SECONDS

const float TICK_TIME_OF_DATE_UPDATE_SECONDS = 300.0
protected

Используется в OnUpdate().

◆ TRACKS_BUFFER_HISTORY_SIZE

const int TRACKS_BUFFER_HISTORY_SIZE = 2
protected

Объявления и описания членов класса находятся в файле: