1,882 Commits over 457 Days - 0.17cph!
Clean: remove dead UI_Store::overlayPages variable
Tests: editor compiles
Update: don't open first tab during UI_Store warmup
Helps avoid early bundle loads
Tests: interacted with the store in editor
Bugfix: fix NRE when clicking packs on DLC screen
- DLC screen now uses path proxies for prefabs
- also fixed database backend not tracking release refcount properly (funny I made this mistake twice >.>)
The overlay prefabs are assigned to ui/store.bundle, which when unloaded breaks the stored reference.
Tests: in editor navigated to dlc page and tried clicking on all tiles - all opened as pages
Update: activate path proxies for UI
- fix a bug with UI_SteamInventory using released textures
This CL breaks prefab and texture dependencies. Going to validate standalone next
Tests: using bundle backend, interacted with store in editor
Update: resave assets for ui/store.prefab
- Still contains both path proxies and original objects, in case I'll need to chase up some sort of desync in upcoming test
Tests: activated proxy path code and tested in editor(by inspecting prefabs and ensuring they assets) and non-bundle playmode(by going through a bunch of tabs in store)
Bugfix: avoid closing already-closed page
This fixes an issue where we tried to unsub from dynamic bundle without loading it first
Tests: started in editor and navigated to shop
Buildfix: get rid of dead code call
Tests: editor compiles
Bugfix: path migration fixes
- get rid of UI_StoreItemOverlayPage paths, since they're not used atm and might not be needed
- make sure Takeover's page prefab gets assigned the right bundle
Update: overwriting all modified assets with copy from main
Tests: none, will upgrade them next
Merge: from main
Will need to copy all prefabs from main in next CL to ensure nothing's tarnished
Update: can now use PathProxyFor attribute to automatically show an asset picker for a string property
- converted StoreTakeoverDrawer to use it
Tests: enabled the path drawing paths and made sure it renders and interacts correctly
Update: StoreTakeoverPath - generalize DrawSpritePathField into DrawPathProxyField<T>
- fixed DrawSpriteField not matching how it used to be
Need to extract it from StoraTakeoverDrawer as it'll be useful in other places, will do that next
Tests: visualized takeovers in editor. Prefab picker is empty (shame) but drag-and-drop works
Update: StoreTakeoverDrawer - path proxy drawer now draws like a sprite field
- fixed drawer using wrong fields for icons
Tests: tested on cached Path override, clicked to get a cprite picker, drag and dropped - all work
Update: general cleanup and make StoreTakeoverDrawer draw original props
- StoreTakeoverDrawer used if-deffed-out blocks to be able to switch from Textures/Prefabs to paths to them
- removed Tile Override path, as it hasn't been implemented fully yet and has been silently failing this entire time
Managed to confirm that the data from Main got preserved, but I'll need to do a raw copy of prefabs with configs just to make sure nothing slipped through the cracks.
Tests: navigated to takeover configs and explored them
Merge: from main
Testing to see if I can upgrade data this way - that'll be next CL
Tests: compiles in editor
Update: restore ItemStoreTakeover serialized layout
- should allow to merge-and-upgrade all prefab changes, I hope. Will remove it post-merge.
Tests: editor compiles
Tests: add a unit test for AssetBundleBackend to check if out of order async works
Napkin code, will clean later once decided that this branch is merged back
Tests: ran unit test in editor
Merge: from storetakeover_icons
- Converts more store logic to use dynamic bundles, reducing ram usage
Tests: took memory snapshot in stnadalone build for Store and Home pages
Bugfix: UI_Store - preserve which tab was opened when UI_Store is closed
Tests: navigated to and away from store in Editor
Clean: remove TODO that turned out unnecessary
Tests: none, trivial change
Update: UI_StoreItemGrid - allow grid to initialize it's tiles multiple times in a row
Tests: clicked between various tabs on the store in editor with bundle backend
Update: UI_StoreTakeover - Do not instantiate textures when loading from dynamic bundle
Lets us avoid destroy calls, since dynamic bundle unloading destroys things automatically
Tests: navigated to the store page in editor with bundle backend
Bugfix: ensure dynamic bundle tracks subscriber count accurately
This was causing the bundle to not unload in the updated flow
Tests: navigated to store in editor with bundle backend
Bugfix: ensure ui/store.bundle gets unloaded after all changes
- UI_Store opens the first tab during warmup, outside of OnOpen, which unbalanced subscribe/unsubscribe calls. It also never closed the tab when itself being closed. Addressed both.
Tests: clicked through tabs, then closed shop - no asserts fired. Need to test in bundle mode, that'll be next.
Bugfix: fix some items showing empty icons
Tests: navigated through all tabs of shop and inventory - everything seemed present
Merge: from fix_missing_takeovers
Images still missing - digging deeper
Tests: navigated to store
Update: run Update Paths and Assign Bundle on MenuUI2_Store_General grids
Tests: none, will test in parent branch
Bugfix: warm up UI_StoreTakeover's Takeovers in more cases
- Reimplemented warmup of StoreFeatured/General/Limited to first spawn empty tiles and fill them up once tab is opened
Turns out, we can open tabs of store without opening store itself, resulting in an access to uninitialize takeovers. Couple empty item icons remain, will fix next.
Tests: navigated to the store and clicked through bunch of tabs and scrolled around.
Update: break ItemStoreTakeover links to sprites
- Added warmup-cooldown to relevant UI screens
Doesn't work correctly - menu spawns, but uses wrong assets. This is due to warm-up logic running before storetakeover warmup
Tests: navigated to Store and Inventory pages. Inventory is okay, but store is derped
Update: UI_StoreTakeover.AssignStoreBundle utility to assign it's icons to ui/store.bundle
- Ran Assign Store Bundle on all takeovers
Tests: inspected meta changes
Update: ItemStoreTakeover - stores paths to icon textures
- Updated StoreTakeoverDrawer to visualize sprites from paths instead of ItemStoreTakeover fields
- ran update paths on relevant prefabs
Not decoupling sprite fields from ItemStoreTakeover just yet - gonna do it as a separate submit
Tests: interacted with prefabs in the editor, confirmed that it's rendering correct images and paths are present
Update: FilySystemBackend supports "dynamic" asset bundles
- updated store overlay pages to use it
Was able to succesfully load up Abyss store page, observed no stutters. Confirmed with memory profiler that abyss textures were loaded only on entering the page, but discovered that they remain afterwards despite unload (as they're still owned by asserscenes.bundle somehow) despite ui/store.bundle being unloaded. That'll be next.
Tests: used both normal and bundle backends in editor and navigated to Abyss page. Built a debug client and navigated to Abyss page, took snapshots. Built Release client to see if stutters are present.
Bugfix: fix UI_Takeover overriding with null values
Tests: ran in editor
Hack: skip explicitly loading ui/store.bundle at boot
Using this to check if we no longer have a bunch of media textures loading in. Memory Profiler shows -87 textures/-1.2GB loaded. Need to implement dynamic bundle loading, and see if it breaks anything else.
Tests: memory profiled a standalone client. Couldn't get to Abyss page (but that's expected).
Update: assign UI store overlay page prefabs to ui/store.bundle
- Ensure when we generate bundles, we chuck the assigned assets to ui/store.bundle
Tests: generated bundles, used bundle mode in editor and was able to navigate to the Abyss store page.
Update: UI_Store - drop UI_StoreItemOverlayPage references
- resaved prefab
Doesn't help with reducing RAM pressure, but allows us to take the next step of dnyamically loaded/unloaded bundles.
Tests: Went to Abyss page in Editor. Built standalone, took a memory snapshot from main menu - offending assets still there
Update: FileSystemBackend.Load<T> - option to skip caching of loaded asset
Using this to try to avoid caching of store assets
Tests: opened and closed Abyss page a couple times with DB backend
Clean: reorganize UI_Store.CloseStoreOverlayPage
- added a todo to revisit
Tests: none, trivial change
Bugfix: Ensure active UI_StoreItemOverlayPage gets properly cleaned up
Tests: tried a bunch of main menu interactions
Update: UI_Store - load overlay page dynamically from path
Doesn't do unloading yet (gets cached in the asset backend). Also there's a bug with CloseStoreOverlayPage not being called in all cases.
Tests: In Editor, loaded Abyss overlay page in store
Update: UI_StoreTakeover - store paths instead of guids
- ran Update Paths
Our filesystem backends only work with paths, so GUIDs were useless.
Tests: none, trivial change
Update: UI_StoreTakeover - store GUIDs to referenced prefabs
- Ran Update GUIDs on MenuUI2_Store
same goal as before, try to dynamically load/unload store pages.
Tests: In editor, opened Abyss store page
Update: Run "Update GUIDs" on all store overlay page prefabs
Tests: loaded Abyss store page in Editor
Update: UI_StoreItemOverlayPage - store GUIDs of textures
- Added utility to fetch GUIDs from already assigned textures and saving to disk
Getting ready to switch to guid resource tracking instead of relying on unity to always load textures
Tests: Loaded into bootstrap scene in editor and opened Abyss store page
Bugfix(editor): LoadMapFile - don't NRE when no scene is loaded and Server Occlusio Debug is open
Tests: used in editor
Merge: from server_occlusion_poppin
- Bugfix: fixes false-negative occlusion queries at the top of the hills
- Bugfix: fixes false-positive occlusion queries while looking through a hill
- Optim: sped up occlusion cache generation by 65%+ (4.5k from 134s -> 50s, can be faster with sufficient RAM)
- Editor: extended LoadMapFile with Server Occlusion debug tools
Tests: generated reported bug case and visualized and debug traced. Generated 6k, 4.5k, 2k and Craggy to confirm generation doesn't crash.
Buildfix: don't try to draw on the server-only build
Tests: editor compiles
Clean: code cleanup and custom_occlusion_query command
- ran generate code
Tests: compiles in editor
Optim: ServerOcclusion - try to avoid redundant HasCustomTag calls
Only saves 1s out of 30s run, but should scale better if we increase GridOffsets in the future.
Tests: generated and visualized