示例#1
0
 /// <summary>
 /// Disposes of all hot reloadables.
 /// </summary>
 public void Dispose()
 {
     m_ReloadablesByTag.Clear();
     foreach (var reloadable in m_AllReloadables)
     {
         IHotReloadable rel = reloadable;
         Ref.TryDispose(ref rel);
     }
     m_AllReloadables.Clear();
 }
示例#2
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;
 }
示例#3
0
        /// <summary>
        /// Removes an IHotReloadable.
        /// </summary>
        public bool Remove(IHotReloadable inReloadable)
        {
            if (inReloadable == null)
            {
                return(false);
            }

            if (!m_AllReloadables.Remove(inReloadable))
            {
                return(false);
            }

            HashSet <IHotReloadable> byTag;

            if (m_ReloadablesByTag.TryGetValue(inReloadable.Tag, out byTag))
            {
                byTag.Remove(inReloadable);
            }

            return(true);
        }
示例#4
0
        /// <summary>
        /// Adds an IHotReloadable.
        /// </summary>
        public bool Add(IHotReloadable inReloadable)
        {
            if (inReloadable == null)
            {
                return(false);
            }

            if (!m_AllReloadables.Add(inReloadable))
            {
                return(false);
            }

            HashSet <IHotReloadable> byTag;

            if (!m_ReloadablesByTag.TryGetValue(inReloadable.Tag, out byTag))
            {
                m_ReloadablesByTag[inReloadable.Tag] = byTag = new HashSet <IHotReloadable>();
            }
            byTag.Add(inReloadable);
            return(true);
        }
示例#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);
        }