Skip to content

Commit

Permalink
DGS Update 3.518
Browse files Browse the repository at this point in the history
DGS Update 3.518 Stable(16/Oct/2022)
0. Code clean up & code optimise
1. Fixed: render issue of progress bar
2. Enhanced: Conditional Multilingual Dictionary
3. Added Function: dgsTranslationAddPropertyListener
3. Added Function: dgsTranslationRemovePropertyListener
4. Optimised: shared getCameraMatrix for 3d elements
5. Optimised: reduce string creating when using shadow with color coded
6. Optimised: table creation when rendering 3dinterface
7. Added Property: buttonPosition for radiobutton and checkbox
8. Added Property: shadow for editbox
9. Fixed: sourceResource sometimes will be changed into dgs element
10. Optimised: onDgsCreate event logic
11. Fixed: error when using custom cursor
12. Enhanced: dgs rounded rectangle
13. Enhanced: dgs custom cursor
14. Optimised: shared texture/shader in style system
15. Fixed: Error when rendering tab panel
16. Fixed: stack C overflow when using dgsCloseWindow in onDgsWindowClose
17. Added Function: dgsButtonMakeForm
18. Added Function: dgsButtonRemoveForm
19. Added Event: onDgsFormSubmit
20. Changed: dgsGetListeneingProperties -> dgsGetListenedProperties
21. Fixed: color picker doesn't work in scroll pane
22. Fixed: masked text should not be able to be copied
23. Fixed: wrong position of debug trace
24. Fixed: error when using debugdgs 3 with dgs animation
25. Fixed: render issue of dgs color picker
26. Fixed: error when using dgs animation
27. Fixed: error when using combobox (now autoSort is disabled by default)
28. Fixed: error when using sort of combobox
29. Fixed: Missing function dgsComboBoxGetScrollBar
30. Optimised: video memory using of combobox/gridlist/scrollpane/scalepane/tabpanel/3dinterface/edit/memo
31. Fixed: render issue of grid list
32. Fixed: memo goes to wrong line when set caret position
33. Optimised: reduce cpu usage when there's no dgs elements (50% optimised)
  • Loading branch information
