/// <summary> /// The handle. /// </summary> /// <param name="assetManager"> /// The asset manager. /// </param> /// <param name="name"> /// The name. /// </param> /// <param name="data"> /// The data. /// </param> /// <returns> /// The <see cref="IAsset"/>. /// </returns> public IAsset Handle(IAssetManager assetManager, string name, IRawAsset data) { if (data.IsCompiled) { return(new AudioAsset(name, null, data.GetProperty <PlatformData>("PlatformData"), false)); } PlatformData platformData = null; if (data.GetProperty <PlatformData>("PlatformData") != null) { platformData = new PlatformData { Platform = data.GetProperty <PlatformData>("PlatformData").Platform, Data = data.GetProperty <PlatformData>("PlatformData").Data }; } var audio = new AudioAsset( name, ByteReader.ReadAsByteArray(data.GetProperty <object>("RawData")), platformData, data.GetProperty <bool>("SourcedFromRaw")); return(audio); }
private void UpdateInstance() { var shouldReload = false; AudioAsset lastRef = null; if (_lastResolvedAsset != null) { if (!_lastResolvedAsset.TryGetTarget(out lastRef)) { // The reference expired, which means the old asset was disposed // and we need to reload. shouldReload = true; } else { if (_asset.IsReady) { if (lastRef != _asset.Asset) { // The asset is pointing at a different resolved instance now, // so reload the instance. shouldReload = true; } } } } if (_instance == null && _asset.IsReady) { // Not a real reload, just a load. shouldReload = true; } if (shouldReload) { if (_instance != null) { _instance.Dispose(); } if (_asset.IsReady) { _instance = _asset.Asset.Audio.CreateInstance(); _lastResolvedAsset.SetTarget(_asset.Asset); } else { _instance = null; } } }
public DefaultAudioHandle(AudioAsset asset) { _instance = asset.Audio.CreateInstance(); }
public IAudioHandle GetHandle(AudioAsset asset) { throw new NotSupportedException(); }