// Sample code to show how to use decorators to assign a texsture void TextureSample() { // Assign a flag texture to USA string countryName = "United States of America"; CountryDecorator decorator = new CountryDecorator(); decorator.isColorized = true; decorator.texture = Resources.Load <Texture2D> ("Flags/flagUSA"); map.decorator.SetCountryDecorator(0, countryName, decorator); // Assign a flag texture to Brazil with vertical offset countryName = "Brazil"; decorator = new CountryDecorator(); decorator.isColorized = true; decorator.texture = Resources.Load <Texture2D> ("Flags/flagBrazil"); decorator.textureOffset = Misc.Vector2down * 2.4f; map.decorator.SetCountryDecorator(0, countryName, decorator); }
// Sample code to show how to use decorators to assign a texsture void TextureSample() { // 1st way (best): assign a flag texture to USA using direct API - this texture will get cleared when you call HideCountrySurfaces() Texture2D texture = Resources.Load <Texture2D> ("flagUSA"); int countryIndex = map.GetCountryIndex("United States of America"); map.ToggleCountrySurface(countryIndex, true, Color.white, texture); // 2nd way: assign a flag texture to Brazil using decorator - the texture will stay when you call HideCountrySurfaces() string countryName = "Brazil"; CountryDecorator decorator = new CountryDecorator(); decorator.isColorized = true; decorator.texture = Resources.Load <Texture2D> ("flagBrazil"); decorator.textureOffset = Misc.Vector2down * 2.4f; map.decorator.SetCountryDecorator(0, countryName, decorator); Debug.Log("USA flag added with direct API."); Debug.Log("Brazil flag added with decorator (persistent texture)."); }
// Sample code to show how to use decorators to assign a texsture void TextureSample() { // Assign a flag texture to USA string countryName = "United States of America"; CountryDecorator decorator = new CountryDecorator(); decorator.isColorized = true; decorator.texture = Resources.Load <Texture2D> ("flagUSA"); map.decorator.SetCountryDecorator(0, countryName, decorator); // Assign a flag texture to Brazil with vertical offset countryName = "Brazil"; decorator = new CountryDecorator(); decorator.isColorized = true; decorator.texture = Resources.Load <Texture2D> ("flagBrazil"); decorator.textureOffset = -Vector2.up * 2.5f; map.decorator.SetCountryDecorator(0, countryName, decorator); // Fly to Mexico (just to see both USA and Brazil on the screen) map.FlyToCountry("Mexico", 3); map.autoRotationSpeed = 0; // stops auto-rotating }
public override void OnInspectorGUI() { if (_decorator == null) { return; } bool requestChanges = false; EditorGUILayout.Separator(); EditorGUILayout.BeginVertical(blackStyle); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Group", GUILayout.Width(120)); int oldGroup = _decorator.GUIGroupIndex; _decorator.GUIGroupIndex = EditorGUILayout.Popup(_decorator.GUIGroupIndex, groupNames, GUILayout.MaxWidth(200)); if (_decorator.GUIGroupIndex != oldGroup || decoratorGroup == null) { decoratorGroup = _decorator.GetDecoratorGroup(_decorator.GUIGroupIndex, true); } if (GUILayout.Button("Clear")) { _decorator.ClearDecoratorGroup(_decorator.GUIGroupIndex); if (decorator != null) { decorator.isNew = true; } ReloadGroupNames(); _decorator.ReloadCountryNames(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Enabled", GUILayout.Width(120)); decoratorGroup.active = EditorGUILayout.Toggle(decoratorGroup.active, GUILayout.Width(20)); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); // country selector EditorGUILayout.BeginHorizontal(); GUILayout.Label("Country", GUILayout.Width(120)); if (_decorator.lastCountryCount != _map.countries.Length) { _decorator.ReloadCountryNames(); } int selection = EditorGUILayout.Popup(_decorator.GUICountryIndex, _decorator.countryNames); if (selection != _decorator.GUICountryIndex) { SetCountryFromCombo(selection); } bool prevc = _decorator.groupByContinent; GUILayout.Label("Grouped"); _decorator.groupByContinent = EditorGUILayout.Toggle(_decorator.groupByContinent, GUILayout.Width(20)); if (_decorator.groupByContinent != prevc) { _decorator.ReloadCountryNames(); } EditorGUILayout.EndHorizontal(); // type of decoration if (_decorator.GUICountryName.Length > 0) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("", GUILayout.Width(120)); if (GUILayout.Button("Toggle Zoom")) { ToggleZoomState(); } EditorGUILayout.EndHorizontal(); CountryDecorator existingDecorator = _decorator.GetCountryDecorator(_decorator.GUIGroupIndex, _decorator.GUICountryName); if (existingDecorator != null) { decorator = existingDecorator; } else if (decorator == null || !decorator.countryName.Equals(_decorator.GUICountryName)) { decorator = new CountryDecorator(_decorator.GUICountryName); } EditorGUILayout.BeginHorizontal(); GUILayout.Label("Hidden", GUILayout.Width(120)); bool prevHidden = decorator.hidden; decorator.hidden = EditorGUILayout.Toggle(decorator.hidden); if (prevHidden != decorator.hidden) { requestChanges = true; } EditorGUILayout.EndHorizontal(); if (!decorator.hidden) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Label Visible", GUILayout.Width(120)); bool prevLabelVisible = decorator.labelVisible; decorator.labelVisible = EditorGUILayout.Toggle(decorator.labelVisible); if (prevLabelVisible != decorator.labelVisible) { requestChanges = true; } EditorGUILayout.EndHorizontal(); if (decorator.labelVisible) { EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Text", GUILayout.Width(120)); string prevLabel = decorator.customLabel; decorator.customLabel = EditorGUILayout.TextField(decorator.customLabel); if (!prevLabel.Equals(decorator.customLabel)) { requestChanges = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Font", GUILayout.Width(120)); Font prevFont = decorator.labelFontOverride; decorator.labelFontOverride = (Font)EditorGUILayout.ObjectField(decorator.labelFontOverride, typeof(Font), false); if (decorator.labelFontOverride != prevFont) { requestChanges = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Custom Color", GUILayout.Width(120)); decorator.labelOverridesColor = EditorGUILayout.Toggle(decorator.labelOverridesColor, GUILayout.Width(40)); if (decorator.labelOverridesColor) { GUILayout.Label("Color", GUILayout.Width(40)); Color prevColor = decorator.labelColor; decorator.labelColor = EditorGUILayout.ColorField(decorator.labelColor, GUILayout.Width(50)); if (prevColor != decorator.labelColor) { requestChanges = true; } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Custom Size", GUILayout.Width(120)); decorator.labelOverridesFontSize = EditorGUILayout.Toggle(decorator.labelOverridesFontSize, GUILayout.Width(40)); if (decorator.labelOverridesFontSize) { GUILayout.Label("Size", GUILayout.Width(40)); float prevSize = decorator.labelFontSize; decorator.labelFontSize = EditorGUILayout.Slider(decorator.labelFontSize, 0.01f, 1.0f); if (prevSize != decorator.labelFontSize) { requestChanges = true; } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Offset", GUILayout.Width(120)); Vector2 prevLabelOffset = decorator.labelOffset; decorator.labelOffset = EditorGUILayout.Vector2Field("", decorator.labelOffset); if (prevLabelOffset != decorator.labelOffset) { requestChanges = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Rotation", GUILayout.Width(120)); float prevLabelRotation = decorator.labelRotation; decorator.labelRotation = EditorGUILayout.Slider(decorator.labelRotation, 0, 359); if (prevLabelRotation != decorator.labelRotation) { requestChanges = true; } EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); GUILayout.Label("Colorized", GUILayout.Width(120)); decorator.isColorized = EditorGUILayout.Toggle(decorator.isColorized); if (decorator.isColorized) { GUILayout.Label("Fill Color", GUILayout.Width(120)); Color prevColor = decorator.fillColor; decorator.fillColor = EditorGUILayout.ColorField(decorator.fillColor, GUILayout.Width(50)); if (prevColor != decorator.fillColor) { requestChanges = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Texture", GUILayout.Width(120)); Texture2D prevTexture = decorator.texture; decorator.texture = (Texture2D)EditorGUILayout.ObjectField(decorator.texture, typeof(Texture2D), false); if (decorator.texture != prevTexture) { requestChanges = true; } if (decorator.texture != null) { EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Scale", GUILayout.Width(120)); Vector2 prevVector = decorator.textureScale; decorator.textureScale = EditorGUILayout.Vector2Field("", decorator.textureScale); if (prevVector != decorator.textureScale) { requestChanges = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Offset", GUILayout.Width(120)); prevVector = decorator.textureOffset; decorator.textureOffset = EditorGUILayout.Vector2Field("", decorator.textureOffset); if (prevVector != decorator.textureOffset) { requestChanges = true; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label(" Rotation", GUILayout.Width(120)); float prevFloat = decorator.textureRotation; decorator.textureRotation = EditorGUILayout.Slider(decorator.textureRotation, 0, 360); if (prevFloat != decorator.textureRotation) { requestChanges = true; } } EditorGUILayout.EndHorizontal(); } else { EditorGUILayout.EndHorizontal(); } } EditorGUILayout.BeginHorizontal(); if (decorator.isNew) { if (GUILayout.Button("Assign")) { _decorator.SetCountryDecorator(_decorator.GUIGroupIndex, _decorator.GUICountryName, decorator); ReloadGroupNames(); _decorator.ReloadCountryNames(); } } else if (GUILayout.Button("Remove")) { decorator = null; _decorator.RemoveCountryDecorator(_decorator.GUIGroupIndex, _decorator.GUICountryName); ReloadGroupNames(); _decorator.ReloadCountryNames(); } EditorGUILayout.EndHorizontal(); if (!decoratorGroup.active) { DrawWarningLabel("Enable the decoration group to activate changes"); } } EditorGUILayout.EndVertical(); if (requestChanges) { _decorator.ForceUpdateDecorators(); } }