Esempio n. 1
0
        public void HotReload(HotReloadOperation inAction)
        {
            if (string.IsNullOrEmpty(m_ResourcePath))
            {
                return;
            }

            if (m_OnReload != null)
            {
                m_OnReload(m_ResourcePath, inAction);
            }

            switch (inAction)
            {
            case HotReloadOperation.Deleted:
            {
                Dispose();
                break;
            }

            case HotReloadOperation.Modified:
            {
                m_LastEditTime = IOHelper.GetFileModifyTimestamp(m_ResourcePath);
                break;
            }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Attempts to reload all assets.
        /// </summary>
        public int TryReloadAll(ICollection <HotReloadResult> outResults = null, bool inbForce = false)
        {
            int reloadCount = 0;
            HashSet <IHotReloadable> deletedAssets = new HashSet <IHotReloadable>();

            foreach (var asset in m_AllReloadables)
            {
                HotReloadOperation op = TryReload(asset, outResults, inbForce);
                switch (op)
                {
                case HotReloadOperation.Deleted:
                    deletedAssets.Add(asset);
                    ++reloadCount;
                    break;

                case HotReloadOperation.Modified:
                    ++reloadCount;
                    break;
                }
            }

            foreach (var deleted in deletedAssets)
            {
                Remove(deleted);
            }

            return(reloadCount);
        }
        public void HotReload(HotReloadOperation inOperation)
        {
            if (m_Asset.IsReferenceNull())
            {
                return;
            }

            if (m_OnReload != null)
            {
                m_OnReload.Invoke(m_Asset, m_QueuedRemapArgs, inOperation);
            }

            m_QueuedRemapArgs = default(HotReloadAssetRemapArgs <T>);

            switch (inOperation)
            {
            case HotReloadOperation.Deleted:
            {
                Dispose();
                break;
            }

            case HotReloadOperation.Modified:
            {
                m_LastEditTime = IOHelper.GetAssetModifyTimestamp(m_Asset);
                break;
            }
            }
        }
Esempio n. 4
0
 public HotReloadResult(IHotReloadable inReloadable, HotReloadOperation inOperation)
 {
     if (inReloadable != null)
     {
         ObjectId  = inReloadable.Id;
         ObjectTag = inReloadable.Tag;
     }
     else
     {
         ObjectId  = StringHash32.Null;
         ObjectTag = StringHash32.Null;
     }
     Operation = inOperation;
 }
Esempio n. 5
0
        private HotReloadOperation TryReload(IHotReloadable inAsset, ICollection <HotReloadResult> outResults, bool inbForce)
        {
            HotReloadOperation operation = inAsset.NeedsReload();

            if (inbForce && operation == HotReloadOperation.Unaffected)
            {
                operation = HotReloadOperation.Modified;
            }

            if (operation != HotReloadOperation.Unaffected)
            {
                if (outResults != null)
                {
                    HotReloadResult result = new HotReloadResult(inAsset, operation);
                    outResults.Add(result);
                }

                inAsset.HotReload(operation);
            }

            return(operation);
        }
Esempio n. 6
0
        public void HotReload(HotReloadOperation inAction)
        {
            if (m_Provider != null)
            {
                return;
            }

            m_Provider.TryGetData(out m_LastKnownData);

            if (m_OnReload != null)
            {
                m_OnReload(m_LastKnownData, inAction);
            }

            switch (inAction)
            {
            case HotReloadOperation.Deleted:
            {
                Dispose();
                break;
            }
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Attempts to reload assets of a specific tag.
        /// </summary>
        public int TryReloadTag(StringHash32 inTag, ICollection <HotReloadResult> outResults = null, bool inbForce = false)
        {
            HashSet <IHotReloadable> byTag;

            if (!m_ReloadablesByTag.TryGetValue(inTag, out byTag) || byTag.Count == 0)
            {
                return(0);
            }

            int reloadCount = 0;
            HashSet <IHotReloadable> deletedAssets = new HashSet <IHotReloadable>();

            foreach (var asset in byTag)
            {
                HotReloadOperation op = TryReload(asset, outResults, inbForce);
                switch (op)
                {
                case HotReloadOperation.Deleted:
                    deletedAssets.Add(asset);
                    ++reloadCount;
                    break;

                case HotReloadOperation.Modified:
                    ++reloadCount;
                    break;
                }
            }

            foreach (var deleted in deletedAssets)
            {
                byTag.Remove(deleted);
                m_AllReloadables.Remove(deleted);
            }

            return(reloadCount);
        }
 public void HotReload(HotReloadOperation inOperation)
 {
 }
Esempio n. 9
0
 public HotReloadResult(StringHash32 inObjectId, StringHash32 inObjectTag, HotReloadOperation inOperation)
 {
     ObjectId  = inObjectId;
     ObjectTag = inObjectTag;
     Operation = inOperation;
 }