public static CacheObjectBase GetCacheObject(object obj, Type type) { var ret = new CacheObjectBase(); ret.Init(obj, type); return(ret); }
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; }
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; }
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; } }
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); }
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); }
public override void OnBorrowed(CacheObjectBase owner) { base.OnBorrowed(owner); applyButton.Component.gameObject.SetActive(owner.CanWrite); }