public void OnDestroy() { foreach (var panel in customPanels) { panel.Disable(); } customPanels.Clear(); sceneExplorer = null; }
public void Awake() { sceneExplorer = FindObjectOfType <SceneExplorer>(); if (sceneExplorer != null) { CreateBuildingsPanels(); CreateVehiclePanels(); CreateCitizenPanels(); CreateLinePanel(); CreateDistrictPanels(); CreateRoadPanel(); } }
public override void ConstructPanelContent() { // Tab bar var tabGroup = UIFactory.CreateHorizontalGroup(uiContent, "TabBar", true, true, true, true, 2, new Vector4(2, 2, 2, 2)); UIFactory.SetLayoutElement(tabGroup, minHeight: 25, flexibleHeight: 0); // Scene Explorer SceneExplorer = new SceneExplorer(this); SceneExplorer.ConstructUI(uiContent); tabPages.Add(SceneExplorer); // Object search ObjectSearch = new ObjectSearch(this); ObjectSearch.ConstructUI(uiContent); tabPages.Add(ObjectSearch); // set up tabs AddTabButton(tabGroup, "Scene Explorer"); AddTabButton(tabGroup, "Object Search"); // default active state: Active UIManager.SetPanelActive(PanelType, true); }
public void Initialize(SimulationManager.UpdateMode _updateMode) { updateMode = _updateMode; if (!loggingInitialized) { Application.logMessageReceived += (condition, trace, type) => { if (!logExceptionsToConsole) { return; } if (Instance.console != null) { Instance.console.AddMessage(String.Format("{0} ({1})", condition, trace), type, true); return; } if (type == LogType.Error || type == LogType.Exception || type == LogType.Assert) { Log.Error(condition); } else if (type == LogType.Warning) { Log.Warning(condition); } else { Log.Message(condition); } }; loggingInitialized = true; } sceneExplorer = gameObject.AddComponent<SceneExplorer>(); watches = gameObject.AddComponent<Watches>(); colorPicker = gameObject.AddComponent<ColorPicker>(); sceneExplorerColorConfig = gameObject.AddComponent<SceneExplorerColorConfig>(); LoadConfig(); if (extendGamePanels && (updateMode == SimulationManager.UpdateMode.NewGame || updateMode == SimulationManager.UpdateMode.LoadGame)) { panelExtender = gameObject.AddComponent<GamePanelExtender>(); } if (useModToolsConsole) { console = gameObject.AddComponent<Console>(); } if (config.hookUnityLogging) { UnityLoggingHook.EnableHook(); } if (updateMode == SimulationManager.UpdateMode.Undefined && config.improvedWorkshopIntegration) { ImprovedWorkshopIntegration.Bootstrap(); } }
void Update() { if (!initializedBuildingsPanel) { sceneExplorer = FindObjectOfType<SceneExplorer>(); buildingsBufferRefChain = new ReferenceChain(); buildingsBufferRefChain = buildingsBufferRefChain.Add(BuildingManager.instance.gameObject); buildingsBufferRefChain = buildingsBufferRefChain.Add(BuildingManager.instance); buildingsBufferRefChain = buildingsBufferRefChain.Add(typeof(BuildingManager).GetField("m_buildings")); buildingsBufferRefChain = buildingsBufferRefChain.Add(typeof(Array16<Building>).GetField("m_buffer")); zonedBuildingInfoPanel = GameObject.Find("(Library) ZonedBuildingWorldInfoPanel").GetComponent<ZonedBuildingWorldInfoPanel>(); if (zonedBuildingInfoPanel != null) { AddZonedBuildingPanelControls(); initializedBuildingsPanel = true; } } if (zonedBuildingInfoPanel.component.isVisible) { InstanceID instance = Util.GetPrivate<InstanceID>(zonedBuildingInfoPanel, "m_InstanceID"); var building = BuildingManager.instance.m_buildings.m_buffer[instance.Building]; zonedBuildingAssetNameLabel.text = "AssetName: " + building.Info.name; } }
void Update() { if (!initializedZonedBuildingsPanel) { sceneExplorer = FindObjectOfType<SceneExplorer>(); buildingsBufferRefChain = new ReferenceChain(); buildingsBufferRefChain = buildingsBufferRefChain.Add(BuildingManager.instance.gameObject); buildingsBufferRefChain = buildingsBufferRefChain.Add(BuildingManager.instance); buildingsBufferRefChain = buildingsBufferRefChain.Add(typeof(BuildingManager).GetField("m_buildings")); buildingsBufferRefChain = buildingsBufferRefChain.Add(typeof(Array16<Building>).GetField("m_buffer")); zonedBuildingInfoPanel = GameObject.Find("(Library) ZonedBuildingWorldInfoPanel").GetComponent<ZonedBuildingWorldInfoPanel>(); if (zonedBuildingInfoPanel != null) { AddBuildingPanelControls(zonedBuildingInfoPanel, out zonedBuildingAssetNameLabel, out zonedBuildingShowExplorerButton, new Vector3(-8.0f, 100.0f, 0.0f), out zonedBuildingDumpMeshTextureButton, new Vector3(-8.0f, 132.0f, 0.0f) ); initializedZonedBuildingsPanel = true; } } if (!initializedServiceBuildingsPanel) { sceneExplorer = FindObjectOfType<SceneExplorer>(); serviceBuildingInfoPanel = GameObject.Find("(Library) CityServiceWorldInfoPanel").GetComponent<CityServiceWorldInfoPanel>(); if (serviceBuildingInfoPanel != null) { AddBuildingPanelControls(serviceBuildingInfoPanel, out serviceBuildingAssetNameLabel, out serviceBuildingShowExplorerButton, new Vector3(-8.0f, 100.0f, 0.0f), out serviceBuildingDumpMeshTextureButton, new Vector3(-8.0f, 132.0f, 0.0f) ); initializedServiceBuildingsPanel = true; } } if (!initializedCitizenVehiclePanel) { sceneExplorer = FindObjectOfType<SceneExplorer>(); vehiclesBufferRefChain = new ReferenceChain(); vehiclesBufferRefChain = vehiclesBufferRefChain.Add(VehicleManager.instance.gameObject); vehiclesBufferRefChain = vehiclesBufferRefChain.Add(VehicleManager.instance); vehiclesBufferRefChain = vehiclesBufferRefChain.Add(typeof(VehicleManager).GetField("m_vehicles")); vehiclesBufferRefChain = vehiclesBufferRefChain.Add(typeof(Array16<Vehicle>).GetField("m_buffer")); vehiclesParkedBufferRefChain = new ReferenceChain(); vehiclesParkedBufferRefChain = vehiclesParkedBufferRefChain.Add(VehicleManager.instance.gameObject); vehiclesParkedBufferRefChain = vehiclesParkedBufferRefChain.Add(VehicleManager.instance); vehiclesParkedBufferRefChain = vehiclesParkedBufferRefChain.Add(typeof(VehicleManager).GetField("m_parkedVehicles")); vehiclesParkedBufferRefChain = vehiclesParkedBufferRefChain.Add(typeof(Array16<VehicleParked>).GetField("m_buffer")); citizenVehicleInfoPanel = GameObject.Find("(Library) CitizenVehicleWorldInfoPanel").GetComponent<CitizenVehicleWorldInfoPanel>(); if (citizenVehicleInfoPanel != null) { AddVehiclePanelControls( citizenVehicleInfoPanel, out citizenVehicleAssetNameLabel, out citizenVehicleShowExplorerButton, out citizenVehicleDumpTextureMeshButton ); initializedCitizenVehiclePanel = true; } } if (!initializedCityServiceVehiclePanel) { sceneExplorer = FindObjectOfType<SceneExplorer>(); cityServiceVehicleInfoPanel = GameObject.Find("(Library) CityServiceVehicleWorldInfoPanel").GetComponent<CityServiceVehicleWorldInfoPanel>(); if (cityServiceVehicleInfoPanel != null) { AddVehiclePanelControls( cityServiceVehicleInfoPanel, out cityServiceVehicleAssetNameLabel, out cityServiceVehicleShowExplorerButton, out cityServiceVehicleDumpTextureMeshButton); initializedCityServiceVehiclePanel = true; } } if (!initializedPublicTransportVehiclePanel) { sceneExplorer = FindObjectOfType<SceneExplorer>(); publicTransportVehicleInfoPanel = GameObject.Find("(Library) PublicTransportVehicleWorldInfoPanel").GetComponent<PublicTransportVehicleWorldInfoPanel>(); if (publicTransportVehicleInfoPanel != null) { AddVehiclePanelControls( publicTransportVehicleInfoPanel, out publicTransportVehicleAssetNameLabel, out publicTransportVehicleShowExplorerButton, out publicTransportVehicleDumpTextureMeshButton); initializedPublicTransportVehiclePanel = true; } } if (zonedBuildingInfoPanel.component.isVisible) { InstanceID instance = Util.GetPrivate<InstanceID>(zonedBuildingInfoPanel, "m_InstanceID"); var building = BuildingManager.instance.m_buildings.m_buffer[instance.Building]; zonedBuildingAssetNameLabel.text = "AssetName: " + building.Info.name; } if (serviceBuildingInfoPanel.component.isVisible) { InstanceID instance = Util.GetPrivate<InstanceID>(serviceBuildingInfoPanel, "m_InstanceID"); var building = BuildingManager.instance.m_buildings.m_buffer[instance.Building]; serviceBuildingAssetNameLabel.text = "AssetName: " + building.Info.name; } if (citizenVehicleInfoPanel.component.isVisible) { InstanceID instance = Util.GetPrivate<InstanceID>(citizenVehicleInfoPanel, "m_InstanceID"); if (instance.Vehicle == 0) { var vehicle = VehicleManager.instance.m_parkedVehicles.m_buffer[instance.ParkedVehicle]; citizenVehicleAssetNameLabel.text = "AssetName: " + vehicle.Info.name; } else { var vehicle = VehicleManager.instance.m_vehicles.m_buffer[instance.Vehicle]; citizenVehicleAssetNameLabel.text = "AssetName: " + vehicle.Info.name; } } if (cityServiceVehicleInfoPanel.component.isVisible) { InstanceID instance = Util.GetPrivate<InstanceID>(cityServiceVehicleInfoPanel, "m_InstanceID"); if (instance.Vehicle == 0) { var vehicle = VehicleManager.instance.m_parkedVehicles.m_buffer[instance.ParkedVehicle]; cityServiceVehicleAssetNameLabel.text = "AssetName: " + vehicle.Info.name; } else { var vehicle = VehicleManager.instance.m_vehicles.m_buffer[instance.Vehicle]; cityServiceVehicleAssetNameLabel.text = "AssetName: " + vehicle.Info.name; } } if (publicTransportVehicleInfoPanel.component.isVisible) { InstanceID instance = Util.GetPrivate<InstanceID>(publicTransportVehicleInfoPanel, "m_InstanceID"); if (instance.Vehicle == 0) { var vehicle = VehicleManager.instance.m_parkedVehicles.m_buffer[instance.ParkedVehicle]; publicTransportVehicleAssetNameLabel.text = "AssetName: " + vehicle.Info.name; } else { var vehicle = VehicleManager.instance.m_vehicles.m_buffer[instance.Vehicle]; publicTransportVehicleAssetNameLabel.text = "AssetName: " + vehicle.Info.name; } } }
public RemoteInspectorServer(ushort port = 8080) : base(port) { var viewEngine = new NustacheViewEngine("Views"); Use("/ping", (request, response, path) => { if (path != "") { return(false); } response.Send("pong"); return(true); }); Use("/api/go", new GameObjectExplorerService()); Use((request, response, relativePath) => { Dictionary <string, object> content = null; var found = false; Exception error = null; UnityMainThreadDispatcher.Instance().EnqueueAndWait(() => { try { // remove leading '/' relativePath = relativePath.Substring(1); if (string.IsNullOrEmpty(relativePath)) { content = SceneExplorer.InspectRoot(); found = true; } else { var gameObject = GameObject.Find(relativePath); if (gameObject == null) { found = false; } else { found = true; content = SceneExplorer.InspectGameObject(gameObject); var idString = request.QueryString.Get("id"); var componentId = 0; var findTargetId = !string.IsNullOrEmpty(idString) && int.TryParse(idString, out componentId); if (findTargetId) { content["componentDetails"] = SceneExplorer.CreateRemoteView(gameObject .GetComponents <Component>() .First(comp => comp.GetInstanceID() == componentId)); var properties = (List <SceneExplorer.RemoteProperty>)((IDictionary <string, object>)content[ "componentDetails"])["properties"]; for (int i = 0; i < properties.Count; i++) { var property = properties[i]; property.value = JsonConvert.SerializeObject(property.value, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, ContractResolver = new IgnorePropertiesContractResolver() }); properties[i] = property; } } } } } catch (Exception exception) { error = exception; } }); if (error != null) { LogException(error); response.SendException(error); return(true); } if (!found) { return(false); } try { const string viewPath = "index.html"; // var contentJson = JsonConvert.SerializeObject( content, Formatting.Indented, new JsonSerializerSettings // { // NullValueHandling = NullValueHandling.Ignore, // ReferenceLoopHandling = ReferenceLoopHandling.Ignore, // ContractResolver = new IgnorePropertiesContractResolver() // } ); // // var renderContext = JsonHelper.Deserialize( contentJson ) as Dictionary<string, object>; var responseContent = viewEngine.Render(viewPath, content); response.Send(responseContent, MimeTypes.Text.Html); return(true); } catch (ViewNotFoundException) { LogError("Main interface view not found"); return(false); } }); Use(new StaticFileServer("Assets")); }
public bool HandleRequest(HttpListenerRequest request, HttpListenerResponse response, string relativePath) { var objectPath = relativePath.Substring(1); Dictionary <string, object> content = null; Exception error = null; var failContent = new Dictionary <string, object>(); UnityMainThreadDispatcher.Instance().EnqueueAndWait(() => { try { if (objectPath == "") { content = SceneExplorer.InspectRoot(); } else { var gameObject = GameObject.Find(objectPath); if (gameObject == null) { error = new ObjectNotFoundException(objectPath); return; } content = SceneExplorer.InspectGameObject(gameObject); var idString = request.QueryString.Get("id"); var componentId = 0; var findTargetId = !string.IsNullOrEmpty(idString) && int.TryParse(idString, out componentId); if (findTargetId) { content["component"] = SceneExplorer.CreateRemoteView(gameObject .GetComponents <Component>() .First(comp => comp.GetInstanceID() == componentId)); } } } catch (Exception exception) { error = exception; } }); if (error != null) { response.SendJson(JsonReponse.Error(error.Message)); } else if (failContent.Count > 0) { response.SendJson(JsonReponse.Fail(failContent)); } else { response.SendJson(JsonReponse.Success(content)); } return(true); }