Compare commits

...

8 Commits

Author SHA1 Message Date
Savya Bikram Shah
f51286468a fixes 2026-05-29 19:47:45 +05:45
Savya Bikram Shah
8a4a84dadf adservice added 2026-05-29 19:21:13 +05:45
Savya Bikram Shah
9b2e4c915c Merge remote-tracking branch 'origin/work_branch' into savya
# Conflicts:
#	Assets/Darkmatter/Content/Fonts/static/Fredoka-SemiBold SDF.asset
2026-05-29 19:12:35 +05:45
Savya Bikram Shah
84689a6755 audio fixes 2026-05-29 19:12:23 +05:45
Savya Bikram Shah
41c9969996 Audio fixes 2026-05-29 19:07:21 +05:45
Mausham
c6b06bb5ee added figures 2026-05-29 18:58:07 +05:45
Mausham
02a58a1652 Merge remote-tracking branch 'origin/savya' into work_branch 2026-05-29 17:49:28 +05:45
Mausham
5b2a30a7f6 added dog 2026-05-29 17:49:16 +05:45
382 changed files with 10685 additions and 1637 deletions

View File

@@ -15,7 +15,7 @@ MonoBehaviour:
m_DefaultGroup: 0e030d5498bfe4ffd8443c796618c539
m_currentHash:
serializedVersion: 2
Hash: ee5be5d153107dd33adea90859ed25f8
Hash: fdf5dbef4b3bdd1999753be21e456785
m_OptimizeCatalogSize: 0
m_BuildRemoteCatalog: 0
m_CatalogRequestsTimeout: 0

View File

