@@ -627,12 +627,10 @@ local function addDTreeNode(parentNode, nodeData, specialType, isRoot, varType,
627
627
628
628
if varType == " Profiling.Targets" and isRoot then
629
629
local fullModuleName = nodeData .key
630
- local splitModuleName = string .Explode (" ." , fullModuleName )
631
630
632
- if # splitModuleName == 1 then
633
- childNode .Icon :SetImage (blobsProfiler .Modules [splitModuleName [1 ]].Icon )
634
- else
635
- childNode .Icon :SetImage (blobsProfiler .Modules [splitModuleName [1 ]].SubModules [splitModuleName [2 ]].Icon )
631
+ local getModule = blobsProfiler .GetModule (fullModuleName )
632
+ if getModule and getModule .Icon then
633
+ childNode .Icon :SetImage (getModule .Icon )
636
634
end
637
635
end
638
636
@@ -944,10 +942,12 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
944
942
subModuleData .ClientTab = subModuleTab
945
943
elseif luaState == " Server" then
946
944
subModuleData .ServerTab = subModuleTab
945
+ local rawModuleName = moduleName .. " ." .. subModuleName
946
+ local subModuleTable , parentModuleTable = blobsProfiler .GetModule (rawModuleName )
947
947
948
948
subModuleSheet .Tab .PaintOver = function (s ,w ,h )
949
- if blobsProfiler . Modules [ moduleName ]. childrenReceiving and blobsProfiler . Modules [ moduleName ]. childrenReceiving [moduleName .. " . " .. subModuleName ] then
950
- local recvTbl = blobsProfiler . Modules [ moduleName ]. childrenReceiving [moduleName .. " . " .. subModuleName ]
949
+ if parentModuleTable . childrenReceiving and parentModuleTable . childrenReceiving [rawModuleName ] then
950
+ local recvTbl = parentModuleTable . childrenReceiving [rawModuleName ]
951
951
local recvChunks = recvTbl .receivedChunks and # recvTbl .receivedChunks or 0
952
952
local totChunks = recvTbl .totalChunks or 1
953
953
local perc = recvChunks / totChunks
@@ -956,9 +956,9 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
956
956
local startY = (moduleTab .GetActiveTab and moduleTab :GetActiveTab () == s ) and 0 or 1
957
957
958
958
draw .RoundedBoxEx (4 , 0 , startY , perc * w , dynamicH , Color (255 ,255 ,0 ,50 ), true , true )
959
- elseif blobsProfiler . Modules [ moduleName ]. SubModules [ subModuleName ] .flashyUpdate then
959
+ elseif subModuleTable .flashyUpdate then
960
960
if (moduleTab .GetActiveTab and moduleTab :GetActiveTab () == s ) then -- TODO: DPanel subModuleTabs will never stop flashing
961
- blobsProfiler . Modules [ moduleName ]. SubModules [ subModuleName ] .flashyUpdate = nil
961
+ subModuleTable .flashyUpdate = nil
962
962
return
963
963
end
964
964
@@ -970,7 +970,7 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
970
970
971
971
draw .RoundedBoxEx (4 , 0 , startY , w , dynamicH , Color (0 ,255 ,0 ,50 ), true , true )
972
972
end
973
- elseif blobsProfiler . Modules [ moduleName ]. SubModules [ subModuleName ] .retrievingData then
973
+ elseif subModuleTable .retrievingData then
974
974
local marqueeSpeed = 50 -- Speed of the marquee movement in pixels per second
975
975
local marqueeWidth = 50 -- Width of the marquee rectangle
976
976
local currentTime = CurTime ()
@@ -1010,23 +1010,26 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1010
1010
end
1011
1011
1012
1012
moduleTab .OnActiveTabChanged = function (s , pnlOld , pnlNew )
1013
+ local rawModuleName = moduleName .. " ." .. pnlNew :GetText ()
1014
+ local subModuleTable , parentModuleTable = blobsProfiler .GetModule (rawModuleName )
1015
+
1013
1016
if not blobsProfiler [luaState ][moduleName ] or not blobsProfiler [luaState ][moduleName ][pnlNew :GetText ()] then
1014
- if blobsProfiler . Modules [ moduleName ]. SubModules [ pnlNew : GetText ()] .UpdateRealmData then
1015
- blobsProfiler . Modules [ moduleName ]. SubModules [ pnlNew : GetText ()] :UpdateRealmData (luaState )
1017
+ if subModuleTable .UpdateRealmData then
1018
+ subModuleTable :UpdateRealmData (luaState )
1016
1019
if luaState == " Server" then
1017
- blobsProfiler . Modules [ moduleName ]. SubModules [ pnlNew : GetText ()] .retrievingData = true
1020
+ subModuleTable .retrievingData = true
1018
1021
end
1019
1022
end
1020
1023
end
1021
1024
1022
- if blobsProfiler . Modules [ moduleName ]. SubModules [ pnlNew : GetText ()] .OnOpen then
1025
+ if subModuleTable .OnOpen then
1023
1026
local prntPanel
1024
1027
if luaState == " Client" then
1025
- prntPanel = blobsProfiler . Modules [ moduleName ]. SubModules [ pnlNew : GetText ()] .ClientTab
1028
+ prntPanel = subModuleTable .ClientTab
1026
1029
elseif luaState == " Server" then
1027
- prntPanel = blobsProfiler . Modules [ moduleName ]. SubModules [ pnlNew : GetText ()] .ServerTab
1030
+ prntPanel = subModuleTable .ServerTab
1028
1031
end
1029
- blobsProfiler . Modules [ moduleName ]. SubModules [ pnlNew : GetText ()] .OnOpen (luaState , prntPanel )
1032
+ subModuleTable .OnOpen (luaState , prntPanel )
1030
1033
end
1031
1034
end
1032
1035
end
@@ -1066,13 +1069,14 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1066
1069
elseif luaState == " Server" then
1067
1070
moduleData .ServerTab = moduleTab
1068
1071
1072
+ local moduleTable = blobsProfiler .GetModule (moduleName )
1069
1073
moduleSheet .Tab .PaintOver = function (s ,w ,h )
1070
1074
-- 'Total' indicator progress bar of all submodules progress
1071
- if blobsProfiler . Modules [ moduleName ] .childrenReceiving then
1075
+ if moduleTable .childrenReceiving then
1072
1076
local totRecv = 0
1073
1077
local totChunks = 1
1074
1078
1075
- for moduleN , moduleRD in pairs (blobsProfiler . Modules [ moduleName ] .childrenReceiving ) do
1079
+ for moduleN , moduleRD in pairs (moduleTable .childrenReceiving ) do
1076
1080
totRecv = totRecv + (moduleRD .receivedChunks and # moduleRD .receivedChunks or 0 )
1077
1081
totChunks = totChunks + (moduleRD .totalChunks or 1 )
1078
1082
end
@@ -1082,9 +1086,9 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1082
1086
local dynamicH = (statePanel .GetActiveTab and statePanel :GetActiveTab () == s ) and h - 7 or h -- this is SO dumb
1083
1087
local startY = (statePanel .GetActiveTab and statePanel :GetActiveTab () == s ) and 0 or 1
1084
1088
draw .RoundedBoxEx (4 , 0 , startY , totalPerc * w , dynamicH , Color (255 ,255 ,0 ,50 ), true , true )
1085
- elseif blobsProfiler . Modules [ moduleName ] .flashyUpdate then
1089
+ elseif moduleTable .flashyUpdate then
1086
1090
if (statePanel .GetActiveTab and statePanel :GetActiveTab () == s ) then -- TODO: DPanel subModuleTabs will never stop flashing
1087
- blobsProfiler . Modules [ moduleName ] .flashyUpdate = nil
1091
+ moduleTable .flashyUpdate = nil
1088
1092
return
1089
1093
end
1090
1094
@@ -1095,7 +1099,7 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1095
1099
local startY = (statePanel .GetActiveTab and statePanel :GetActiveTab () == s ) and 0 or 1
1096
1100
draw .RoundedBoxEx (4 , 0 , startY , w , dynamicH , Color (0 ,255 ,0 ,50 ), true , true )
1097
1101
end
1098
- elseif blobsProfiler . Modules [ moduleName ] .retrievingData then
1102
+ elseif moduleTable .retrievingData then
1099
1103
local marqueeSpeed = 50 -- Speed of the marquee movement in pixels per second
1100
1104
local marqueeWidth = 50 -- Width of the marquee rectangle
1101
1105
local currentTime = CurTime ()
@@ -1169,9 +1173,11 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1169
1173
1170
1174
tabClient .OnActiveTabChanged = function (s , pnlOld , pnlNew )
1171
1175
blobsProfiler .Menu .MenuFrame :SetTitle (" blobsProfiler - " .. blobsProfiler .Menu .selectedRealm .. " - " .. pnlNew :GetText ())
1176
+ local moduleTable = blobsProfiler .GetModule (pnlNew :GetText ())
1177
+
1172
1178
if not blobsProfiler .Client [pnlNew :GetText ()] then
1173
- if blobsProfiler . Modules [ pnlNew : GetText ()] .UpdateRealmData then
1174
- blobsProfiler . Modules [ pnlNew : GetText ()] :UpdateRealmData (" Client" )
1179
+ if moduleTable .UpdateRealmData then
1180
+ moduleTable :UpdateRealmData (" Client" )
1175
1181
end
1176
1182
end
1177
1183
@@ -1183,14 +1189,16 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1183
1189
1184
1190
tabServer .OnActiveTabChanged = function (s , pnlOld , pnlNew )
1185
1191
blobsProfiler .Menu .MenuFrame :SetTitle (" blobsProfiler - " .. blobsProfiler .Menu .selectedRealm .. " - " .. pnlNew :GetText ())
1192
+ local moduleTable = blobsProfiler .GetModule (pnlNew :GetText ())
1193
+
1186
1194
if not blobsProfiler .Server [pnlNew :GetText ()] then
1187
- if blobsProfiler . Modules [ pnlNew : GetText ()] .UpdateRealmData then
1188
- blobsProfiler . Modules [ pnlNew : GetText ()] .retrievingData = true
1189
- blobsProfiler . Modules [ pnlNew : GetText ()] :UpdateRealmData (" Server" )
1195
+ if moduleTable .UpdateRealmData then
1196
+ moduleTable .retrievingData = true
1197
+ moduleTable :UpdateRealmData (" Server" )
1190
1198
end
1191
1199
end
1192
1200
1193
- if blobsProfiler . Modules [ pnlNew : GetText ()] and firstSubModule [pnlNew :GetText ()] then
1201
+ if firstSubModule [pnlNew :GetText ()] then
1194
1202
if firstSubModule [pnlNew :GetText ()].data .UpdateRealmData then
1195
1203
if blobsProfiler .Server [pnlNew :GetText ()][firstSubModule [pnlNew :GetText ()].name ] then return end
1196
1204
firstSubModule [pnlNew :GetText ()].data .retrievingData = true
@@ -1208,45 +1216,28 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1208
1216
end )
1209
1217
1210
1218
local function handleSVDataUpdate (rawModuleName , dataTable )
1211
- local moduleSplit = string .Explode (" ." , rawModuleName ) -- [1] is parent, [2] is submodule
1212
- local moduleName = moduleSplit [1 ]
1213
- local subModule = nil
1214
-
1219
+ local moduleTable , parentModule = blobsProfiler .GetModule (rawModuleName )
1215
1220
blobsProfiler .Log (blobsProfiler .L_DEBUG , " requestData module: " .. rawModuleName )
1216
1221
1217
- if # moduleSplit == 2 then -- ew
1218
- subModule = moduleSplit [2 ]
1219
-
1220
- if blobsProfiler .Modules [moduleName ].childrenReceiving [moduleName .. " ." .. subModule ] then
1221
- blobsProfiler .Modules [moduleName ].childrenReceiving [moduleName .. " ." .. subModule ] = nil
1222
+ if parentModule then
1223
+ if parentModule .childrenReceiving [rawModuleName ] then
1224
+ parentModule .childrenReceiving [rawModuleName ] = nil
1222
1225
end
1223
- end
1224
-
1225
- if not subModule then
1226
- if blobsProfiler .Modules [moduleName ] then
1227
- blobsProfiler .SetRealmData (" Server" , moduleName , dataTable )
1228
- blobsProfiler .Modules [moduleName ].retrievingData = false
1229
1226
1230
- blobsProfiler .Modules [moduleName ].flashyUpdate = true
1231
-
1232
- if blobsProfiler .Modules [moduleName ].BuildPanel then
1233
- blobsProfiler .Modules [moduleName ].BuildPanel (" Server" , blobsProfiler .Modules [moduleName ].ServerTab )
1234
- blobsProfiler .Log (blobsProfiler .L_DEBUG , " Module.BuildPanel completed for module " .. moduleName .. " (Server)" )
1235
- end
1236
- end
1227
+ parentModule .flashyUpdate = true
1237
1228
else
1238
- if blobsProfiler .Modules [moduleName ] and blobsProfiler .Modules [moduleName ].SubModules [subModule ] then
1239
- blobsProfiler .SetRealmData (" Server" , rawModuleName , dataTable )
1240
- blobsProfiler .Modules [moduleName ].SubModules [subModule ].retrievingData = false
1229
+ if moduleTable .childrenReceiving [rawModuleName ] then
1230
+ moduleTable .childrenReceiving [rawModuleName ] = nil
1231
+ end
1232
+ end
1241
1233
1242
- blobsProfiler .Modules [moduleName ].flashyUpdate = true
1243
- blobsProfiler .Modules [moduleName ].SubModules [subModule ].flashyUpdate = true
1234
+ blobsProfiler .SetRealmData (" Server" , rawModuleName , dataTable )
1235
+ moduleTable .retrievingData = false
1236
+ moduleTable .flashyUpdate = true
1244
1237
1245
- if blobsProfiler .Modules [moduleName ].SubModules [subModule ].BuildPanel then
1246
- blobsProfiler .Modules [moduleName ].SubModules [subModule ].BuildPanel (" Server" , blobsProfiler .Modules [moduleName ].SubModules [subModule ].ServerTab )
1247
- blobsProfiler .Log (blobsProfiler .L_DEBUG , " Module.BuildPanel completed for " .. moduleName .. " submodule " .. subModule .. " (Server)" )
1248
- end
1249
- end
1238
+ if moduleTable .BuildPanel then
1239
+ moduleTable .BuildPanel (" Server" , moduleTable .ServerTab )
1240
+ blobsProfiler .Log (blobsProfiler .L_DEBUG , " Module.BuildPanel completed for " .. rawModuleName .. " (Server)" )
1250
1241
end
1251
1242
end
1252
1243
@@ -1274,6 +1265,7 @@ net.Receive("blobsProfiler:requestData", function()
1274
1265
1275
1266
table.insert (blobsProfiler .chunkModuleData [moduleName ].receivedChunks , chunkData )
1276
1267
1268
+ -- using blobsProfiler.Modules is acceptable here because it would look shit using .GetModule (i tried)
1277
1269
blobsProfiler .Modules [moduleParent ].childrenReceiving = blobsProfiler .Modules [moduleParent ].childrenReceiving or {}
1278
1270
blobsProfiler .Modules [moduleParent ].childrenReceiving [moduleName ] = blobsProfiler .chunkModuleData [moduleName ]
1279
1271
0 commit comments