private IEnumerator RenderRoutine(BattleView view, List <Unit> targets) { var gainX = Random.Range(0, data.gainX * 2) - data.gainX; var gainY = Random.Range(0, data.gainY * 2) - data.gainY; var mirrorHoriz = Random.Range(0, 2) == 0; var mirrorVert = Random.Range(0, 2) == 0; var sprite = AnimFrameSpriteComponent.SpriteForStep(data.anim.steps[0]); var rows = Mathf.CeilToInt((float)data.count / data.cols); var width = (int)(data.cols * (sprite.bounds.size.x * 16 + data.padX) + (rows * gainX)); var height = (int)(rows * (sprite.bounds.size.y * 16 + data.padY) + (data.cols * gainY)); var startX = -1 * width / 2; var startY = -1 * height / 2; for (var i = 0; i < data.count; i += 1) { int col = i % data.cols; int row = (i - col) / rows; var offX = (int)(startX + col * (sprite.bounds.size.x * 16 + data.padX) + (gainX * row) + (Random.Range(0, 1.0f) * data.jitterX * 2) - data.jitterX); var offY = (int)(startY + row * (sprite.bounds.size.y * 16 + data.padY) + (gainY * col) + (Random.Range(0, 1.0f) * data.jitterY * 2) - data.jitterY); if (mirrorHoriz) { offX *= -1; } if (mirrorVert) { offY *= -1; } view.StartCoroutine(RenderStripRoutine(view, targets, new Vector2(offX, offY))); yield return(CoUtils.Wait(data.delay)); } while (finished < data.count) { yield return(null); } }
public void DisposeFrame(AnimFrameSpriteComponent frame) { Pool.FreeInstance(frame.gameObject); }