void Start() { labelStyle = new GUIStyle(); labelStyle.normal.textColor = Color.white; buttonStyle = new GUIStyle(labelStyle); buttonStyle.alignment = TextAnchor.MiddleLeft; buttonStyle.normal.background = Texture2D.whiteTexture; buttonStyle.normal.textColor = Color.white; sliderStyle = new GUIStyle(); sliderStyle.normal.background = Texture2D.whiteTexture; sliderStyle.fixedHeight = 4.0f; sliderThumbStyle = new GUIStyle(); sliderThumbStyle.normal.background = Resources.Load <Texture2D> ("thumb"); sliderThumbStyle.overflow = new RectOffset(0, 0, 8, 0); sliderThumbStyle.fixedWidth = 20.0f; sliderThumbStyle.fixedHeight = 12.0f; // setup GUI resizer - only for the demo GUIResizer.Init(800, 500); // Get map instance to Globe API methods map = WorldMapGlobe.instance; map.OnDrag += ClearFoW; // Load prefab GameObject tower = Resources.Load <GameObject>("Tower/Tower"); // Colorize some countries for (int colorizeIndex = 0; colorizeIndex < map.countries.Length; colorizeIndex++) { Country country = map.countries[colorizeIndex]; if (country.continent.Equals("Europe")) { // Color country surface Color color = new Color(UnityEngine.Random.Range(0.0f, 1.0f), UnityEngine.Random.Range(0.0f, 1.0f), UnityEngine.Random.Range(0.0f, 1.0f), 0.2f); map.ToggleCountrySurface(country.name, true, color); // Clear fog around the country map.SetFogOfWarAlpha(country, 0, 0.1f); // Add a random moving sphere for this country GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Sphere); obj.transform.SetParent(map.transform, false); obj.transform.localScale = Vector3.one * 0.02f; obj.transform.localPosition = country.sphereCenter; obj.AddComponent <AnimateSphereAround>(); // Set a random color for the sphere obj.GetComponent <Renderer>().material.color = new Color(Random.value, Random.value, Random.value); // Add a tower on the center of the country GameObject thisTower = Instantiate(tower); map.AddMarker(thisTower, country.sphereCenter, 0.15f, false, 0, true); } } // Center on Paris map.FlyToCity(map.GetCity("France", "Paris")); }
void AddPanel() { // If previous panel exists, destroy it if (currentPanel != null) { Destroy(currentPanel); } // Instantiate panel currentPanel = Instantiate <GameObject> (prefab); // Update panel texts Text countryName, provinceName, cityName, population; countryName = currentPanel.transform.Find("Panel/RowCountry/CountryName").GetComponent <Text> (); provinceName = currentPanel.transform.Find("Panel/RowProvince/ProvinceName").GetComponent <Text> (); cityName = currentPanel.transform.Find("Panel/RowCity/CityName").GetComponent <Text> (); population = currentPanel.transform.Find("Panel/RowCityData1/CityData1Value").GetComponent <Text> (); // Gets a random city and populate data int cityIndex = Random.Range(0, map.cities.Count - 1); City city = map.GetCity(cityIndex); cityName.text = city.name; population.text = city.population.ToString(); countryName.text = map.GetCityCountryName(cityIndex); provinceName.text = map.GetCityProvinceName(cityIndex); // Position the canvas over the globe float distaceToGlobeCenter = 1.2f; Vector3 worldPos = map.transform.TransformPoint(city.unitySphereLocation * distaceToGlobeCenter); currentPanel.transform.position = worldPos; // Draw a circle around the city map.AddMarker(MARKER_TYPE.CIRCLE_PROJECTED, city.unitySphereLocation, 100, 0.8f, 1f, Color.green); // Parent the panel to the globe so it rotates with it currentPanel.transform.SetParent(map.transform, true); // Finally fly to city to show the panel map.FlyToCity(cityIndex, 2f); }
// Update is called once per frame void OnGUI() { // Animates the camera field of view (just a cool effect at the begining) if (animatingField) { if (Camera.main.fieldOfView > 60) { Camera.main.fieldOfView -= (181.0f - Camera.main.fieldOfView) / (220.0f - Camera.main.fieldOfView); } else { Camera.main.fieldOfView = 60; animatingField = false; } } // Do autoresizing of GUI layer GUIResizer.AutoResize(); // Check whether a country or city is selected, then show a label if (map.mouseIsOver) { string text; Vector3 mousePos = Input.mousePosition; float x, y; if (map.countryHighlighted != null || map.cityHighlighted != null) { if (map.cityHighlighted != null) { text = "City: " + map.cityHighlighted.name + " (" + map.countries[map.cityHighlighted.countryIndex].name + ")"; } else if (map.countryHighlighted != null) { text = map.countryHighlighted.name + " (" + map.countryHighlighted.continent + ")"; } else { text = ""; } x = GUIResizer.authoredScreenWidth * (mousePos.x / Screen.width); y = GUIResizer.authoredScreenHeight - GUIResizer.authoredScreenHeight * (mousePos.y / Screen.height) - 20 * (Input.touchSupported ? 3 : 1); // slightly up for touch devices GUI.Label(new Rect(x - 1, y - 1, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x + 1, y + 2, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x + 2, y + 3, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x + 3, y + 4, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x, y, 0, 10), text, labelStyle); } } // Assorted options to show/hide frontiers, cities, Earth and enable country highlighting map.showFrontiers = GUI.Toggle(new Rect(10, 20, 150, 30), map.showFrontiers, "Toggle Frontiers"); map.showEarth = GUI.Toggle(new Rect(10, 50, 150, 30), map.showEarth, "Toggle Earth"); map.showCities = GUI.Toggle(new Rect(10, 80, 150, 30), map.showCities, "Toggle Cities"); map.showCountryNames = GUI.Toggle(new Rect(10, 110, 150, 30), map.showCountryNames, "Toggle Labels"); map.enableCountryHighlight = GUI.Toggle(new Rect(10, 140, 170, 30), map.enableCountryHighlight, "Enable Country Highlight"); GUI.backgroundColor = new Color(0.1f, 0.1f, 0.3f, 0.5f); // Add buttons to show the color picker and change colors for the frontiers or fill if (GUI.Button(new Rect(10, 170, 160, 30), " Change Frontiers Color", buttonStyle)) { colorPicker.showPicker = true; changingFrontiersColor = true; } if (GUI.Button(new Rect(10, 210, 160, 30), " Change Fill Color", buttonStyle)) { colorPicker.showPicker = true; changingFrontiersColor = false; } if (colorPicker.showPicker) { if (changingFrontiersColor) { map.frontiersColor = colorPicker.setColor; } else { map.fillColor = colorPicker.setColor; } } // Add a button which demonstrates the navigateTo functionality -- pass the name of a country // For a list of countries and their names, check map.Countries collection. if (GUI.Button(new Rect(10, 250, 180, 30), " Fly to Argentina (Country)", buttonStyle)) { FlyToCountry("Argentina"); } if (GUI.Button(new Rect(10, 285, 180, 30), " Fly to Mexico (Country)", buttonStyle)) { FlyToCountry("Mexico"); } if (GUI.Button(new Rect(10, 325, 180, 30), " Fly to San Francisco (City)", buttonStyle)) { FlyToCity("San Francisco"); } if (GUI.Button(new Rect(10, 365, 180, 30), " Fly to Madrid (City)", buttonStyle)) { FlyToCity("Madrid"); } // Slider to show the new set zoom level API in V4.1 GUI.Button(new Rect(10, 430, 85, 30), " Zoom Level", buttonStyle); float prevZoomLevel = zoomLevel; GUI.backgroundColor = Color.white; zoomLevel = GUI.HorizontalSlider(new Rect(100, 445, 80, 85), zoomLevel, 0, 1, sliderStyle, sliderThumbStyle); GUI.backgroundColor = new Color(0.1f, 0.1f, 0.3f, 0.95f); if (zoomLevel != prevZoomLevel) { prevZoomLevel = zoomLevel; map.SetZoomLevel(zoomLevel); } // Add a button to colorize countries if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 20, 180, 30), " Colorize Europe", buttonStyle)) { map.FlyToCity("Brussels"); for (int colorizeIndex = 0; colorizeIndex < map.countries.Length; colorizeIndex++) { if (map.countries [colorizeIndex].continent.Equals("Europe")) { Color color = new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f)); map.ToggleCountrySurface(map.countries [colorizeIndex].name, true, color); } } } // Colorize random country and fly to it if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 60, 180, 30), " Colorize Random", buttonStyle)) { map.FlyToCity("Brussels"); int countryIndex = Random.Range(0, map.countries.Length); Color color = new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f)); map.ToggleCountrySurface(countryIndex, true, color); map.FlyToCountry(countryIndex); } // Button to clear colorized countries if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 100, 180, 30), " Reset countries", buttonStyle)) { map.HideCountrySurfaces(); } // Moving the Earth sample if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 140, 180, 30), " Toggle Minimize", buttonStyle)) { ToggleMinimize(); } // Add marker sample (gameobject) if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 180, 180, 30), " Add Marker (Object)", buttonStyle)) { AddMarkerGameObjectOnRandomCity(); } // Add marker sample (gameobject) if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 220, 180, 30), " Add Marker (Circle)", buttonStyle)) { AddMarkerCircleOnRandomPosition(); } if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 260, 180, 30), " Add Trajectories", buttonStyle)) { AddTrajectories(); } }
// Sample code to show how to navigate to a city: void FlyToCity(string cityName) { map.FlyToCity(cityName); }
bool avoidGUI; // press SPACE during gameplay to hide GUI void OnGUI() { if (avoidGUI) { return; } // Do autoresizing of GUI layer GUIResizer.AutoResize(); // Check whether a country or city is selected, then show a label if (map.mouseIsOver) { string text; Vector3 mousePos = Input.mousePosition; float x, y; if (map.countryHighlighted != null || map.cityHighlighted != null || map.provinceHighlighted != null) { City city = map.cityHighlighted; if (city != null) { if (city.province != null && city.province.Length > 0) { text = "City: " + map.cityHighlighted.name + " (" + city.province + ", " + map.countries [map.cityHighlighted.countryIndex].name + ")"; } else { text = "City: " + map.cityHighlighted.name + " (" + map.countries [map.cityHighlighted.countryIndex].name + ")"; } } else if (map.provinceHighlighted != null) { text = map.provinceHighlighted.name + ", " + map.countryHighlighted.name; List <Province> neighbours = map.ProvinceNeighboursOfCurrentRegion(); if (neighbours.Count > 0) { text += "\n" + EntityListToString <Province> (neighbours); } } else if (map.countryHighlighted != null) { text = map.countryHighlighted.name + " (" + map.countryHighlighted.continent + ")"; List <Country> neighbours = map.CountryNeighboursOfCurrentRegion(); if (neighbours.Count > 0) { text += "\n" + EntityListToString <Country> (neighbours); } } else { text = ""; } x = GUIResizer.authoredScreenWidth * (mousePos.x / Screen.width); y = GUIResizer.authoredScreenHeight - GUIResizer.authoredScreenHeight * (mousePos.y / Screen.height) - 20 * (Input.touchSupported ? 3 : 1); // slightly up for touch devices GUI.Label(new Rect(x - 1, y - 1, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x + 1, y + 2, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x + 2, y + 3, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x + 3, y + 4, 0, 10), text, labelStyleShadow); GUI.Label(new Rect(x, y, 0, 10), text, labelStyle); } text = map.calc.prettyCurrentLatLon; x = GUIResizer.authoredScreenWidth / 2.0f; y = GUIResizer.authoredScreenHeight - 20; GUI.Label(new Rect(x, y, 0, 10), text, labelStyle); } // Assorted options to show/hide frontiers, cities, Earth and enable country highlighting map.showFrontiers = GUI.Toggle(new Rect(10, 20, 150, 30), map.showFrontiers, "Toggle Frontiers"); map.showEarth = GUI.Toggle(new Rect(10, 50, 150, 30), map.showEarth, "Toggle Earth"); map.showCities = GUI.Toggle(new Rect(10, 80, 150, 30), map.showCities, "Toggle Cities"); map.showCountryNames = GUI.Toggle(new Rect(10, 110, 150, 30), map.showCountryNames, "Toggle Labels"); map.showProvinces = GUI.Toggle(new Rect(10, 140, 170, 30), map.showProvinces, "Toggle Provinces"); GUI.backgroundColor = new Color(0.1f, 0.1f, 0.3f, 0.5f); // Add button to toggle Earth texture if (GUI.Button(new Rect(10, 170, 160, 30), " Change Earth style", buttonStyle)) { map.earthStyle = (EARTH_STYLE)(((int)map.earthStyle + 1) % 10); } // Add buttons to show the color picker and change colors for the frontiers or fill if (GUI.Button(new Rect(10, 210, 160, 30), " Change Frontiers Color", buttonStyle)) { colorPicker.showPicker = true; changingFrontiersColor = true; } if (GUI.Button(new Rect(10, 250, 160, 30), " Change Fill Color", buttonStyle)) { colorPicker.showPicker = true; changingFrontiersColor = false; } if (colorPicker.showPicker) { if (changingFrontiersColor) { map.frontiersColor = colorPicker.setColor; } else { map.fillColor = colorPicker.setColor; } } // Add a button which demonstrates the navigateTo functionality -- pass the name of a country // For a list of countries and their names, check map.Countries collection. if (GUI.Button(new Rect(10, 290, 180, 30), " Fly to Australia (Country)", buttonStyle)) { FlyToCountry("Australia"); } if (GUI.Button(new Rect(10, 325, 180, 30), " Fly to Mexico (Country)", buttonStyle)) { FlyToCountry("Mexico"); } if (GUI.Button(new Rect(10, 360, 180, 30), " Fly to New York (City)", buttonStyle)) { FlyToCity("New York"); } if (GUI.Button(new Rect(10, 395, 180, 30), " Fly to Madrid (City)", buttonStyle)) { FlyToCity("Madrid"); } // Slider to show the new set zoom level API in V4.1 GUI.Button(new Rect(10, 430, 85, 30), " Zoom Level", buttonStyle); float prevZoomLevel = zoomLevel; GUI.backgroundColor = Color.white; zoomLevel = GUI.HorizontalSlider(new Rect(100, 445, 80, 85), zoomLevel, 0, 1, sliderStyle, sliderThumbStyle); GUI.backgroundColor = new Color(0.1f, 0.1f, 0.3f, 0.95f); if (zoomLevel != prevZoomLevel) { prevZoomLevel = zoomLevel; map.SetZoomLevel(zoomLevel); } // Add a button to colorize countries if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 20, 180, 30), " Colorize Europe", buttonStyle)) { map.FlyToCity("Brussels"); for (int colorizeIndex = 0; colorizeIndex < map.countries.Length; colorizeIndex++) { if (map.countries [colorizeIndex].continent.Equals("Europe")) { Color color = new Color(UnityEngine.Random.Range(0.0f, 1.0f), UnityEngine.Random.Range(0.0f, 1.0f), UnityEngine.Random.Range(0.0f, 1.0f)); map.ToggleCountrySurface(map.countries [colorizeIndex].name, true, color); } } } // Colorize random country and fly to it if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 60, 180, 30), " Colorize Random", buttonStyle)) { map.FlyToCity("Brussels"); int countryIndex = UnityEngine.Random.Range(0, map.countries.Length); Color color = new Color(UnityEngine.Random.Range(0.0f, 1.0f), UnityEngine.Random.Range(0.0f, 1.0f), UnityEngine.Random.Range(0.0f, 1.0f)); map.ToggleCountrySurface(countryIndex, true, color); map.FlyToCountry(countryIndex); } // Button to clear colorized countries if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 100, 180, 30), " Reset countries", buttonStyle)) { map.HideCountrySurfaces(); } // Tickers sample if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 140, 180, 30), " Tickers Sample", buttonStyle)) { TickerSample(); } // Decorator sample if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 180, 180, 30), " Texture Sample", buttonStyle)) { TextureSample(); } // Moving the Earth sample if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 220, 180, 30), " Toggle Minimize", buttonStyle)) { ToggleMinimize(); } // Add marker sample (gameobject) if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 260, 180, 30), " Add Marker (Object)", buttonStyle)) { AddMarkerGameObjectOnRandomCity(); } // Add marker sample (gameobject) if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 300, 180, 30), " Add Marker (Circle)", buttonStyle)) { AddMarkerCircleOnRandomPosition(); } if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 340, 180, 30), " Add Trajectories", buttonStyle)) { AddTrajectories(10); } if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 380, 180, 30), " Locate Mount Point", buttonStyle)) { LocateMountPoint(); } if (GUI.Button(new Rect(GUIResizer.authoredScreenWidth - 190, 420, 180, 30), " Fire Bullet!", buttonStyle)) { FireBullet(); } }
// Sample code to show how to navigate to a city: void FlyToCity(string cityName) { int cityIndex = map.GetCityIndex(cityName); map.FlyToCity(cityIndex, 1f, 0.2f, 0.1f); }