public static TowerBase spawnTower(string prefabId, int playerId, Vector3Int tileIndex, Vector3 spawnPos) { object[] spawnData = new object[2]; spawnData[0] = playerId; spawnData[1] = tileIndex; GameObject towerObj = PhotonNetwork.Instantiate(prefabId, spawnPos, Quaternion.identity, 0, spawnData); if (!towerObj) { return(null); } TowerBase tower = towerObj.GetComponent <TowerBase>(); Assert.IsNotNull(tower); PlayerController controller = PlayerController.getController(playerId); if (controller) { controller.onTowerBuilt(tower); } // This only gets called once per server AnalyticsHelpers.reportTowerPlaced(tower, tileIndex); return(tower); }