Exemple #1
0
 public void RemoveWatch(ReferenceChain refChain)
 {
     if (watches.Contains(refChain))
     {
         watches.Remove(refChain);
     }
 }
        public object ReadWatch(ReferenceChain refChain)
        {
            object ret = null;

            if (fieldWatches.ContainsKey(refChain))
            {
                try
                {
                    ret = fieldWatches[refChain].Key.GetValue(fieldWatches[refChain].Value);
                }
                catch (Exception)
                {
                    return(null);
                }
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                try
                {
                    ret = propertyWatches[refChain].Key.GetValue(propertyWatches[refChain].Value, null);
                }
                catch (Exception)
                {
                    return(null);
                }
            }

            return(ret);
        }
        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;
            }
        }
        public void WriteWatch(ReferenceChain refChain, object value)
        {
            if (fieldWatches.ContainsKey(refChain))
            {
                try
                {
                    fieldWatches[refChain].Key.SetValue(fieldWatches[refChain].Value, value);
                }
                catch (Exception)
                {
                    return;
                }
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                try
                {
                    propertyWatches[refChain].Key.SetValue(propertyWatches[refChain].Value, value, null);
                }
                catch (Exception)
                {
                    return;
                }
            }
        }
Exemple #5
0
        public ReferenceChain Add(Component component)
        {
            ReferenceChain copy = Copy();

            copy.chainObjects[count] = component;
            copy.chainTypes[count]   = ReferenceType.Component;
            copy.count++;
            return(copy);
        }
Exemple #6
0
        public ReferenceChain Add(string namedProperty)
        {
            ReferenceChain copy = Copy();

            copy.chainObjects[count] = namedProperty;
            copy.chainTypes[count]   = ReferenceType.SpecialNamedProperty;
            copy.count++;
            return(copy);
        }
Exemple #7
0
        public ReferenceChain Add(int index)
        {
            ReferenceChain copy = Copy();

            copy.chainObjects[count] = index;
            copy.chainTypes[count]   = ReferenceType.EnumerableItem;
            copy.count++;
            return(copy);
        }
Exemple #8
0
        public ReferenceChain Add(MethodInfo methodInfo)
        {
            ReferenceChain copy = Copy();

            copy.chainObjects[count] = methodInfo;
            copy.chainTypes[count]   = ReferenceType.Method;
            copy.count++;
            return(copy);
        }
Exemple #9
0
        public ReferenceChain Add(PropertyInfo propertyInfo)
        {
            ReferenceChain copy = Copy();

            copy.chainObjects[count] = propertyInfo;
            copy.chainTypes[count]   = ReferenceType.Property;
            copy.count++;
            return(copy);
        }
Exemple #10
0
        public ReferenceChain Add(FieldInfo fieldInfo)
        {
            ReferenceChain copy = Copy();

            copy.chainObjects[count] = fieldInfo;
            copy.chainTypes[count]   = ReferenceType.Field;
            copy.count++;
            return(copy);
        }
Exemple #11
0
        public ReferenceChain Add(GameObject go)
        {
            ReferenceChain copy = Copy();

            copy.chainObjects[count] = go;
            copy.chainTypes[count]   = ReferenceType.GameObject;
            copy.count++;
            return(copy);
        }
 public static TextureViewer CreateTextureViewer(ReferenceChain refChain, Texture texture)
 {
     var go = new GameObject("TextureViewer");
     go.transform.parent = ModTools.Instance.transform;
     var textureViewer = go.AddComponent<TextureViewer>();
     textureViewer.caller = refChain;
     textureViewer.previewTexture = texture;
     textureViewer.visible = true;
     return textureViewer;
 }
 public static MeshViewer CreateMeshViewer(ReferenceChain refChain, Mesh mesh)
 {
     var go = new GameObject("MeshViewer");
     go.transform.parent = ModTools.Instance.transform;
     var meshViewer = go.AddComponent<MeshViewer>();
     meshViewer.caller = refChain;
     meshViewer.previewMesh = mesh;
     meshViewer.visible = true;
     return meshViewer;
 }
Exemple #14
0
        public void RemoveWatch(ReferenceChain refChain)
        {
            if (fieldWatches.ContainsKey(refChain))
            {
                fieldWatches.Remove(refChain);
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                propertyWatches.Remove(refChain);
            }
        }
        public static MeshViewer CreateMeshViewer(ReferenceChain refChain, Mesh mesh)
        {
            var go = new GameObject("MeshViewer");

            go.transform.parent = ModTools.Instance.transform;
            var meshViewer = go.AddComponent <MeshViewer>();

            meshViewer.caller      = refChain;
            meshViewer.previewMesh = mesh;
            meshViewer.visible     = true;
            return(meshViewer);
        }
