diff --git a/Content/Materials/VFX/MI_Grid.uasset b/Content/Materials/VFX/MI_Grid.uasset index 669a592c..7c2e67f7 100644 --- a/Content/Materials/VFX/MI_Grid.uasset +++ b/Content/Materials/VFX/MI_Grid.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e04ad9199b426241acfa2e700f65298892eced242f6420ba864df95dfc7a784 -size 8699 +oid sha256:27d849efddef5ecfeb82f875707a3a40b52eb1b0022c4a8bbb2bb920ce43149b +size 12237 diff --git a/Content/Materials/VFX/MI_SimpleEmissive_GREEN.uasset b/Content/Materials/VFX/MI_SimpleEmissive_GREEN.uasset index be009866..a4cfdc9c 100644 --- a/Content/Materials/VFX/MI_SimpleEmissive_GREEN.uasset +++ b/Content/Materials/VFX/MI_SimpleEmissive_GREEN.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:243655f286f1ded28a24e3db5c7b0d9175203713ee471b3b153e7ef9aa72bbaf -size 8400 +oid sha256:c1d14e59dc4cb6aff56542c79363324e6a5cec0e1b9f5211db3e1215888bb432 +size 9823 diff --git a/Content/Materials/VFX/MI_SimpleEmissive_RED.uasset b/Content/Materials/VFX/MI_SimpleEmissive_RED.uasset index a1b1ee86..c57765d8 100644 --- a/Content/Materials/VFX/MI_SimpleEmissive_RED.uasset +++ b/Content/Materials/VFX/MI_SimpleEmissive_RED.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf1229e2c4d1074f3fdd1594da0d2c2e4bc7487e6e2e51d27b1398832f06eefd -size 8213 +oid sha256:62e3e5f733a275b0b9abe48104ea42518fa39714f6e20e296d2454cfa90aaafb +size 8708 diff --git a/Content/Materials/VFX/M_Grid.uasset b/Content/Materials/VFX/M_Grid.uasset index 2c9ec893..25a5be8e 100644 --- a/Content/Materials/VFX/M_Grid.uasset +++ b/Content/Materials/VFX/M_Grid.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4826335cb23fdf29162f7db6d03a6d836a8ff45683fdcf0f2af1a3be9febbf61 -size 17765 +oid sha256:2e1fb4dd1abf70b6ad6f0e0b7aae67b1aa263c6c539d92fddda9e6800bd2c862 +size 15469 diff --git a/Content/Prefabs/BP_RemovableStaticMeshActor.uasset b/Content/Prefabs/BP_RemovableStaticMeshActor.uasset index a3f9cf00..e477b2cb 100644 --- a/Content/Prefabs/BP_RemovableStaticMeshActor.uasset +++ b/Content/Prefabs/BP_RemovableStaticMeshActor.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20a3cf1a662ff080b5badbc7d2db7ba99f54b9aaf21499b5f8f9ba7e209bbae0 -size 227793 +oid sha256:520560df21c96f8c2e6463864431bb1dbe6b60bad31e28abd0fb77214bb6fc1d +size 145617 diff --git a/Content/Prefabs/FencePlaceable.uasset b/Content/Prefabs/FencePlaceable.uasset index 7a6d0d97..a67b99f3 100644 --- a/Content/Prefabs/FencePlaceable.uasset +++ b/Content/Prefabs/FencePlaceable.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:107db1087f57800c1b83a93ea434da93972eea897ad78631634134ad2f212347 -size 38439 +oid sha256:338d6b4322b4b7398b431e8a40e4c88f0e8f09953c766255de8980af027062de +size 27891 diff --git a/Content/Prefabs/Tree2.uasset b/Content/Prefabs/Tree2.uasset index b7cc368f..18c4642a 100644 --- a/Content/Prefabs/Tree2.uasset +++ b/Content/Prefabs/Tree2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d4a37faf3744ca5f7eec5d2aeaa48d380945f95bd0ebaf19558abfa5265c375 -size 92783 +oid sha256:f7c1a8c45949edf4b7e178a2d7dee64279bb0e0c19c86f7ce14f0eed27262b7d +size 94139 diff --git a/Content/Prefabs/Tree3.uasset b/Content/Prefabs/Tree3.uasset index 31f6c7c0..f3de63a9 100644 --- a/Content/Prefabs/Tree3.uasset +++ b/Content/Prefabs/Tree3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:383af99493ee90a726326da45d816c79427f51535d164bed5e34d4bde2cf88ef -size 89271 +oid sha256:85ce03522066a15e7a00527999b6e6d1a88b4d0ae2a9379a30e8c00a65f134e5 +size 90699 diff --git a/Content/Prefabs/Tree4.uasset b/Content/Prefabs/Tree4.uasset index 1f01c855..a81e0eb1 100644 --- a/Content/Prefabs/Tree4.uasset +++ b/Content/Prefabs/Tree4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:66ea68b0b578f3c45af962e46f831eb20301b393ddabd3933c61e3be48417e48 -size 37156 +oid sha256:a48daef722a1c7273b1fe4ba8a23c43592ab52ba8d62aa73b4b795b9f6b2e35f +size 38584 diff --git a/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset b/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset index ead68a42..59f830b7 100644 --- a/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset +++ b/Content/Scripts/InventorySystem/UI/InventoryScreenWrapper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:428d6d15096ba6c29a7df209130ab311c41fe20118c8804f7660feecae9bd4bb -size 1387095 +oid sha256:33967d391183ece4d0e3c8813f1d2ff16b434ce1ebba270ff25b847ef6645352 +size 1385104 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NM/LZMBEWIOLC7NTNJAORQZ4J.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NM/LZMBEWIOLC7NTNJAORQZ4J.uasset index 0c05354e..2b97577e 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NM/LZMBEWIOLC7NTNJAORQZ4J.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NM/LZMBEWIOLC7NTNJAORQZ4J.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5b17c7dc91707cdb5f80450e4a8c371f2378c6b2162489d8e719d9aa495cd12 -size 7703 +oid sha256:c42fd0b466470c07172acc3144b6a9b576cd1ca110684da91345b4fb6dfffb18 +size 7772 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NV/DMOPSYJ4H727SW4X0V9YFV.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NV/DMOPSYJ4H727SW4X0V9YFV.uasset index a1dd9d49..ac2dd257 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NV/DMOPSYJ4H727SW4X0V9YFV.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/NV/DMOPSYJ4H727SW4X0V9YFV.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67ada433397c0d1a06877beeb91418789b44971b4a023fc7cca9a0dc5b8a4a5c -size 7705 +oid sha256:623ba2d478af73b9b1af7c516fb5fd439a1d6822c82753b650f468694b4cd47a +size 7774 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/Q0/WRWWHL5UFUNQZFHNYEYCGS.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/Q0/WRWWHL5UFUNQZFHNYEYCGS.uasset index edf07ac3..89a7bcb0 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/Q0/WRWWHL5UFUNQZFHNYEYCGS.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/0/Q0/WRWWHL5UFUNQZFHNYEYCGS.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f40601d5d45d4c7855b9e57f232d917298853059804699dcd4a31c1b8b9962b4 -size 8039 +oid sha256:8c629177227982d281e8ab512cbd12f97f46c3bab1ec8f7882df15af4d30d994 +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/1/9G/WE1VIISFUBFLC8WQDQLZLE.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/1/9G/WE1VIISFUBFLC8WQDQLZLE.uasset index c35e627a..44132464 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/1/9G/WE1VIISFUBFLC8WQDQLZLE.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/1/9G/WE1VIISFUBFLC8WQDQLZLE.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce8450789650b452b4b389f5716d09fa930debfce077ea032e39003b44ecc533 -size 7509 +oid sha256:d2cbd44dae3d92bf329d7daa9c5a0fcc7d31f91f95e5d8d38e444a5e4d4c2502 +size 7582 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/CO/0Z7NXVWZZ033YE391OL29V.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/CO/0Z7NXVWZZ033YE391OL29V.uasset index 212dfe5d..5fa286a5 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/CO/0Z7NXVWZZ033YE391OL29V.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/CO/0Z7NXVWZZ033YE391OL29V.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a4da9f21b307bc3b5b353ab94ab20f79437e34be70a1798b0f188e6d798cabc -size 8041 +oid sha256:70af621c88b556ae57d3a031d700307b5dda4776158847d62ba41231e730606c +size 8110 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/DL/HYUFFNR2TH5NH78T9X3MZH.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/DL/HYUFFNR2TH5NH78T9X3MZH.uasset index 6f75de04..b66e64d2 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/DL/HYUFFNR2TH5NH78T9X3MZH.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/3/DL/HYUFFNR2TH5NH78T9X3MZH.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2565745dd0019dc4fe9a5c974dc12203f68724a425c34871020c85f12ba968c -size 8041 +oid sha256:72156d7a1f18cea86abc7560e326d47c83ca078c0db1844874e5d36f0abf3306 +size 8110 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/BI/D2EOSTJGGPMFYL5E6A6TZA.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/BI/D2EOSTJGGPMFYL5E6A6TZA.uasset index a00ab4c8..7209b488 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/BI/D2EOSTJGGPMFYL5E6A6TZA.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/BI/D2EOSTJGGPMFYL5E6A6TZA.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55b1a49a1f27ea2e18860f92f77124f7333b5dd41fd6d0c4897ed9487de62be0 -size 7703 +oid sha256:2fa92fc58341298da74e9095ae3c841da5a1a7a62acc9decc0ccf12d66e0bcb3 +size 7772 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/DN/O75X3R4N5OI5AGMEOI18V6.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/DN/O75X3R4N5OI5AGMEOI18V6.uasset index 421c2075..546d2d84 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/DN/O75X3R4N5OI5AGMEOI18V6.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/DN/O75X3R4N5OI5AGMEOI18V6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0797dc6dc7c2c60591bedfa0a69b5e4294fefc605944092a1d56994915d3bab5 -size 8039 +oid sha256:f3a4ca8177dddf2a8f37c48733d6aff3a7c83bd024e626bd73f6dbb294798cb0 +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/NF/4XDWB0BRE25P4DNB04355B.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/NF/4XDWB0BRE25P4DNB04355B.uasset index f1a5686b..57a422ca 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/NF/4XDWB0BRE25P4DNB04355B.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/NF/4XDWB0BRE25P4DNB04355B.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2be541454b720b549e1f0c02bdf1ba34ba237dbecc6eb1538982c6070fcd0bcf -size 8041 +oid sha256:9ccbd14d55a06ea2e1f0b53f3b178bd67ac0e74bddc6fff3dd9e46a3d0e7b6f5 +size 8110 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/OL/D7VUM7V7X9XMYFG5SF67A3.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/OL/D7VUM7V7X9XMYFG5SF67A3.uasset index 74244d7e..e8bd8e87 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/OL/D7VUM7V7X9XMYFG5SF67A3.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/4/OL/D7VUM7V7X9XMYFG5SF67A3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c6ac9c509d0a3f83155f56b037bb9345cafc98d461c296da2e81f6bc01176df -size 8041 +oid sha256:74ddb1d3176676d32f649096320e3352158c4d2ba59bc6e4f5278b66dcd9254c +size 8110 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/5/BW/ASOMDZD9SXRJSUZ9SO1TJG.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/5/BW/ASOMDZD9SXRJSUZ9SO1TJG.uasset index 86d59a6e..907d7a40 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/5/BW/ASOMDZD9SXRJSUZ9SO1TJG.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/5/BW/ASOMDZD9SXRJSUZ9SO1TJG.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27b7284eb0ce2ea5cfb11c30c00c32f09636b510ee215585bfc8b74b4088252a -size 7608 +oid sha256:160c4873d18999e309164c6f51b3f780af38551547661254c4ba7bbc3d63a5f4 +size 7677 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/PA/HSQ48AKSQQ3VQS1A0RA44T.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/PA/HSQ48AKSQQ3VQS1A0RA44T.uasset index 2a3ec47d..c19e6602 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/PA/HSQ48AKSQQ3VQS1A0RA44T.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/PA/HSQ48AKSQQ3VQS1A0RA44T.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1756f6a64b3d074ff240cba15f130b47aa5e5d70fd4fcebf033fc8aebc52432 -size 7606 +oid sha256:553078469bf8adff549bd3d1443237abc57e71eb642504d491087b98c65dcc2c +size 7675 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/0V/BGMMMCBKOTL1CG63Q1X02S.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/0V/BGMMMCBKOTL1CG63Q1X02S.uasset index 4099da6d..78c91101 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/0V/BGMMMCBKOTL1CG63Q1X02S.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/0V/BGMMMCBKOTL1CG63Q1X02S.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce5e836e78e781ab3b1637a42610e8d1cb24c4b58893866ce1b81ee4f3517825 -size 7641 +oid sha256:fa9d2958c0c7a68df442010e8b3a65a5ffa101875857776485a137329d7605e6 +size 7710 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/5Y/623RCW0YAQCZMJI0WJ7ZR6.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/5Y/623RCW0YAQCZMJI0WJ7ZR6.uasset index 38127169..4f285335 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/5Y/623RCW0YAQCZMJI0WJ7ZR6.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/5Y/623RCW0YAQCZMJI0WJ7ZR6.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74912b801061351d6c86f991616735a44aa4d2c78ec522886ba9081266410bd3 -size 7641 +oid sha256:e5fc81b6082d572a29953401eb3a74e741869982465b8c2b8d69c4b1131f16f1 +size 7710 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/7W/6H90OTX02ZZ33PZR93EIKR.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/7W/6H90OTX02ZZ33PZR93EIKR.uasset index d33a79e4..34c81b27 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/7W/6H90OTX02ZZ33PZR93EIKR.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/7W/6H90OTX02ZZ33PZR93EIKR.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3646cf2f6958749a6487614d46d6b8f3203ecdb9e9a5d4cc40a89cf86217ac76 -size 7925 +oid sha256:7d098ec052f3316a8cfa312a5c3d491e51c6a438c188e95374c4c32f4271d9fa +size 7994 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/9X/SXIOXBZTI7LB99EKR76VB0.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/9X/SXIOXBZTI7LB99EKR76VB0.uasset index ad423689..ddf3f79b 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/9X/SXIOXBZTI7LB99EKR76VB0.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/9X/SXIOXBZTI7LB99EKR76VB0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f670d73e986aa316f153a9a406545017c1487aef29a67e04d8be319459283285 -size 8039 +oid sha256:eaeb41403e5e0ef5f5ca2c50f3f52dca0dac20849e8f66a623f32bee854f91fd +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/ZJ/3H2UP81PD753J5MZQJWCEB.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/ZJ/3H2UP81PD753J5MZQJWCEB.uasset index d194d4a0..5698bd2e 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/ZJ/3H2UP81PD753J5MZQJWCEB.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/ZJ/3H2UP81PD753J5MZQJWCEB.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5952c020f100151b84f2edae6a18337148dbffe7a7bd1a469c10a8138f0d891 -size 8039 +oid sha256:920032dd40a8bbd5defea4f46c4e6603c343323feea8858a394d4e0bcadf2fe2 +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/8/9U/GRMKU0CTSEX11U1KG1TH2Y.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/8/9U/GRMKU0CTSEX11U1KG1TH2Y.uasset index ecea2e06..d24a9962 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/8/9U/GRMKU0CTSEX11U1KG1TH2Y.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/8/9U/GRMKU0CTSEX11U1KG1TH2Y.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:605203941590bdc0ec416323ecada78eb757ed5e8c97ebc4c316dcdacc79cef8 -size 7995 +oid sha256:a519a7c703214146abd7adeea32aaa6056177cc6da3c72dcf54246f2f5d64288 +size 8064 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/37/WXPRXB08D7UM7TYMC9MXYF.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/37/WXPRXB08D7UM7TYMC9MXYF.uasset index f52ece3e..51a0ea13 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/37/WXPRXB08D7UM7TYMC9MXYF.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/37/WXPRXB08D7UM7TYMC9MXYF.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c977783b048fffca635c48c4135271c76e3245f9701cb8b471ce37dc00ddf48 -size 8039 +oid sha256:31cdd239538b12ca75925e355db35a1f6ce744eb08bcdfaaceafa1cf3844b4ea +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/6D/DSDA4AYBVVD49U3F1RMJ5A.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/6D/DSDA4AYBVVD49U3F1RMJ5A.uasset index 20f8d587..d525db5e 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/6D/DSDA4AYBVVD49U3F1RMJ5A.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/6D/DSDA4AYBVVD49U3F1RMJ5A.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9747098a10cf3331f36d55c36fc093aea34cc78c43c2a6e186e0e0c7c11088e6 -size 8039 +oid sha256:204586a21cb17075f3e0d4c35f68df293fbe55fff03e5aa1dad119238eddd597 +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/KO/Z1LK56PIQT10WF6LPHR9JA.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/KO/Z1LK56PIQT10WF6LPHR9JA.uasset index 07e9df62..6add4bf6 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/KO/Z1LK56PIQT10WF6LPHR9JA.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/KO/Z1LK56PIQT10WF6LPHR9JA.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85ab2ceae6079e3522848b37ce1eee924d4c64f25e230d546300e28a220b5a1d -size 8039 +oid sha256:6950fa2eb5bf10be16535661487082671e2fe866bcfabfa458d741b5fa6f8b9b +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/PL/R78PQ5M99WM9Y8ZO7TWNS0.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/PL/R78PQ5M99WM9Y8ZO7TWNS0.uasset index 62842ef4..92bb3bec 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/PL/R78PQ5M99WM9Y8ZO7TWNS0.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/PL/R78PQ5M99WM9Y8ZO7TWNS0.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5042125b4f719bae3c2daa6cad5657dab39cc190247ad0268e71dab42dc65752 -size 7703 +oid sha256:216d0e67d494c03945684ba4bac6a65eafff5ab092c66f12243270a24e9fad19 +size 7772 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/S6/7RXAZTRFI24C4QL1SAW5EB.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/S6/7RXAZTRFI24C4QL1SAW5EB.uasset index 9caa1f9d..00b4561a 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/S6/7RXAZTRFI24C4QL1SAW5EB.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/S6/7RXAZTRFI24C4QL1SAW5EB.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c7cb43208953a58928ddd75a0e80f37ddb5dc721f9c4994d2e59fd03b87f9a11 -size 8039 +oid sha256:e5544822d998c70b3f1ba3c0984dd8ead24dc22054a2a0fd7ab68500f66d1dce +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/TZ/EY3ML4TXFAEAV53MES7HA8.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/TZ/EY3ML4TXFAEAV53MES7HA8.uasset index c223381b..48f18c6d 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/TZ/EY3ML4TXFAEAV53MES7HA8.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/TZ/EY3ML4TXFAEAV53MES7HA8.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe7418d996453ba3c139bbe03d0955b52eb562c174d6259b2555d4fce80e4e39 -size 8039 +oid sha256:5bbbcb3f8807cee5be1f10bddcbd9d8a54bccd4ad0a817e877c29e28d5429dfd +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/WC/YLY0VICHLIGDDY799528CW.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/WC/YLY0VICHLIGDDY799528CW.uasset index 26cb9972..84432108 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/WC/YLY0VICHLIGDDY799528CW.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/9/WC/YLY0VICHLIGDDY799528CW.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:37beb9d25f432693e89cf5dc39b321ac75c4f36d95f2c9f55f542038d9db93cd -size 8039 +oid sha256:2cc6c23de73736a6a906133a522d8fd46593faedc3c87e246e219b922890e3ae +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/0C/P1EHH99LULR4H9SXNMBWU8.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/0C/P1EHH99LULR4H9SXNMBWU8.uasset index 8f245ab5..040c2146 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/0C/P1EHH99LULR4H9SXNMBWU8.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/0C/P1EHH99LULR4H9SXNMBWU8.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7739170f760b7370baf9cd92690041e4845915abd40c594766f6d53c4dc98b5c -size 8039 +oid sha256:7d014667baf10404ac0b4aaf5d5aead5041b0e23ac58783e18a724cc12b5128c +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/1A/U0INMPM0KYQPLGLWMCRVHI.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/1A/U0INMPM0KYQPLGLWMCRVHI.uasset index 07d8b95c..e913936a 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/1A/U0INMPM0KYQPLGLWMCRVHI.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/1A/U0INMPM0KYQPLGLWMCRVHI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89d80c3b1298f759e32ace06b700baf910f5fd856fc632d47b542184d203a2bf -size 7925 +oid sha256:198fe58cedf4b206829df1b70e923dda0adddac8f95ab8991ef1ff7bb9c7314d +size 7994 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/C0/DBUIF38DJ713SNJFE2VHKZ.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/C0/DBUIF38DJ713SNJFE2VHKZ.uasset index 9ebfe001..544c29f5 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/C0/DBUIF38DJ713SNJFE2VHKZ.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/C0/DBUIF38DJ713SNJFE2VHKZ.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e46ce5151eea0d9d5e5fb5356cd3ed740b8bd2030419e46f48c45e56f861dc7 -size 7703 +oid sha256:26e40415713298e7dfcdbc3c39e5fc70c11631f8098c2a215cd2b85771b89e83 +size 7772 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/IQ/OC7CR7WGNDPWPBFZSEECWC.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/IQ/OC7CR7WGNDPWPBFZSEECWC.uasset index 853e8997..584d7329 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/IQ/OC7CR7WGNDPWPBFZSEECWC.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/IQ/OC7CR7WGNDPWPBFZSEECWC.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35167b4872b19a5b298fc32dfb5e7602aa0acb6573d1ed9c29cff0d38da21e2b -size 7703 +oid sha256:4959830d7253a3e673fbfa9338d085c2a7e9e665bb859c057c27a94a6d594f18 +size 7772 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/UX/0ITEUHQC5FJNQYCUL4PG48.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/UX/0ITEUHQC5FJNQYCUL4PG48.uasset index 559bd559..140bc752 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/UX/0ITEUHQC5FJNQYCUL4PG48.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/UX/0ITEUHQC5FJNQYCUL4PG48.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8efa9029e6306a7a82ece1ff8c7d2771196faad74d635630c6bff0bd8da83619 -size 7927 +oid sha256:7bb11549275cbf36ad347589c62483f96976e320fc9c04049019ce92b6a1605d +size 7996 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/VV/CRI4MBUASHG3PVMH50GK6W.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/VV/CRI4MBUASHG3PVMH50GK6W.uasset index 9c1e00cc..11aca7ab 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/VV/CRI4MBUASHG3PVMH50GK6W.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/B/VV/CRI4MBUASHG3PVMH50GK6W.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85cd02e8544c1220d3296d456cf7634a703841e23d39234be8a672238f9c0667 -size 7757 +oid sha256:e779a57f2c098e53a4caad162210e643d200a822887122b5c06a867aee7a9451 +size 7826 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/G7/KMNTOSL8H9XWZ8XFJ0YGJ8.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/G7/KMNTOSL8H9XWZ8XFJ0YGJ8.uasset index a786d668..4c206f17 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/G7/KMNTOSL8H9XWZ8XFJ0YGJ8.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/G7/KMNTOSL8H9XWZ8XFJ0YGJ8.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:101ee2bf0509bab5f976a8cd4dad1e932a1f3768ecec91ef457802d08652ff70 -size 7606 +oid sha256:836b837f7a72fba802585d957402fb9add94a967807e075e1e0eef61cf80afce +size 7675 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/LS/TQZHF11ZNW5BSM4M6W1DM9.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/LS/TQZHF11ZNW5BSM4M6W1DM9.uasset index 15a933c0..dc7afc2d 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/LS/TQZHF11ZNW5BSM4M6W1DM9.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/LS/TQZHF11ZNW5BSM4M6W1DM9.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe5bb5b58c47a9629ff24d77c453f4d8c8962194689515d52c3b0ab255e67b6b -size 8041 +oid sha256:02c809d17539233fa95cd638c79b7280f71d44d77afcfe75590a973bd73517d4 +size 8110 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/R2/XIFFOUVPGJQB5M6MQ8XDI1.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/R2/XIFFOUVPGJQB5M6MQ8XDI1.uasset index 34bb56ba..35dbf342 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/R2/XIFFOUVPGJQB5M6MQ8XDI1.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/R2/XIFFOUVPGJQB5M6MQ8XDI1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f53edca9e06a1718ed725f7616aadc7557dced81e06e2469e4c9d1698010678 -size 8039 +oid sha256:4d77334a46297d83955e62c96ea1b4634a4fb68e9579d38a86ac67c90630b556 +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/YM/JAR852WCJ0FLZ2Y9X0ZCSV.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/YM/JAR852WCJ0FLZ2Y9X0ZCSV.uasset index 2e073d1c..35a0c694 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/YM/JAR852WCJ0FLZ2Y9X0ZCSV.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/C/YM/JAR852WCJ0FLZ2Y9X0ZCSV.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a76b697dbaf8f2c89539eb5fa66921fa19d569816eb4aa29ba89743c2fe5a23 -size 7581 +oid sha256:f00ddc202964afda6017c9e8f62d95146f270a339e29c986f6ed282ee26ae625 +size 7654 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GD/STENHWLO8ORNBNDN5A14FB.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GD/STENHWLO8ORNBNDN5A14FB.uasset index 1f73db46..029ff24e 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GD/STENHWLO8ORNBNDN5A14FB.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GD/STENHWLO8ORNBNDN5A14FB.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49721c0a4f1ea77eef1c654f76adf2971ea56bcc1f8cc9d982d0fb1ead306add -size 7703 +oid sha256:6f5e1bca0853f49bb43358ba3b48917f77a9e7f5d0763412ddc813979583d557 +size 7772 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GE/5ITWTS7U8J2V7TQ4Z2T9XL.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GE/5ITWTS7U8J2V7TQ4Z2T9XL.uasset index 669fc66f..32158541 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GE/5ITWTS7U8J2V7TQ4Z2T9XL.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/GE/5ITWTS7U8J2V7TQ4Z2T9XL.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73220352dfc573abf0bfd60ddaef0f69b3961343f875945c9d9d554b8ad9e392 -size 7757 +oid sha256:d9f947ef626a171b609fb783a2c74c07383fb32df3d6bf1d710bc00cce374491 +size 7826 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/RE/DSVXTKZ984PYD6K4AIMS7L.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/RE/DSVXTKZ984PYD6K4AIMS7L.uasset index 755c7cd7..cfd9abe2 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/RE/DSVXTKZ984PYD6K4AIMS7L.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/RE/DSVXTKZ984PYD6K4AIMS7L.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79457b87ce194e53a4265dd8f0f0f6810df4477c3e82294b2278a8fa579f6523 -size 7705 +oid sha256:18f3faeb73a5f606caff2609bed66d91fc86908f6079435f98402c3f8f556242 +size 7774 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/8W/XGCQ82L8KLD5A4KQUH10MT.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/8W/XGCQ82L8KLD5A4KQUH10MT.uasset index 85349f2e..f37ecd41 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/8W/XGCQ82L8KLD5A4KQUH10MT.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/8W/XGCQ82L8KLD5A4KQUH10MT.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6270d52000292a7b94c9476d362cbc0089acd6fbad78360c4db9714dfd57c7dc -size 8039 +oid sha256:c34af9ef16371439d50d8766e8558aed4b9f99b82e7d959367d41eeb3b9af968 +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/KW/WNR50JSELA5U380FE2O992.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/KW/WNR50JSELA5U380FE2O992.uasset index 40e956e9..b6785cb4 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/KW/WNR50JSELA5U380FE2O992.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/KW/WNR50JSELA5U380FE2O992.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:974f1b245235a57c11b3f71941811fb4e6d697658e5dbe47acea99edb7c6561f -size 8039 +oid sha256:1805357007fe9f503d5e2079a7914d7397c7af94f8430e4676ce2354fc3361fc +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/LH/P4U0X7QM3NUK3GL7NZ6RMJ.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/LH/P4U0X7QM3NUK3GL7NZ6RMJ.uasset index 9825f1ed..904b6998 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/LH/P4U0X7QM3NUK3GL7NZ6RMJ.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/LH/P4U0X7QM3NUK3GL7NZ6RMJ.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64bc7e1bc553718bd07c5407cf23f2068b610e537f905e0c3a084130c3676ece -size 8039 +oid sha256:d5f50f524d49092d838534a646684f24325a733b8d62e6c3ea3c3308ae26f086 +size 8108 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/X2/IKEF72QO7QNR055QUE2L7L.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/X2/IKEF72QO7QNR055QUE2L7L.uasset index 78f2266b..b84be545 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/X2/IKEF72QO7QNR055QUE2L7L.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/X2/IKEF72QO7QNR055QUE2L7L.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b4e99deeb814c6cab30970101c27745b5e3770db63cb586f51c02364c72b009 -size 7757 +oid sha256:ffe6f2e65fbdf2c581c717f007adbf68ab07afdaba2bb6f131fccdea49639b1c +size 7826 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/YB/YTF2T58YRT6460X10U922T.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/YB/YTF2T58YRT6460X10U922T.uasset index e5d29555..8686a80c 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/YB/YTF2T58YRT6460X10U922T.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/E/YB/YTF2T58YRT6460X10U922T.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5270a535cfc6606ed0164010d52fb0800792ead28b5c2a0fb90d13b084092e95 -size 7925 +oid sha256:0e6c3ef15009dde0a2a9c51f52eb3347cc26b346d0fc0be8b158367d3b744d0c +size 7994 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/F/1F/DIZMV7FOT29YL5LCPCSXB1.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/F/1F/DIZMV7FOT29YL5LCPCSXB1.uasset index f990384f..bbe394e7 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/F/1F/DIZMV7FOT29YL5LCPCSXB1.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/F/1F/DIZMV7FOT29YL5LCPCSXB1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:896fdc32222fdcbd29371068fde891ce40379c9b850356c73396a772431c3492 -size 7703 +oid sha256:5e1f6195d10527d86ac2519dab28630f2a85ca598de9dcffe8509c47cc524dc0 +size 7772 diff --git a/Source/ProjectEleri/Components/MoveActorsComponent.cpp b/Source/ProjectEleri/Components/MoveActorsComponent.cpp index 6c6b96b1..53a1a65e 100644 --- a/Source/ProjectEleri/Components/MoveActorsComponent.cpp +++ b/Source/ProjectEleri/Components/MoveActorsComponent.cpp @@ -11,6 +11,7 @@ #include "../Public/EleriPlayerController.h" #include "../Public/MyCharacter.h" #include "Engine/OverlapResult.h" +#include "LandscapeProxy.h" // Sets default values for this component's properties UMoveActorsComponent::UMoveActorsComponent() @@ -18,8 +19,6 @@ UMoveActorsComponent::UMoveActorsComponent() // Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features // off to improve performance if you don't need them. PrimaryComponentTick.bCanEverTick = true; - - // ... } @@ -31,13 +30,19 @@ void UMoveActorsComponent::BeginPlay() PlayerController = Cast(UGameplayStatics::GetPlayerController(GetWorld(), 0)); PlayerCharacter = Cast(GetOwner()); + if (!PlayerCharacter) + { + return; + } + TArray OutActors; PlayerCharacter->GetOverlappingActors(OutActors); - for (auto Actor : OutActors) + for (const AActor* Actor : OutActors) { - if(PlantableAreaActorClass == Actor->GetClass()) + if (Actor && PlantableAreaActorClass == Actor->GetClass()) { bRemovalModePossible = true; + break; } } } @@ -48,114 +53,121 @@ void UMoveActorsComponent::TickComponent(float DeltaTime, ELevelTick TickType, F { Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - if (!PlayerCharacter || !MovingActor) return; + if (!PlayerCharacter || !IsValid(MovingActor) || MovingActor->bPlaced) return; - if (!MovingActor->bPlaced) + FVector ForwardVec = PlayerCharacter->GetActorForwardVector(); + if (PlayerController && PlayerController->PlayerCameraManager) { - FVector ForwardVec; - if (APlayerCameraManager* CameraManager = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0)) + ForwardVec = PlayerController->PlayerCameraManager->GetCameraRotation().Vector(); + ForwardVec.Z = 0.f; + } + + // Prefer the per-actor tuning values, falling back to the component defaults. + const float Distance = MovingActor->DistanceFromActor > 0.f ? MovingActor->DistanceFromActor : PlacementDistance; + const float GridSnap = MovingActor->GridScale > 0.f ? MovingActor->GridScale : GridSnapSize; + + FVector PosVector = PlayerCharacter->GetActorLocation() + (ForwardVec * Distance) + FVector(0.f, 0.f, PlacementHeightOffset); + + if (bGridMovementActive) + { + PosVector = UKismetMathLibrary::Vector_SnappedToGrid(PosVector, GridSnap); + } + + const FVector TargetScale = (MovingActor->ScaleOverride != FVector::ZeroVector) ? MovingActor->ScaleOverride : MovingActor->GetActorScale(); + MovingActor->SetActorTransform(FTransform(MovingActor->GetActorRotation(), PosVector, TargetScale)); + + // Snap the object down onto the ground beneath it. + FCollisionObjectQueryParams QueryParams; + QueryParams.AddObjectTypesToQuery(ECC_WorldStatic); + + const FVector TraceEnd = MovingActor->GetActorLocation() + FVector(0.f, 0.f, -GroundTraceLength); + TArray OutHits; + GetWorld()->LineTraceMultiByObjectType(OutHits, MovingActor->GetActorLocation(), TraceEnd, QueryParams); + + MovingActor->bPlaceable = true; + MovingActor->IntersectingActors.Empty(); + for (const FHitResult& HitResult : OutHits) + { + AActor* HitActor = HitResult.GetActor(); + if (!HitActor || HitActor == MovingActor) continue; + + MovingActor->IntersectingActors.Add(HitActor); + + if (HitActor->IsA(ALandscapeProxy::StaticClass())) { - ForwardVec = CameraManager->GetCameraRotation().Vector(); - ForwardVec.Z = 0; - } - else - { - ForwardVec = PlayerCharacter->GetActorForwardVector(); - } - //FVector PosVector = UKismetMathLibrary::Vector_SnappedToGrid(PlayerCharacter->GetActorLocation() + ((ForwardVec * MovingActor->DistanceFromActor) + FVector(0.f, 0.f, 100.f)), MovingActor->GridScale); - - FVector PosVector = PlayerCharacter->GetActorLocation() + ((ForwardVec * 800.f) + FVector(0.f, 0.f, 100.f)); - - if (bGridMovementActive) - { - PosVector = UKismetMathLibrary::Vector_SnappedToGrid(PosVector, 250.f); - } - - FTransform NewTransform = FTransform(MovingActor->GetActorRotation(), PosVector, (MovingActor->ScaleOverride != FVector::ZeroVector) ? MovingActor->ScaleOverride : MovingActor->GetActorScale()); - MovingActor->SetActorTransform(NewTransform); - - - TArray OutHits; - FCollisionObjectQueryParams QueryParams; - QueryParams.AddObjectTypesToQuery(ECollisionChannel::ECC_WorldStatic); - FVector TraceEnd = (MovingActor->GetActorLocation() + FVector(0.f, 0.f, -1000.f)); - GetWorld()->LineTraceMultiByObjectType(OutHits, MovingActor->GetActorLocation(), TraceEnd, QueryParams); - - MovingActor->bPlaceable = true; - MovingActor->IntersectingActors.Empty(); - for (const FHitResult& HitResult : OutHits) - { - if (HitResult.GetActor() == MovingActor) continue; - - MovingActor->IntersectingActors.Add(HitResult.GetActor()); - - if (HitResult.GetActor()->GetClass()->GetName() == FString("Landscape")) - { - MovingActor->SetActorLocation(HitResult.ImpactPoint); - } - } - - //Check if moving object is overlapping - TArray OverlappingActors; - FVector Center, BoxExtent; - MovingActor->GetActorBounds(false, Center, BoxExtent); - BoxExtent *= 0.9f; - if (!MovingActor->BoxExtentOverride.IsNearlyZero()) - { - BoxExtent = MovingActor->BoxExtentOverride; - } - - TArray OverlapResults; - FCollisionQueryParams QueryParams1; - QueryParams1.bTraceComplex = true; - QueryParams1.AddIgnoredActor(MovingActor); - QueryParams1.AddIgnoredActor(PlayerCharacter); - FCollisionObjectQueryParams ObjectQueryParams; - ObjectQueryParams.AddObjectTypesToQuery(ECC_WorldStatic); - ObjectQueryParams.AddObjectTypesToQuery(ECC_WorldDynamic); - ObjectQueryParams.AddObjectTypesToQuery(ECC_GameTraceChannel1); - ObjectQueryParams.AddObjectTypesToQuery(ECC_GameTraceChannel2); - - bool bHit = GetWorld()->OverlapMultiByObjectType( - OverlapResults, - MovingActor->GetActorLocation(), - FQuat::Identity, - ObjectQueryParams, - FCollisionShape::MakeBox(BoxExtent), // Or MakeSphere, MakeCapsule - QueryParams1 - ); - for (const FOverlapResult& OverlapResult : OverlapResults) - { - if (OverlapResult.GetActor()) - OverlappingActors.Add(OverlapResult.GetActor()); - } - //DrawDebugBox(GetWorld(), MovingActor->GetActorLocation(), BoxExtent, FColor::Red); - bool PlantableAreaFound = false; - for (auto OverlappingActor : OverlappingActors) - { - if (OverlappingActor->GetClass() == PlantableAreaActorClass) - { - PlantableAreaFound = true; - } - - if (OverlappingActor->GetClass()->GetName() == FString("Landscape") || - !OverlappingActor->GetClass()->IsChildOf(AStaticMeshActor::StaticClass())) continue; - - if (!ActorsToIgnore.FindByPredicate([&OverlappingActor](const TSubclassOf& ActorClass) { return OverlappingActor->GetClass() == ActorClass; })) - { - MovingActor->bPlaceable = false; - break; - } - } - if(!PlantableAreaFound) - MovingActor->bPlaceable = false; - - if (MovingActor) - { - MovingActor->GetStaticMeshComponent()->SetOverlayMaterial((!MovingActor->bPlaceable) ? MovingActor->CantPlaceMaterial : MovingActor->CanPlaceMaterial); - MovingActor->K2_TogglePlaceableEffects(MovingActor->bPlaceable); + MovingActor->SetActorLocation(HitResult.ImpactPoint); } } + + // Check whether the object overlaps anything that should block placement. + FVector Center, BoxExtent; + MovingActor->GetActorBounds(false, Center, BoxExtent); + BoxExtent *= OverlapBoxExtentMultiplier; + if (!MovingActor->BoxExtentOverride.IsNearlyZero()) + { + BoxExtent = MovingActor->BoxExtentOverride; + } + + FCollisionQueryParams OverlapQueryParams; + OverlapQueryParams.bTraceComplex = true; + OverlapQueryParams.AddIgnoredActor(MovingActor); + OverlapQueryParams.AddIgnoredActor(PlayerCharacter); + + FCollisionObjectQueryParams ObjectQueryParams; + ObjectQueryParams.AddObjectTypesToQuery(ECC_WorldStatic); + ObjectQueryParams.AddObjectTypesToQuery(ECC_WorldDynamic); + ObjectQueryParams.AddObjectTypesToQuery(ECC_GameTraceChannel1); + ObjectQueryParams.AddObjectTypesToQuery(ECC_GameTraceChannel2); + + TArray OverlapResults; + GetWorld()->OverlapMultiByObjectType( + OverlapResults, + MovingActor->GetActorLocation(), + MovingActor->GetActorQuat(), + ObjectQueryParams, + FCollisionShape::MakeBox(BoxExtent), + OverlapQueryParams + ); + + bool PlantableAreaFound = false; + for (const FOverlapResult& OverlapResult : OverlapResults) + { + AActor* OverlappingActor = OverlapResult.GetActor(); + if (!OverlappingActor) continue; + + if (PlantableAreaActorClass == OverlappingActor->GetClass()) + { + PlantableAreaFound = true; + } + + // Landscape and non-static-mesh actors don't block placement. + if (OverlappingActor->IsA(ALandscapeProxy::StaticClass()) || !OverlappingActor->GetClass()->IsChildOf(AStaticMeshActor::StaticClass())) + { + continue; + } + + const bool bIsIgnored = ActorsToIgnore.ContainsByPredicate([&OverlappingActor](const TSubclassOf& ActorClass) + { + return OverlappingActor->GetClass() == ActorClass; + }); + + if (!bIsIgnored) + { + MovingActor->bPlaceable = false; + break; + } + } + + if (!PlantableAreaFound) + { + MovingActor->bPlaceable = false; + } + + if (UStaticMeshComponent* MeshComponent = MovingActor->GetStaticMeshComponent()) + { + MeshComponent->SetOverlayMaterial((!MovingActor->bPlaceable) ? MovingActor->CantPlaceMaterial : MovingActor->CanPlaceMaterial); + } + MovingActor->K2_TogglePlaceableEffects(MovingActor->bPlaceable); } void UMoveActorsComponent::ToggleGridMovement() @@ -172,20 +184,21 @@ bool UMoveActorsComponent::PlaceableActionUsed(ERemovalAction ActionUsed) switch (ActionUsed) { case ERemovalAction::NONE: + case ERemovalAction::MAX: + default: break; + case ERemovalAction::START_MOVE: - if (AEleriPlayerController* PC = Cast(UGameplayStatics::GetPlayerController(GetWorld(), 0))) - { - PickUpObjectForPlacing(HighligtedMovingActor); - return true; - } - break; + return PickUpObjectForPlacing(HighligtedMovingActor); + case ERemovalAction::PLACE: - if (PlayerController && MovingActor && MovingActor->IsPlaceable()) + if (PlayerController && MovingActor->IsPlaceable()) { FPrimaryAssetId ItemId = MovingActor->ItemStack.ItemId; if (!ItemId.IsValid()) + { ItemId = MovingActor->DataAssetId; + } if (ItemId.IsValid()) { if (UInventoryComponent* Inventory = UMainBlueprintFunctionLibrary::GetPlayerInventory(GetWorld())) @@ -197,52 +210,50 @@ bool UMoveActorsComponent::PlaceableActionUsed(ERemovalAction ActionUsed) return true; } break; - //Will place it in inventory + case ERemovalAction::REMOVE: - case ERemovalAction::EXIT: - if (UGameInstance* GI = UGameplayStatics::GetGameInstance(GetWorld())) + { + // A world object is returned to the player's inventory before it is removed. + if (MovingActor->DataAssetId.IsValid() && !MovingActor->bFromInventory) { - if (UObjectPersistenceSubsystem* ObjectPersistenceSubsystem = GI->GetSubsystem()) + if (UInventoryComponent* Inventory = UMainBlueprintFunctionLibrary::GetPlayerInventory(GetWorld())) + { + Inventory->AddItemToInventory(MovingActor->DataAssetId, 1, false, false); + } + } + + if (UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(GetWorld())) + { + if (UObjectPersistenceSubsystem* ObjectPersistenceSubsystem = GameInstance->GetSubsystem()) { - if (MovingActor) - { - if (MovingActor->DataAssetId.IsValid() && !MovingActor->bFromInventory) - { - if (UInventoryComponent* Inventory = UMainBlueprintFunctionLibrary::GetPlayerInventory(GetWorld())) - { - Inventory->AddItemToInventory(MovingActor->DataAssetId, 1, false, false); - } - } - } ObjectPersistenceSubsystem->RemoveActorFromLevel(MovingActor); return true; } } - break; - /*if (MovingActor->InventoryRef) + + // Fallback if the persistence subsystem is unavailable. + MovingActor->Destroy(); + return true; + } + + case ERemovalAction::EXIT: + { + // Cancel the current placement/move without committing it. + if (MovingActor->bFromInventory) { - PlaceableActionUsed(ERemovalAction::REMOVE); + // A preview spawned from the inventory: return the item and destroy the preview. + MovingActor->ReturnToInventory(); + MovingActor->Destroy(); } else { + // An existing world object: put it back where it was picked up from. MovingActor->SetActorTransform(MovingActor->CurrentMemorizedTransform); - for (int32 i = 0; i < MovingActor->MeshMaterials.Num(); i++) - { - MovingActor->GetStaticMeshComponent()->SetMaterial(i, MovingActor->MeshMaterials[i]); - } - MovingActor->GetStaticMeshComponent()->SetOverlayMaterial(nullptr); - if (PlayerController) - { - PlaceObjectForPlacing(); - } - return true; - }*/ - break; - case ERemovalAction::MAX: - break; - default: - break; + } + return true; } + } + return false; } @@ -253,7 +264,7 @@ void UMoveActorsComponent::ToggleRemovalModeOption(bool bNewRemoveModePossible) bool UMoveActorsComponent::PickUpObjectForPlacing(ARemovableStaticMeshActor* Placable) { - if (MovingActor || !Placable || !PlayerController) return false; + if (MovingActor || !IsValid(Placable) || !PlayerController) return false; // Get the Enhanced Input Local Player Subsystem from the Local Player related to our Player Controller. if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer())) @@ -268,16 +279,14 @@ bool UMoveActorsComponent::PickUpObjectForPlacing(ARemovableStaticMeshActor* Pla bool UMoveActorsComponent::PlaceObjectForPlacing() { - if (!MovingActor) return false; + if (!IsValid(MovingActor)) return false; - if (MovingActor) + if (UStaticMeshComponent* MeshComponent = MovingActor->GetStaticMeshComponent()) { - if (MovingActor->GetStaticMeshComponent()) - { - MovingActor->GetStaticMeshComponent()->SetOverlayMaterial(nullptr); - } - MovingActor->Place(); + MeshComponent->SetOverlayMaterial(nullptr); } + MovingActor->Place(); + RemovalModePlacingStack--; return RemoveObjectForPlacing(); } @@ -290,9 +299,11 @@ bool UMoveActorsComponent::RemoveObjectForPlacing() if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer())) { if (RemovalModePlacingStack <= 0) + { Subsystem->RemoveMappingContext(PlayerController->RemoveModeContext); + } } - + MovingActor = nullptr; return true; } @@ -300,9 +311,11 @@ bool UMoveActorsComponent::RemoveObjectForPlacing() void UMoveActorsComponent::StartObjectRemoval(bool bStart, int32 Stack) { + if (!PlayerCharacter) return; + if (!bStart) { - PlayerCharacter->bAlreadyInteracting = bStart; + PlayerCharacter->bAlreadyInteracting = false; } PlayerCharacter->CurrentlyDoing = bStart ? ECurrentlyDoing::OBJECT_PLACING : ECurrentlyDoing::NOTHING; @@ -312,29 +325,33 @@ void UMoveActorsComponent::StartObjectRemoval(bool bStart, int32 Stack) if (!bStart) { PlayerCharacter->ZoomBack(0.5f); - } - else if (bStart) + else { - PlayerCharacter->ZoomCamera(-500.f, 0.5f); + PlayerCharacter->ZoomCamera(500.f, 0.5f); } bRemovalMode = bStart; OnRemovalModeToggled.Broadcast(bRemovalMode); PlayerCharacter->SetNewCameraPitches( - bStart? PlayerCharacter->CameraPitchMin - 50 : PlayerCharacter->CameraPitchMin, - bStart? PlayerCharacter->CameraPitchMax + 5 : PlayerCharacter->CameraPitchMax); + bStart ? PlayerCharacter->CameraPitchMin - 50 : PlayerCharacter->CameraPitchMin, + bStart ? PlayerCharacter->CameraPitchMax + 5 : PlayerCharacter->CameraPitchMax); - if (PlayerController->GetMainGameWidget()) + if (PlayerController && PlayerController->GetMainGameWidget()) + { PlayerController->GetMainGameWidget()->SwitchKeybindsDisplay(bRemovalMode ? 4 : 1); + } // Get the Enhanced Input Local Player Subsystem from the Local Player related to our Player Controller. - if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer())) + if (PlayerController) { - if (!bStart) + if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer())) { - Subsystem->RemoveMappingContext(PlayerController->RemoveModeContext); + if (!bStart) + { + Subsystem->RemoveMappingContext(PlayerController->RemoveModeContext); + } } } @@ -343,38 +360,21 @@ void UMoveActorsComponent::StartObjectRemoval(bool bStart, int32 Stack) bool UMoveActorsComponent::HighlightRemovableObject(ARemovableStaticMeshActor* Placable) { - if (!bRemovalModePossible || !bRemovalMode) return false; + if (!bRemovalModePossible || !bRemovalMode || !IsValid(Placable)) return false; - if (!HighligtedMovingActor) + if (HighligtedMovingActor == Placable) { - HighligtedMovingActor = Placable; return true; } - else - { - if (HighligtedMovingActor != Placable) - { - if (HighligtedMovingActor) - { - HighligtedMovingActor = Placable; - } - } - else - { - return true; - } - } - return false; + HighligtedMovingActor = Placable; + return true; } void UMoveActorsComponent::UnhighlightRemovableObject(ARemovableStaticMeshActor* Placable) { - if (Placable) + if (Placable && HighligtedMovingActor == Placable) { - if (HighligtedMovingActor == Placable) - { - HighligtedMovingActor = nullptr; - } + HighligtedMovingActor = nullptr; } } diff --git a/Source/ProjectEleri/Components/MoveActorsComponent.h b/Source/ProjectEleri/Components/MoveActorsComponent.h index e6605d59..d206f361 100644 --- a/Source/ProjectEleri/Components/MoveActorsComponent.h +++ b/Source/ProjectEleri/Components/MoveActorsComponent.h @@ -47,6 +47,21 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite) TSubclassOf PlantableAreaActorClass; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Placement") + float PlacementDistance = 800.f; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Placement") + float PlacementHeightOffset = 100.f; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Placement") + float GridSnapSize = 250.f; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Placement") + float GroundTraceLength = 1000.f; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Placement", meta = (ClampMin = "0.0", ClampMax = "1.0")) + float OverlapBoxExtentMultiplier = 0.9f; + UPROPERTY(BlueprintAssignable) FOnRemovalModeToggled OnRemovalModeToggled; @@ -84,9 +99,9 @@ public: FORCEINLINE bool IsGridMovementActive() const { return bGridMovementActive; } UFUNCTION(BlueprintCallable, BlueprintPure) - inline bool IsRemovingModePossible() { return bRemovalModePossible; } + bool IsRemovingModePossible() const { return bRemovalModePossible; } UFUNCTION(BlueprintCallable, BlueprintPure) - inline bool IsRemovingMode() { return bRemovalMode; } + bool IsRemovingMode() const { return bRemovalMode; } UFUNCTION(BlueprintCallable) diff --git a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp index 268cba1a..f0800941 100644 --- a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp +++ b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp @@ -13,18 +13,61 @@ ARemovableStaticMeshActor::ARemovableStaticMeshActor() { PrimaryActorTick.bCanEverTick = true; - - RootComponent = CreateDefaultSubobject(TEXT("RootComponent")); - SetRootComponent(RootComponent); - + WidgetComponent = CreateDefaultSubobject(TEXT("WidgetComponent")); WidgetComponent->SetupAttachment(RootComponent); + + OverlapBoxComponent = CreateDefaultSubobject(TEXT("OverlapBoxComponent")); + OverlapBoxComponent->SetupAttachment(RootComponent); + // Detection only: the box never blocks anything, it only reports overlaps. + OverlapBoxComponent->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + OverlapBoxComponent->SetCollisionObjectType(OverlapBoxObjectType); + OverlapBoxComponent->SetCollisionResponseToAllChannels(ECR_Overlap); + OverlapBoxComponent->SetCollisionResponseToChannel(ECC_Visibility, ECR_Ignore); + OverlapBoxComponent->SetGenerateOverlapEvents(true); + OverlapBoxComponent->SetCanEverAffectNavigation(false); +} + +void ARemovableStaticMeshActor::OnConstruction(const FTransform& Transform) +{ + Super::OnConstruction(Transform); + + UpdateOverlapBoxExtent(); +} + +void ARemovableStaticMeshActor::UpdateOverlapBoxExtent() +{ + if (!OverlapBoxComponent) + { + return; + } + + OverlapBoxComponent->SetCollisionObjectType(OverlapBoxObjectType); + + UStaticMeshComponent* MeshComponent = GetStaticMeshComponent(); + if (!MeshComponent || !MeshComponent->GetStaticMesh()) + { + OverlapBoxComponent->SetBoxExtent(FVector::ZeroVector); + return; + } + + // GetLocalBounds returns the mesh' bounding box in its own local space. + FVector BoundsMin, BoundsMax; + MeshComponent->GetLocalBounds(BoundsMin, BoundsMax); + + OverlapBoxComponent->SetRelativeLocation((BoundsMin + BoundsMax) * 0.5f); + OverlapBoxComponent->SetBoxExtent(!BoxExtentOverride.IsNearlyZero() + ? BoxExtentOverride + : (BoundsMax - BoundsMin) * 0.5f); } void ARemovableStaticMeshActor::BeginPlay() { Super::BeginPlay(); + // Keep the detection box in sync with the mesh that is actually assigned at runtime. + UpdateOverlapBoxExtent(); + PlayerRef = UGameplayStatics::GetActorOfClass(GetWorld(), AMyCharacter::StaticClass()); if (PlayerRef) { MoveableComponent = PlayerRef->GetComponentByClass(); diff --git a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h index d238901f..c3f63cbe 100644 --- a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h +++ b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h @@ -6,6 +6,7 @@ #include "Engine/StaticMeshActor.h" #include "../Public/InventoryComponent.h" #include "Components/InteractionWidgetComponent.h" +#include "Components/BoxComponent.h" #include "Interface/InteractableActorInterface.h" #include "RemovableStaticMeshActor.generated.h" @@ -28,6 +29,8 @@ public: ARemovableStaticMeshActor(); virtual void BeginPlay() override; + + virtual void OnConstruction(const FTransform& Transform) override; virtual void ToggleInteractableUI_Implementation(bool bActive) override; virtual bool IsInteractable_Implementation() const override; @@ -76,11 +79,24 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Removable Object") FPrimaryAssetId DataAssetId; + /** Overlap only collision box that always fits the static mesh' bounding box. + * It never blocks anything, it only reports what the object currently overlaps. */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Removable Object") + UBoxComponent* OverlapBoxComponent; + + /** Collision object type of OverlapBoxComponent. Defaults to the project's "RemovableStaticMEsh" channel. */ + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Removable Object") + TEnumAsByte OverlapBoxObjectType = ECC_GameTraceChannel2; + + /** Resizes OverlapBoxComponent so it fits the mesh' bounding box (or BoxExtentOverride when that one is set). */ + UFUNCTION(BlueprintCallable, Category = "Removable Object") + void UpdateOverlapBoxExtent(); + //Used for movable actors to override their box extent for checking collision UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Removable Object") FVector BoxExtentOverride = FVector::ZeroVector; - UFUNCTION(BlueprintCallable, BLueprintPure) + UFUNCTION(BlueprintCallable, BlueprintPure) FORCEINLINE bool IsPlaceable() const { return bPlaceable; } UFUNCTION(BlueprintCallable, BLueprintPure) FORCEINLINE bool FromInventory() const { return InventoryRef != nullptr; } diff --git a/Source/ProjectEleri/ProjectEleri.Build.cs b/Source/ProjectEleri/ProjectEleri.Build.cs index 73b6d159..467a3571 100644 --- a/Source/ProjectEleri/ProjectEleri.Build.cs +++ b/Source/ProjectEleri/ProjectEleri.Build.cs @@ -33,7 +33,7 @@ public class ProjectEleri : ModuleRules "InteractionSystem" }); - PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" }); + PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils", "Landscape" }); // Uncomment if you are using Slate UI // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); diff --git a/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.cpp b/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.cpp index 442239b8..af8d7ac8 100644 --- a/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.cpp +++ b/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.cpp @@ -3,7 +3,6 @@ #include "ObjectPersistenceSubsystem.h" #include "Interface/RemovableActorInterface.h" -#include "../../Components/PlacableActorComponent.h" #include "Kismet/GameplayStatics.h" #include "../../Public/EleriSaveGame.h" #include "../GameObjects/RemovableStaticMeshActor.h" @@ -27,16 +26,10 @@ void UObjectPersistenceSubsystem::RemoveActorFromLevel(AActor* ActorToRemove) //Check if actor existed meaning we're placing it for the first time int32 ActorIndex = ActorExistsInList(ActorToRemove); - if (ActorIndex == -1) - { - if (UPlacableActorComponent* Placeable = ActorToRemove->GetComponentByClass()) - { - //Placeable->ReturnToInventory(); - } - } - else + if (ActorIndex != INDEX_NONE) { PlacedActors.RemoveAt(ActorIndex); + } ActorToRemove->Destroy(); diff --git a/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.h b/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.h index 1d821f12..5cf5a5cd 100644 --- a/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.h +++ b/Source/ProjectEleri/System/Subsystem/ObjectPersistenceSubsystem.h @@ -6,7 +6,6 @@ #include "Subsystems/GameInstanceSubsystem.h" #include "ObjectPersistenceSubsystem.generated.h" -class UPlacableActorComponent; class UEleriSaveGame; USTRUCT(BlueprintType)