View Issue Details

IDProjectCategoryView StatusLast Update
0013188Return of ReckoningGeneralpublic2024-06-20 00:06
ReporterReturnOfReckoning Assigned ToEmissary  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionno change required 
Summary0013188: [Core Addon] DataUtils performance issues
DescriptionReporter: Silentguard

Function turn off wrong flag which prevents it from proper caching inventory request. This typo produce massive fps drops and memory leak while using MiracleGrowRemix and Bag-o-matic.

Please let me know if you can't fix core addons.

function DataUtils.GetCraftingItems()
    if (GameData.Player.**craftingItemsDirty**)
    then
        GameData.Player.**itemsDirty = false**
        DataUtilsData.craftingItems = GetCraftingItemData()
    end
    return DataUtilsData.craftingItems
end

file_path: EASystem_Utils\Source\DataUtils.lua
TagsScripting

Activities

ReturnOfReckoning

ReturnOfReckoning

2023-08-13 03:47

reporter   ~0023895

Commenter: sullemunk

Don't know why Miraclegrow and the other addons doesn't snagg its data from GetCraftingItemData() instead of DataUtils.GetCraftingItems().
But yeah, we can change it to ignore the "dirty" check
ReturnOfReckoning

ReturnOfReckoning

2023-08-13 03:47

reporter   ~0023896

Commenter: Silentguard

GetCraftingItemData() is C to Lua data translation. Its very performance expensive and thats why EA provide DataUtils which should cache this call.

Fix to solve issue:
**GameData.Player.itemsDirty = false** > **GameData.Player.craftingItemsDirty= false**
ReturnOfReckoning

ReturnOfReckoning

2023-08-13 03:47

reporter   ~0023897

Commenter: sullemunk

thats a strange function indeed, Does it get updated after 1:st run?
it checks if GameData.Player.craftingItemsDirty is true and if it is sets it to false, wich means the next run will not fetch new data
ReturnOfReckoning

ReturnOfReckoning

2023-08-13 03:47

reporter   ~0023898

Commenter: MaxHayman

Currently it never sets craftingItemsDirty so it always assumes its dirty and doesn't use the cache.
ReturnOfReckoning

ReturnOfReckoning

2023-08-13 03:47

reporter   ~0023899

Commenter: sullemunk

the other functions do the same:
DataUtils.GetCurrencyItems()
DataUtils.GetQuestItems()
DataUtils.GetEquipmentData ()
etc..
checks if dirty is true; update , set it to false , no more updates on calls
ReturnOfReckoning

ReturnOfReckoning

2023-08-13 03:47

reporter   ~0023900

Commenter: Silentguard

**GameData.Player.craftingItemsDirty** and other flags AIK set to true by client internal inventory update event. Not by addons.

Issue History

Date Modified Username Field Change
2023-08-13 03:47 ReturnOfReckoning New Issue
2023-08-13 03:47 ReturnOfReckoning Tag Attached: Scripting
2023-08-13 03:47 ReturnOfReckoning Note Added: 0023895
2023-08-13 03:47 ReturnOfReckoning Note Added: 0023896
2023-08-13 03:47 ReturnOfReckoning Note Added: 0023897
2023-08-13 03:47 ReturnOfReckoning Note Added: 0023898
2023-08-13 03:47 ReturnOfReckoning Note Added: 0023899
2023-08-13 03:47 ReturnOfReckoning Note Added: 0023900
2024-06-20 00:06 Emissary Assigned To => Emissary
2024-06-20 00:06 Emissary Status new => closed
2024-06-20 00:06 Emissary Resolution open => no change required