Exemple #16
0
        public static TextureViewer CreateTextureViewer(ReferenceChain refChain, Texture texture)
        {
            var go = new GameObject("TextureViewer");

            go.transform.parent = ModTools.Instance.transform;
            var textureViewer = go.AddComponent <TextureViewer>();

            textureViewer.caller         = refChain;
            textureViewer.previewTexture = texture;
            textureViewer.visible        = true;
            return(textureViewer);
        }
Exemple #17
0
        public Type GetWatchType(ReferenceChain refChain)
        {
            Type ret = null;

            if (watches.Contains(refChain))
            {
                var item = refChain.LastItem;
                var info = item as FieldInfo;
                ret = info?.FieldType ?? (item as PropertyInfo)?.PropertyType;
            }
            return(ret);
        }
Exemple #18
0
        public bool IsConstWatch(ReferenceChain refChain)
        {
            if (fieldWatches.ContainsKey(refChain))
            {
                return fieldWatches[refChain].Key.IsInitOnly;
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                return !propertyWatches[refChain].Key.CanWrite;
            }

            return true;
        }
Exemple #19
0
        public bool IsConstWatch(ReferenceChain refChain)
        {
            if (fieldWatches.ContainsKey(refChain))
            {
                return(fieldWatches[refChain].Key.IsInitOnly);
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                return(!propertyWatches[refChain].Key.CanWrite);
            }

            return(true);
        }
Exemple #20
0
        public ReferenceChain Copy()
        {
            ReferenceChain copy = new ReferenceChain();

            copy.count = count;
            for (int i = 0; i < count; i++)
            {
                copy.chainObjects[i] = chainObjects[i];
                copy.chainTypes[i]   = chainTypes[i];
            }

            copy.identOffset = identOffset;

            return(copy);
        }
Exemple #21
0
        public Type GetWatchType(ReferenceChain refChain)
        {
            Type ret = null;

            if (fieldWatches.ContainsKey(refChain))
            {
                ret = fieldWatches[refChain].Key.FieldType;
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                ret = propertyWatches[refChain].Key.PropertyType;
            }

            return(ret);
        }
        public ReferenceChain Copy()
        {
            var copy = new ReferenceChain {
                Length = Length
            };

            for (var i = 0; i < Length; i++)
            {
                copy.ChainObjects[i] = ChainObjects[i];
                copy.ChainTypes[i]   = ChainTypes[i];
            }

            copy.IdentOffset = IdentOffset;

            return(copy);
        }
Exemple #23
0
        public Type GetWatchType(ReferenceChain refChain)
        {
            Type ret = null;

            if (fieldWatches.ContainsKey(refChain))
            {
                ret = fieldWatches[refChain].Key.FieldType;
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                ret = propertyWatches[refChain].Key.PropertyType;
            }

            return ret;
        }
Exemple #24
0
        public ReferenceChain[] GetWatches()
        {
            ReferenceChain[] watches = new ReferenceChain[fieldWatches.Count + propertyWatches.Count];
            int i = 0;
            foreach (var item in fieldWatches)
            {
                watches[i++] = item.Key;
            }

            foreach (var item in propertyWatches)
            {
                watches[i++] = item.Key;
            }

            return watches;
        }
Exemple #25
0
        public ReferenceChain[] GetWatches()
        {
            ReferenceChain[] watches = new ReferenceChain[fieldWatches.Count + propertyWatches.Count];
            int i = 0;

            foreach (var item in fieldWatches)
            {
                watches[i++] = item.Key;
            }

            foreach (var item in propertyWatches)
            {
                watches[i++] = item.Key;
            }

            return(watches);
        }
