Advertisement
ArxkRBLX

Untitled

Nov 15th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. local Player = game.Players.LocalPlayer or game.Players:GetPropertyChangedSignal("LocalPlayer"):Wait();
  2. local Mouse = Player:GetMouse();
  3. local runService = game:GetService("RunService");
  4.  
  5. local currentItems = {};
  6.  
  7. local function isInFrame(v)
  8. local X = Mouse.X;
  9. local Y = Mouse.Y;
  10.  
  11. if X > v.AbsolutePosition.X and Y > v.AbsolutePosition.Y and X < v.AbsolutePosition.X + v.AbsoluteSize.X and Y < v.AbsolutePosition.Y + v.AbsoluteSize.Y then
  12. return true;
  13. else
  14. return false;
  15. end
  16. end
  17.  
  18. local function mouseExited(obj)
  19. if not obj.MouseIsInFrame and obj.MouseWasIn then
  20. obj.MouseWasIn = false;
  21. obj.LeaveEvent:Fire();
  22. end
  23. end
  24.  
  25. local function mouseEntered(obj)
  26. if not obj.uiObj.Visible then -- make sure the ui object isnt visible
  27. if obj.MouseIsInFrame and not obj.MouseWasIn then
  28. obj.MouseWasIn = true;
  29. obj.EnteredEvent:Fire();
  30. end
  31. end
  32. end
  33.  
  34. runService.Heartbeat:Connect(function()
  35. for _,obj in pairs(currentItems) do
  36. obj.MouseIsInFrame = isInFrame(obj.uiObj);
  37. mouseExited(obj);
  38. end
  39.  
  40. for _,obj in pairs(currentItems) do
  41. mouseEntered(obj);
  42. end
  43. end)
  44.  
  45. local class = {}
  46.  
  47. function class.mouseClass(uiObj)
  48. if currentItems[uiObj] then
  49. return currentItems[uiObj].EnteredEvent.Event, currentItems[uiObj].LeaveEvent.Event;
  50. end
  51.  
  52. local newObj = {};
  53. newObj.uiObj = uiObj;
  54.  
  55. local EnterEvent = Instance.new("BindableEvent");
  56. local LeftEvent = Instance.new("BindableEvent");
  57.  
  58. newObj.EnteredEvent = EnterEvent;
  59. newObj.LeaveEvent = LeftEvent;
  60. newObj.MouseWasIn = false;
  61. currentItems[uiObj] = newObj;
  62.  
  63. uiObj.AncestryChanged:Connect(function() -- obj was destroyed
  64. if not uiObj.Parent then
  65. EnterEvent:Destroy();
  66. LeftEvent:Destroy();
  67.  
  68. currentItems[uiObj] = nil;
  69. end
  70. end)
  71.  
  72. return EnterEvent.Event, LeftEvent.Event;
  73. end
  74.  
  75. return class;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement