I'm working on a ModuleScript (it is always called using the command line) which creates it's own plugin in order to listen for mouse events (specifically mouse movement and clicks). When the ModuleScript is required and called, the plugin is activated with exclusive access to the mouse. The ModuleScript also creates a gui and within the gui is a close button which disconnects and removes old objects (this is ware I would like to deactivate the plugin). Essentially, the ModuleScript is acting as a development tool.
I'm not asking how to uninstall a plugin (nor can it be uninstalled, since it was never installed). I'm just wondering how to deactivate the plugin within the ModuleScript (stop it from having exclusive access to the mouse and preventing objects from being selected). Is there any method I could call to do this?
Here is my primary ModuleScript (simplified):
local Plugin = PluginManager():CreatePlugin()
local GuiManager = require(script.GuiManager)
local inStudio = game:GetService"RunService":IsStudio()
return function()
if inStudio and GuiManager.gui == nil then
Plugin:Activate(true)
GuiManager:create(Plugin)
end
end
And here is the GuiManager (simplified):
local Manager = {}
Manager.gui = nil
Manager.tracking = {}
function Manager:setupButton(button, callback)
button.MouseButton1Click:connect(callback)
end
function Manager:create(plugin)
self.gui = script.CloudBuilderGuiTemplate:Clone()
self.gui.Name = "CloudBuilderGui"
self.gui.Archivable = false
self.gui.Parent = game:GetService"CoreGui"
self:setupButton(
self.gui.Container.Close,
function()
local Gui = self.gui
Gui.Parent = nil
for _, v in ipairs(self.tracking) do
if v.disconnect ~= nil then
v:disconnect()
else
v:Destroy()
end
end
self.tracking = {}
-- TODO: Deactivate the plugin somehow.
self.gui = nil
Gui:Destroy()
end
)
end
return Manager