@@ -15,6 +15,18 @@ MonoBehaviour:
m_GroupName: Drawing
m_GUID: 2c56f39dfa281426bbb0636a757c203b
m_SerializeEntries:
- m_GUID: 01326847cbf6ead41ac519224a2381a7
m_Address: Earphone
m_ReadOnly: 0
m_SerializedLabels:
- drawing
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 2043f692673a79543afed5cb879f0e04
m_Address: Five
m_ReadOnly: 0
m_SerializedLabels:
- drawing
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 2d55441a1a6751c45bb9af623301426e
m_Address: Car
m_ReadOnly: 0
@@ -33,6 +45,24 @@ MonoBehaviour:
m_SerializedLabels:
- drawing
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: a2ef043d1d7051c47a68e2ebce7bd3dd
m_Address: Dog
m_ReadOnly: 0
m_SerializedLabels:
- drawing
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: dc24a6d2802de5d4298d1da3d1415e97
m_Address: Envelop
m_ReadOnly: 0
m_SerializedLabels:
- drawing
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: df588da411a3e08468106a8317fdbd1e
m_Address: Ball
m_ReadOnly: 0
m_SerializedLabels:
- drawing
FlaggedDuringContentUpdateRestriction: 0
m_ReadOnly: 0
m_Settings: {fileID: 11400000, guid: 4a94ef317c3674edd8270e4ed15031f6, type: 2}
m_SchemaSet:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 683c2f491e8042d0a46bb7b5ad497be3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
using System;
using System.Threading;
using Cysharp.Threading.Tasks;
using Darkmatter.Core.Data.Dynamic.Services.Ads;
using Darkmatter.Core.Enums.Services.Ads;
namespace Darkmatter.Core.Contracts.Services.Ads
{
public interface IAdService
{
bool IsInitialized { get; }
event Action<AdFormat, AdLoadState> LoadStateChanged;
UniTask InitializeAsync(CancellationToken cancellationToken);
UniTask<bool> LoadAsync(AdFormat format, CancellationToken cancellationToken);
bool IsReady(AdFormat format);
UniTask<AdShowResult> ShowAsync(AdFormat format, CancellationToken cancellationToken);
UniTask<bool> ShowBannerAsync(BannerSize size, BannerPosition position, CancellationToken cancellationToken);
void HideBanner();
void DestroyBanner();
void SetConsent(bool hasUserConsent, bool isChildDirected);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ffaede2f106c45a68197d70ec929c7de
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 868c1ce3a8b740a8aa4949fe685a1dcc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,14 @@
namespace Darkmatter.Core.Data.Dynamic.Services.Ads
{
public readonly struct AdReward
{
public readonly string Type;
public readonly double Amount;
public AdReward(string type, double amount)
{
Type = type;
Amount = amount;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 784af4bbe9df4c25b5d304d8364ade62
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,22 @@
namespace Darkmatter.Core.Data.Dynamic.Services.Ads
{
public readonly struct AdShowResult
{
public readonly bool Shown;
public readonly bool Rewarded;
public readonly AdReward Reward;
public readonly string Error;
public AdShowResult(bool shown, bool rewarded, AdReward reward, string error)
{
Shown = shown;
Rewarded = rewarded;
Reward = reward;
Error = error;
}
public static AdShowResult Success() => new(true, false, default, null);
public static AdShowResult WithReward(AdReward reward) => new(true, true, reward, null);
public static AdShowResult Failure(string error) => new(false, false, default, error);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e2859963572b4173957a583249f5d399
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4dcdb224825b4764a080e5b881b996e4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using Darkmatter.Core.Enums.Services.Ads;
using UnityEngine;
namespace Darkmatter.Core.Data.Static.Services.Ads
{
[CreateAssetMenu(fileName = "AdUnitCatalog", menuName = "Darkmatter/Ads/Ad Unit Catalog")]
public class AdUnitCatalogSO : ScriptableObject
{
[Serializable]
public class Entry
{
public AdFormat Format;
public string AndroidUnitId;
public string IosUnitId;
}
[Header("App IDs")]
[SerializeField] private string androidAppId;
[SerializeField] private string iosAppId;
[Header("Test Mode")]
[Tooltip("If true, returns Google sample ad unit IDs (safe for development).")]
[SerializeField] private bool useTestUnits = true;
[Tooltip("Device IDs to treat as test devices (hashed IDs from logcat).")]
[SerializeField] private List<string> testDeviceIds = new();
[Header("Production Unit IDs")]
[SerializeField] private List<Entry> entries = new();
public string AndroidAppId => androidAppId;
public string IosAppId => iosAppId;
public bool UseTestUnits => useTestUnits;
public IReadOnlyList<string> TestDeviceIds => testDeviceIds;
public string GetUnitId(AdFormat format, RuntimePlatform platform)
{
if (useTestUnits)
{
return GetTestUnitId(format, platform);
}
foreach (var e in entries)
{
if (e == null || e.Format != format) continue;
return platform == RuntimePlatform.IPhonePlayer ? e.IosUnitId : e.AndroidUnitId;
}
return null;
}
private static string GetTestUnitId(AdFormat format, RuntimePlatform platform)
{
bool ios = platform == RuntimePlatform.IPhonePlayer;
return format switch
{
AdFormat.Banner => ios ? "ca-app-pub-3940256099942544/2934735716" : "ca-app-pub-3940256099942544/6300978111",
AdFormat.Interstitial => ios ? "ca-app-pub-3940256099942544/4411468910" : "ca-app-pub-3940256099942544/1033173712",
AdFormat.Rewarded => ios ? "ca-app-pub-3940256099942544/1712485313" : "ca-app-pub-3940256099942544/5224354917",
AdFormat.RewardedInterstitial => ios ? "ca-app-pub-3940256099942544/6978759866" : "ca-app-pub-3940256099942544/5354046379",
AdFormat.AppOpen => ios ? "ca-app-pub-3940256099942544/5575463023" : "ca-app-pub-3940256099942544/9257395921",
_ => null
};
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e6352f0162df4adf99a5945e25c6bf40
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 40846ca6e71249d68a99e1d226fd162d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
namespace Darkmatter.Core.Enums.Services.Ads
{
public enum AdFormat
{
Banner,
Interstitial,
Rewarded,
RewardedInterstitial,
AppOpen
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ce1e736d19fc4569af80b06274dc3935
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,10 @@
namespace Darkmatter.Core.Enums.Services.Ads
{
public enum AdLoadState
{
Idle,
Loading,
Loaded,
Failed
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 44f09c3955b34814abfa83407118a6a5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
namespace Darkmatter.Core.Enums.Services.Ads
{
public enum BannerPosition
{
Top,
Bottom,
TopLeft,
TopRight,
BottomLeft,
BottomRight,
Center
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2223e7f2cedb4f479f7c6722e0ca7fd1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
namespace Darkmatter.Core.Enums.Services.Ads
{
public enum BannerSize
{
Banner,
LargeBanner,
MediumRectangle,
FullBanner,
Leaderboard,
SmartBanner,
AnchoredAdaptive
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 570a6e9b47c5451c8ef78aa7a3923ead
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -7,5 +7,6 @@ namespace Darkmatter.Core.Enums.Services.Audio
ShapeSnap = 101,
ShapeReturn = 102,
UiTap = 200,
PlayButtonTap = 201,
}
}

View File

@@ -1,8 +1,9 @@
using System;
using Darkmatter.Core.Contracts.Services.Audio;
using Darkmatter.Core.Data.Signals.Features.AppBoot;
using Darkmatter.Core.Data.Signals.Features.MainMenu;
using Darkmatter.Core.Enums.Services.Audio;
using Darkmatter.Libs.Observer;
using UnityEngine;
using VContainer.Unity;
namespace Darkmatter.Features.Mainmenu
@@ -11,17 +12,19 @@ namespace Darkmatter.Features.Mainmenu
{
private readonly IEventBus _eventBus;
private readonly MainMenuView _view;
private readonly ISfxPlayer _sfxPlayer;
public MainMenuPresenter(MainMenuView view, IEventBus eventBus)
public MainMenuPresenter(MainMenuView view, IEventBus eventBus, ISfxPlayer sfxPlayer)
{
_view = view;
_eventBus = eventBus;
_sfxPlayer = sfxPlayer;
}
public void Start()
{
_view.OnPlayBtnPressedEvent += OnPlayBtnPressed;
_view.OnPlayBtnClickedEvent += OnPlayBtnClicked;
_eventBus.Subscribe<IntroCompletedSignal>(OnIntroComplete);
}
@@ -31,6 +34,11 @@ namespace Darkmatter.Features.Mainmenu
_view.PlayMascotIntro();
}
private void OnPlayBtnPressed()
{
_sfxPlayer.Play(SfxId.PlayButtonTap);
}
private void OnPlayBtnClicked()
{
_eventBus.Publish(new PlayBtnClickedSignal());
@@ -38,6 +46,7 @@ namespace Darkmatter.Features.Mainmenu
public void Dispose()
{
_view.OnPlayBtnPressedEvent -= OnPlayBtnPressed;
_view.OnPlayBtnClickedEvent -= OnPlayBtnClicked;
}
}

View File

@@ -10,7 +10,6 @@ namespace Darkmatter.Features.Mainmenu
public class MainMenuView : MonoBehaviour
{
[Header("UI Elements")]
//[SerializeField] private Button playBtn;
[SerializeField] private PlayButtonView playBtn;
[SerializeField] private SkeletonGraphic mascotSkeletonGraphic;
@@ -20,12 +19,14 @@ namespace Darkmatter.Features.Mainmenu
[SerializeField] private string helloAnimation = "hello";
[SerializeField] private float helloInterval = 5f;
public event Action OnPlayBtnPressedEvent;
public event Action OnPlayBtnClickedEvent;
private CancellationTokenSource helloCts;
private void Start()
{
playBtn.OnPlayBtnPressedEvent += () => OnPlayBtnPressedEvent?.Invoke();
playBtn.OnPlayBtnClickedEvent += () => OnPlayBtnClickedEvent?.Invoke();
}

View File

@@ -12,6 +12,7 @@ namespace Darkmatter.Features.Mainmenu
private Animator playBtnAnimator;
[SerializeField] private ParticleSystem playBtnParticle;
public event Action OnPlayBtnPressedEvent;
public event Action OnPlayBtnClickedEvent;
private void Awake()
@@ -29,6 +30,7 @@ namespace Darkmatter.Features.Mainmenu
{
playBtn.interactable = false;
playBtnAnimator.enabled = false;
OnPlayBtnPressedEvent?.Invoke();
PlayBtnSequenceAsync(this.GetCancellationTokenOnDestroy()).Forget();
}

View File

@@ -10,12 +10,24 @@ namespace Darkmatter.Services.Audio
public class AudioServiceModule : MonoBehaviour, IModule
{
[SerializeField] private SfxCatalogSO sfxCatalog;
[SerializeField] private AudioService audioService;
public void Register(IContainerBuilder builder)
{
if (sfxCatalog != null)
if (sfxCatalog == null)
{
Debug.LogError("[AudioServiceModule] SfxCatalogSO not assigned.");
return;
}
builder.RegisterComponent(sfxCatalog);
builder.Register<IAudioService, AudioService>(Lifetime.Singleton);
if (audioService == null)
{
Debug.LogError("[AudioServiceModule] AudioService not assigned. Assign the scene component to the 'audioService' field.");
return;
}
builder.RegisterComponent<IAudioService>(audioService);
builder.Register<ISfxPlayer, SfxPlayer>(Lifetime.Singleton);
}
}

View File

@@ -72,8 +72,18 @@ namespace Darkmatter.Services.Audio
private Dictionary<AudioChannel, AudioMixerGroup> _mixerGroups;
private float[] _currentWeights;
private bool _initialized;
private void Awake()
{
InitializeAsync(default).Forget();
}
public UniTask InitializeAsync(CancellationToken cancellationToken)
{
if (_initialized) return UniTask.CompletedTask;
_initialized = true;
if (sourceRoot == null) sourceRoot = transform;
_lifetimeCts = new CancellationTokenSource();
@@ -336,8 +346,11 @@ namespace Darkmatter.Services.Audio
source.loop = request.PlayMode == AudioPlayMode.Loop;
source.transform.localPosition = Vector3.zero;
source.enabled = true;
if (!source.gameObject.activeInHierarchy) source.gameObject.SetActive(true);
source.Play();
Debug.Log($"[AudioService] Play clip='{(request.Clip != null ? request.Clip.name : "null")}' ch={request.Channel} vol={source.volume:F2} mixer={(source.outputAudioMixerGroup != null ? source.outputAudioMixerGroup.name : "none")} listener={(AudioListener.volume)} muted={AudioListener.pause} isPlaying={source.isPlaying}");
if (IsChannelPaused(request.Channel))
{
source.Pause();

View File

@@ -2,6 +2,7 @@ using Darkmatter.Core.Contracts.Services.Music;
using Darkmatter.Libs.Installers;
using Darkmatter.Services.Music.Systems;
using UnityEngine;
using UnityEngine.Audio;
using VContainer;
using VContainer.Unity;
@@ -12,10 +13,11 @@ namespace Darkmatter.Services.Music.Installers
[SerializeField] private AudioClip defaultTrack;
[SerializeField, Range(0f, 1f)] private float defaultVolume = 0.7f;
[SerializeField, Min(0f)] private float crossFadeSeconds = 0.4f;
[SerializeField] private AudioMixerGroup mixerGroup;
public void Register(IContainerBuilder builder)
{
builder.RegisterInstance(new MusicConfig(defaultTrack, defaultVolume, crossFadeSeconds));
builder.RegisterInstance(new MusicConfig(defaultTrack, defaultVolume, crossFadeSeconds, mixerGroup));
builder.RegisterEntryPoint<MusicService>(Lifetime.Singleton).As<IMusicService>();
}
}

View File

@@ -1,5 +1,6 @@
using System;
using UnityEngine;
using UnityEngine.Audio;
namespace Darkmatter.Services.Music.Systems
{
@@ -9,12 +10,14 @@ namespace Darkmatter.Services.Music.Systems
public AudioClip DefaultTrack { get; }
public float DefaultVolume { get; }
public float CrossFadeSeconds { get; }
public AudioMixerGroup MixerGroup { get; }
public MusicConfig(AudioClip defaultTrack, float defaultVolume, float crossFadeSeconds)
public MusicConfig(AudioClip defaultTrack, float defaultVolume, float crossFadeSeconds, AudioMixerGroup mixerGroup)
{
DefaultTrack = defaultTrack;
DefaultVolume = defaultVolume;
CrossFadeSeconds = crossFadeSeconds;
MixerGroup = mixerGroup;
}
}
}

View File

@@ -1,9 +1,8 @@
using System;
using Darkmatter.Core.Contracts.Services.Audio;
using System.Threading;
using Cysharp.Threading.Tasks;
using Darkmatter.Core.Contracts.Services.Music;
using Darkmatter.Core.Data.Dynamic.Services.Audio;
using Darkmatter.Core.Data.Signals.Features.AppBoot;
using Darkmatter.Core.Enums.Services.Audio;
using Darkmatter.Libs.Observer;
using UnityEngine;
using VContainer.Unity;
@@ -12,59 +11,136 @@ namespace Darkmatter.Services.Music.Systems
{
public class MusicService : IMusicService, IStartable, IDisposable
{
private readonly IAudioService _audio;
private readonly IEventBus _bus;
private readonly MusicConfig _config;
private AudioHandle _current;
private GameObject _host;
private AudioSource _source;
private IDisposable _introSub;
private CancellationTokenSource _fadeCts;
public MusicService(IAudioService audio, IEventBus bus, MusicConfig config)
public MusicService(IEventBus bus, MusicConfig config)
{
_audio = audio;
_bus = bus;
_config = config;
}
public void Start()
{
_host = new GameObject("[MusicService]");
UnityEngine.Object.DontDestroyOnLoad(_host);
_source = _host.AddComponent<AudioSource>();
_source.playOnAwake = false;
_source.loop = true;
_source.spatialBlend = 0f;
_source.volume = _config.DefaultVolume;
if (_config.MixerGroup != null) _source.outputAudioMixerGroup = _config.MixerGroup;
_introSub = _bus.Subscribe<IntroCompletedSignal>(OnIntroCompleted);
}
private void OnIntroCompleted(IntroCompletedSignal _)
{
if (_config.DefaultTrack != null && !_current.IsValid)
if (_config.DefaultTrack != null && (_source == null || !_source.isPlaying))
Play(_config.DefaultTrack, _config.DefaultVolume, loop: true);
}
public void Play(AudioClip clip, float volume01 = 1f, bool loop = true)
{
if (clip == null) return;
if (_current.IsValid) _audio.Stop(_current, _config.CrossFadeSeconds);
if (clip == null || _source == null) return;
CancelFade();
var req = new AudioRequest(
clip: clip,
channel: AudioChannel.Music,
mode: loop ? AudioPlayMode.Loop : AudioPlayMode.OneShot,
stopChannelBeforePlay: true,
volume01: Mathf.Clamp01(volume01));
_current = _audio.Play(req);
if (_source.isPlaying && _config.CrossFadeSeconds > 0f)
{
_fadeCts = new CancellationTokenSource();
CrossFadeAsync(clip, Mathf.Clamp01(volume01), loop, _fadeCts.Token).Forget();
return;
}
_source.clip = clip;
_source.loop = loop;
_source.volume = Mathf.Clamp01(volume01);
_source.Play();
}
public void Stop(float fadeOutSeconds = 0f)
{
if (_current.IsValid) _audio.Stop(_current, fadeOutSeconds);
_current = AudioHandle.Invalid;
if (_source == null) return;
CancelFade();
if (fadeOutSeconds <= 0f) { _source.Stop(); return; }
_fadeCts = new CancellationTokenSource();
FadeOutAsync(fadeOutSeconds, _fadeCts.Token).Forget();
}
public void SetVolume(float volume01)
{
if (_current.IsValid) _audio.SetVolume(_current, Mathf.Clamp01(volume01));
if (_source == null) return;
_source.volume = Mathf.Clamp01(volume01);
}
private async UniTaskVoid CrossFadeAsync(AudioClip nextClip, float targetVolume, bool loop, CancellationToken ct)
{
try
{
float start = _source.volume;
float t = 0f;
float dur = _config.CrossFadeSeconds;
while (t < dur)
{
ct.ThrowIfCancellationRequested();
t += Time.unscaledDeltaTime;
_source.volume = Mathf.Lerp(start, 0f, t / dur);
await UniTask.Yield(PlayerLoopTiming.Update, ct);
}
_source.Stop();
_source.clip = nextClip;
_source.loop = loop;
_source.volume = 0f;
_source.Play();
t = 0f;
while (t < dur)
{
ct.ThrowIfCancellationRequested();
t += Time.unscaledDeltaTime;
_source.volume = Mathf.Lerp(0f, targetVolume, t / dur);
await UniTask.Yield(PlayerLoopTiming.Update, ct);
}
_source.volume = targetVolume;
}
catch (OperationCanceledException) { }
}
private async UniTaskVoid FadeOutAsync(float seconds, CancellationToken ct)
{
try
{
float start = _source.volume;
float t = 0f;
while (t < seconds)
{
ct.ThrowIfCancellationRequested();
t += Time.unscaledDeltaTime;
_source.volume = Mathf.Lerp(start, 0f, t / seconds);
await UniTask.Yield(PlayerLoopTiming.Update, ct);
}
_source.Stop();
_source.volume = start;
}
catch (OperationCanceledException) { }
}
private void CancelFade()
{
_fadeCts?.Cancel();
_fadeCts?.Dispose();
_fadeCts = null;
}
public void Dispose()
{
CancelFade();
_introSub?.Dispose();
if (_host != null) UnityEngine.Object.Destroy(_host);
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8372642fd3518472297023e6ad25c7b7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 144ce49e86a1846e297d024f0c3ee387
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: a389bee6a2458444ba5d1e3a2c3e11db
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 103b1b87cbb1f46189ebebca8fb425c1
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: a9d835f9337d74f969bf57aae35860fc
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: e0066145b0bd140948691f4497dc44eb
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 26641751a31d349c5a695a8dc3d87a8d
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 8ebe106db5e84490b81ec33b8dd40d3a
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 0bf722f6fc170410dbc3c4399e0c5b95
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: d3bf3bf1cb8114779b3f87eb576e8efe
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 904c9da8da3f449b997f23438816edba
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 409c6432e329e4c969de870d4d86407c
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: de3ade699f1574595831ef637103577e
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 026fb14ff3e944f14b706fbe3ba1389d
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 2d4e095199e38493cb0a0b2830c67fc0
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 5fbc9a6ffc1d3407f94c472e60579f09
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 90aa7811bba2e420d9b87a790c61d246
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 5d7dbf8f9c1f84d32bf2abc83017c8ba
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 0d57bd74fc9604e4cad4cfd629ccab09
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: c6d579b09d15849f1a213731e8232727
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: ebe2c5eca6033456390ec0065e4ee8c7
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 2a1b496f6bc364375822a15e6283202d
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: c31764400b53c443496879ecce4ca060
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: e57cf50d025a243319f9fdefc93cf5a4
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: b2d674efc9bbd4fda8e5864b6c91296c
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: d8f984713ab0b4ae582150ac50c6770c
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 5c4dd572588d947f6b6a8abb8edbd4e8
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 7a0790ebebe4f4ca580585286ebecedb
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: c77de352b2c8648ed87739883e7d0981
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 3af1c080da753413497371cd9ed3ca53
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 8d8a7869fc8894fdd99c0718a7f72b7a
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 52212c7e35d814b60801713cdce3f5a6
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 8df503365dc61419f891b8da32bdef09
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 48166f5440f5e4dc9872be025f22f836
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: ee62c729979f642049d0d9ced850168f
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More