Exemple #26
0
        void Update()
        {
            var hoveredLocal = hoveredComponent;

            if (drawDebugInfo && hoveredLocal != null)
            {
                if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.F))
                {
                    var uiView = FindObjectOfType <UIView>();
                    if (uiView == null)
                    {
                        return;
                    }

                    var current  = hoveredLocal;
                    var refChain = new ReferenceChain();
                    refChain = refChain.Add(current);
                    while (current != null)
                    {
                        refChain = refChain.Add(current.gameObject);
                        current  = current.parent;
                    }
                    ;
                    refChain = refChain.Add(uiView.gameObject);

                    var sceneExplorer = FindObjectOfType <SceneExplorer>();
                    sceneExplorer.ExpandFromRefChain(refChain.Reverse);
                    sceneExplorer.visible = true;
                }
                if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.G))
                {
                    if (hoveredComponents.Count > 1 && hoveredComponent != null)
                    {
                        var index    = hoveredComponents.IndexOf(hoveredComponent);
                        var newIndex = (index + hoveredComponents.Count + 1) % hoveredComponents.Count;
                        hoveredComponent = hoveredComponents[newIndex];
                    }
                }
            }
        }
Exemple #27
0
 public void AddWatch(ReferenceChain refChain, PropertyInfo property, object o)
 {
     propertyWatches.Add(refChain, new KeyValuePair<PropertyInfo, object>(property, o));
     visible = true;
 }
Exemple #28
0
 public void AddWatch(ReferenceChain refChain, FieldInfo field, object o)
 {
     fieldWatches.Add(refChain, new KeyValuePair<FieldInfo, object>(field, o));
     visible = true;
 }
Exemple #29
0
        public void WriteWatch(ReferenceChain refChain, object value)
        {
            if (fieldWatches.ContainsKey(refChain))
            {
                try
                {
                    fieldWatches[refChain].Key.SetValue(fieldWatches[refChain].Value, value);
                }
                catch (Exception)
                {
                    return;
                }
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                try
                {
                    propertyWatches[refChain].Key.SetValue(propertyWatches[refChain].Value, value, null);
                }
                catch (Exception)
                {
                    return;
                }
            }
        }
Exemple #30
0
        public void RemoveWatch(ReferenceChain refChain)
        {
            if (fieldWatches.ContainsKey(refChain))
            {
                fieldWatches.Remove(refChain);
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                propertyWatches.Remove(refChain);
            }
        }
Exemple #31
0
        public void ExpandFromRefChain(ReferenceChain refChain)
        {
            if (refChain == null)
            {
                Log.Error("SceneExplorer: ExpandFromRefChain(): Null refChain");
                return;
            }
            if (refChain.Length == 0)
            {
                Log.Error("SceneExplorer: ExpandFromRefChain(): Invalid refChain, expected Length >= 0");
                return;
            }

            if (refChain.ChainTypes[0] != ReferenceChain.ReferenceType.GameObject)
            {
                Log.Error(String.Format("SceneExplorer: ExpandFromRefChain(): invalid chain type for element [0] - expected {0}, got {1}",
                                        ReferenceChain.ReferenceType.GameObject, refChain.ChainTypes[0]));
                return;
            }

            sceneRoots.Clear();
            ClearExpanded();
            searchDisplayString = String.Format("Showing results for \"{0}\"", refChain.ToString());

            var rootGameObject = (GameObject)refChain.ChainObjects[0];

            sceneRoots.Add(rootGameObject, true);

            var expandedRefChain = new ReferenceChain().Add(rootGameObject);

            state.expandedGameObjects.Add(expandedRefChain, true);

            for (int i = 1; i < refChain.Length; i++)
            {
                switch (refChain.ChainTypes[i])
                {
                case ReferenceChain.ReferenceType.GameObject:
                    var go = (GameObject)refChain.ChainObjects[i];
                    expandedRefChain = expandedRefChain.Add(go);
                    state.expandedGameObjects.Add(expandedRefChain, true);
                    break;

                case ReferenceChain.ReferenceType.Component:
                    var component = (Component)refChain.ChainObjects[i];
                    expandedRefChain = expandedRefChain.Add(component);
                    state.expandedComponents.Add(expandedRefChain, true);
                    break;

                case ReferenceChain.ReferenceType.Field:
                    var field = (FieldInfo)refChain.ChainObjects[i];
                    expandedRefChain = expandedRefChain.Add(field);
                    state.expandedObjects.Add(expandedRefChain, true);
                    break;

                case ReferenceChain.ReferenceType.Property:
                    var property = (PropertyInfo)refChain.ChainObjects[i];
                    expandedRefChain = expandedRefChain.Add(property);
                    state.expandedObjects.Add(expandedRefChain, true);
                    break;

                case ReferenceChain.ReferenceType.Method:
                    break;

                case ReferenceChain.ReferenceType.EnumerableItem:
                    var index = (int)refChain.ChainObjects[i];
                    state.selectedArrayStartIndices[expandedRefChain] = index;
                    state.selectedArrayEndIndices[expandedRefChain]   = index;
                    expandedRefChain = expandedRefChain.Add(index);
                    state.expandedObjects.Add(expandedRefChain, true);
                    break;
                }
            }

            state.currentRefChain             = refChain.Copy();
            state.currentRefChain.IdentOffset = -state.currentRefChain.Length;
        }
