private void performMarkerProximityChecks() { // TODO: foreach (SoundMarker sm in MainController.soundMarkers) { // Sounds that have an infinte range (indicated by a negative maxDistance) can be ignored if (sm.hotspot.hasInfiniteMaxDistance) { continue; } SoundFile sf; if (!_layoutManager.soundDictionary.TryGetValue(sm.hotspot.soundID, out sf)) { continue; } if (sf.isDefaultSoundFile) { continue; } // Skip the default soundFile float distToMaxRadius = Vector2.Distance( new Vector2(_camTransform.position.x, _camTransform.position.z), new Vector2(sm.transform.position.x, sm.transform.position.z) ) - sm.soundMaxDist; if (sf.loadState == LoadState.Success && distToMaxRadius > _unloadDistance) { IEnumerable <SoundMarker> syncedMarkers = _layoutManager.layout.getSynchronisedMarkers(sm.hotspot.id); if (!atLeastOneSyncedMarkerShouldBeLoaded(syncedMarkers)) { // We should UNLOAD this AudioClip... _layoutManager.UnloadSoundMarkerAndSyncedClips(sm, syncedMarkers); } } if (sf.loadState != LoadState.Success && distToMaxRadius < _loadDistance) { // We should LOAD this AudioClip... _layoutManager.LoadSoundMarkerAndSyncedClips(sm, completion: (HashSet <SoundMarker> loadedMarkers) => { // TODO: Should we stop playing and start playing all clips? foreach (var loadedMarker in loadedMarkers) { loadedMarker.PlayAudioFromBeginning(ignoreTrigger: true); } }); } } }
public void loadOnDemandAudioForSoundMarker(SoundMarker marker, SoundFile soundFile) { if (!onDemandIsActive) { return; } Debug.LogWarning("ON-DEMAND SHOULD be Loaded: " + soundFile.filename); // Debug.Log("loadOnDemandAudioForSoundMarker: " + soundFile.filename); layoutManager.LoadSoundMarkerAndSyncedClips(marker, completion: (HashSet<SoundMarker> loadedMarkers) => { Debug.LogWarning( "loadOnDemandAudioForSoundMarker COMPLETE!"); canvasControl.editSoundOverlay.refreshDebugText(); // foreach (var loadedMarker in loadedMarkers) { // } }); }