/// <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(); }
public HotReloadResult(IHotReloadable inReloadable, HotReloadOperation inOperation) { if (inReloadable != null) { ObjectId = inReloadable.Id; ObjectTag = inReloadable.Tag; } else { ObjectId = StringHash32.Null; ObjectTag = StringHash32.Null; } Operation = inOperation; }
/// <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); }
/// <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); }
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); }