Exemple #32
0
        private void Initialize()
        {
            if (!initializedZonedBuildingsPanel)
            {
                sceneExplorer = FindObjectOfType <SceneExplorer>();

                buildingsBufferRefChain = new ReferenceChain()
                                          .Add(BuildingManager.instance.gameObject)
                                          .Add(BuildingManager.instance)
                                          .Add(typeof(BuildingManager).GetField("m_buildings"))
                                          .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, 175.0f, 0.0f),
                                             out serviceBuildingDumpMeshTextureButton, new Vector3(-8.0f, 200.0f, 0.0f)
                                             );
                    initializedServiceBuildingsPanel = true;
                }
            }

            if (!initializedCitizenVehiclePanel)
            {
                sceneExplorer = FindObjectOfType <SceneExplorer>();

                vehiclesBufferRefChain = new ReferenceChain()
                                         .Add(VehicleManager.instance.gameObject)
                                         .Add(VehicleManager.instance)
                                         .Add(typeof(VehicleManager).GetField("m_vehicles"))
                                         .Add(typeof(Array16 <Vehicle>).GetField("m_buffer"));

                vehiclesParkedBufferRefChain = new ReferenceChain()
                                               .Add(VehicleManager.instance.gameObject)
                                               .Add(VehicleManager.instance)
                                               .Add(typeof(VehicleManager).GetField("m_parkedVehicles"))
                                               .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 (!initializedAnimalPanel)
            {
                citizenInstancesBufferRefChain = new ReferenceChain()
                                                 .Add(CitizenManager.instance.gameObject)
                                                 .Add(CitizenManager.instance)
                                                 .Add(typeof(CitizenManager).GetField("m_instances"))
                                                 .Add(typeof(Array16 <CitizenInstance>).GetField("m_buffer"));
                citizensBufferRefChain = new ReferenceChain()
                                         .Add(CitizenManager.instance.gameObject)
                                         .Add(CitizenManager.instance)
                                         .Add(typeof(CitizenManager).GetField("m_citizens"))
                                         .Add(typeof(Array32 <Citizen>).GetField("m_buffer"));
                citizensUnitsBufferRefChain = new ReferenceChain()
                                              .Add(CitizenManager.instance.gameObject)
                                              .Add(CitizenManager.instance)
                                              .Add(typeof(CitizenManager).GetField("m_units"))
                                              .Add(typeof(Array32 <CitizenUnit>).GetField("m_buffer"));

                sceneExplorer   = FindObjectOfType <SceneExplorer>();
                animalInfoPanel = GameObject.Find("(Library) AnimalWorldInfoPanel").GetComponent <AnimalWorldInfoPanel>();
                if (animalInfoPanel != null)
                {
                    AddCitizenPanelControls(animalInfoPanel, out animalAssetNameLabel,
                                            out animalShowExplorerButton, new Vector3(-8.0f, 65.0f, 0.0f),
                                            out animalShowInstanceButton, new Vector3(-8.0f, 90.0f, 0.0f),
                                            out animalShowUnitButton, new Vector3(-8.0f, 115.0f, 0.0f)
                                            );
                    initializedAnimalPanel = true;
                }
            }

            if (!initializedCitizenPanel)
            {
                citizenInstancesBufferRefChain = new ReferenceChain()
                                                 .Add(CitizenManager.instance.gameObject)
                                                 .Add(CitizenManager.instance)
                                                 .Add(typeof(CitizenManager).GetField("m_instances"))
                                                 .Add(typeof(Array16 <CitizenInstance>).GetField("m_buffer"));
                citizensBufferRefChain = new ReferenceChain()
                                         .Add(CitizenManager.instance.gameObject)
                                         .Add(CitizenManager.instance)
                                         .Add(typeof(CitizenManager).GetField("m_citizens"))
                                         .Add(typeof(Array32 <Citizen>).GetField("m_buffer"));
                citizensUnitsBufferRefChain = new ReferenceChain()
                                              .Add(CitizenManager.instance.gameObject)
                                              .Add(CitizenManager.instance)
                                              .Add(typeof(CitizenManager).GetField("m_units"))
                                              .Add(typeof(Array32 <CitizenUnit>).GetField("m_buffer"));


                sceneExplorer    = FindObjectOfType <SceneExplorer>();
                citizenInfoPanel = GameObject.Find("(Library) CitizenWorldInfoPanel").GetComponent <HumanWorldInfoPanel>();
                if (citizenInfoPanel != null)
                {
                    AddCitizenPanelControls(citizenInfoPanel, out citizenAssetNameLabel,
                                            out citizenShowExplorerButton, new Vector3(-8.0f, 110.0f, 0.0f),
                                            out citizenShowInstanceButton, new Vector3(-8.0f, 135.0f, 0.0f),
                                            out citizenShowUnitButton, new Vector3(-8.0f, 160.0f, 0.0f)
                                            );
                    initializedCitizenPanel = true;
                }
            }
        }
        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;
            }
        }
Exemple #34
0
 public void AddWatch(ReferenceChain refChain, PropertyInfo property, object o)
 {
     propertyWatches.Add(refChain, new KeyValuePair <PropertyInfo, object>(property, o));
     visible = true;
 }
        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 static object EditorValueField(ReferenceChain refChain, string hash, Type type, object value)
        {
            if (type == typeof(System.Single))
            {
                var f = (float)value;
                FloatField(hash, "", ref f, 0.0f, true, true);
                if (f != (float)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.Double))
            {
                var f = (double)value;
                DoubleField(hash, "", ref f, 0.0f, true, true);
                if (f != (double)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.Byte))
            {
                var f = (byte)value;
                ByteField(hash, "", ref f, 0.0f, true, true);
                if (f != (byte)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.Int32))
            {
                var f = (int)value;
                IntField(hash, "", ref f, 0.0f, true, true);
                if (f != (int)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.UInt32))
            {
                var f = (uint)value;
                UIntField(hash, "", ref f, 0.0f, true, true);
                if (f != (uint)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.Int64))
            {
                var f = (Int64)value;
                Int64Field(hash, "", ref f, 0.0f, true, true);
                if (f != (Int64)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.UInt64))
            {
                var f = (UInt64)value;
                UInt64Field(hash, "", ref f, 0.0f, true, true);
                if (f != (UInt64)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.Int16))
            {
                var f = (Int16)value;
                Int16Field(hash, "", ref f, 0.0f, true, true);
                if (f != (Int16)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.UInt16))
            {
                var f = (UInt16)value;
                UInt16Field(hash, "", ref f, 0.0f, true, true);
                if (f != (UInt16)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.Boolean))
            {
                var f = (bool)value;
                BoolField("", ref f, 0.0f, true, true);
                if (f != (bool)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.String))
            {
                var f = (string)value;
                StringField(hash, "", ref f, 0.0f, true, true);
                if (f != (string)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(System.Char))
            {
                var f = (char)value;
                CharField(hash, "", ref f, 0.0f, true, true);
                if (f != (char)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(UnityEngine.Vector2))
            {
                var f = (Vector2)value;
                Vector2Field(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Vector2)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(UnityEngine.Vector3))
            {
                var f = (Vector3)value;
                Vector3Field(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Vector3)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(UnityEngine.Vector4))
            {
                var f = (Vector4)value;
                Vector4Field(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Vector4)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(UnityEngine.Quaternion))
            {
                var f = (Quaternion)value;
                QuaternionField(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Quaternion)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(UnityEngine.Color))
            {
                var f = (Color)value;
                ColorField(hash, "", ref f, 0.0f, null, true, true, color => { refChain.SetValue(color); });
                if (f != (Color)value)
                {
                    return(f);
                }

                return(value);
            }

            if (type == typeof(UnityEngine.Color32))
            {
                var f = (Color32)value;
                Color32Field(hash, "", ref f, 0.0f, null, true, true, color => { refChain.SetValue(color); });
                var v = (Color32)value;
                if (f.r != v.r || f.g != v.g || f.b != v.b || f.a != v.a)
                {
                    return(f);
                }

                return(value);
            }

            if (type.IsEnum)
            {
                var f = value;
                EnumField(hash, "", ref f, 0.0f, true, true);
                if (f != value)
                {
                    return(f);
                }

                return(value);
            }

            return(value);
        }
Exemple #37
0
 public void AddWatch(ReferenceChain refChain, FieldInfo field, object o)
 {
     fieldWatches.Add(refChain, new KeyValuePair <FieldInfo, object>(field, o));
     visible = true;
 }
        public ReferenceChain Copy()
        {
            ReferenceChain copy = new ReferenceChain();
            copy.count = count;
            for (int i = 0; i < count; i++)
            {
                copy.chainObjects[i] = chainObjects[i];
                copy.chainTypes[i] = chainTypes[i];
            }

            copy.identOffset = identOffset;

            return copy;
        }
        public static object EditorValueField(ReferenceChain refChain, string hash, Type type, object value)
        {
            if (type == typeof(System.Single))
            {
                var f = (float)value;
                FloatField(hash, "", ref f, 0.0f, true, true);
                if (f != (float)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.Double))
            {
                var f = (double)value;
                DoubleField(hash, "", ref f, 0.0f, true, true);
                if (f != (double)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.Byte))
            {
                var f = (byte)value;
                ByteField(hash, "", ref f, 0.0f, true, true);
                if (f != (byte)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.Int32))
            {
                var f = (int)value;
                IntField(hash, "", ref f, 0.0f, true, true);
                if (f != (int)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.UInt32))
            {
                var f = (uint)value;
                UIntField(hash, "", ref f, 0.0f, true, true);
                if (f != (uint)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.Int64))
            {
                var f = (Int64)value;
                Int64Field(hash, "", ref f, 0.0f, true, true);
                if (f != (Int64)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.UInt64))
            {
                var f = (UInt64)value;
                UInt64Field(hash, "", ref f, 0.0f, true, true);
                if (f != (UInt64)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.Int16))
            {
                var f = (Int16)value;
                Int16Field(hash, "", ref f, 0.0f, true, true);
                if (f != (Int16)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.UInt16))
            {
                var f = (UInt16)value;
                UInt16Field(hash, "", ref f, 0.0f, true, true);
                if (f != (UInt16)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.Boolean))
            {
                var f = (bool)value;
                BoolField("", ref f, 0.0f, true, true);
                if (f != (bool)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.String))
            {
                var f = (string)value;
                StringField(hash, "", ref f, 0.0f, true, true);
                if (f != (string)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(System.Char))
            {
                var f = (char)value;
                CharField(hash, "", ref f, 0.0f, true, true);
                if (f != (char)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(UnityEngine.Vector2))
            {
                var f = (Vector2)value;
                Vector2Field(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Vector2)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(UnityEngine.Vector3))
            {
                var f = (Vector3)value;
                Vector3Field(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Vector3)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(UnityEngine.Vector4))
            {
                var f = (Vector4)value;
                Vector4Field(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Vector4)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(UnityEngine.Quaternion))
            {
                var f = (Quaternion)value;
                QuaternionField(hash, "", ref f, 0.0f, null, true, true);
                if (f != (Quaternion)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(UnityEngine.Color))
            {
                var f = (Color)value;
                ColorField(hash, "", ref f, 0.0f, null, true, true, color => { refChain.SetValue(color); });
                if (f != (Color)value)
                {
                    return f;
                }

                return value;
            }

            if (type == typeof(UnityEngine.Color32))
            {
                var f = (Color32)value;
                Color32Field(hash, "", ref f, 0.0f, null, true, true, color => { refChain.SetValue(color); });
                var v = (Color32)value;
                if (f.r != v.r || f.g != v.g || f.b != v.b || f.a != v.a)
                {
                    return f;
                }

                return value;
            }

            if (type.IsEnum)
            {
                var f = value;
                EnumField(hash, "", ref f, 0.0f, true, true);
                if (f != value)
                {
                    return f;
                }

                return value;
            }

            return value;
        }
Exemple #40
0
 public void AddWatch(ReferenceChain refChain)
 {
     watches.Add(refChain);
     visible = true;
 }
Exemple #41
0
        public object ReadWatch(ReferenceChain refChain)
        {
            object ret = null;

            if (fieldWatches.ContainsKey(refChain))
            {
                try
                {
                    ret = fieldWatches[refChain].Key.GetValue(fieldWatches[refChain].Value);
                }
                catch (Exception)
                {
                    return null;
                }
            }

            if (propertyWatches.ContainsKey(refChain))
            {
                try
                {
                    ret = propertyWatches[refChain].Key.GetValue(propertyWatches[refChain].Value, null);
                }
                catch (Exception)
                {
                    return null;
                }
            }

            return ret;
        }