private static void Selectable_OnPointerExit_Postfix(Selectable __instance, PointerEventData eventData) { OnPointerExit?.Invoke(__instance, new PointerEventArgs(__instance, eventData)); }
internal static void Init() { OnMakerStartLoading += (_sender, _args) => { Core.DebugLog($"[OnMakerStartLoading]"); CurrentAccssoryIndex = -1; Inside = true; KKAPI.Hooks.OnMakerStartLoadingPatch(); _hookInstance = Harmony.CreateAndPatchAll(typeof(Hooks)); if (MoreAccessories.Installed) { _hookInstance.Patch(MoreAccessories.Instance.GetType().GetMethod("UpdateMakerUI", AccessTools.all), postfix: new HarmonyMethod(typeof(Hooks), nameof(Hooks.MoreAccessories_UpdateMakerUI_Postfix))); } }; OnMakerBaseLoaded += (_sender, _args) => { Core.DebugLog($"[OnMakerBaseLoaded]"); if (MoreAccessories.Installed) { MoreAccessories.OnMakerBaseLoaded(); } }; OnMakerFinishedLoading += (_sender, _args) => { Core.DebugLog($"[OnMakerFinishedLoading]"); Loaded = true; _hookInstance.Patch(typeof(CvsAccessory).GetMethod("UpdateCustomUI", AccessTools.all), prefix: new HarmonyMethod(typeof(Hooks), nameof(Hooks.CvsAccessory_UpdateCustomUI_Prefix))); CvsScrollable = GameObject.Find("tglSlot01/Slot01Top/tglSlot01ScrollView") != null; int _onCustomSelectListClickCount = OnCustomSelectListClick?.GetInvocationList()?.Length ?? 0; if (_onCustomSelectListClickCount > 0) { Core.DebugLog($"[MakerFinishedLoading][(OnCustomSelectListClick: {_onCustomSelectListClickCount}]"); _hookInstance.PatchAll(typeof(HooksCustomSelectListCtrl)); } int _onPointerEnterCount = OnPointerEnter?.GetInvocationList()?.Length ?? 0; int _onPointerExitCount = OnPointerExit?.GetInvocationList()?.Length ?? 0; if (_onPointerEnterCount + _onPointerExitCount > 0) { Core.DebugLog($"[MakerFinishedLoading][(OnPointerEnter + OnPointerExit: {_onPointerEnterCount + _onPointerExitCount}]"); _hookInstance.PatchAll(typeof(HooksSelectable)); } CvsNavMenuInit(Singleton <CustomChangeMainMenu> .Instance); if (MoreAccessories.Installed) { MoreAccessories.OnMakerFinishedLoading(); } }; OnMakerExiting += (_sender, _args) => { Core.DebugLog($"[OnMakerExiting]"); CurrentAccssoryIndex = -1; Inside = false; Loaded = false; _hookInstance.UnpatchAll(_hookInstance.Id); _hookInstance = null; }; OnSelectedMakerSlotChanged += (_sender, _args) => { Core.DebugLog($"[OnSelectedMakerSlotChanged][{_args.OldSlotIndex}][{_args.NewSlotIndex}]"); }; OnSlotAdded += (_sender, _args) => { Core.DebugLog($"[OnSlotAdded][{_args.SlotIndex}][{_args.SlotTemplate.name}]"); _args.SlotTemplate.GetComponent <CvsNavSideMenuEventHandler>().SlotIndex = _args.SlotIndex; }; OnCvsNavMenuClick += (_sender, _args) => { Core.DebugLog($"[OnCvsNavMenuClick][{_args.TopIndex}][{_args.SideToggle.name}][{_args.Changed}]"); }; OnClothesCopy += (_sender, _args) => { Core.DebugLog($"[OnClothesCopy][{_args.SourceCoordinateIndex}][{_args.DestinationCoordinateIndex}][{_args.DestinationSlotIndex}]"); }; if (MoreAccessories.Installed) { EventInfo _event = MoreAccessories.Instance.GetType().GetEvent("onCharaMakerSlotAdded"); _event.AddEventHandler(MoreAccessories.Instance, new Action <int, Transform>((_slotIndex, _transform) => OnSlotAdded(null, new SlotAddedEventArgs(_slotIndex, _transform)))); //(MoreAccessories.Instance as MoreAccessoriesKOI.MoreAccessories).onCharaMakerSlotAdded += new Action<int, Transform>((_slotIndex, _transform) => OnSlotAdded(null, new SlotAddedEventArgs(_slotIndex, _transform))); } }
private void OnMouseExit() => OnPointerExit?.Invoke(this);
public virtual void InvokeExit() => OnPointerExit?.Invoke();
void IPointerExitHandler.OnPointerExit(PointerEventData eventData) { OnPointerExit?.Invoke(); }
private void Update() { //Raycast from the current camera forward if (Physics.Raycast(transform.position, transform.forward, out pointerHit, 250f)) { //Update the current pointer args currPointerArgs.target = pointerHit.transform; currPointerArgs.point = pointerHit.point; currPointerArgs.normal = pointerHit.normal; if (prevPointerArgs.target == null || pointerHit.transform == prevPointerArgs.target) { timeToClickCountdown -= Time.deltaTime; //Send the entered event if (enteredTriggered == false) { OnPointerEnter?.Invoke(this, currPointerArgs); enteredTriggered = true; } if (timeToClickCountdown <= 0) { //Send the one time click event if (clickTriggered == false) { OnPointerClicked?.Invoke(this, currPointerArgs); ExecuteEvents.Execute(pointerHit.transform.gameObject, new PointerEventData(EventSystem.current), ExecuteEvents.pointerClickHandler); clickTriggered = true; } OnPointerDown?.Invoke(this, currPointerArgs); //Set the previous hit to the new target prevPointerArgs.target = pointerHit.transform; prevPointerArgs.point = pointerHit.point; prevPointerArgs.normal = pointerHit.normal; } } else { //Exit the old target and enter the new one OnPointerExit?.Invoke(this, prevPointerArgs); OnPointerEnter?.Invoke(this, currPointerArgs); //Set the previous hit to the new target prevPointerArgs.target = pointerHit.transform; prevPointerArgs.point = pointerHit.point; prevPointerArgs.normal = pointerHit.normal; //Reset state variables timeToClickCountdown = timeToClick; enteredTriggered = false; clickTriggered = false; } } else { if (prevPointerArgs.target != null) { //Send the exit event OnPointerExit?.Invoke(this, prevPointerArgs); //Reset state variables prevPointerArgs.target = null; timeToClickCountdown = timeToClick; enteredTriggered = false; clickTriggered = false; } else { timeToClickCountdown = timeToClick; } } //Draw the debug gizmos if (drawDebug) { Debug.DrawLine(transform.position, prevPointerArgs.point, Color.red); } }
public void PointerExit() { OnPointerExit?.Invoke(); }