コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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;
                }
            }
        }
コード例 #3
0
 public DefaultAudioHandle(AudioAsset asset)
 {
     _instance = asset.Audio.CreateInstance();
 }
コード例 #4
0
 public IAudioHandle GetHandle(AudioAsset asset)
 {
     throw new NotSupportedException();
 }