public void Play(Vector3 point) { Init(); var effect = pool.Take(); effect.transform.position = point; effect.Play(); App.Core.Timer.WaitForUnscaled(effect.main.duration).Done(() => pool.Return(effect)); }
public void UpdateCollisionInArea(Pos pos) { //TODO use rects //Debug.Log("GenerateCollisionInArea: " + pos.x + " , " + pos.y + ", areaWidth: " + _parameters.areaWidth + ", areaHeight:" + _parameters.areaHeight); var rect = new Rect(pos.x - _parameters.areaWidth / 2f, pos.y - _parameters.areaHeight / 2f, _parameters.areaWidth, _parameters.areaHeight); //_lastRect for (int x = (int)rect.xMin; x < (int)rect.xMax; x++) { for (int y = (int)rect.yMin; y < (int)rect.yMax; y++) { var tilePos = new Pos(x, y); var blockType = _mapInfo.GetBlockAt(tilePos); bool hasCollider = _colliders.ContainsKey(tilePos); if (blockType == BlockType.EMPTY) { if (hasCollider) { var coll = _colliders[tilePos]; _colliderPool.Return(coll); _colliders.Remove(tilePos); } continue; } if (hasCollider) { continue; } var collInst = _colliderPool.Get(); collInst.offset = new Vector2(x, y) + Vector2.one * 0.5f; collInst.size = Vector2.one; _colliders.Add(new Pos(x, y), collInst); } } _lastRect = rect; }