public static T Spawn <T>(T source, Transform parent = null) where T : Object { T instance; Storage storage; GameObject sourceGo; GameObject go; sourceGo = GetGameObject(source); if (!Instance._storage.TryGetValue(sourceGo, out storage)) { storage = AutoPool <Storage> .Create(); Instance._storage.Add(sourceGo, storage); } instance = storage.Get <T>(); if (instance == null) { instance = Instantiate(source, parent); go = GetGameObject(instance); } else { go = GetGameObject(instance); go.transform.SetParent(parent); go.SetActive(true); } Instance._spawned.Add(go, storage); return(instance); }
async Task DelayedPerform() { var cancelSource = AutoPool <CancellationTokenSource> .Create(); this._cancelationSource = cancelSource; var token = cancelSource.Token; try { await Task.Delay((int)(this._delay * 1000), token); if (!token.IsCancellationRequested) { this.Perform(); AutoPool <CancellationTokenSource> .Dispose(cancelSource); } else { cancelSource.Dispose(); } } catch (TaskCanceledException) { } catch (System.Exception ex) { Debug.LogException(ex); } if (this._cancelationSource == cancelSource) { this._cancelationSource = null; } }
public void ClearAll() { foreach (var tileData in this._tiles.Values) { tileData.Clear(true); AutoPool <TileData> .Dispose(tileData); } this._tiles.Clear(); }
//Clears internal data including path, pools reuasable bits public void Clear() { UnityEngine.Profiling.Profiler.BeginSample("AStar.Clear"); foreach (var tileData in this._tilesData.Values) { AutoPool <TileData> .Dispose(tileData); } this._tilesData.Clear(); this._openedSorted.Clear(); this._opened.Clear(); this._closed.Clear(); this._path.Clear(); UnityEngine.Profiling.Profiler.EndSample(); }
public bool Clear(Vector2Int tile, bool shallowCleanup = false) { TileData tileData; if (this._tiles.TryGetValue(tile, out tileData)) { this._tiles.Remove(tile); tileData.Clear(shallowCleanup); AutoPool <TileData> .Dispose(tileData); return(true); } return(false); }
protected virtual TileData InitTileData(T nTile, TileData prevTileData) { UnityEngine.Profiling.Profiler.BeginSample("AStar.InitTileData"); TileData data = AutoPool <TileData> .Create(); this._tilesData.Add(nTile, data); data._tile = nTile; data._prev = prevTileData != null ? prevTileData._tile : default(T); data._ancestors = this.CalculateAncestors(prevTileData); //calling heuristic() must remain after everthing else so it is possible for it to poll for the tile ancestors in the heuristic calculation data._heuristic = this._heuristic(nTile, this._to) + data._ancestors; UnityEngine.Profiling.Profiler.EndSample(); return(data); }
public void UnsetTileData <V>(Vector2Int tile, IDataIdentifier dataIdentifier) { TileData tileData; if (this._tiles.TryGetValue(tile, out tileData)) { if (tileData.UnsetValue <V>(dataIdentifier)) { if (!tileData.HasValues()) { this._tiles.Remove(tile); tileData.Clear(true); AutoPool <TileData> .Dispose(tileData); } } } }
public void SetTileData <V>(Vector2Int tile, IDataIdentifier dataIdentifier, V data) { TileData tileData; if (!this._tiles.TryGetValue(tile, out tileData)) { if (!Equals(default(V), data)) { tileData = AutoPool <TileData> .Create(); this._tiles.Add(tile, tileData); } else { return; } } tileData.SetValue(dataIdentifier, data); }