@@ -37,7 +37,7 @@ local loadedExtensions = {}
3737local loadedHightPriorityExtensions = {}
3838local repoVersion = " 0.0.0"
3939local updatingApp = false
40- local highPriorityExtensions = {" RoadRumbleExtension" , " CollisionsExtension" , " MirrorExtension " }
40+ local highPriorityExtensions = {" RoadRumbleExtension" , " CollisionsExtension" }
4141local jsonBuffer = {}
4242local ROUNDING = 3
4343local MULT = 10 ^ ROUNDING
@@ -178,12 +178,14 @@ end
178178local function loadExtensions ()
179179 -- Scan for new extensions.
180180 io .scanDir (ac .dirname () .. " /extensions" , function (fileName , fileAttributes , callbackData )
181- local extName = fileName :replace (" .lua" , " " )
182- if extName ~= " Extension" and extName ~= " SampleUserExtension" and not table .contains (obsoleteExtensions , extName ) then
183- if ExtensionsSettingsLayout [extName ] == nil then
184- ExtensionsSettingsLayout [extName ] = false
181+ if fileName :endsWith (" Extension.lua" ) then
182+ local extName = fileName :replace (" .lua" , " " )
183+ if extName ~= " Extension" and extName ~= " SampleUserExtension" and not table .contains (obsoleteExtensions , extName ) then
184+ if ExtensionsSettingsLayout [extName ] == nil then
185+ ExtensionsSettingsLayout [extName ] = false
186+ end
187+ detectedExtensions [# detectedExtensions + 1 ] = extName
185188 end
186- detectedExtensions [# detectedExtensions + 1 ] = extName
187189 end
188190 end )
189191 ExtensionsSettings = ac .storage (ExtensionsSettingsLayout )
@@ -339,6 +341,24 @@ local function fastDataChanged(a, b)
339341 return false
340342end
341343
344+ local function disposeExtension (extension )
345+ if extension and extension .dispose then
346+ try (function ()
347+ extension :dispose ()
348+ end )
349+ end
350+ end
351+
352+ local function drawExtensionSettingsTab (extension )
353+ if extension and extension .drawSettingsTab then
354+ try (function ()
355+ extension :drawSettingsTab ()
356+ end , function (err )
357+ print (" Extension settings tab generated an error : " .. err )
358+ end )
359+ end
360+ end
361+
342362function script .update (dt )
343363 slowUpdateTimer = slowUpdateTimer + dt
344364 if slowUpdateTimer < slowUpdateRate then return end
@@ -393,6 +413,9 @@ function script.updateHighPriority(dt)
393413 if fastDataChanged (customFastData , lastFastData ) then
394414 udp :send (ultraJSON (customFastData ))
395415 lastFastData = table .clone (customFastData )
416+ if debugOn then
417+ debugData (customFastData )
418+ end
396419 end
397420end
398421
@@ -408,7 +431,7 @@ function script.windowMain(dt)
408431 ui .newLine ()
409432 return
410433 end
411- ui .tabBar (' someTabBarID ' , function ()
434+ ui .tabBar (' simhubUDPConnectorTabBarID ' , function ()
412435 ui .tabItem (' Extensions' , function ()
413436 for _ , extName in pairs (detectedExtensions ) do
414437 local value = ExtensionsSettings [extName ]
@@ -427,10 +450,13 @@ function script.windowMain(dt)
427450 end
428451 else
429452 if table .contains (highPriorityExtensions , extName ) then
453+ disposeExtension (loadedHightPriorityExtensions [extName ])
430454 loadedHightPriorityExtensions [extName ] = nil
431455 else
456+ disposeExtension (loadedExtensions [extName ])
432457 loadedExtensions [extName ] = nil
433458 end
459+ package.loaded [" extensions." .. extName ] = nil
434460 end
435461 end
436462 end
@@ -485,5 +511,8 @@ function script.windowMain(dt)
485511 end
486512 end
487513 end )
514+ for _ , ext in pairs (loadedExtensions ) do
515+ drawExtensionSettingsTab (ext )
516+ end
488517 end )
489518end
0 commit comments