diff --git a/BuildScripts/BakeWorldMap.bat b/BuildScripts/BakeWorldMap.bat index b06d617a..f6dcf36a 100644 --- a/BuildScripts/BakeWorldMap.bat +++ b/BuildScripts/BakeWorldMap.bat @@ -187,7 +187,7 @@ REM carries, which for this map are 16384 in eight tiles; a piece is baked at th REM pixels over a quarter of the width is what a piece is. SET MAP=/Game/Maps/Persistent_GameWorld SET BUILDER=-run=WorldPartitionBuilderCommandlet -Builder=/Script/ProjectEleriEditor.WorldMapBuilder -AllowCommandletRendering -SCCProvider=None -unattended -Verbose -SET PIECE_SIZE=8192 +SET PIECE_SIZE=4096 SET PIECE_TILES=4 SET PIECE_GRID=8 SET PIECE_ROOT=%PROJECT_ROOT%Intermediate\WorldMap diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini index 3a9b1808..70b4eae3 100644 --- a/Config/DefaultGame.ini +++ b/Config/DefaultGame.ini @@ -109,6 +109,8 @@ bSkipMovies=False +MapsToCook=(FilePath="/Game/Maps/W_Island_1") +DirectoriesToAlwaysCook=(Path="/Game/GameData") +DirectoriesToAlwaysCook=(Path="/NNEDenoiser") ++DirectoriesToAlwaysCook=(Path="/Game/Textures/Map") ++DirectoriesToAlwaysCook=(Path="/Game/Maps/Generated") bRetainStagedDirectory=False CustomStageCopyHandler= diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld.uasset index 6b39c8bf..8ff6e2c6 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e46e22e39f1828ccb8482b04f16617628124a67f787811cbc6c49c55ceb48963 -size 1509110 +oid sha256:6393560b218a1ccf490c0093651dfe8aefabe2e70eaa3dfddd432df25689aaee +size 1509103 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_0.uasset index 8afdca31..00f2c048 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c51252d0b2ad4ddf9c61e76cf8e4cff8d26682b68fa885934eabc67a47f3cb0e -size 16252 +oid sha256:1f4ef28d1a534015f3b8563d3a583b203d78c10710bd4669550b4ce8d6ef9ca6 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_1.uasset index 4eb75267..2b3d11d8 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77206b48c0fab8ee8b51f094004730281ed53d3ab5ccc4ce8b910bc1b7581a46 -size 16252 +oid sha256:4d9a96a8debc9565d89618c5d087b5bccf0de185681ea3aa44e4a40afae1ac58 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_2.uasset index e9f0cf7b..facdab84 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c5c8282a89f039fd3466dba218bf5532acf94c3c8fdb7441581d5915838e39b -size 16252 +oid sha256:690e1b2c17a0a4d726471b91b509839a1d90fa81618413431039896af14e4174 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_3.uasset index 88c3596c..b4d9e76f 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:23ec6853f6482b5935f38a55d1cd25bf8e471cf0d9a63598eca0c7a8e4cd8800 -size 1331819 +oid sha256:464d0f6582f2f2e748e1627de8ea26802e252eef87932b6c4d742e01e14eaca5 +size 402644 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_4.uasset index 729db2fb..d3413eab 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c002465e122039ff030036a5369f4c0c1f2d7858f9e3cf8b6e2f2890fd20168c -size 1332889 +oid sha256:a35490d2430b284f21f247555cddf2b84ea1eb6b54d28691cb35e6b951279b58 +size 402382 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_5.uasset index 80719192..b4687ce8 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64c7e4038327b22341d05103fa3c65a3fa6599d16be8ea74253a17d7891c1428 -size 16252 +oid sha256:d3361c3e07b9f3d3dc2ebcc0d7e774303ed263dc08d6aa02c29d5ddd765677c1 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_6.uasset index 1aa50542..2e73e1c1 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8d37e0ee0856202d3cdc83f57210258b9b103c5d53c8011a7c21d9a2ce641aa -size 16252 +oid sha256:b83cf347b127dd0cb67de21249112b1c9ad106d9277dbec0d444a83feecc2a08 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_7.uasset index cc8c1816..24680878 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_0_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a25d933d5c320324a843b5e29b5b053f9f3b4cc81d546c3b15144da14df6e1e0 -size 16252 +oid sha256:304d2bc497582e93e77634020adf4405d4e95c375e9d4c09f83856d89f5afc7a +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_0.uasset index 459967ab..5ebefc02 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11172ffd29a98d0c11246bca3daf709cb5f38643019dea6808bf24025ecd3912 -size 16252 +oid sha256:32d857509041774ce5c44b70312a9d3d60434678278eac34e5054fc3717b3a46 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_1.uasset index d8c19e83..2ea29542 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e55f11eb2d413b184184372106b1abafec387b6de7e6edc4e8ebe40777cfb7b9 -size 16252 +oid sha256:a8645ac9a9f70a71d163238fd2d390f140df5f76e60c27941f20d57f4983dac1 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_2.uasset index c6922c6a..e6baa2f3 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81e99978194f57cb81da39d6856f420d7572675023697d124906d488e940f9fc -size 16252 +oid sha256:e97cc33df5f0249662d3d85109e0131f87451925eae64afe23f3e1fdcc69e986 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_3.uasset index 3d59b1c0..71e2a000 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87036bf82221d7387c9e58b3328580a9bc14ce89de278b777dfd503a64367d8f -size 3653324 +oid sha256:50370b3b9c53895c54b0d601f33941ffa41d3e81d6d124f7057c7665f57a402f +size 1688337 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_4.uasset index 2f6384f2..966806d0 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4a1d079b8f29bb6443d1fa86a3abbc7339bacdae9a366f81e0236330129740c -size 3529254 +oid sha256:c3826da9bf28f180ab853c06cf7062c0c2b621fbf5ad2283210aa9e7b915db71 +size 1649540 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_5.uasset index dc8f8e62..f5053b08 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:101653d2e2b26cdcdef0751c35bec02dc160d960190beca834a7815a57798147 -size 16252 +oid sha256:1a59af775404d29e61953bf94fe5b24f7df7465b16695814d9613c3baa2e63b9 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_6.uasset index 4fdff7a6..0935964c 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95700986c53edbdd4531e1aeea24de1ff037f3c381105e2e2a995714433b6d1c -size 16252 +oid sha256:48565aef71dc90ebeedac3a63d1d8ac7639cd38b94a36fb3e7b4c3bde7f295ae +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_7.uasset index 228d473b..67161cac 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_1_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5545444456b374164c064928b91a5804b1a07070a12af80fdba5bc7d0eaa2ef -size 16252 +oid sha256:5922876e3fdce14847fa3222ba818198327aa5458679775dff8d97658960fb66 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_0.uasset index a5989d49..32fb180d 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:660e5a0b3acbd28343d5b0651ab7a6d4754d4c6c449838bb32295965e3da1048 -size 16252 +oid sha256:c1c963aacad8f3d7af4e006f0059fb3014bfa7a2abab08e903bdc6b77c7f8cb6 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_1.uasset index aef3bb54..24acf9f0 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de7e6a4ae587c0bac09013e44fef086ebe77fd6d5c95c768e8eb1dc4a5ec7162 -size 16252 +oid sha256:a6f26542353298317b89878981a5e2ccf7b9ab54be450a333b118b30a6f452de +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_2.uasset index ba4d9d59..58e6f407 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e0cb00a0feb3c09d67441c432a1f1e317804727eac3e1373612363e7930166c -size 16252 +oid sha256:242edf7b00199166a875f7db410bdecfa48ed943676be8f6ea7cbb9e175dfdd1 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_3.uasset index d406199a..08311cb0 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56277e8f56cd9269c3434560c83dccbdfd816da6e0d46e21ab89c25b798cadb7 -size 1946903 +oid sha256:0dc66a3396ba543a1001a5f734b4508a75f37f48065d55f9c9cf6056350bf28b +size 666076 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_4.uasset index b6602236..a13cb5c3 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bb9063672147300e871ee9121cc32dd3739ac942490bfee6a0a3eea14a9b0ef1 -size 1693110 +oid sha256:8ec02ff560d9542dcd1447f3699e8c9f7c282161ffd61a3681862fab1c470124 +size 587253 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_5.uasset index aa3d8de6..349a05b6 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d39aa97bf71de77f7d0439dc0b349e56ff9bae82631e00d35a7305b4da30d2d -size 16252 +oid sha256:4e57277d0e62e42cb4c07f11c9059d4015ead99dfaa90b94e383b82f27f70b99 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_6.uasset index bcb47121..e014b956 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:205e71d477a7b0b2e30073ed03f88f54f5e144809d0d1646af4004f05ec36565 -size 16252 +oid sha256:9707f62cfb8db63309a4e7224d2108b6fd1c67a3921c270a43d57a48d1a4d248 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_7.uasset index 99a92045..34e93d14 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_2_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:af525c831cc011162db306accf2fd7ed097edb5110519696c02588548ec51d23 -size 16252 +oid sha256:7cc7993385b7d69e6ad9aa73118433714873caf4bdbe106276e994975de1eba0 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_0.uasset index 2b0712bd..b4d44ad5 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e1412360846cbb238f1482b6dfb5787076ad88c0f63317f257e8502c6d0fa19 -size 16252 +oid sha256:1b745717e726d2b0cab136cd3fc8d12eea339c1be832c0f667e6d99737d59218 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_1.uasset index 19793191..26fdd5ce 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b3286986e4d1833c934ab5b4a7c08c1307d2c6005a99c3998512225ed057d7a -size 16252 +oid sha256:4a47c52d56e4047a8ac826f91369e1545d601b535efc3265b45f51b82f8f1465 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_2.uasset index b7da5f9f..e6261b9e 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39c566ec37934e41ba8bb0119c261a7e3841c7bd1875cf18ea0a7ff62b5317e -size 16252 +oid sha256:c8293e8347a34a44f9118cd7afd97dbd1d7e23e257f792260517d6ba71ecb53f +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_3.uasset index b7e19a7d..e802f59a 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3afa837b38c39497cb20183804da9953b2b54de079416983172bcdc7d2a1d1cc -size 584425 +oid sha256:2e664fb2a61c85da04193d331a5b54615151c5ee9dca1427acf2fc3b6982f135 +size 174269 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_4.uasset index 0637a813..c5f047d2 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1696d0e8dad16c9e613460aaa7c53f917e7264060fd5fca9d81e5d1bdfa10520 -size 1414705 +oid sha256:3fb518ea7e4b7a7b941749dfe1923b63b45a3b242f2dc2f4e882474c96ef731b +size 409311 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_5.uasset index 53f403ae..7fd248c9 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e1117af8f28de573759609d4a9eae4b52996b33ddfac2089d7a21db6b98326f -size 16252 +oid sha256:e0fac51e4aa40e5b3b3bb5495b15027b6210d4858d199ff5213acbf181545cc2 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_6.uasset index 8a2e577b..3b7d723e 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce9e093d8ced53d277938e1e226fa5f5932e10e849dd2c67c63fd859776ed74f -size 16252 +oid sha256:c743399fde7786e030e31e05c7a74f5a812f13b0753a2ce0d6eec2556e373c4a +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_7.uasset index 11343be4..ec9f2b05 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_3_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e4a1d85ac3c9af7fa9c7d6fdd874f8b4be94854ccf522979bc3245c41b31386 -size 16252 +oid sha256:43d164ca1e60d7b9d3aa8d5ba9697cd4e884f0c747423800da9380036651764b +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_0.uasset index c77d23b2..9a7a1d53 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4bcff0306c1ef70da56e2a17d9d237fa5963a507cb5287e498bdbd4e5c60758f -size 16252 +oid sha256:91b929ff1d2fb3983488ba00ebf7321c3ef50d755aa2a3af25684e46ce14aade +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_1.uasset index 5fd7af09..28be1a09 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1fe7942c0d755ed4034cd4a2e833d406a97c40f8a40d29e6fbc15592fd9f28f -size 16252 +oid sha256:c0b895d9b014e262fab16150c16b89a91e81dc0884ab40c1b19a755ca8c57f0f +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_2.uasset index 93d50247..a98bbdec 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64e0a9d5579a556de003c971d69e11374630939fa8559b860570d01c8681a713 -size 16252 +oid sha256:4b6fcd28f1f41ee56f88be4ede8b3ba37aab9c81dfb56be63fe9fd761e2a0740 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_3.uasset index 94db9cd3..e709b9fe 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d8005017566ccb51ce84a45ef4e80f8e337060534edc0b90b7efcbf3f408689 -size 992203 +oid sha256:97bb173f36c31f681fc15adef5212d390aacb570b2e418ba0fdae53df0e3b845 +size 286492 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_4.uasset index a9e00fef..bf8b8777 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d88e621104835f6065eb171e9c409202b742d56d8f470bcb477b374c7f73064 -size 1759913 +oid sha256:aa1b923cd8d395feb8a60c4f92c76b3578e36dbcd70cd1a15274c41e7a000c0e +size 509558 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_5.uasset index 3852912b..7bde6827 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:efab8882663ec5e9058d3dc77013c9c55b64602837cc3eaec6fb2c6ebade29a9 -size 16252 +oid sha256:f56fa60570464323ce6f9248e589c59bb47b208f10372167a11bd99ac6b712ac +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_6.uasset index ac06b70b..5246dafa 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:616e0cfe55222d75f3fcec94fbfb7f5d8e57b550a77385e0dffdd65720bd5086 -size 16252 +oid sha256:f501262155a2bb9e2c722baba00e515bad829664cf319bf4b559620b7ea1aa58 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_7.uasset index 4f66963d..7bcc0bc8 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_4_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e032414065c4aff250061ecd6a56271425d313cdf88c77cacc5463378975caab -size 16252 +oid sha256:060bc28a503db01118139d2fedca8239fdfcc25a284aa7d8cad3877dc03982b3 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_0.uasset index 081abe99..e19dc69d 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae890d727784add5319aeece34f2afe3b9fe2489e8df9a849f5e2a5e5bdaf6b3 -size 16252 +oid sha256:de8f14daa5cbe8a885e08e3e3e8ebf36285d5f7168dd2e928346cf1428bb8e77 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_1.uasset index 3cc58959..2c377e73 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d57c38f23eae68064c4d0f16023a6df60bcd79b979dfe9f1c48e13d4a5e8fc8 -size 16252 +oid sha256:82b4d27d1691336da54a9e4d421688f4a14f1b5fae7f9e48be4e687f7686dcc4 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_2.uasset index 137690ef..467f8497 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5d8a6877a800fd53330dc0f2baccffda914f7ee7a05656344a853ae5528ffec -size 16252 +oid sha256:39ba84ce028c3f509890c3cd3c23102b634df9c58ad0ba1d2242ad48d60c6c0e +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_3.uasset index 9bf08058..36bd7b2b 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8b7bfe8fcacd624c48e6b6edd7b6c82eea43eb0aea842eec6e34fd1fe9147b0 -size 16252 +oid sha256:6c689cdc96d1314284cc4ba0de3c1afc85020d1c1d72065689bf43009897b63d +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_4.uasset index 570f10bf..9597f86d 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a11ecdc259444151b3313676139c1fde1ed38fac84096b4b981098f3adf6ac3 -size 16252 +oid sha256:f8fde3abdf1ce29e6d32001155dd19cadc2649cd2690ccb563d83d2647b4ec35 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_5.uasset index 5833e687..5c854bc0 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b72d400e3b705e45904f3a60c3c238038b5d7b013ddc72e3f957444770ef6669 -size 16252 +oid sha256:e5ca20715288597763c1d0267bdc86fa7f7a7b1ca1e52bb04add44c873c36f89 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_6.uasset index 83037177..a8e85729 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe9fdb86181c5a2aa80cdf675b90a0866e7393625585a60f2b42180f815230af -size 16252 +oid sha256:70cc540a24c146974fbf8e90019e1861401a7a8665f9494b0bca78821a573d40 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_7.uasset index 3724a5e1..391e9d11 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_5_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:26bb646ef61e232854356346595ba1905ce162e08ae84462a05b089e0385e05f -size 16252 +oid sha256:41c0595d155d98eef9fb768348d51e6526e10adca00124ee159b019d6df6227b +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_0.uasset index aa98ca56..4977883c 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b13bd5312d664d12c3f43febf6d2df8507a08ca48c804edecf43764feebbf035 -size 16252 +oid sha256:18ae0dadf49ccb742d1e72fcec60e03c11de798e75f0134825acee7146748634 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_1.uasset index 09d4f33e..7aa7be8e 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:653c43a186da56a69848c5681ec1f25c256d30ce92ff7cd25e87c077334ce3ef -size 16252 +oid sha256:42323d6d915c10bf1308699cb5d523b88e87bdde34720611b9ec6eb8dd9aab71 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_2.uasset index f233582e..34f700c2 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22087e9292b03e575c3fd061020361eabb1170732180c8b7177e30805377acea -size 16252 +oid sha256:cb4ed000681403e93ffb63f2f21f779521a5d8d5f7948db5ad80b2d4d00e40b6 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_3.uasset index 6bb37c98..422e6c4a 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ed1a5783ff1bdba7cfc828570d65e2935ca18085d909a49a19922ac97bcc236 -size 16252 +oid sha256:6aecb1021280332e356382950d2dc154637d132588be334a1d10af9b22e82d3c +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_4.uasset index ffbdc5ff..f5c168aa 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d031adf53dd9c9f11c756999e4ebfd601abd0f9ec12ad894d80c83c2d41a54c -size 16252 +oid sha256:5fea5bd55997ce597fac19ca7a0872d7beb766455c16f7994adb2d36f1b0bed7 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_5.uasset index 8c028d1e..77704640 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec314196a20bb05f724b2e928e37920744897438f784ce5e0d3532c403512d2e -size 16252 +oid sha256:862c41b9857b226ad2db146ba2568bada465541633dfc4f5e0d1c0099baf9b8a +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_6.uasset index 19f9f7e3..59ece177 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9f44856a440ddbe7f3683fbbc3fea501f5d6a4434685e619dcb410502b4ab243 -size 16252 +oid sha256:63eabedc14141f9cc5d11bb236e6aa5a1432a9387a91c72d8373a87b568c87a5 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_7.uasset index a9d8dfe9..3856ea42 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_6_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dca68a77d2d8d785ef41d7f6657e2ad8be2415b864d2b3c2d0285885858f7f8f -size 16252 +oid sha256:442425522e6177967d3b563e094220b37faa14211f886f4a26a192729d7a7657 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_0.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_0.uasset index 2362be61..8c3f2d4d 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_0.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c88242aa626e915b13e2af24d4e73556b02c4b767cd66a9b0642e8c08c4e9d1d -size 16252 +oid sha256:a31ee2a49392ae58d30749ef7a93aed77a48dfa4cf16fbf342c8fb719e91f25c +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_1.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_1.uasset index 5a867826..4f125364 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_1.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cf049dec938c1384aca8a20010aa79c67364d3d582cdc09ab8d4dd1fceb38f5 -size 16252 +oid sha256:6fc6b616fe484acfc798b29f19e4385c5fbb43bc3c9620aa2ef39d850935ad2c +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_2.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_2.uasset index a3b3ef5f..3b04bca3 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_2.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3872256474f743997a3ed8da380230b4866d5be498f4d789f94aae7f2ae5bad5 -size 16252 +oid sha256:2501149c0015abf36b7423507d30810b4ce4366c1608551b2a2c5699ec9a6334 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_3.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_3.uasset index 280b43f2..e965997c 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_3.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b8e69a97de126755c563128f4651012692df75c154d3e23de7aea8a6ee5cda0 -size 16252 +oid sha256:0d7fc33a17fddc79466f34c1c4ca89bc1d7f73377c81903e84955c7091b2b092 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_4.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_4.uasset index a3697979..414d75a4 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_4.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ed0357ebc30f912aea3ea3330355e8a0257062511342c526839027a27f7dc89 -size 16252 +oid sha256:2ddf237f0760cc5dc0129e667876cb157d09ca5a56c3341d3a88bee912db0e46 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_5.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_5.uasset index 33c1c136..35a96c19 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_5.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_5.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a7b57875618bf88cf5fa456e244afef5d90592fc08e8912125d1149549d85c0 -size 16252 +oid sha256:26ea6ea4906086d0e4d966c735ed5242b68938e52f9bf2ce93efd819eb91dbb6 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_6.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_6.uasset index 33fb2a86..35923913 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_6.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:febe85f0568f21f5049f4b121fb9f7ef7bec58bbf616eb5ede70550b0101c833 -size 16252 +oid sha256:dd60633d78bdf4d77d87450cafb7569e29131f265707b0adcecf2c821cd66f40 +size 8572 diff --git a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_7.uasset b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_7.uasset index a6aa5a4f..198eaa05 100644 --- a/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_7.uasset +++ b/Content/Maps/Generated/WorldMap_Persistent_GameWorld_Piece8x8_7_7.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f09d640eb540744b3e68af37f282015a2a6ed682ae0d367b25bb5fb9fe104eb -size 16252 +oid sha256:bb73de314739f0b1c0baf7d83adaf70152198a8cd225da4abad897fcdf00efb9 +size 8572 diff --git a/Content/UI/WBP_MapWidget.uasset b/Content/UI/WBP_MapWidget.uasset index 83cbd101..d85e6e01 100644 --- a/Content/UI/WBP_MapWidget.uasset +++ b/Content/UI/WBP_MapWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:734d6debf8745ab795371d73e6b394e70a456aee4d1e05cd1f3ff0280209b9d1 -size 13744 +oid sha256:ae77c2a411e41d65727fd0a9c1eea244745336e3388170ed48984d15a6fa085d +size 11442 diff --git a/Source/ProjectEleri/Items/SeedBedActor.cpp b/Source/ProjectEleri/Items/SeedBedActor.cpp index 58996643..0990dbdb 100644 --- a/Source/ProjectEleri/Items/SeedBedActor.cpp +++ b/Source/ProjectEleri/Items/SeedBedActor.cpp @@ -604,7 +604,10 @@ FSeedBedSeedSlot& ASeedBedActor::CreateSlot(FIntVector2 SlotCoordinate, bool bRe DestroySlotComponents(Slot); } - Slot.SeedBedDecal = CreateSlotDecalComponent(this, GetRootComponent(), GetSlotComponentName(SlotCoordinate, TEXT("Slot"))); + if (!IsValid(Slot.SeedBedDecal)) + { + Slot.SeedBedDecal = CreateSlotDecalComponent(this, GetRootComponent(), GetSlotComponentName(SlotCoordinate, TEXT("Slot"))); + } if (SeedBedDecalMaterial.IsValid()) { Slot.SeedBedDynamicMat = UKismetMaterialLibrary::CreateDynamicMaterialInstance(this, SeedBedDecalMaterial.Get(), NAME_None, EMIDCreationFlags::Transient); diff --git a/Source/ProjectEleri/UI/MapWidget.cpp b/Source/ProjectEleri/UI/MapWidget.cpp index 93538f42..84f9e491 100644 --- a/Source/ProjectEleri/UI/MapWidget.cpp +++ b/Source/ProjectEleri/UI/MapWidget.cpp @@ -120,9 +120,16 @@ UMapWidget::UMapWidget() bFollowPlayerByDefault = true; bCenterOnPlayerByDefault = true; MarkerSize = 32.f; + + // The marker comes down as the map is pulled back, but by less than the map does: readable when the whole + // map is in view, without crowding a map that is zoomed in on a corner of itself. + MarkerZoomScale = -0.5f; MarkerFacingOffset = 0.f; + // PlayerMarkerTexture is deliberately left empty: what the marker is a picture of is the design's to say, + // and a map with nothing set there draws no marker rather than failing to open. + MapBackgroundColor = FLinearColor(0.03f, 0.04f, 0.05f, 0.9f); Zoom = 1.f; @@ -132,13 +139,14 @@ UMapWidget::UMapWidget() bMapReady = false; bPiecesRequested = false; + bMarkerRequested = false; bMarkerPlaced = false; // Nothing has been turned yet, and there is no map yet to say how the map lies in the world. MarkerAngle = 0.f; bMarkerAngleApplied = false; - // Nothing has been said yet about the design having no marker in it. + // Nothing has been said yet about this map having no marker art assigned. bMissingMarkerReported = false; MapUVPerWorldX = FVector2D::ZeroVector; MapUVPerWorldY = FVector2D::ZeroVector; @@ -172,9 +180,9 @@ TSharedRef UMapWidget::RebuildWidget() void UMapWidget::EnsureWidgetTree() { // Called from RebuildWidget and again from everything that wants the map on screen, so the work is only - // done when there is something to do: a standing tree is the whole test. The marker is not part of it, - // because the design's marker is not the map's to make. - if (MapRoot && MapViewport && MapLayer && PieceGrid && Interaction) + // done when there is something to do: a standing tree is the whole test, and the marker built below is as + // much a part of that tree as the pieces are. + if (MapRoot && MapViewport && MapLayer && PieceGrid && PlayerMarker && Interaction) { return; } @@ -267,9 +275,25 @@ void UMapWidget::EnsureWidgetTree() NewPieceImages.Add(PieceImage); } - // The player's marker is not built here: it is the widget named PlayerMarker in the design, and it is taken - // onto this layer by EnsureMarkerOnMap once the layer is standing. A marker built in code could only ever - // be the one thing this file knew how to draw. + // The player's marker is made here rather than taken from the blueprint: the map is what knows where the + // player is, and the map is what has to size it, place it and turn it. It is one image at one place, so an + // image is the whole of it, and the one thing the design says about it is which art it draws, which + // PlayerMarkerTexture names. It goes on the map's own layer, because that is the thing that moves and zooms + // with the map it marks, and above the pieces, which is what its z order says. It starts hidden and stays + // that way until there is both a place to put it and something to draw there. It is the one widget built + // here that carries a name, because it is the one that gets looked for when the player's place is the thing + // that is wrong, and the name is its own so that nothing the design left in the blueprint answers to it. + UImage* NewMarker = WidgetTree->ConstructWidget(UImage::StaticClass(), TEXT("MapPlayerMarker")); + NewMarker->SetVisibility(ESlateVisibility::Hidden); + + if (UCanvasPanelSlot* NewMarkerSlot = NewLayer->AddChildToCanvas(NewMarker)) + { + NewMarkerSlot->SetAnchors(FAnchors(0.f, 0.f, 0.f, 0.f)); + // Alignment centres the widget on the slot's position, so a place on the map is one pair of numbers. + NewMarkerSlot->SetAlignment(FVector2D(0.5f, 0.5f)); + NewMarkerSlot->SetAutoSize(false); + NewMarkerSlot->SetZOrder(2); + } // Everything the map listens for arrives through this last widget: it lies over the whole view, so a drag // on the map is a drag on the map and never a click on the level behind it. Nothing is drawn for it. @@ -311,6 +335,7 @@ void UMapWidget::EnsureWidgetTree() MapBackground = NewBackground; PieceGrid = NewPieceGrid; PieceImages = MoveTemp(NewPieceImages); + PlayerMarker = NewMarker; Interaction = NewInteraction; // The tree is standing but has not been laid out, so the transform is left to the next tick, which is the @@ -341,6 +366,7 @@ void UMapWidget::EnsureMapReady() } RequestPieceLoads(); + RequestMarkerLoad(); } bool UMapWidget::ResolveMapLayout() @@ -462,16 +488,6 @@ void UMapWidget::ResolveMapAxes() MapUVPerWorldX = (CaptureActor->WorldToBakedMapUV(Centre + FVector(Step, 0.0, 0.0)) - CentreUV) / Step; MapUVPerWorldY = (CaptureActor->WorldToBakedMapUV(Centre + FVector(0.0, Step, 0.0)) - CentreUV) / Step; - // A mapping that moves the map nowhere in one of the two directions has nothing to say about which way the - // map lies, and a marker turned by it would be turned by noise. - // if (MapUVPerWorldX.IsNearlyZero() || MapUVPerWorldY.IsNearlyZero()) - // { - // MapUVPerWorldX = FVector2D::ZeroVector; - // MapUVPerWorldY = FVector2D::ZeroVector; - // - // return; - // } - bMapAxesResolved = true; } @@ -745,6 +761,74 @@ void UMapWidget::ApplyPieceBrush(UImage* PieceImage, UTexture2D* PieceTexture) c PieceImage->SetBrush(Brush); } +void UMapWidget::RequestMarkerLoad() +{ + if (bMarkerRequested) + { + return; + } + + bMarkerRequested = true; + + const FSoftObjectPath MarkerPath = PlayerMarkerTexture.ToSoftObjectPath(); + if (!MarkerPath.IsValid()) + { + // Said once rather than every frame: a map with no marker art is a map somebody has not filled in, and + // it is still a map. + if (!bMissingMarkerReported) + { + bMissingMarkerReported = true; + + UE_LOG(LogEleriMapWidget, Warning, + TEXT("This map has no marker art assigned, so the player's place is not drawn. Point Player Marker Texture at a texture to draw one.")); + } + + return; + } + + // Asked for on its own rather than with the pieces, because it is one texture and there is nothing for it + // to wait for: it can arrive while the bake is still being resolved and be waiting on the layer. + MarkerStreamHandle = UAssetManager::GetStreamableManager().RequestAsyncLoad( + MarkerPath, + FStreamableDelegate::CreateUObject(this, &UMapWidget::ApplyLoadedMarker), + FStreamableManager::AsyncLoadHighPriority); + + UE_LOG(LogEleriMapWidget, Verbose, TEXT("Asked for the marker art %s."), *MarkerPath.ToString()); +} + +void UMapWidget::ApplyLoadedMarker() +{ + // Resolved from the path rather than taken from the load's own list of what it brought in, so that art + // something else has already loaded counts as arrived just as much as one this request fetched. + UTexture2D* MarkerTexture = Cast(PlayerMarkerTexture.ToSoftObjectPath().ResolveObject()); + + if (!MarkerTexture || !PlayerMarker) + { + UE_LOG(LogEleriMapWidget, Warning, + TEXT("The marker art %s did not arrive, so the player's place is not drawn."), *PlayerMarkerTexture.ToString()); + + return; + } + + // The brush is replaced whole rather than adjusted, so that the way the marker is drawn is decided in one + // place. Its image size is the art's own, which is also the shape GetMarkerSlotSize reads back out of it, + // so the marker is drawn at the shape it was drawn in rather than squeezed into a square. + const FIntPoint ImportedSize = MarkerTexture->GetImportedSize(); + + FSlateBrush Brush; + Brush.SetResourceObject(MarkerTexture); + Brush.DrawAs = ESlateBrushDrawType::Image; + Brush.SetImageSize(FVector2D(ImportedSize.X, ImportedSize.Y)); + + PlayerMarker->SetBrush(Brush); + + // The art can arrive after the marker has already been placed, so it is placed and sized again now that it + // has a shape, rather than left square until the next tick happens to notice. + UpdateMarkerView(); + + UE_LOG(LogEleriMapWidget, Verbose, TEXT("The marker art %s is up."), *PlayerMarkerTexture.ToString()); +} + void UMapWidget::ReportMapLayout() { const int32 Grid = FMath::Max(1, GridSize); @@ -905,16 +989,22 @@ bool UMapWidget::GetPlayerMapUV(FVector2D& OutUV) const FVector2D UMapWidget::GetMarkerSlotSize() const { // The one thing about the marker's size the map decides: the longer side of it, in the map's own units. - const float Size = FMath::Max(2.f, MarkerSize); + // MarkerSize is that size at the map's closest zoom, and MarkerZoomScale is how much of the map being pulled + // back from there the marker's size follows: see the property for what its ends mean. The two ends of the + // zoom range are read in the order they are set in, as they are everywhere else here. + const float ClosestZoom = FMath::Max(FMath::Max(MinZoom, MaxZoom), KINDA_SMALL_NUMBER); + const float ZoomShare = FMath::Clamp(Zoom / ClosestZoom, KINDA_SMALL_NUMBER, 1.f); + + const float Size = FMath::Max(2.f, MarkerSize * FMath::Pow(ZoomShare, MarkerZoomScale)); FVector2D MarkerShape = FVector2D::ZeroVector; - // An icon says what shape it is through the art it draws: the size the art was imported at is the shape it - // was drawn with, and the size of what is resident is the second choice for a texture with nothing imported - // to give. - if (const UImage* MarkerIcon = Cast(PlayerMarker)) + // The marker says what shape it is through the art it draws: the size the art was imported at is the shape + // it was drawn with, and the size of what is resident is the second choice for a texture with nothing + // imported to give. Before the art has arrived the brush holds no texture at all, so there is no shape. + if (PlayerMarker) { - if (const UTexture2D* IconTexture = Cast(MarkerIcon->GetBrush().GetResourceObject())) + if (const UTexture2D* IconTexture = Cast(PlayerMarker->GetBrush().GetResourceObject())) { const FIntPoint ImportedSize = IconTexture->GetImportedSize(); @@ -926,23 +1016,23 @@ FVector2D UMapWidget::GetMarkerSlotSize() const } } - // Anything else -- a box, a panel, or an icon with no art pointed at yet -- says what shape it is by the - // size it asks to be drawn at, which is what the art of an image and the contents of a panel are measured - // into. Nothing has a size until it has been laid out, so this is asked again whenever the size is written - // rather than once. + // With no art yet -- or none assigned at all -- the image says what shape it is by the size it asks to be + // drawn at, which is nothing at all for an empty brush; nothing has a size until it has been laid out, so + // this is asked again whenever the size is written rather than once. if (MarkerShape.X <= 0.0 || MarkerShape.Y <= 0.0) { MarkerShape = PlayerMarker ? PlayerMarker->GetDesiredSize() : FVector2D::ZeroVector; } - // A marker with nothing to say what shape it is is drawn square: a plain box of a marker is a marker. + // A marker with no shape of its own -- no art assigned, or none arrived yet -- is drawn square rather than + // not at all: the map still has a size to place it at, and the art may yet turn up. if (MarkerShape.X <= 0.0 || MarkerShape.Y <= 0.0) { return FVector2D(Size, Size); } - // The design's own shape, drawn at the size the map asks for: one setting is the size of the marker whether - // the marker is an icon, a box or a panel of several, and none of them is squeezed out of shape by it. + // The art's own shape, drawn at the size the map asks for: one setting is the size of the marker whatever + // shape that art is, and none of it is squeezed out of shape by it. return MarkerShape * (static_cast(Size) / FMath::Max(MarkerShape.X, MarkerShape.Y)); } @@ -967,6 +1057,8 @@ bool UMapWidget::ResolveMarkerAngle(float& OutAngle) const void UMapWidget::UpdateMarkerView() { + // There is nothing to place until the tree is standing, and building the tree is what makes the marker, so + // this is the test for "not built yet" rather than for a design that has no marker in it. if (!PlayerMarker) { return; @@ -993,14 +1085,18 @@ void UMapWidget::UpdateMarkerView() } // Whether the marker is drawn is the map's to say, because the map is what knows whether there is a place - // to put it; what the design says is what it looks like when there is one. Only the marker itself is taken - // out of the way of the pointer, so a marker made of several widgets keeps whatever they do themselves. + // to put it. Only the marker itself is taken out of the way of the pointer, so a press on the map is never + // a press on the marker. PlayerMarker->SetVisibility(ESlateVisibility::SelfHitTestInvisible); if (UCanvasPanelSlot* MarkerSlot = Cast(PlayerMarker->Slot)) { // Alignment centres the widget on the slot's position, so a place on the map is one pair of numbers. MarkerSlot->SetPosition(MarkerMapUV * static_cast(GetMapDesignSize())); + + // The size is written here rather than once at build, because it is the art arriving that gives the + // marker a shape, and the art can arrive after the marker has already been placed. + MarkerSlot->SetSize(GetMarkerSlotSize()); } // The turn is the one thing about the marker that changes without its place on the map changing, and it is @@ -1033,6 +1129,10 @@ void UMapWidget::SetZoom(float NewZoom) Zoom = Clamped; ApplyViewTransform(); + + // The marker's size is the map's to say, and the map has just changed how large it is drawn at, so the + // marker is sized here rather than at the next tick: a tick later is a frame of it at the old size. + UpdateMarkerView(); } void UMapWidget::ZoomBy(float Amount) @@ -1225,16 +1325,23 @@ void UMapWidget::NativeConstruct() void UMapWidget::NativeDestruct() { - // The pieces are wanted by this widget and by nothing else, so letting go of the request lets go of whatever - // of them nothing else is holding on to. Asking again on the next show is cheap: what is still in memory - // arrives at once. + // The pieces and the marker art are wanted by this widget and by nothing else, so letting go of the requests + // lets go of whatever of them nothing else is holding on to. Asking again on the next show is cheap: what is + // still in memory arrives at once. if (PieceStreamHandle.IsValid()) { PieceStreamHandle->ReleaseHandle(); PieceStreamHandle.Reset(); } + if (MarkerStreamHandle.IsValid()) + { + MarkerStreamHandle->ReleaseHandle(); + MarkerStreamHandle.Reset(); + } + bPiecesRequested = false; + bMarkerRequested = false; PanPointerIndex = INDEX_NONE; bPanning = false; diff --git a/Source/ProjectEleri/UI/MapWidget.h b/Source/ProjectEleri/UI/MapWidget.h index 986f0913..a9bbe695 100644 --- a/Source/ProjectEleri/UI/MapWidget.h +++ b/Source/ProjectEleri/UI/MapWidget.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "UI/EleriBaseWidget.h" +#include "UObject/SoftObjectPtr.h" #include "MapWidget.generated.h" class AOrthoMapCaptureActor; @@ -118,9 +119,9 @@ struct FEleriMapPieceCell * The map itself is built in code, in RebuildWidget, because a user widget's slate widget is made from the root * of its widget tree and there is no tree at all until the widget has been initialized. A blueprint subclass of * this therefore needs to hold nothing: it may be empty, or its root may be a panel, which is where this - * widget's own tree is added. The one part of the map that is not built here is the player's marker, which is - * the widget named PlayerMarker in that blueprint: what a marker looks like is the design's business, and only - * where it sits on the map is the map's. + * widget's own tree is added. The player's marker is built here too, because the map is what knows where the + * player is and is what has to place, size and turn it; what the marker is a picture of is the one thing left + * to the design, and PlayerMarkerTexture is what says it. * * The pieces are 16384 pixel virtual textures, so loading all 64 of them eagerly would be a stall and a * virtual texture pool full of a map nobody is looking at. They are asked for lazily, the first time the @@ -216,22 +217,32 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Eleri|Map|Marker") bool bCenterOnPlayerByDefault; - /** The player's place on the map: the widget of this name in the blueprint this map is drawn in, found by - * name rather than made here. Nothing in this file draws it, so what the marker looks like -- its brush, - * its colours, its corner radii -- belongs to the design. The map takes it onto its own layer, which is - * what a marker has to be on to move and zoom with the map it marks, and then sizes it, places it and - * turns it. Any kind of widget will do, from an image to a panel holding several. Optional, because a - * design with no marker in it is a map that says so once rather than a map that will not open. */ - UPROPERTY(BlueprintReadOnly, Category = "Eleri|Map|Marker", meta = (BindWidgetOptional)) - TObjectPtr PlayerMarker; + /** The art the player's marker is drawn with. The marker itself is made here rather than found in the + * blueprint this map is drawn in: the map is what places it, sizes it and turns it, so the one thing left + * for the design to say is what it is a picture of. Soft, so the art is not loaded until a map is actually + * looked at, and optional, because a map with no art is a map with no marker rather than a map that will + * not open. */ + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Eleri|Map|Marker") + TSoftObjectPtr PlayerMarkerTexture; - /** How long the marker's longer side is drawn, in the map's own design units, which is the one thing about - * the marker's look the map has to know, because the map is what places it and is measured in these units. - * What shape it is comes from the design: an icon's shape is the shape of its art, and anything else is - * drawn at the shape it asks to be, so a wide or a tall marker is not squeezed into a square. */ + /** How long the marker's longer side is drawn, in the map's own design units, at the map's closest zoom: see + * MarkerZoomScale for what it is drawn at further back than that. What shape it is comes from the art + * PlayerMarkerTexture names, which is the shape that art was imported at, so a wide or a tall marker is not + * squeezed into a square. */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Eleri|Map|Marker", meta = (ClampMin = "2")) float MarkerSize; + /** How much of the map being pulled back the marker's size follows, as the power the zoom relative to + * MaxZoom is raised to: the marker is drawn at MarkerSize when the map is at its closest, whatever this + * says, and this is what it does below that. At nought the marker is that size in the map's own units at + * every zoom, so it comes down in the view exactly as fast as the map does. At one it comes down in step + * with the zoom as well, which is twice as fast as the map does on screen, and soon leaves a marker too + * small to read. Below nought the marker grows in map units as the map is pulled back instead, so it comes + * down in the view more slowly than the map does: at -1 it holds one size on screen however far out the + * map goes, which stays readable but stops describing the world. */ + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Eleri|Map|Marker", meta = (ClampMin = "-1", ClampMax = "1")) + float MarkerZoomScale; + /** Degrees added to the turn the marker is given, for art that does not point up: an arrow drawn pointing * right wants -90 here, and one drawn pointing down wants 180. */ UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Eleri|Map|Marker") @@ -381,6 +392,12 @@ protected: /** Puts every arrived piece on its image, and reports the ones that did not arrive. */ void ApplyLoadedPieces(); + /** Asks for PlayerMarkerTexture, once. */ + void RequestMarkerLoad(); + + /** Puts the arrived marker texture on the marker, and reports it once if it did not arrive. */ + void ApplyLoadedMarker(); + /** The brush one piece image is drawn with: the piece's own texture, and the mirroring the bake needs, * which is the one thing about a piece that cannot be asked for and has to be told. */ void ApplyPieceBrush(UImage* PieceImage, UTexture2D* PieceTexture) const; @@ -412,9 +429,9 @@ protected: * actor to put their position through. */ bool GetPlayerMapUV(FVector2D& OutUV) const; - /** The size the marker is drawn at: the shape the design gave it, with its longer side at MarkerSize, so - * that a wide or a tall marker is not squeezed into a square. A marker with nothing to say what shape it - * is -- a box with nothing in it, or a panel with nothing in that -- is drawn square. */ + /** The size the marker is drawn at: the shape of the art PlayerMarkerTexture names, with its longer side at + * MarkerSize, so that a wide or a tall marker is not squeezed into a square. Before the art has arrived, + * or with no art assigned at all, the marker has no shape to give and is drawn square. */ FVector2D GetMarkerSlotSize() const; /** The angle the marker is turned to on screen, in degrees clockwise, or false when there is nothing to @@ -465,6 +482,11 @@ protected: UPROPERTY(Transient) TArray> PieceImages; + /** The player's place on the map, made here and put on MapLayer above the pieces. An image, because the + * marker is one texture at one place; everything about how it looks comes from PlayerMarkerTexture. */ + UPROPERTY(Transient) + TObjectPtr PlayerMarker; + /** Takes every pointer event the map needs, so that a drag is never also a click on the level behind * the map. */ UPROPERTY(Transient) @@ -491,6 +513,12 @@ protected: /** What does the loading, held so that the pieces stay wanted until they have arrived. */ TSharedPtr PieceStreamHandle; + /** Whether PlayerMarkerTexture has been asked for, so that asking happens once rather than once per show. */ + bool bMarkerRequested; + + /** What does the loading, held so that the marker stays wanted until it has arrived. */ + TSharedPtr MarkerStreamHandle; + /** How much the map is zoomed, and the content point held at the centre of the view. */ FVector2D FocusPoint; @@ -507,7 +535,7 @@ protected: bool bMarkerAngleApplied; - /** Whether the map has already said that the design has no marker in it, so that a map drawn without one + /** Whether the map has already said that no marker art is assigned, so that a map drawn without a marker * says so once rather than on every update. */ bool bMissingMarkerReported;