public static CameraFollowPlayer GetCameraForPlayer(PlayerTankForceMovement p) { CameraFollowPlayer[] cams = UnityEngine.Object.FindObjectsOfType <CameraFollowPlayer>() as CameraFollowPlayer[]; foreach (CameraFollowPlayer cam in cams) // TIDYME: 2018-07-07: use foreach loop // This more/less assumes that followObj has the playerTankForceMovement script... { if (cam.followObj.GetComponent <PlayerTankForceMovement>() != null && cam.followObj.GetComponent <PlayerTankForceMovement>().Equals(p)) { return(cam); } } Debug.Log("Couldn't find cam for " + p); return(null); }
public void CaptureBase (PlayerTankForceMovement buyer) { TeamBase teamBase = transform.parent.GetComponent<TeamBase>(); // Assume that BuyCaptureBase is a child of the base. if (teamBase == null) { // TIDYME: 2018-07-07: Use Assert Debug.Log("BuyCaptureBase could not find the base we're capturing!?"); } // Set the team of the base if (buyer == null) { Debug.Log("CapBase.. buyer is null"); } if (buyer.GetComponent<TeamPlayer>() == null) { Debug.Log("CapBase.. buyer TP is null"); } teamBase.team = buyer.GetComponent<TeamPlayer>().team; // Now enable all the colliders and renderers in the children... // ... for some reason, the polymorphism here was wonky. *sigh*. Component[] colliders = teamBase.GetComponentsInChildren<Collider>(true); foreach (Component collider in colliders) { collider.GetComponent<Collider>().enabled = true; } MeshRenderer[] renderers = base.transform.GetComponentsInChildren<MeshRenderer>(true); foreach (MeshRenderer renderer in renderers) { renderer.enabled = true; } TowerLive[] towers = teamBase.transform.GetComponentsInChildren<TowerLive>(true); foreach (TowerLive tower in towers) { tower.enabled = true; (tower.GetComponent<TeamPlayer>() as TeamPlayer).team = teamBase.team; tower.UpdateTextureToTeamColor(); } // And hide the buy base.. GetComponentInChildren<Renderer>().enabled = false; GetComponent<Collider>().enabled = false; }