public static void SetupSmartShowButtons(object value, TypeUtil.SmartType smartType) { if (smartType == TypeUtil.SmartType.Undefined || value == null || value.GetType().IsArray) { return; } try { switch (smartType) { case TypeUtil.SmartType.Sprite: { if (!(value is string stringValue) || !UIView.GetAView().defaultAtlas.spriteNames.Contains(stringValue)) { return; } if (GUILayout.Button("Show sprite")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForSprite(stringValue)); } break; } case TypeUtil.SmartType.ParkedVehicle: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show parked vehicle")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForParkedVehicle(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.Vehicle: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show vehicle")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForVehicle(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.Building: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show building")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForBuilding(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.CitizenUnit: { if (Convert.ToUInt32(value) < 1) { return; } if (GUILayout.Button("Show citizen unit")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForCitizenUnit(Convert.ToUInt32(value))); } break; } case TypeUtil.SmartType.Citizen: { if (Convert.ToUInt32(value) < 1) { return; } if (GUILayout.Button("Show citizen")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForCitizen(Convert.ToUInt32(value))); } break; } case TypeUtil.SmartType.TransportLine: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show transport line")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForTransportLine(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.PathUnit: { if (Convert.ToUInt32(value) < 1) { return; } if (GUILayout.Button("Show path unit")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForPathUnit(Convert.ToUInt32(value))); } break; } case TypeUtil.SmartType.NetNode: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show network node")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForNode(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.NetSegment: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show network segment")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForSegment(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.NetLane: { if (Convert.ToUInt32(value) < 1) { return; } if (GUILayout.Button("Show network lane")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForLane(Convert.ToUInt32(value))); } break; } case TypeUtil.SmartType.ParkDistrict: { if (Convert.ToByte(value) < 1) { return; } if (GUILayout.Button("Show park district")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForPark(Convert.ToByte(value))); } break; } case TypeUtil.SmartType.District: { if (Convert.ToByte(value) < 1) { return; } if (GUILayout.Button("Show district")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForDistrict(Convert.ToByte(value))); } break; } case TypeUtil.SmartType.Tree: { if (Convert.ToUInt32(value) < 1) { return; } if (GUILayout.Button("Show tree")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForTree(Convert.ToUInt32(value))); } break; } case TypeUtil.SmartType.Prop: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show prop")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForProp(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.CitizenInstance: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show citizen instance")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForCitizenInstance(Convert.ToUInt16(value))); } break; } case TypeUtil.SmartType.ZoneBlock: { if (Convert.ToUInt16(value) < 1) { return; } if (GUILayout.Button("Show zone block")) { var sceneExplorer = Object.FindObjectOfType <SceneExplorer>(); sceneExplorer.Show(ReferenceChainBuilder.ForZoneBlock(Convert.ToUInt16(value))); } break; } default: return; } } catch { // suppress } }