1,750 Commits over 427 Days - 0.17cph!
Update: don't build UI bundle for server bundles
Tests: none, trivial change
Clean: get rid of StoreTakeover internal warmup count
It never goes past 1 since we fixed open order of store
Tests: stuck an assert and validated poked at different menus
Bugfix: ensure StoreItemGrid caches local source bundles
Fixes wrong imges displayed in the shop for specific items
Tests: navigated to store and clicked a bunch of pages. Compared before and after images
Update: reimplement UI_StoreItemGrid population
- Warmup completelly skips initialization of tiles
- Expanded the interface to permit existing custom usage (filtering via search, editor test tools)
Tests: Clicked through a bunch of tabs and tiles, used search
Update: remove extra CacheBundleIcons calls from store tabs
Previously were needed because tab could open before the store - since it was fixed, it's unnecessary
Tests: navigated to store tabs - no errors
Clean: StoreItemGrid.Warmup -> OnOpened
Review feedback pt 2
Tests: none, trivial change
Clean: rename WarmupIcons to CacheBundleIcons
Review feedback pt1
Tests: none, trivial change
Update: reimplementation of UI dynamic bundle
Only bundles 2 prefabs - Store and Inventory. This removed the need for editor-users to worry about what should be in which bundle. Doesn't work yet - inventory is borked, scrolling in store as well, and not unloading as much as I expected. Going to try to tweak it to see if it's usable.
Tests: built standalone and took snapshots
Update: testing code to try to trigger NREs. so far unsuccessful
Need to switch away from the task for a bit, will get back to it later today
Tests: 2p session, used spectate_loop to see what happens on 2nd player end - no NREs
Update: AssetDatabaseBackend - throw an error if trying to load an asset that's not part of a dynamic bundle
Tests: clicked through store in editor
Update: feed dynamic bundle hashset externally to AssetBundleBackend
This allows us to reuse the const instead of hardcoding a raw string
Tests: compiles in editor
Clean: pre-review cleanup
- got rid of unit test as it doesn't prove anything and relied on API that's not promoted (or needed atm)
- formatting fixes, dead code removal
- got rid of fallback inspector code
Tests: editor compiles in all configs
Merge: from storetakeover_icons
- Storetakeovers and related resources now can be dynamically loaded/unloaded
Tests: navigated through the store and inventory while taking memory snapshots
Merge: from merge_with_atlas
- General improvements to editor workflow
- Fixing outstanding bugs and TODOs
- Updated all assets again to catch up with atlas work
Tests: navigated through the store and inventory while taking memory snapshots
Clean: replace a path with a named constant
Tests: editor compiles
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.