Example #1
0
 private static void Selectable_OnPointerExit_Postfix(Selectable __instance, PointerEventData eventData)
 {
     OnPointerExit?.Invoke(__instance, new PointerEventArgs(__instance, eventData));
 }
Example #2
0
        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);
Example #4
0
 public virtual void InvokeExit() => OnPointerExit?.Invoke();
Example #5
0
 void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
 {
     OnPointerExit?.Invoke();
 }
Example #6
0
    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();
 }