Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void InputManager_TriggerClickDownEvent(On.InputManager.orig_TriggerClickDownEvent orig, InputManager self, string eventName, ref List<ClickDownInfo> clickInfosContainer)
- {
- if (HasFlag(State.Playing) && !HasFlag(State.Pausing))
- {
- InputManagerHooks.TriggerClickDownEvent(self, eventName, ref clickInfosContainer);
- return;
- }
- orig(self, eventName, ref clickInfosContainer);
- }
- public class InputManagerHooks
- {
- public static void TriggerClickDownEvent(InputManager self, string eventName, ref List<ClickDownInfo> clickInfosContainer)
- {
- DynData<InputManager> d = new DynData<InputManager>(self);
- d.Set<bool>("stopClickEventPropagation", false);
- LayerMask mask = (!d.Get<IGameCameraService>("gameCameraManager").IsTacticalMapActive()) ? d.Get<LayerMask>("gameMouseClickLayerMask") : d.Get<LayerMask>("tacticalMapClickLayerMask");
- RaycastHit[] array = Physics.RaycastAll(d.Get<IGameCameraService>("gameCameraManager").ScreenPointToRay(TASInputPlayer.GetMousePos()), float.PositiveInfinity, mask);
- Array.Sort<RaycastHit>(array, (RaycastHit hitInfo1, RaycastHit hitInfo2) => hitInfo1.distance.CompareTo(hitInfo2.distance));
- if (d.Get<bool>("debug"))
- {
- Diagnostics.LogWarning(string.Concat(new object[]
- {
- eventName,
- " > ",
- array.Length,
- " hits"
- }), new object[0]);
- }
- clickInfosContainer = new List<ClickDownInfo>();
- int num = 0;
- foreach (RaycastHit raycastHit in array)
- {
- ClickDownInfo item = new ClickDownInfo(raycastHit.collider, raycastHit.point, num, array.Length);
- clickInfosContainer.Add(item);
- }
- foreach (ClickDownInfo clickDownInfo in clickInfosContainer)
- {
- if (d.Get<bool>("debug"))
- {
- Diagnostics.Log(string.Concat(new object[]
- {
- eventName,
- "@",
- num,
- "=",
- clickDownInfo.HitCollider.name,
- " @",
- clickDownInfo.WorldPosition
- }), new object[0]);
- }
- clickDownInfo.HitCollider.SendMessage(eventName, clickDownInfo, SendMessageOptions.DontRequireReceiver);
- num++;
- if (d.Get<bool>("stopClickEventPropagation"))
- {
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement