Advertisement
Sc2ad

Hook Method C# + InputManagerHooks C#

Mar 27th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.73 KB | None | 0 0
  1.         private void InputManager_TriggerClickDownEvent(On.InputManager.orig_TriggerClickDownEvent orig, InputManager self, string eventName, ref List<ClickDownInfo> clickInfosContainer)
  2.         {
  3.             if (HasFlag(State.Playing) && !HasFlag(State.Pausing))
  4.             {
  5.                 InputManagerHooks.TriggerClickDownEvent(self, eventName, ref clickInfosContainer);
  6.                 return;
  7.             }
  8.             orig(self, eventName, ref clickInfosContainer);
  9.         }
  10.     public class InputManagerHooks
  11.     {
  12.         public static void TriggerClickDownEvent(InputManager self, string eventName, ref List<ClickDownInfo> clickInfosContainer)
  13.         {
  14.             DynData<InputManager> d = new DynData<InputManager>(self);
  15.             d.Set<bool>("stopClickEventPropagation", false);
  16.             LayerMask mask = (!d.Get<IGameCameraService>("gameCameraManager").IsTacticalMapActive()) ? d.Get<LayerMask>("gameMouseClickLayerMask") : d.Get<LayerMask>("tacticalMapClickLayerMask");
  17.             RaycastHit[] array = Physics.RaycastAll(d.Get<IGameCameraService>("gameCameraManager").ScreenPointToRay(TASInputPlayer.GetMousePos()), float.PositiveInfinity, mask);
  18.             Array.Sort<RaycastHit>(array, (RaycastHit hitInfo1, RaycastHit hitInfo2) => hitInfo1.distance.CompareTo(hitInfo2.distance));
  19.             if (d.Get<bool>("debug"))
  20.             {
  21.                 Diagnostics.LogWarning(string.Concat(new object[]
  22.                 {
  23.                 eventName,
  24.                 " > ",
  25.                 array.Length,
  26.                 " hits"
  27.                 }), new object[0]);
  28.             }
  29.             clickInfosContainer = new List<ClickDownInfo>();
  30.             int num = 0;
  31.             foreach (RaycastHit raycastHit in array)
  32.             {
  33.                 ClickDownInfo item = new ClickDownInfo(raycastHit.collider, raycastHit.point, num, array.Length);
  34.                 clickInfosContainer.Add(item);
  35.             }
  36.             foreach (ClickDownInfo clickDownInfo in clickInfosContainer)
  37.             {
  38.                 if (d.Get<bool>("debug"))
  39.                 {
  40.                     Diagnostics.Log(string.Concat(new object[]
  41.                     {
  42.                     eventName,
  43.                     "@",
  44.                     num,
  45.                     "=",
  46.                     clickDownInfo.HitCollider.name,
  47.                     " @",
  48.                     clickDownInfo.WorldPosition
  49.                     }), new object[0]);
  50.                 }
  51.                 clickDownInfo.HitCollider.SendMessage(eventName, clickDownInfo, SendMessageOptions.DontRequireReceiver);
  52.                 num++;
  53.                 if (d.Get<bool>("stopClickEventPropagation"))
  54.                 {
  55.                     break;
  56.                 }
  57.             }
  58.         }
  59.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement