Beispiel #1
0
        public static CacheObjectBase GetCacheObject(object obj, Type type)
        {
            var ret = new CacheObjectBase();

            ret.Init(obj, type);
            return(ret);
        }
Beispiel #2
0
        private static void CreateInspector <T>(object target, bool staticReflection = false,
                                                CacheObjectBase sourceCache          = null) where T : InspectorBase
        {
            var inspector = Pool <T> .Borrow();

            Inspectors.Add(inspector);
            inspector.Target = target;

            if (sourceCache != null && sourceCache.CanWrite)
            {
                // only set parent cache object if we are inspecting a struct, otherwise there is no point.
                if (target.GetType().IsValueType&& inspector is ReflectionInspector ri)
                {
                    ri.ParentCacheObject = sourceCache;
                }
            }

            UIManager.SetPanelActive(UIManager.Panels.Inspector, true);
            inspector.UIRoot.transform.SetParent(InspectorPanel.Instance.ContentHolder.transform, false);

            if (inspector is ReflectionInspector reflectInspector)
            {
                reflectInspector.StaticOnly = staticReflection;
            }

            inspector.OnBorrowedFromPool(target);
            SetInspectorActive(inspector);
        }
        public virtual void ReleaseFromOwner()
        {
            if (this.m_owner == null)
            {
                return;
            }

            this.m_owner = null;
        }
Beispiel #4
0
        public override void OnBorrowed(CacheObjectBase owner)
        {
            base.OnBorrowed(owner);

            inputField.Component.readOnly = !owner.CanWrite;
            ApplyButton.Component.gameObject.SetActive(owner.CanWrite);

            SaveFilePath.Text = Path.Combine(ConfigManager.Default_Output_Path.Value, "untitled.txt");
        }
        public virtual void OnBorrowed(CacheObjectBase owner)
        {
            if (this.m_owner != null)
            {
                ExplorerCore.LogWarning("Setting an IValue's owner but there is already one set. Maybe it wasn't cleaned up?");
                ReleaseFromOwner();
            }

            this.m_owner = owner;
        }
Beispiel #6
0
        public void Inspect(object obj, CacheObjectBase parentMember = null)
        {
#if CPP
            obj = obj.Il2CppCast(ReflectionHelpers.GetActualType(obj));
#endif
            UnityEngine.Object unityObj = obj as UnityEngine.Object;

            if (obj.IsNullOrDestroyed(false))
            {
                return;
            }

            // check if currently inspecting this object
            foreach (InspectorBase tab in m_currentInspectors)
            {
                if (ReferenceEquals(obj, tab.Target))
                {
                    SetInspectorTab(tab);
                    return;
                }
#if CPP
                else if (unityObj && tab.Target is UnityEngine.Object uTabObj)
                {
                    if (unityObj.m_CachedPtr == uTabObj.m_CachedPtr)
                    {
                        SetInspectorTab(tab);
                        return;
                    }
                }
#endif
            }

            InspectorBase inspector;
            if (obj is GameObject go)
            {
                inspector = new GameObjectInspector(go);
            }
            else
            {
                inspector = new InstanceInspector(obj);
            }

            if (inspector is ReflectionInspector ri)
            {
                ri.ParentMember = parentMember;
            }

            m_currentInspectors.Add(inspector);
            SetInspectorTab(inspector);
        }
        public override void OnBorrowed(CacheObjectBase owner)
        {
            base.OnBorrowed(owner);

            applyButton.Component.gameObject.SetActive(owner.CanWrite);

            foreach (var slider in sliders)
            {
                slider.interactable = owner.CanWrite;
            }
            foreach (var input in inputs)
            {
                input.Component.readOnly = !owner.CanWrite;
            }
        }
Beispiel #8
0
        public override void Init()
        {
            toggleKeyInputString = ModConfig.Instance.Main_Menu_Toggle.ToString();
            toggleKeyInput       = CacheFactory.GetCacheObject(typeof(OptionsPage).GetField("toggleKeyInputString"), this);

            defaultSizeInputVector = ModConfig.Instance.Default_Window_Size;
            defaultSizeInput       = CacheFactory.GetCacheObject(typeof(OptionsPage).GetField("defaultSizeInputVector"), this);

            defaultPageLimit      = ModConfig.Instance.Default_Page_Limit;
            defaultPageLimitInput = CacheFactory.GetCacheObject(typeof(OptionsPage).GetField("defaultPageLimit"), this);

            bitwiseSupport      = ModConfig.Instance.Bitwise_Support;
            bitwiseSupportInput = CacheFactory.GetCacheObject(typeof(OptionsPage).GetField("bitwiseSupport"), this);

            tabView      = ModConfig.Instance.Tab_View;
            tabViewInput = CacheFactory.GetCacheObject(typeof(OptionsPage).GetField("tabView"), this);
        }
        public void Inspect(object obj, CacheObjectBase parentMember = null)
        {
            obj = ReflectionProvider.Instance.Cast(obj, ReflectionProvider.Instance.GetActualType(obj));

            UnityEngine.Object unityObj = obj as UnityEngine.Object;

            if (obj.IsNullOrDestroyed(false))
            {
                return;
            }

            // check if currently inspecting this object
            foreach (InspectorBase tab in m_currentInspectors)
            {
                if (RuntimeProvider.Instance.IsReferenceEqual(obj, tab.Target))
                {
                    SetInspectorTab(tab);
                    return;
                }
            }

            InspectorBase inspector;

            if (obj is GameObject go)
            {
                inspector = new GameObjectInspector(go);
            }
            else
            {
                inspector = new InstanceInspector(obj);
            }

            if (inspector is ReflectionInspector ri)
            {
                ri.ParentMember = parentMember;
            }

            m_currentInspectors.Add(inspector);
            SetInspectorTab(inspector);
        }
Beispiel #10
0
        public static void Inspect(object obj, CacheObjectBase sourceCache = null)
        {
            if (obj.IsNullOrDestroyed())
            {
                return;
            }

            obj = obj.TryCast();

            if (TryFocusActiveInspector(obj))
            {
                return;
            }

            if (obj is GameObject)
            {
                CreateInspector <GameObjectInspector>(obj);
            }
            else
            {
                CreateInspector <ReflectionInspector>(obj, false, sourceCache);
            }
        }
        public override void OnBorrowed(CacheObjectBase owner)
        {
            base.OnBorrowed(owner);

            DictScrollPool.Refresh(true, true);
        }
Beispiel #12
0
        public override void OnBorrowed(CacheObjectBase owner)
        {
            base.OnBorrowed(owner);

            applyButton.Component.gameObject.SetActive(owner.CanWrite);
        }