From 1707f1cb4feb0565a92ddd4129577cd05bf1762b Mon Sep 17 00:00:00 2001 From: "Nidoxs (B.H)" Date: Tue, 13 Aug 2024 20:10:42 +0100 Subject: [PATCH 1/2] Mitigate error in `hoverInspect` when entity no longer exists (#103) --- lib/debugger/ui.luau | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/debugger/ui.luau b/lib/debugger/ui.luau index e1127a7a..ccc160c8 100644 --- a/lib/debugger/ui.luau +++ b/lib/debugger/ui.luau @@ -40,9 +40,12 @@ local function ui(debugger, loop) local objectStack = plasma.useState({}) local worldViewOpen, setWorldViewOpen = plasma.useState(false) + local worldExists = debugger.debugWorld ~= nil - if debugger.hoverEntity then - custom.hoverInspect(debugger.debugWorld, debugger.hoverEntity, custom) + if debugger.hoverEntity and worldExists then + if debugger.debugWorld:contains(debugger.hoverEntity) then + custom.hoverInspect(debugger.debugWorld, debugger.hoverEntity, custom) + end end custom.container(function() From 39f758cc64d348448a9939ab34f0d1cf601ef38b Mon Sep 17 00:00:00 2001 From: "Nidoxs (B.H)" Date: Tue, 13 Aug 2024 20:50:20 +0100 Subject: [PATCH 2/2] Implement world inspect table sorting (by count and component name a-z) (#105) --- lib/debugger/widgets/worldInspect.luau | 56 +++++++++++++++++++------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/lib/debugger/widgets/worldInspect.luau b/lib/debugger/widgets/worldInspect.luau index 1281081e..094ae13c 100644 --- a/lib/debugger/widgets/worldInspect.luau +++ b/lib/debugger/widgets/worldInspect.luau @@ -1,6 +1,9 @@ local formatTableModule = require(script.Parent.Parent.formatTable) local formatTable = formatTableModule.formatTable +local BY_COMPONENT_NAME = "ComponentName" +local BY_ENTITY_COUNT = "EntityCount" + return function(plasma) return plasma.widget(function(debugger, objectStack) local style = plasma.useStyle() @@ -8,8 +11,10 @@ return function(plasma) local world = debugger.debugWorld local cache, setCache = plasma.useState() - -- TODO #97 Implement sorting by descending as well. - local ascendingOrder, _ = plasma.useState(false) + + local sortType, setSortType = plasma.useState(BY_COMPONENT_NAME) + local isAscendingOrder, setIsAscendingOrder = plasma.useState(true) + local skipIntersections, setSkipIntersections = plasma.useState(true) local debugComponent, setDebugComponent = plasma.useState() @@ -71,26 +76,47 @@ return function(plasma) }) end + local indexForSort = if sortType == BY_ENTITY_COUNT then 1 else 2 + table.sort(items, function(a, b) - if ascendingOrder then - return a[1] < b[1] + if isAscendingOrder then + return a[indexForSort] < b[indexForSort] end - -- Default to alphabetical - return a[2] < b[2] + return a[indexForSort] > b[indexForSort] end) - table.insert(items, 1, { "Count", "Component" }) + local arrow = if isAscendingOrder then "▲" else "▼" + local countHeading = `{if sortType == BY_ENTITY_COUNT then arrow else ""} Count ` + local componentHeading = `{if sortType == BY_COMPONENT_NAME then arrow else ""} Component` + local headings = { countHeading, componentHeading } + table.insert(items, 1, headings) plasma.row({ padding = 30 }, function() - local selectedRow = plasma - .table(items, { - width = 200, - headings = true, - selectable = true, - font = Enum.Font.Code, - }) - :selected() + local worldInspectTable = plasma.table(items, { + width = 200, + headings = true, + selectable = true, + font = Enum.Font.Code, + }) + + local selectedHeading = worldInspectTable:selectedHeading() + + if headings[selectedHeading] == headings[1] then + if sortType == BY_ENTITY_COUNT then + setIsAscendingOrder(not isAscendingOrder) + else + setSortType(BY_ENTITY_COUNT) + end + elseif headings[selectedHeading] == headings[2] then + if sortType == BY_COMPONENT_NAME then + setIsAscendingOrder(not isAscendingOrder) + else + setSortType(BY_COMPONENT_NAME) + end + end + + local selectedRow = worldInspectTable:selected() if selectedRow then setDebugComponent(selectedRow.component)