public void Configure(SpawnConfig config, EnemyTarget target, Wave wave, PrecalculatedPath path) { // just for reference currentConfig = config; currentWave = wave; color = config.color; spriteRenderer.sprite = sprites.GetSprite(currentConfig.kind); switch (currentConfig.color) { case ColorType.Red: spriteRenderer.color = Color.red; gameObject.layer = LayerMask.NameToLayer("EnemyRed"); break; case ColorType.Green: spriteRenderer.color = Color.green; gameObject.layer = LayerMask.NameToLayer("EnemyGreen"); break; case ColorType.Blue: spriteRenderer.color = Color.blue; gameObject.layer = LayerMask.NameToLayer("EnemyBlue"); break; } health = currentConfig.health; spinner.speed = currentConfig.spinSpeed; pathFollower.speed = currentConfig.walkSpeed; pathFollower.target = target; pathFollower.UpdatePath(path.path, path.calculatedAt); }
private PrecalculatedPath GetPathToTarget(GameObject from) { PrecalculatedPath precalced; if (!precalculatedPaths.TryGetValue(@from, out precalced)) { precalced = new PrecalculatedPath { path = target.FindPathFrom(@from.transform.position), calculatedAt = Time.time }; precalculatedPaths.Add(from, precalced); } if (grid.HasChangedSince(precalced.calculatedAt)) { precalculatedPaths.Remove(from); return(GetPathToTarget(from)); } return(precalced); }