diff --git a/Assets/Scenes/PuzzleTest.unity b/Assets/Scenes/PuzzleTest.unity index 79e7fd4..ffd044c 100644 --- a/Assets/Scenes/PuzzleTest.unity +++ b/Assets/Scenes/PuzzleTest.unity @@ -5156,7 +5156,7 @@ PrefabInstance: - target: {fileID: 8137769401290482906, guid: 1358b4ef564c4704682417dff526766a, type: 3} propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] diff --git a/Assets/Station46/Environments/Intro Room/Audio/intro-edit.wav.meta b/Assets/Station46/Environments/Intro Room/Audio/intro-edit.wav.meta index 1af715f..49b368a 100644 --- a/Assets/Station46/Environments/Intro Room/Audio/intro-edit.wav.meta +++ b/Assets/Station46/Environments/Intro Room/Audio/intro-edit.wav.meta @@ -1,3 +1,23 @@ -fileFormatVersion: 2 +fileFormatVersion: 2 guid: e9879de5b83a4547be8ec1c406fb0556 -timeCreated: 1684016482 \ No newline at end of file +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 0 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Station46/Environments/Intro Room/Intro Room.prefab b/Assets/Station46/Environments/Intro Room/Intro Room.prefab index ede7aa1..f5675fe 100644 --- a/Assets/Station46/Environments/Intro Room/Intro Room.prefab +++ b/Assets/Station46/Environments/Intro Room/Intro Room.prefab @@ -1369,7 +1369,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 2147483647 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &6534859180971967246 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/Station46/Environments/Intro Sphere/Intro Sphere.prefab b/Assets/Station46/Environments/Intro Sphere/Intro Sphere.prefab index 45a8d72..ffdb1dd 100644 --- a/Assets/Station46/Environments/Intro Sphere/Intro Sphere.prefab +++ b/Assets/Station46/Environments/Intro Sphere/Intro Sphere.prefab @@ -9612,7 +9612,7 @@ Transform: - {fileID: 1776039877960258817} - {fileID: 1772644945931633228} m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!54 &4758909792356742116 Rigidbody: @@ -14949,7 +14949,12 @@ MonoBehaviour: m_EditorClassIdentifier: minDistance: 0.01 speed: 100 + sizeFactor: 4 + brightnessFactor: 12 target: {fileID: 0} + audioSource: {fileID: 2877895139439227182} + centerTransform: {fileID: 6097717622075189454} + sphereRenderer: {fileID: 4939631329203768008} --- !u!82 &2877895139439227182 AudioSource: m_ObjectHideFlags: 0 diff --git a/Assets/Station46/Environments/Intro Sphere/Scripts/FollowSphere.cs b/Assets/Station46/Environments/Intro Sphere/Scripts/FollowSphere.cs index 37179b9..e5c97f5 100644 --- a/Assets/Station46/Environments/Intro Sphere/Scripts/FollowSphere.cs +++ b/Assets/Station46/Environments/Intro Sphere/Scripts/FollowSphere.cs @@ -1,19 +1,41 @@ -using EscapeRoomEngine.VR.Runtime; +using System; +using System.Linq; +using EscapeRoomEngine.VR.Runtime; +using NaughtyAttributes; using UnityEngine; namespace Station46.Environments.Intro_Sphere.Scripts { public class FollowSphere : MonoBehaviour { - public float minDistance = 0.001f; - public float speed = 200; - + private const int AverageLength = 3; + private static readonly int FresnelPower = Shader.PropertyToID("_FresnelPower"); + + public float + minDistance = 0.001f, + speed = 200, + sizeFactor = 1, + brightnessFactor = 1; [SerializeField] private Transform target; + [BoxGroup("Internal")] [SerializeField] private AudioSource audioSource; + [BoxGroup("Internal")] [SerializeField] private Transform centerTransform; + [BoxGroup("Internal")] [SerializeField] private MeshRenderer sphereRenderer; + private float[] _audioSamples; + private float[] _samplesAverage = new float[AverageLength]; + private int averageIndex; + private float _initialBrightness; + private Material _sphereMaterial; private Rigidbody _rigidbody; private void Awake() { + var clip = audioSource.clip; + _audioSamples = new float[clip.samples*clip.channels]; + clip.GetData(_audioSamples, 0); + + _sphereMaterial = sphereRenderer.material; + _initialBrightness = _sphereMaterial.GetFloat(FresnelPower); _rigidbody = GetComponent(); target = Player.Instance.sphereFollow; } @@ -27,5 +49,21 @@ namespace Station46.Environments.Intro_Sphere.Scripts _rigidbody.AddForce(speed * (followPosition - position)); } } + + private void Update() + { + if (audioSource.isPlaying) + { + _samplesAverage[averageIndex] = Mathf.Abs(_audioSamples[audioSource.timeSamples]); + averageIndex = (averageIndex + 1) % AverageLength; + var average = _samplesAverage.Average(); + SetCenterSize(1 + sizeFactor * average); + SetSphereMaterialBrightness(_initialBrightness - brightnessFactor * average); + } + } + + private void SetCenterSize(float size) => centerTransform.localScale = new Vector3(size, size, size); + + private void SetSphereMaterialBrightness(float brightness) => _sphereMaterial.SetFloat(FresnelPower, brightness); } } \ No newline at end of file