Give DayNightAudioVolume track setting, make them loop

This commit is contained in:
Nick 2023-08-22 19:20:27 -04:00
parent 37032ca222
commit 5908cc1fe6
3 changed files with 21 additions and 0 deletions

View File

@ -1,6 +1,7 @@
using NewHorizons.Builder.Props; using NewHorizons.Builder.Props;
using NewHorizons.Components.Volumes; using NewHorizons.Components.Volumes;
using NewHorizons.External.Modules.Volumes.VolumeInfos; using NewHorizons.External.Modules.Volumes.VolumeInfos;
using NewHorizons.Utility;
using NewHorizons.Utility.OuterWilds; using NewHorizons.Utility.OuterWilds;
using OWML.Common; using OWML.Common;
using UnityEngine; using UnityEngine;
@ -21,6 +22,7 @@ namespace NewHorizons.Builder.Volumes
audioVolume.nightAudio = info.nightAudio; audioVolume.nightAudio = info.nightAudio;
audioVolume.modBehaviour = mod; audioVolume.modBehaviour = mod;
audioVolume.volume = info.volume; audioVolume.volume = info.volume;
audioVolume.SetTrack(info.track.ConvertToOW());
var shape = go.AddComponent<SphereShape>(); var shape = go.AddComponent<SphereShape>();
shape.radius = info.radius; shape.radius = info.radius;

View File

@ -16,6 +16,7 @@ namespace NewHorizons.Components.Volumes
private OWAudioSource _daySource; private OWAudioSource _daySource;
private OWAudioSource _nightSource; private OWAudioSource _nightSource;
private OWAudioMixer.TrackName _track;
private Transform _planetTransform; private Transform _planetTransform;
private Transform _sunTransform; private Transform _sunTransform;
@ -63,6 +64,8 @@ namespace NewHorizons.Components.Volumes
_daySource.spread = 180f; _daySource.spread = 180f;
_daySource.dopplerLevel = 0f; _daySource.dopplerLevel = 0f;
_daySource.SetMaxVolume(volume); _daySource.SetMaxVolume(volume);
_daySource.SetTrack(_track);
_daySource.loop = true;
AudioUtilities.SetAudioClip(_daySource, dayAudio, modBehaviour); AudioUtilities.SetAudioClip(_daySource, dayAudio, modBehaviour);
} }
@ -77,6 +80,8 @@ namespace NewHorizons.Components.Volumes
_nightSource.spread = 180f; _nightSource.spread = 180f;
_nightSource.dopplerLevel = 0f; _nightSource.dopplerLevel = 0f;
_nightSource.SetMaxVolume(volume); _nightSource.SetMaxVolume(volume);
_nightSource.SetTrack(_track);
_nightSource.loop = true;
AudioUtilities.SetAudioClip(_nightSource, nightAudio, modBehaviour); AudioUtilities.SetAudioClip(_nightSource, nightAudio, modBehaviour);
} }
} }
@ -138,5 +143,12 @@ namespace NewHorizons.Components.Volumes
{ {
return Vector3.Angle(_planetTransform.position - Locator.GetPlayerTransform().position, Locator.GetPlayerTransform().position - _sunTransform.position) < dayWindow * 0.5f; return Vector3.Angle(_planetTransform.position - Locator.GetPlayerTransform().position, Locator.GetPlayerTransform().position - _sunTransform.position) < dayWindow * 0.5f;
} }
public void SetTrack(OWAudioMixer.TrackName track)
{
_track = track;
_nightSource?.SetTrack(track);
_daySource?.SetTrack(track);
}
} }
} }

View File

@ -1,3 +1,4 @@
using NewHorizons.External.SerializableEnums;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.ComponentModel; using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
@ -35,5 +36,11 @@ namespace NewHorizons.External.Modules.Volumes.VolumeInfos
[Range(0f, 1f)] [Range(0f, 1f)]
[DefaultValue(1f)] [DefaultValue(1f)]
public float volume = 1f; public float volume = 1f;
/// <summary>
/// The audio track of this audio volume.
/// Most of the time you'll use environment (the default) for sound effects and music for music.
/// </summary>
[DefaultValue("environment")] public NHAudioMixerTrackName track = NHAudioMixerTrackName.Environment;
} }
} }