/*void OnDrawGizmosSelected() * { * Gizmos.color = Color.black; * Gizmos.DrawWireSphere(transform.position, Range.BaseValue); * }*/ /*----------------------- UTILITY FUNCTIONS FOR ALL TOWERS -----------------------*/ #region UTILITY_FUNCTIONS_ALL_TOWERS public Collider[] Targets(Transform towerTransform, Tower.TargetType type, Collider[] inRange, int count = default(int)) { switch (type) { case Tower.TargetType.Closest: { inRange = inRange.OrderBy(x => Vector3.Distance(towerTransform.position, x.transform.position)).ToArray(); return(inRange.Take(count).ToArray()); } case Tower.TargetType.Lowest: { inRange = inRange.OrderBy(x => x.GetComponent <Enemy>().Health).ToArray(); return(inRange.Take(count).ToArray()); } case Tower.TargetType.Furthest: { inRange = inRange.OrderBy(x => Vector3.Distance(towerTransform.position, x.transform.position)).ToArray(); inRange.Reverse(); return(inRange.Take(count).ToArray()); } case Tower.TargetType.Around: { inRange = inRange.OrderBy(x => Vector3.Distance(towerTransform.position, x.transform.position)).ToArray(); return(inRange); } } return(null); }
private void Awake() { tower.TargetTower = this.gameObject; this.name = tower.name; damage = tower.Damage; range = tower.Range; fireRate = tower.FireRate; cooldown = tower.PowerCooldown; procChance = tower.ProcChance; targetableLayers = tower.targetableLayers; targettype = tower.targettype; if (tower.AestheticMesh) { this.GetComponent <MeshFilter>().mesh = tower.AestheticMesh.GetComponent <MeshFilter>().sharedMesh; } }