thisdp committed Oct 16, 2022
1 parent dc1f491 commit 23f908e
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 29 deletions.
83 changes: 55 additions & 28 deletions client.lua
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ MouseData = {
scbEnterRltPos = false,
topScrollable = false,
lastPos = {-1,-1},
visibleLastFrame = false,
hitData3D = {[0]=false},
hitData2D = {[0]=false},
lock3DInterface = false,
Expand Down Expand Up @@ -135,7 +136,7 @@ function dgsCoreRender()
dgsRenderInfo.frames = dgsRenderInfo.frames+1
dgsRenderInfo.frameStartScreen = getTickCount()
dgsRenderInfo.rendering = 0
triggerEvent("onDgsPreRender",resourceRoot)
--triggerEvent("onDgsPreRender",resourceRoot)
local frameStart3DOnScreen,frameEnd3DOnScreen = 0,0
MouseData.cursorPos3D[0] = false
local mx,my = -1000,-1000
Expand All @@ -145,19 +146,23 @@ function dgsCoreRender()
MouseData.cursorPosScr[0],MouseData.cursorPosScr[1],MouseData.cursorPosScr[2] = true,mx,my
MouseData.cursorPosWld[0],MouseData.cursorPosWld[1],MouseData.cursorPosWld[2] = true,mx,my
MouseData.cursorPos3D[0],MouseData.cursorPos3D[1],MouseData.cursorPos3D[2],MouseData.cursorPos3D[3] = true,getWorldFromScreenPosition(mx,my,1)
else
MouseData.MoveScroll[0] = false
MouseData.scbClickData = false
MouseData.selectorClickData = false
MouseData.lock3DInterface = false
MouseData.clickl = false
MouseData.clickr = false
MouseData.clickm = false
MouseData.Scale[0] = false
MouseData.Move[0] = false
MouseData.MoveScale[0] = false
MouseData.cursorPosWld[0] = false
MouseData.cursorPosScr[0] = false
end
if MouseData.visibleLastFrame ~= cursorShowing then
if not cursorShowing then
MouseData.MoveScroll[0] = false
MouseData.scbClickData = false
MouseData.selectorClickData = false
MouseData.lock3DInterface = false
MouseData.clickl = false
MouseData.clickr = false
MouseData.clickm = false
MouseData.Scale[0] = false
MouseData.Move[0] = false
MouseData.MoveScale[0] = false
MouseData.cursorPosWld[0] = false
MouseData.cursorPosScr[0] = false
end
MouseData.visibleLastFrame = cursorShowing
end
if isElement(BlurBoxGlobalScreenSource) then
dxUpdateScreenSource(BlurBoxGlobalScreenSource,true)
Expand Down Expand Up @@ -198,7 +203,8 @@ function dgsCoreRender()
for i=1,#dgsWorld3DTable do
local v = dgsWorld3DTable[i]
local eleData = dgsElementData[v]
if (eleData.dimension == -1 or eleData.dimension == dimension) and (eleData.interior == -1 or eleData.interior == interior) then
local selfDimen = eleData.dimension
if (selfDimen == -1 or selfDimen == dimension) and (eleData.interior == -1 or eleData.interior == interior) then
dxSetBlendMode(eleData.blendMode)
renderGUI(v,mx,my,eleData.enabled,eleData.enabled,eleData.mainRT,0,0,0,0,0,0,1,MouseData.clickl)
end
Expand All @@ -208,7 +214,8 @@ function dgsCoreRender()
for i=1,#dgsScreen3DTable do
local v = dgsScreen3DTable[i]
local eleData = dgsElementData[v]
if (eleData.dimension == -1 or eleData.dimension == dimension) and (eleData.interior == -1 or eleData.interior == interior) then
local selfDimen = eleData.dimension
if (selfDimen == -1 or selfDimen == dimension) and (eleData.interior == -1 or eleData.interior == interior) then
renderGUI(v,mx,my,eleData.enabled,eleData.enabled,nil,0,0,0,0,0,0,1)
end
end
Expand Down Expand Up @@ -247,7 +254,7 @@ function dgsCoreRender()
end
MouseData.hit = hit2D or hit3D
dxSetRenderTarget()
if not cursorShowing then
--[[if not cursorShowing then
MouseData.hit = false
MouseData.Move[0] = false
MouseData.Scale[0] = false
Expand All @@ -261,7 +268,7 @@ function dgsCoreRender()
MouseData.clickm = false
MouseData.cursorPosWld[0] = false
MouseData.cursorPosScr[0] = false
end
end]]
triggerEvent("onDgsRender",resourceRoot)
if KeyHolder.repeatKey then
local tick = getTickCount()
Expand Down Expand Up @@ -584,7 +591,7 @@ function renderGUI(source,mx,my,enabledInherited,enabledSelf,rndtgt,xRT,yRT,xNRT
if _mx > 0 and _my > 0 and _mx <= 1 and _my <= 1 then
if type(checkPixel) == "function" then
local checkFnc = daEleData.checkFunction
if checkFnc((mx-xNRT)/w,(my-yNRT)/h,mx,my) then
if checkFnc(_mx,_my,mx,my) then
MouseData.hit = source
daDebugColor = 0xFF0000
end
Expand Down Expand Up @@ -706,26 +713,33 @@ function renderGUI(source,mx,my,enabledInherited,enabledSelf,rndtgt,xRT,yRT,xNRT
end
addEventHandler("onClientRender",root,dgsCoreRender,false,dgsRenderSetting.renderPriority)

function dgsCore3DRender()
function dgsCore3DRender() --This renderer will only be attached to onClientPreRender when there are 3d elements, because onClientPreRender is slow and only used to render 3d elements
dgsRenderInfo.frameStart3D = getTickCount()
local rendering3D = 0
if #dgsWorld3DTable ~= 0 then
cameraPos[1],cameraPos[2],cameraPos[3] = getCameraMatrix()
end
for i=1,#dgsWorld3DTable do
local ele = dgsWorld3DTable[i]
local dgsType = dgsElementType[ele]
if dgs3DRenderer[dgsType] then
if dgs3DRenderer[dgsType](ele) then
for i=1,#dgsWorld3DTable do
local ele = dgsWorld3DTable[i]
local dgsType = dgsElementType[ele]
if dgs3DRenderer[dgsType] and dgs3DRenderer[dgsType](ele) then
rendering3D = rendering3D+1
end
end
end
dgsRenderInfo.rendering3D = rendering3D
dgsRenderInfo.dgsWorld3DTableSize = #dgsWorld3DTable
dgsRenderInfo.frameEnd3D = getTickCount()
end
addEventHandler("onClientPreRender",root,dgsCore3DRender)

function dgsCore3DStartRender()
addEventHandler("onClientPreRender",root,dgsCore3DRender,false)
end

function dgsCore3DStopRender()
removeEventHandler("onClientPreRender",root,dgsCore3DRender)
dgsRenderInfo.rendering3D = 0
dgsRenderInfo.frameStart3D = 0
dgsRenderInfo.frameEnd3D = 0
end

addEventHandler("onClientKey",root,function(button,state)
if button == "mouse_wheel_up" or button == "mouse_wheel_down" then
Expand Down Expand Up @@ -1668,8 +1682,14 @@ function dgsCleanElement(source)
if dgsIsAniming(source) then if isAlive then dgsStopAniming(source) end end
if dgsTypeWorld3D[dgsType] then
tableRemoveItemFromArray(dgsWorld3DTable,source)
if #dgsWorld3DTable+#dgsScreen3DTable == 0 then
dgsCore3DStopRender() --Remove renderer if no 3d elements
end
elseif dgsTypeScreen3D[dgsType] then
tableRemoveItemFromArray(dgsScreen3DTable,source)
if #dgsWorld3DTable+#dgsScreen3DTable == 0 then
dgsCore3DStopRender() --Remove renderer if no 3d elements
end
else
local parent = dgsElementData[source].parent
if not parent or parent == root then
Expand Down Expand Up @@ -2351,6 +2371,13 @@ function onDGSElementCreate(source,theResource)
dgsAddEventHandler("onDgsBlur",source,"DGSI_onDGSWindowBlur",getPropagated)
dgsAddEventHandler("onDgsFocus",source,"DGSI_onDGSWindowFocus",getPropagated)
triggerEvent("onDgsCreate",source,theResource)

local dgsType = dgsGetType(source)
if dgsTypeWorld3D[dgsType] or dgsTypeScreen3D[dgsType] then
if #dgsWorld3DTable+#dgsScreen3DTable == 1 then
dgsCore3DStartRender() --Add renderer if there are 3d elements
end
end
end

function dgsClear(theType,res)
Expand Down
2 changes: 1 addition & 1 deletion update.cfg
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.517
3.518

0 comments on commit 23f908e

Please sign in to comment.