From 7327c7f98a3b045c3a8810be4385abf0e5f34c81 Mon Sep 17 00:00:00 2001 From: "adnan.mujkic" Date: Thu, 3 Sep 2026 23:40:00 +0200 Subject: [PATCH] Refactor of interactable stuff, use the plugin and new interface for this, tweaks to SSGI shader so it's usable in game --- Config/DefaultGame.ini | 4 ++ .../BP_EleriLibraryBookStand.uasset | 4 +- Content/Blueprints/BP_FogDoor.uasset | 4 +- Content/Cat/BP_Yuki.uasset | 4 +- .../BP_BaseCharacter_Template.uasset | 4 +- .../BP_RemovableStaticMeshActor.uasset | 4 +- Content/Prefabs/Bush1.uasset | 4 +- Content/Prefabs/Bush1_FlowerRed.uasset | 4 +- Content/Prefabs/Bush1_FlowerWhite.uasset | 4 +- Content/Prefabs/Bush1_FlowerYellow.uasset | 4 +- Content/Prefabs/Bush2.uasset | 4 +- Content/Prefabs/Bush2_FlowerRed.uasset | 4 +- Content/Prefabs/Bush2_FlowerWhite.uasset | 4 +- Content/Prefabs/Bush2_FlowerYellow.uasset | 4 +- Content/Prefabs/Bush3.uasset | 4 +- Content/Prefabs/Bush3_FlowerRed.uasset | 4 +- Content/Prefabs/Bush3_FlowerWhite.uasset | 4 +- Content/Prefabs/Bush3_FlowerYellow.uasset | 4 +- Content/Prefabs/Bush4.uasset | 4 +- Content/Prefabs/Bush4_FlowerRed.uasset | 4 +- Content/Prefabs/Bush4_FlowerWhite.uasset | 4 +- Content/Prefabs/Bush4_FlowerYellow.uasset | 4 +- Content/Prefabs/FencePlaceable.uasset | 4 +- .../Prefabs/Flowers/BP_FlowersYellow.uasset | 4 +- .../Flowers/FoliageActor2Normal.uasset | 4 +- .../Prefabs/Flowers/FoliageActor2RED.uasset | 4 +- .../Prefabs/Flowers/FoliageActor2WHITE.uasset | 4 +- .../Prefabs/Rocks/BP_RemovableRock1.uasset | 4 +- .../Prefabs/Rocks/BP_RemovableRock2.uasset | 4 +- .../Prefabs/Rocks/BP_RemovableRock3.uasset | 4 +- .../Prefabs/Rocks/BP_RemovableRock4.uasset | 4 +- Content/Prefabs/Tree2.uasset | 4 +- Content/Prefabs/Tree3.uasset | 4 +- Content/Prefabs/Tree4.uasset | 4 +- Content/ST_CommonWords.uasset | 4 +- .../AlchemySystem/BP_AlchemyManager.uasset | 4 +- Content/Scripts/BP_TimeOfDay.uasset | 4 +- .../Scripts/Bazar/BP_BazarSellingStand.uasset | 4 +- Content/Scripts/Bazar/WBP_BazarScreen.uasset | 4 +- .../InventorySystem/BP_StorageChest.uasset | 4 +- .../InventorySystem/BP_TreasureChest.uasset | 4 +- .../Scripts/InventorySystem/MerchantBP.uasset | 4 +- .../Seed/BP_SeedCarousel.uasset | 4 +- .../Blueprints/BP_ThirdPersonCharacter.uasset | 4 +- .../WBP_Eleri_Interaction.uasset | 3 ++ Content/UI/MainUI.uasset | 4 +- Content/UI/OptionsScreen.uasset | 4 +- .../UI/Styles/Text/DT_EleriTextStyles.uasset | 2 +- .../Actors/BP_InstancedVegetationActor.uasset | 4 +- .../6/FJ/XSLZCCYW6P0XOLD701W2BA.uasset | 4 +- .../7/1H/8FRC7HVBN4R8ZU9AAM1N1W.uasset | 4 +- .../A/6L/NS8525RF0ZA2JKPOKX5PM1.uasset | 4 +- .../D/FR/P3GK359CLJH40T3VDWEQ1D.uasset | 4 +- .../Components/MoveActorsComponent.cpp | 1 - .../GameObjects/BaseCharacter.cpp | 17 ++++++- .../ProjectEleri/GameObjects/BaseCharacter.h | 11 +++-- .../GameObjects/EleriBaseActor.cpp | 21 +++++++++ .../ProjectEleri/GameObjects/EleriBaseActor.h | 10 ++++- .../GameObjects/RemovableStaticMeshActor.cpp | 26 +++++++++++ .../GameObjects/RemovableStaticMeshActor.h | 12 ++++- .../Private/EleriPlayerController.cpp | 24 +++------- .../Interface/ZoneInteractableInterface.cpp | 7 --- Source/ProjectEleri/Private/MyCharacter.cpp | 6 --- .../ProjectEleri/Private/TimeOfDayManager.cpp | 18 ++++++++ .../Interface/ZoneInteractableInterface.h | 44 ------------------- Source/ProjectEleri/Public/TimeOfDayManager.h | 9 +++- 66 files changed, 229 insertions(+), 186 deletions(-) create mode 100644 Content/UI/InteractionUI/WBP_Eleri_Interaction.uasset delete mode 100644 Source/ProjectEleri/Private/Interface/ZoneInteractableInterface.cpp delete mode 100644 Source/ProjectEleri/Public/Interface/ZoneInteractableInterface.h diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini index 8e0a0027..68d8f899 100644 --- a/Config/DefaultGame.ini +++ b/Config/DefaultGame.ini @@ -194,3 +194,7 @@ CameraZoomLevels=(((TagName="Camera.BoomOffset.Default"), (X=-1200.000000,Y=0.00 ExpIncreaseEffectClass=/Script/Engine.BlueprintGeneratedClass'/Game/Blueprints/GameEffects/GSE_AddExp_Template.GSE_AddExp_Template_C' GlobalSettingsDataSheet=/Game/GameData/CSV/GlobalKeyValueSettings.GlobalKeyValueSettings +[/Script/InteractionSystem.InteractionSettings] +DefaultInteractionWidgetClass=/Script/UMG.WidgetBlueprintGeneratedClass'/Game/UI/InteractionUI/WBP_Eleri_Interaction.WBP_Eleri_Interaction_C' +InteractableMaxDistance=500.000000 + diff --git a/Content/Blueprints/BP_EleriLibraryBookStand.uasset b/Content/Blueprints/BP_EleriLibraryBookStand.uasset index c7cd3cb3..644234c3 100644 --- a/Content/Blueprints/BP_EleriLibraryBookStand.uasset +++ b/Content/Blueprints/BP_EleriLibraryBookStand.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40c09d2e3c34202ce9176beb270fb748375a6599cd461671b37b758256386bdb -size 203640 +oid sha256:94362c57c2db49f58340557a20fd9af09a0a0cb7d38ae6bd1e0003f96a9e164e +size 183321 diff --git a/Content/Blueprints/BP_FogDoor.uasset b/Content/Blueprints/BP_FogDoor.uasset index 0674121e..b555e4ab 100644 --- a/Content/Blueprints/BP_FogDoor.uasset +++ b/Content/Blueprints/BP_FogDoor.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77a837ba9a5f7abc27a95ededf82077c203d193c3108159da38e11658514081e -size 175866 +oid sha256:a623ab92c336916d61e77d8a7748353dd1e5772636be98e489c737941a72da73 +size 172932 diff --git a/Content/Cat/BP_Yuki.uasset b/Content/Cat/BP_Yuki.uasset index d629f09e..15584389 100644 --- a/Content/Cat/BP_Yuki.uasset +++ b/Content/Cat/BP_Yuki.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:16a203e987bd01f6bddf8805553dbcde9ffb26fa778df03ae7782e71998ff970 -size 83961 +oid sha256:24d770fe02a56889907f77f3564c760e464c18a06d9b4e0c1a7633920c84116c +size 83093 diff --git a/Content/Character/BP_BaseCharacter_Template.uasset b/Content/Character/BP_BaseCharacter_Template.uasset index 1d2ff6c9..bf3a2475 100644 --- a/Content/Character/BP_BaseCharacter_Template.uasset +++ b/Content/Character/BP_BaseCharacter_Template.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70231cafa5f18bfbca9eb0760dd80d4f917ad5a4b36cc6a1ddd6d1b45629388e -size 45440 +oid sha256:2f53283aae16bfea772432ed58eebaf1d40d6b8a0de73eb1efbdd736f17e7ce4 +size 49982 diff --git a/Content/Prefabs/BP_RemovableStaticMeshActor.uasset b/Content/Prefabs/BP_RemovableStaticMeshActor.uasset index 07156bc8..a3f9cf00 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:6092a1b91357fdf3dcae8446161c1b97329c67f327e90b2bb17c619d19840798 -size 252800 +oid sha256:20a3cf1a662ff080b5badbc7d2db7ba99f54b9aaf21499b5f8f9ba7e209bbae0 +size 227793 diff --git a/Content/Prefabs/Bush1.uasset b/Content/Prefabs/Bush1.uasset index 2f0ed001..5c33ae46 100644 --- a/Content/Prefabs/Bush1.uasset +++ b/Content/Prefabs/Bush1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97fde9cd5d9f180f853b46cacb78504ff9be0f51de713290c63da8b285c58965 -size 33628 +oid sha256:7d8178a62956b474aa750f2fbf0998eb50f998124ef4bc5e62aad2062c40b4cf +size 30244 diff --git a/Content/Prefabs/Bush1_FlowerRed.uasset b/Content/Prefabs/Bush1_FlowerRed.uasset index 3e97ac40..05afc67e 100644 --- a/Content/Prefabs/Bush1_FlowerRed.uasset +++ b/Content/Prefabs/Bush1_FlowerRed.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13b37cc9741124515a9836c552dfb494fae4d0336e3bf7323b319c1ad06a1dbc -size 37126 +oid sha256:8f0e0c8a42b9cdee488fdb86ac474627baa1e805d493ec9b3e1553c22e405ebf +size 33446 diff --git a/Content/Prefabs/Bush1_FlowerWhite.uasset b/Content/Prefabs/Bush1_FlowerWhite.uasset index fd0fdc37..52b6eaed 100644 --- a/Content/Prefabs/Bush1_FlowerWhite.uasset +++ b/Content/Prefabs/Bush1_FlowerWhite.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9689e1be9f7117a41e42713246558a25ef83f6bf89ef4c8360c3dd3aa9db30b1 -size 37610 +oid sha256:9fa49115a2d3173310f947108ba56535ebe68a27cf3c1f847bda1f58ec27ad02 +size 33699 diff --git a/Content/Prefabs/Bush1_FlowerYellow.uasset b/Content/Prefabs/Bush1_FlowerYellow.uasset index 74ea8293..1f3f546e 100644 --- a/Content/Prefabs/Bush1_FlowerYellow.uasset +++ b/Content/Prefabs/Bush1_FlowerYellow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61eb1414dc2f44ef878a690eeb6c7ec283cdfcdefb49686b34bbeeb8c04d1f05 -size 37569 +oid sha256:bdc2847766d43b607f7ee32d9a65fa1cdff9b8c4f3beab391d7fbaff5c5c7f16 +size 33693 diff --git a/Content/Prefabs/Bush2.uasset b/Content/Prefabs/Bush2.uasset index 212960ca..29cecc16 100644 --- a/Content/Prefabs/Bush2.uasset +++ b/Content/Prefabs/Bush2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce6b8e381671662ecc02842c809a8c6e0914834edbcbd45edfada62f834e27de -size 38729 +oid sha256:01841d66a89344651dfbc4f8f29a7451ed8bd694388c69b91974295b3afca281 +size 33207 diff --git a/Content/Prefabs/Bush2_FlowerRed.uasset b/Content/Prefabs/Bush2_FlowerRed.uasset index 675ee7a9..e37a5211 100644 --- a/Content/Prefabs/Bush2_FlowerRed.uasset +++ b/Content/Prefabs/Bush2_FlowerRed.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ac941bc455e9494a1fc6e3aaeebc0b62bc9cf96eda88a80bfc9fea3bb2f64ee -size 41041 +oid sha256:444ee2a32974811b35cd85a125aa36eefd92ea6b6ad7c7fb1aac07b2716f02bd +size 35835 diff --git a/Content/Prefabs/Bush2_FlowerWhite.uasset b/Content/Prefabs/Bush2_FlowerWhite.uasset index 105898f5..d440db41 100644 --- a/Content/Prefabs/Bush2_FlowerWhite.uasset +++ b/Content/Prefabs/Bush2_FlowerWhite.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dab8249132a745622fd79ede87f79b460d90d28a4f4a1b4a79b1e462d542cd93 -size 41510 +oid sha256:5dfc607227234354f0413e17bd0f22df340154c9998cefb5a6a279e0644f5d65 +size 36105 diff --git a/Content/Prefabs/Bush2_FlowerYellow.uasset b/Content/Prefabs/Bush2_FlowerYellow.uasset index 86ec2fea..b5b6d316 100644 --- a/Content/Prefabs/Bush2_FlowerYellow.uasset +++ b/Content/Prefabs/Bush2_FlowerYellow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a71483f461650f034b189a086520627da8964a91a1ed3bbb41f0f1a91a8b96a6 -size 41519 +oid sha256:0a14036773b81218b6a6003fe31058d7311b08f4918f58eb4bd427ea7840078a +size 36117 diff --git a/Content/Prefabs/Bush3.uasset b/Content/Prefabs/Bush3.uasset index 2fc13d84..00c17237 100644 --- a/Content/Prefabs/Bush3.uasset +++ b/Content/Prefabs/Bush3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:387f4a73e3dcae3253217cf73e0b1ae5a67b98722aa3011d865b0c3a515f680d -size 32776 +oid sha256:c40960d20b2abbcd1bc8d7774ee51ffacfc553cac8d18f8a2bcb5e9018989752 +size 29861 diff --git a/Content/Prefabs/Bush3_FlowerRed.uasset b/Content/Prefabs/Bush3_FlowerRed.uasset index 3eabab35..5992b057 100644 --- a/Content/Prefabs/Bush3_FlowerRed.uasset +++ b/Content/Prefabs/Bush3_FlowerRed.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00befc6c85a51cd521b5fb638bd497efdd86ee863e86abaf7002657f4bf753c2 -size 34932 +oid sha256:4f4d11dade38cc59aba5da963cf28a2855e829420d0427b90a7aa04e4531aff8 +size 31943 diff --git a/Content/Prefabs/Bush3_FlowerWhite.uasset b/Content/Prefabs/Bush3_FlowerWhite.uasset index 1fcf4f3b..aacd6f36 100644 --- a/Content/Prefabs/Bush3_FlowerWhite.uasset +++ b/Content/Prefabs/Bush3_FlowerWhite.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e2a92a2af0b10dc158aa5e44ce5338210b91a183ee3e80883cbae6e8acb64d6 -size 35187 +oid sha256:cb8cbb9c38f71d44d76db16d98a7753d09b957a700f8b43adebc31d43336096e +size 32013 diff --git a/Content/Prefabs/Bush3_FlowerYellow.uasset b/Content/Prefabs/Bush3_FlowerYellow.uasset index c1038c86..5178eeb8 100644 --- a/Content/Prefabs/Bush3_FlowerYellow.uasset +++ b/Content/Prefabs/Bush3_FlowerYellow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fee982dfe340750699cc21d8da30863de98e5ee1ff22f8357782b97113149cfb -size 35373 +oid sha256:81c936429eb96a26f1f2d0a30cb255725ca725976381d556904ea9cb8c0184e7 +size 32228 diff --git a/Content/Prefabs/Bush4.uasset b/Content/Prefabs/Bush4.uasset index 5c7e57c7..9a9c6e0d 100644 --- a/Content/Prefabs/Bush4.uasset +++ b/Content/Prefabs/Bush4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed8bbe8b788e90be65dd8c5b1cab81d1d4d76e441965cb59b8b411bea8fed875 -size 36205 +oid sha256:3227a54a5387ab20dba9d9e8c6f772b0766565145e1b0b2c05f78842e03f1a7d +size 32700 diff --git a/Content/Prefabs/Bush4_FlowerRed.uasset b/Content/Prefabs/Bush4_FlowerRed.uasset index 3b337b87..0a85d5f0 100644 --- a/Content/Prefabs/Bush4_FlowerRed.uasset +++ b/Content/Prefabs/Bush4_FlowerRed.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4d6b888b3c7487473d65cb75d4a0a53f4a6004f436c331a045f70d339ee848b -size 37735 +oid sha256:13f839c8c2154df08d8de0e46c7eaf5808f9452e0513686293f2ebf839532033 +size 34394 diff --git a/Content/Prefabs/Bush4_FlowerWhite.uasset b/Content/Prefabs/Bush4_FlowerWhite.uasset index de8fe006..ac7f34cc 100644 --- a/Content/Prefabs/Bush4_FlowerWhite.uasset +++ b/Content/Prefabs/Bush4_FlowerWhite.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1afefaa1ac096ca70e016a279c6222288c3ae2c90aa58830b83deb211f9ad63 -size 38189 +oid sha256:221f8890e955314be21ead7cd1d0eecdbadd2834e0e5387e68d3c7143ba75df0 +size 34688 diff --git a/Content/Prefabs/Bush4_FlowerYellow.uasset b/Content/Prefabs/Bush4_FlowerYellow.uasset index c9f6eda5..df7556f4 100644 --- a/Content/Prefabs/Bush4_FlowerYellow.uasset +++ b/Content/Prefabs/Bush4_FlowerYellow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:280e868c3ce1cc68f6e502a56c2207ebbf871d50201f8d15b5673ec209b155f8 -size 37690 +oid sha256:ae9ee2e4d21eb782a664f0639ccc473fa69951e3c3c2ad83ea898f32f0c808f3 +size 34213 diff --git a/Content/Prefabs/FencePlaceable.uasset b/Content/Prefabs/FencePlaceable.uasset index bfc68b02..7a6d0d97 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:60f408e6e8cca909a3c8817cd7eff1ca19221ab2c0948bd3672d298b2dd66463 -size 39573 +oid sha256:107db1087f57800c1b83a93ea434da93972eea897ad78631634134ad2f212347 +size 38439 diff --git a/Content/Prefabs/Flowers/BP_FlowersYellow.uasset b/Content/Prefabs/Flowers/BP_FlowersYellow.uasset index ef91d9f4..1b95b015 100644 --- a/Content/Prefabs/Flowers/BP_FlowersYellow.uasset +++ b/Content/Prefabs/Flowers/BP_FlowersYellow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:706425c0368b88c475dea5bc8b48a12caca731f2cbfe6ed5583d912e71c83d68 -size 42539 +oid sha256:72f1bd7360b36ef3132c8fece23054d5ccba2fdbacfd3874eced5440d9d76fd9 +size 41757 diff --git a/Content/Prefabs/Flowers/FoliageActor2Normal.uasset b/Content/Prefabs/Flowers/FoliageActor2Normal.uasset index 2d0530cf..c50dc507 100644 --- a/Content/Prefabs/Flowers/FoliageActor2Normal.uasset +++ b/Content/Prefabs/Flowers/FoliageActor2Normal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f2cd2018688e279787d181f1f615f99e7ca473afa66b694c62d070d31f4c587b -size 70065 +oid sha256:3f13f471fde06ec501897a79e737d11a4c32ea0a5a1bca8728ac12ff94521b17 +size 68243 diff --git a/Content/Prefabs/Flowers/FoliageActor2RED.uasset b/Content/Prefabs/Flowers/FoliageActor2RED.uasset index 0a1e798b..8b16f0d3 100644 --- a/Content/Prefabs/Flowers/FoliageActor2RED.uasset +++ b/Content/Prefabs/Flowers/FoliageActor2RED.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:764d716bb6aae32abda090b001e5ed48593da3413ecf06775e9624773e23a06b -size 71337 +oid sha256:52fe813f18d6088ee0bd301aa3ae8de5b06ba53d4068e8a74e3b0cf716c6464c +size 68944 diff --git a/Content/Prefabs/Flowers/FoliageActor2WHITE.uasset b/Content/Prefabs/Flowers/FoliageActor2WHITE.uasset index 8ef53d96..31aec2f3 100644 --- a/Content/Prefabs/Flowers/FoliageActor2WHITE.uasset +++ b/Content/Prefabs/Flowers/FoliageActor2WHITE.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0be1a036f6290eaf3888dd0d5471878713ba31ecc3d68b5bfff281f68e865380 -size 78176 +oid sha256:5eee720821bbe8e4814b1565cf524825242c5952690058e1854da82ffd3d06d7 +size 72982 diff --git a/Content/Prefabs/Rocks/BP_RemovableRock1.uasset b/Content/Prefabs/Rocks/BP_RemovableRock1.uasset index 514ec31d..b1b8ed48 100644 --- a/Content/Prefabs/Rocks/BP_RemovableRock1.uasset +++ b/Content/Prefabs/Rocks/BP_RemovableRock1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f32d06b14a7ac76c61d94d275d311bea57e9f5cf649da792e1b24f9d5f6b39e9 -size 33693 +oid sha256:a3b8f9d48a5e034432617087b9e6f71ed16107d5ec414e98af73f607d2be9d30 +size 34378 diff --git a/Content/Prefabs/Rocks/BP_RemovableRock2.uasset b/Content/Prefabs/Rocks/BP_RemovableRock2.uasset index f4d1ab66..e7b93584 100644 --- a/Content/Prefabs/Rocks/BP_RemovableRock2.uasset +++ b/Content/Prefabs/Rocks/BP_RemovableRock2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ab5b2872473c255d2f6b15328e94d4999c86cabb5320851e1b035a4bbb7a87ce -size 34130 +oid sha256:724fc068a66816174ac733b50cab908d9a5482e026c9d42d4fd566282d63e0c5 +size 34599 diff --git a/Content/Prefabs/Rocks/BP_RemovableRock3.uasset b/Content/Prefabs/Rocks/BP_RemovableRock3.uasset index cb5615e9..2b9e9fed 100644 --- a/Content/Prefabs/Rocks/BP_RemovableRock3.uasset +++ b/Content/Prefabs/Rocks/BP_RemovableRock3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a5e4b07c9a2f3b0becc30b7ed44bab7a5d79262d9233c7c6690c8f64c0b6ab01 -size 34231 +oid sha256:5764fcf3ae72cf5ea52793e6c8dba319424fa1043d6049069b20229548df0f8d +size 34646 diff --git a/Content/Prefabs/Rocks/BP_RemovableRock4.uasset b/Content/Prefabs/Rocks/BP_RemovableRock4.uasset index 0b69117a..478c27c4 100644 --- a/Content/Prefabs/Rocks/BP_RemovableRock4.uasset +++ b/Content/Prefabs/Rocks/BP_RemovableRock4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68b88845cd47c3b0db0ba727e70da3005602adac5facf7f84d72d54d31ce69bc -size 39024 +oid sha256:d9224a44d43491f58aa4b83295e40e3d299d30306da02ac92af2123970815beb +size 37896 diff --git a/Content/Prefabs/Tree2.uasset b/Content/Prefabs/Tree2.uasset index f3b70123..b7cc368f 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:5c033ee23056414b9fa09c74b96621a60801f81e2872f96931f2f3bbe440ac86 -size 97678 +oid sha256:6d4a37faf3744ca5f7eec5d2aeaa48d380945f95bd0ebaf19558abfa5265c375 +size 92783 diff --git a/Content/Prefabs/Tree3.uasset b/Content/Prefabs/Tree3.uasset index 70d37302..31f6c7c0 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:114897a8961f954ed40c8b2f20c4be37560f23b94a04a01c8c744a19d49f0061 -size 89567 +oid sha256:383af99493ee90a726326da45d816c79427f51535d164bed5e34d4bde2cf88ef +size 89271 diff --git a/Content/Prefabs/Tree4.uasset b/Content/Prefabs/Tree4.uasset index 15493608..1f01c855 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:ee501fb4cf15836bbe751b235276b1431dc57d21e645859a6dde70f49d4029cc -size 41732 +oid sha256:66ea68b0b578f3c45af962e46f831eb20301b393ddabd3933c61e3be48417e48 +size 37156 diff --git a/Content/ST_CommonWords.uasset b/Content/ST_CommonWords.uasset index 2325b49e..8eb48ed1 100644 --- a/Content/ST_CommonWords.uasset +++ b/Content/ST_CommonWords.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78575986f65c108c7f2630196ada6b012ef8b7b7f61837fcccba17f6d5f30073 -size 6094 +oid sha256:074e1cd41493201fa65a2c3631ce7ecc030728bf13d916a219a66c71b9e5f430 +size 6364 diff --git a/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset b/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset index 0f9403dd..67f8d2c7 100644 --- a/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset +++ b/Content/Scripts/AlchemySystem/BP_AlchemyManager.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0495ce288d67ba11d327dfe183f7e99cb4ebbb7f7ff7d07eef257e25a3ef2c39 -size 2837751 +oid sha256:11d2ad2316efc7a8e88bb034221d5b23c6da1691f11632ea99d2b67425fc3e94 +size 2835909 diff --git a/Content/Scripts/BP_TimeOfDay.uasset b/Content/Scripts/BP_TimeOfDay.uasset index 7b7a223c..ea965e68 100644 --- a/Content/Scripts/BP_TimeOfDay.uasset +++ b/Content/Scripts/BP_TimeOfDay.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd0f01973bf00aa98c2b1f37521ebb21d811324ee4d8db18632295c03666d212 -size 490259 +oid sha256:662e527532e97277fe30be6f68934576a94a930bf56d218363ad1e592db7cf3d +size 485537 diff --git a/Content/Scripts/Bazar/BP_BazarSellingStand.uasset b/Content/Scripts/Bazar/BP_BazarSellingStand.uasset index 52a6f138..e23b6515 100644 --- a/Content/Scripts/Bazar/BP_BazarSellingStand.uasset +++ b/Content/Scripts/Bazar/BP_BazarSellingStand.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d007d2b3653b74ddedf7e60346a98fbd4f6a18eb9043baf2e61e1c4d1248e8bd -size 1246437 +oid sha256:61a88c6a43f5a9372211e63bda09dfceacc60b821926a9443835461847856fd0 +size 1242729 diff --git a/Content/Scripts/Bazar/WBP_BazarScreen.uasset b/Content/Scripts/Bazar/WBP_BazarScreen.uasset index 61153555..ecc604d3 100644 --- a/Content/Scripts/Bazar/WBP_BazarScreen.uasset +++ b/Content/Scripts/Bazar/WBP_BazarScreen.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:020896ce000ec7bb6c0237813c47bfaf76d26433ac63d4ba8a837175e21e2747 -size 731226 +oid sha256:b60ab96ac298cac846c62dcddd460c626cd716ae2702cdc29235f52f12fd8f42 +size 734221 diff --git a/Content/Scripts/InventorySystem/BP_StorageChest.uasset b/Content/Scripts/InventorySystem/BP_StorageChest.uasset index f2e67fad..c1c56749 100644 --- a/Content/Scripts/InventorySystem/BP_StorageChest.uasset +++ b/Content/Scripts/InventorySystem/BP_StorageChest.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44f31aefaa8afb207f2c991ab79352fee3110eed798453b894dba972f210b9db -size 66461 +oid sha256:b02933a0e539b95dd290c5f2e8b6f9699fd150ed119e2f05c2a6c0478cf77ebd +size 63648 diff --git a/Content/Scripts/InventorySystem/BP_TreasureChest.uasset b/Content/Scripts/InventorySystem/BP_TreasureChest.uasset index 48535deb..aa1067e4 100644 --- a/Content/Scripts/InventorySystem/BP_TreasureChest.uasset +++ b/Content/Scripts/InventorySystem/BP_TreasureChest.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:69f77cafa1767ff8e4fcc434e8edac2d2f02c8f4f85d845d4ef7b228264a7e70 -size 220882 +oid sha256:b552815091dc9b26d3602c153fb8b9109f9136ccab3a395c4fdc39e89a9d66a2 +size 218240 diff --git a/Content/Scripts/InventorySystem/MerchantBP.uasset b/Content/Scripts/InventorySystem/MerchantBP.uasset index 9cd6724d..8123430b 100644 --- a/Content/Scripts/InventorySystem/MerchantBP.uasset +++ b/Content/Scripts/InventorySystem/MerchantBP.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f1f72a622ba209b38f7094964dc7e67da1faff32292b13f53a3b5e205f5f1fc -size 335190 +oid sha256:cf47dcca93b093d6fe6530742cd22fada6524d9dcd073360828d410b7917f4ee +size 336970 diff --git a/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset b/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset index f7943dea..39885491 100644 --- a/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset +++ b/Content/Scripts/InventorySystem/Seed/BP_SeedCarousel.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60bd5caafa271411d9e172d32d42f671861bd413306881208f6bb9378af7dc8d -size 1043487 +oid sha256:adf2e2f9853a47c9d62d0f1be5e12e55c9c8dcd4ff158c37d831bd3efb36dc36 +size 1043396 diff --git a/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset b/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset index 5fb07972..fc4d5774 100644 --- a/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset +++ b/Content/ThirdPersonBP/Blueprints/BP_ThirdPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:194705a9f6c34e3d343b7ceefd9b1bc1da5d0315950cad00efc36c9cac288d2b -size 1400575 +oid sha256:3452b7042072a0b5f6da798550cfa33a77f6febabce9f3f87af6d51a4bfdc528 +size 1313759 diff --git a/Content/UI/InteractionUI/WBP_Eleri_Interaction.uasset b/Content/UI/InteractionUI/WBP_Eleri_Interaction.uasset new file mode 100644 index 00000000..fbce39d4 --- /dev/null +++ b/Content/UI/InteractionUI/WBP_Eleri_Interaction.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38fda766fea70cf8664333f8c3d10535ed24a5239cc7d7fe5b156fed5f4c6b8b +size 53369 diff --git a/Content/UI/MainUI.uasset b/Content/UI/MainUI.uasset index 87f4fa13..eebc36e4 100644 --- a/Content/UI/MainUI.uasset +++ b/Content/UI/MainUI.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67e793d5d532194cf04f10fcacac5d6bb1c15a5de6984af6a23544e640180c09 -size 627430 +oid sha256:b15994b484fdf508395371ff106b93956b975c2a609bb1d1c9b6716a5400e5c5 +size 622457 diff --git a/Content/UI/OptionsScreen.uasset b/Content/UI/OptionsScreen.uasset index 9a2a3d92..9b1a7d0a 100644 --- a/Content/UI/OptionsScreen.uasset +++ b/Content/UI/OptionsScreen.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20710aafcd75b8206710683053fa6f2e295bfb609018a1d72256dc696fa67988 -size 1261731 +oid sha256:f971c08b43551d539296ab4b31d7fc7e0c6723f3bca9712b74135ff9b7690175 +size 1279561 diff --git a/Content/UI/Styles/Text/DT_EleriTextStyles.uasset b/Content/UI/Styles/Text/DT_EleriTextStyles.uasset index 0ed4623e..f73dcff9 100644 --- a/Content/UI/Styles/Text/DT_EleriTextStyles.uasset +++ b/Content/UI/Styles/Text/DT_EleriTextStyles.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fc34f77e21544a173df15a49c64752d454ee85a9635c130c0d1eede66ba71723 +oid sha256:ec7e77a2f490a1fe0c9f460d0569464f07323d8eb14aee510437cbd570e1f9f1 size 4550 diff --git a/Content/Vegetation/Actors/BP_InstancedVegetationActor.uasset b/Content/Vegetation/Actors/BP_InstancedVegetationActor.uasset index 1aa0fb48..ba33c6af 100644 --- a/Content/Vegetation/Actors/BP_InstancedVegetationActor.uasset +++ b/Content/Vegetation/Actors/BP_InstancedVegetationActor.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89376efbd442f441a5a8f3c195d37d65fdd0f330c90e3baf344d75610ed8acdd -size 26426 +oid sha256:02d4461e2305f37eb4224ecc0b81e32263a4dab33f129a521b485a9082e35432 +size 27060 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/FJ/XSLZCCYW6P0XOLD701W2BA.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/FJ/XSLZCCYW6P0XOLD701W2BA.uasset index 3d1c0336..ab2f0613 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/FJ/XSLZCCYW6P0XOLD701W2BA.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/6/FJ/XSLZCCYW6P0XOLD701W2BA.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43186b1bd5038fcc0029de032060fe9590ae5642d5f1c27f7578a61285555923 -size 21252 +oid sha256:61f15dd9b28f050931b809a48e893a1c062c3e2ff434a14f57602b8f1f3044a8 +size 20705 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/1H/8FRC7HVBN4R8ZU9AAM1N1W.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/1H/8FRC7HVBN4R8ZU9AAM1N1W.uasset index a07ed1f6..ea7da5b7 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/1H/8FRC7HVBN4R8ZU9AAM1N1W.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/7/1H/8FRC7HVBN4R8ZU9AAM1N1W.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:737eeffcb35ca26076bca0d8a190e6357ae56af9987e46fd1a189fd25cede7e4 -size 16861 +oid sha256:ec95205290e865901216d989a63be53965ce207c7a6888995f4daa2a2c6c75c8 +size 17133 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/6L/NS8525RF0ZA2JKPOKX5PM1.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/6L/NS8525RF0ZA2JKPOKX5PM1.uasset index 011ed164..b6234fbc 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/6L/NS8525RF0ZA2JKPOKX5PM1.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/A/6L/NS8525RF0ZA2JKPOKX5PM1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8814f4c5d82ead81a5cae1b5a6fb2784a95ba4cdedfb1b8aa7dcc82625fcb0df -size 6845 +oid sha256:e3d5a543fea24c049316af1def50a8a39bfde5f5e1b1196c1547dd631b1a5616 +size 7583 diff --git a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset index 36cf9d2e..565cf386 100644 --- a/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset +++ b/Content/__ExternalActors__/Maps/Persistent_GameWorld/D/FR/P3GK359CLJH40T3VDWEQ1D.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d0f9fa04a7fef769d07f485dfc934bdca4ea61e9faffbaa8d42d70f13953841 -size 31077 +oid sha256:256cdac515c0f540caf6cac2d07a4f78678b60e56c84f6d7b0843e3f28004b48 +size 31704 diff --git a/Source/ProjectEleri/Components/MoveActorsComponent.cpp b/Source/ProjectEleri/Components/MoveActorsComponent.cpp index 8d50f067..6c6b96b1 100644 --- a/Source/ProjectEleri/Components/MoveActorsComponent.cpp +++ b/Source/ProjectEleri/Components/MoveActorsComponent.cpp @@ -7,7 +7,6 @@ #include "Kismet/KismetMathLibrary.h" #include "Kismet/GameplayStatics.h" #include "EnhancedInputSubsystems.h" -#include "Interface/ZoneInteractableInterface.h" #include "../GameObjects/RemovableStaticMeshActor.h" #include "../Public/EleriPlayerController.h" #include "../Public/MyCharacter.h" diff --git a/Source/ProjectEleri/GameObjects/BaseCharacter.cpp b/Source/ProjectEleri/GameObjects/BaseCharacter.cpp index 3fdce43c..f8211348 100644 --- a/Source/ProjectEleri/GameObjects/BaseCharacter.cpp +++ b/Source/ProjectEleri/GameObjects/BaseCharacter.cpp @@ -35,6 +35,9 @@ ABaseCharacter::ABaseCharacter() PrimaryActorTick.bCanEverTick = true; StateTreeComponent = CreateDefaultSubobject("State Tree Component"); StateTreeComponent->SetStartLogicAutomatically(false); + + WidgetComponent = CreateDefaultSubobject(TEXT("WidgetComponent")); + WidgetComponent->SetupAttachment(RootComponent); } // Called when the game starts or when spawned @@ -113,9 +116,19 @@ void ABaseCharacter::ChangeFaceAnimation(EDialogueEmotion Emotion) CurrentFaceFrameIndex = 0; } -void ABaseCharacter::Interact_Implementation() +void ABaseCharacter::ToggleInteractableUI_Implementation(bool bActive) { - IZoneInteractableInterface::Interact_Implementation(); + if (bActive && !IInteractableActorInterface::Execute_IsInteractable(this)) + { + return; + } + + IInteractableActorInterface::ToggleInteractableUI_Implementation(bActive); + + if (WidgetComponent) + { + WidgetComponent->ToggleWidget(bActive); + } } // Called every frame diff --git a/Source/ProjectEleri/GameObjects/BaseCharacter.h b/Source/ProjectEleri/GameObjects/BaseCharacter.h index 46f11fef..675b6bd8 100644 --- a/Source/ProjectEleri/GameObjects/BaseCharacter.h +++ b/Source/ProjectEleri/GameObjects/BaseCharacter.h @@ -3,8 +3,9 @@ #pragma once #include "CoreMinimal.h" +#include "Components/InteractionWidgetComponent.h" #include "GameFramework/Pawn.h" -#include "ProjectEleri/Public/Interface/ZoneInteractableInterface.h" +#include "Interface/InteractableActorInterface.h" #include "ProjectEleri/Public/Interface/NpcSpeakerDataInterface.h" #include "ProjectEleri/Data/FaceExpressionDataAsset.h" #include "StateTreeModule/Public/StateTree.h" @@ -18,7 +19,7 @@ class UCapsuleComponent; class USkeletalMeshComponent; UCLASS(BlueprintType) -class PROJECTELERI_API ABaseCharacter : public APawn, public IZoneInteractableInterface, public INpcSpeakerDataInterface +class PROJECTELERI_API ABaseCharacter : public APawn, public IInteractableActorInterface, public INpcSpeakerDataInterface { GENERATED_BODY() @@ -39,8 +40,7 @@ public: UFUNCTION(BlueprintCallable, BlueprintPure) UCapsuleComponent* GetCapsuleComponent() { return Capsule; } - virtual FText GetInteractionText_Implementation() override { return FText::FromString("Talk"); } - virtual void Interact_Implementation() override; + virtual void ToggleInteractableUI_Implementation(bool bActive) override; protected: UPROPERTY(Category = Character, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) @@ -62,6 +62,9 @@ protected: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Movement") UExtendedPawnMovement* MovementComponent; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly) + UInteractionWidgetComponent* WidgetComponent; // Called when the game starts or when spawned virtual void BeginPlay() override; diff --git a/Source/ProjectEleri/GameObjects/EleriBaseActor.cpp b/Source/ProjectEleri/GameObjects/EleriBaseActor.cpp index 7de99076..271db82c 100644 --- a/Source/ProjectEleri/GameObjects/EleriBaseActor.cpp +++ b/Source/ProjectEleri/GameObjects/EleriBaseActor.cpp @@ -10,6 +10,12 @@ AEleriBaseActor::AEleriBaseActor() // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; PersistentId = FGuid::NewGuid(); + + RootComponent = CreateDefaultSubobject(TEXT("RootComponent")); + SetRootComponent(RootComponent); + + WidgetComponent = CreateDefaultSubobject(TEXT("WidgetComponent")); + WidgetComponent->SetupAttachment(RootComponent); } // Called when the game starts or when spawned @@ -69,6 +75,21 @@ void AEleriBaseActor::RequestLoad(FActorSaveData& Data) ISaveableObjectInterface::Execute_OnDataLoaded(this); } +void AEleriBaseActor::ToggleInteractableUI_Implementation(bool bActive) +{ + if (bActive && !IInteractableActorInterface::Execute_IsInteractable(this)) + { + return; + } + + IInteractableActorInterface::ToggleInteractableUI_Implementation(bActive); + + if (WidgetComponent) + { + WidgetComponent->ToggleWidget(bActive); + } +} + void AEleriBaseActor::OnDataLoaded_Implementation() {} diff --git a/Source/ProjectEleri/GameObjects/EleriBaseActor.h b/Source/ProjectEleri/GameObjects/EleriBaseActor.h index 375fee9b..2dc2f686 100644 --- a/Source/ProjectEleri/GameObjects/EleriBaseActor.h +++ b/Source/ProjectEleri/GameObjects/EleriBaseActor.h @@ -7,6 +7,8 @@ #include "ProjectEleri/Public/Interface/SaveableObjectInterface.h" #include "ProjectEleri/Public/Interface/ActorPersistentIdInterface.h" #include "GameplayTagContainer.h" +#include "Components/InteractionWidgetComponent.h" +#include "Interface/InteractableActorInterface.h" #include "EleriBaseActor.generated.h" @@ -14,7 +16,8 @@ UCLASS() class PROJECTELERI_API AEleriBaseActor : public AActor, public ISaveableObjectInterface, - public IActorPersistentIdInterface + public IActorPersistentIdInterface, + public IInteractableActorInterface { GENERATED_BODY() @@ -29,6 +32,8 @@ public: virtual void RequestLoad(FActorSaveData &Data) override; virtual FGuid GetPersistentId() const override { return PersistentId; } + + virtual void ToggleInteractableUI_Implementation(bool bActive) override; protected: virtual void OnDataLoaded_Implementation() override; @@ -43,6 +48,9 @@ protected: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "ID") FGuid PersistentId; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly) + UInteractionWidgetComponent* WidgetComponent; UFUNCTION(BlueprintCallable, Category = "Saveable Tag Data", meta = (GameplayTagFilter = "SaveGameTags")) void SetSaveableTagData(FGameplayTag Tag, int32 NewValue); diff --git a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp index 22f8a982..268cba1a 100644 --- a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp +++ b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.cpp @@ -13,6 +13,12 @@ ARemovableStaticMeshActor::ARemovableStaticMeshActor() { PrimaryActorTick.bCanEverTick = true; + + RootComponent = CreateDefaultSubobject(TEXT("RootComponent")); + SetRootComponent(RootComponent); + + WidgetComponent = CreateDefaultSubobject(TEXT("WidgetComponent")); + WidgetComponent->SetupAttachment(RootComponent); } void ARemovableStaticMeshActor::BeginPlay() @@ -29,6 +35,26 @@ void ARemovableStaticMeshActor::BeginPlay() CurrentMemorizedTransform = GetActorTransform(); } +void ARemovableStaticMeshActor::ToggleInteractableUI_Implementation(bool bActive) +{ + if (bActive && !IInteractableActorInterface::Execute_IsInteractable(this)) + { + return; + } + + IInteractableActorInterface::ToggleInteractableUI_Implementation(bActive); + + if (WidgetComponent) + { + WidgetComponent->ToggleWidget(bActive); + } +} + +bool ARemovableStaticMeshActor::IsInteractable_Implementation() const +{ + return true; +} + void ARemovableStaticMeshActor::BindToItem(UInventoryComponent* InInventory, FItemStack InItemStack) { InventoryRef = InInventory; diff --git a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h index 4f150bb5..d238901f 100644 --- a/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h +++ b/Source/ProjectEleri/GameObjects/RemovableStaticMeshActor.h @@ -5,6 +5,8 @@ #include "CoreMinimal.h" #include "Engine/StaticMeshActor.h" #include "../Public/InventoryComponent.h" +#include "Components/InteractionWidgetComponent.h" +#include "Interface/InteractableActorInterface.h" #include "RemovableStaticMeshActor.generated.h" @@ -17,7 +19,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnPickup); * */ UCLASS(BlueprintType) -class PROJECTELERI_API ARemovableStaticMeshActor : public AStaticMeshActor +class PROJECTELERI_API ARemovableStaticMeshActor : public AStaticMeshActor, public IInteractableActorInterface { GENERATED_BODY() @@ -26,6 +28,9 @@ public: ARemovableStaticMeshActor(); virtual void BeginPlay() override; + + virtual void ToggleInteractableUI_Implementation(bool bActive) override; + virtual bool IsInteractable_Implementation() const override; UPROPERTY() bool bFromInventory; @@ -84,6 +89,9 @@ public: FOnPlaced OnPlaced; UPROPERTY(BlueprintAssignable, EditAnywhere, BLueprintReadWrite) FOnPickup OnPickup; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly) + UInteractionWidgetComponent* WidgetComponent; //Used when placing stuff from inventory so we can return it to inventory //if we cancel placing item @@ -106,4 +114,6 @@ public: UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) void K2_TogglePlaceableEffects(bool bIsPlaceable); + + }; diff --git a/Source/ProjectEleri/Private/EleriPlayerController.cpp b/Source/ProjectEleri/Private/EleriPlayerController.cpp index 013cb910..71cb26f1 100644 --- a/Source/ProjectEleri/Private/EleriPlayerController.cpp +++ b/Source/ProjectEleri/Private/EleriPlayerController.cpp @@ -2,15 +2,12 @@ #include "EleriPlayerController.h" #include "EnhancedInputComponent.h" -#include "Kismet/KismetMathLibrary.h" #include "GameFramework/Character.h" #include "EnhancedInputSubsystems.h" #include "GameFramework/CharacterMovementComponent.h" -#include "Interface/ZoneInteractableInterface.h" #include "ProjectEleri/System/MainBlueprintFunctionLibrary.h" #include "ProjectEleri/Components/MoveActorsComponent.h" #include "../GameObjects/RemovableStaticMeshActor.h" -#include "Components/WidgetComponent.h" #include "Kismet/GameplayStatics.h" #include "BookOfAlchemyManager.h" #include "AlchemyManager.h" @@ -76,7 +73,7 @@ void AEleriPlayerController::Tick(float DeltaTime) { for (int32 i = 0; i < ActorsOverlappingWith.Num(); i++) { - if (!ActorsOverlappingWith[i]->Implements() || !IZoneInteractableInterface::Execute_IsInteractable(ActorsOverlappingWith[i])) + if (!ActorsOverlappingWith[i]->Implements() || !IInteractableActorInterface::Execute_IsInteractable(ActorsOverlappingWith[i])) { RemoveInteractableObject(ActorsOverlappingWith[i]); i--; @@ -680,16 +677,15 @@ void AEleriPlayerController::OnToggleGridAction(const FInputActionValue &Value) void AEleriPlayerController::AddInteractableObject(UObject *ObjectToAdd) { - if (IsValid(ObjectToAdd) && ObjectToAdd->Implements() && IZoneInteractableInterface::Execute_IsInteractable(ObjectToAdd)) + if (IsValid(ObjectToAdd) && ObjectToAdd->Implements() && IInteractableActorInterface::Execute_IsInteractable(ObjectToAdd)) { - FText InteractableText = IZoneInteractableInterface::Execute_GetInteractionText(ObjectToAdd); + FText InteractableText = IInteractableActorInterface::Execute_GetInteractionText(ObjectToAdd); if (UMainGameWidget *MainWidget = UMainBlueprintFunctionLibrary::GetMainGameWidget(this)) { if (UInteractionWidget *InteractionWidget = MainWidget->GetInteractionWidget()) { InteractionWidget->PushInteractableObject(ObjectToAdd, InteractableText); } - IZoneInteractableInterface::Execute_PlayerEntered(ObjectToAdd, true); } ActorsOverlappingWith.Add(ObjectToAdd); } @@ -708,9 +704,9 @@ void AEleriPlayerController::RemoveInteractableObject(UObject *ObjectToAdd) if (IsPaused()) return; - if (IsValid(ObjectToAdd) && ObjectToAdd->Implements()) + if (IsValid(ObjectToAdd) && ObjectToAdd->Implements()) { - FText InteractableText = IZoneInteractableInterface::Execute_GetInteractionText(ObjectToAdd); + FText InteractableText = IInteractableActorInterface::Execute_GetInteractionText(ObjectToAdd); if (UMainGameWidget *MainWidget = UMainBlueprintFunctionLibrary::GetMainGameWidget(this)) { if (UInteractionWidget *InteractionWidget = MainWidget->GetInteractionWidget()) @@ -718,7 +714,6 @@ void AEleriPlayerController::RemoveInteractableObject(UObject *ObjectToAdd) InteractionWidget->PopInteractableObject(ObjectToAdd); } } - IZoneInteractableInterface::Execute_PlayerEntered(ObjectToAdd, false); } ActorsOverlappingWith.Remove(ObjectToAdd); if (SelectedInteractable == ObjectToAdd) @@ -756,14 +751,7 @@ void AEleriPlayerController::ToggleInteractionMenu(bool bActive) void AEleriPlayerController::OnInteractionMenuSelectAction(const FInputActionValue &Value) { - if (SelectedInteractable) - { - IZoneInteractableInterface::Execute_Interact(SelectedInteractable); - if (!IZoneInteractableInterface::Execute_KeepInteractionMenuOpenWhenSelected(SelectedInteractable)) - { - ToggleInteractionMenu(false); - } - } + } void AEleriPlayerController::OnInteractionMenuUpAction(const FInputActionValue &Value) diff --git a/Source/ProjectEleri/Private/Interface/ZoneInteractableInterface.cpp b/Source/ProjectEleri/Private/Interface/ZoneInteractableInterface.cpp deleted file mode 100644 index 0c4214b3..00000000 --- a/Source/ProjectEleri/Private/Interface/ZoneInteractableInterface.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "Interface/ZoneInteractableInterface.h" - -// Add default functionality here for any IZoneInteractableIntereface functions that are not pure virtual. - diff --git a/Source/ProjectEleri/Private/MyCharacter.cpp b/Source/ProjectEleri/Private/MyCharacter.cpp index c02f781e..1e034085 100644 --- a/Source/ProjectEleri/Private/MyCharacter.cpp +++ b/Source/ProjectEleri/Private/MyCharacter.cpp @@ -4,20 +4,14 @@ #include "MyCharacter.h" #include "EleriPlayerController.h" #include "Kismet/GameplayStatics.h" -#include "Interface/ZoneInteractableInterface.h" #include "EleriSaveGame.h" #include "EleriGameInstance.h" #include "PaperFlipbookComponent.h" #include "Kismet/KismetMathLibrary.h" #include "../GameObjects/WaterBall.h" #include "ProjectEleri/GameObjects/BookActor.h" -#include "TimeOfDayManager.h" -#include "Components/PostProcessComponent.h" #include "GameFramework/PawnMovementComponent.h" #include "ProjectEleri/GameObjects/BenchmarkActor.h" -#include "ProjectEleri/System/MainBlueprintFunctionLibrary.h" -#include "ProjectEleri/UI/InteractionWidget.h" -#include "ProjectEleri/GameObjects/BookActor.h" #include "ProjectEleri/GameObjects/BroomActor.h" #include "Components/CapsuleComponent.h" #include "Components/StatForgeComponent.h" diff --git a/Source/ProjectEleri/Private/TimeOfDayManager.cpp b/Source/ProjectEleri/Private/TimeOfDayManager.cpp index 7b014817..5bf8a2e4 100644 --- a/Source/ProjectEleri/Private/TimeOfDayManager.cpp +++ b/Source/ProjectEleri/Private/TimeOfDayManager.cpp @@ -56,6 +56,9 @@ ATimeOfDayManager::ATimeOfDayManager() WeatherPresetDistributionMap.GetKeys(Keys); CurrentWeatherPreset = Keys[0]; } + + WidgetComponent = CreateDefaultSubobject(TEXT("WidgetComponent")); + WidgetComponent->SetupAttachment(RootComponent); } // Called when the game starts or when spawned @@ -566,6 +569,21 @@ void ATimeOfDayManager::LoadSaveData(const FTimeOfDaySaveData &saveData) QueuedWeatherPreset = Cast(saveData.CurrentWeatherSoftObjectPath.TryLoad()); } +void ATimeOfDayManager::ToggleInteractableUI_Implementation(bool bActive) +{ + if (bActive && !IInteractableActorInterface::Execute_IsInteractable(this)) + { + return; + } + + IInteractableActorInterface::ToggleInteractableUI_Implementation(bActive); + + if (WidgetComponent) + { + WidgetComponent->ToggleWidget(bActive); + } +} + int32 ATimeOfDayManager::GetWeatherDistributionMaxValue() const { float Value = 0; diff --git a/Source/ProjectEleri/Public/Interface/ZoneInteractableInterface.h b/Source/ProjectEleri/Public/Interface/ZoneInteractableInterface.h deleted file mode 100644 index df54ea54..00000000 --- a/Source/ProjectEleri/Public/Interface/ZoneInteractableInterface.h +++ /dev/null @@ -1,44 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "UObject/Interface.h" -#include "ZoneInteractableInterface.generated.h" - -// This class does not need to be modified. -UINTERFACE(MinimalAPI, Blueprintable) -class UZoneInteractableInterface : public UInterface -{ - GENERATED_BODY() -}; - -/** - * - */ -class PROJECTELERI_API IZoneInteractableInterface -{ - GENERATED_BODY() - - // Add interface functions to this class. This is the class that will be inherited to implement this interface. -public: - - /**A version of React To Trigger that can be implemented in C++ or Blueprint. */ - UFUNCTION(BlueprintCallable, BlueprintNativeEvent) - void Interact(); - - UFUNCTION(BlueprintNativeEvent, BlueprintCallable) - bool IsInteractable(); - virtual bool IsInteractable_Implementation() { return true; } - - UFUNCTION(BlueprintNativeEvent, BlueprintCallable) - bool KeepInteractionMenuOpenWhenSelected(); - virtual bool KeepInteractionMenuOpenWhenSelected_Implementation() { return false; } - - UFUNCTION(BlueprintNativeEvent, BlueprintCallable) - FText GetInteractionText(); - virtual FText GetInteractionText_Implementation() { return FText(); } - - UFUNCTION(BlueprintNativeEvent, BlueprintCallable) - void PlayerEntered(bool bIsPlayerInside); -}; diff --git a/Source/ProjectEleri/Public/TimeOfDayManager.h b/Source/ProjectEleri/Public/TimeOfDayManager.h index 92dc8701..e6404653 100644 --- a/Source/ProjectEleri/Public/TimeOfDayManager.h +++ b/Source/ProjectEleri/Public/TimeOfDayManager.h @@ -15,8 +15,10 @@ #include "UObject/NameTypes.h" #include "../Items/ItemDatabase.h" #include "GameplayTagContainer.h" +#include "Components/InteractionWidgetComponent.h" #include "Components/VolumetricCloudComponent.h" #include "Engine/ExponentialHeightFog.h" +#include "Interface/InteractableActorInterface.h" #include "ProjectEleri/GameEventSystem/GameEventDataAsset.h" #include "ProjectEleri/System/TimeOfDayStruct.h" @@ -103,7 +105,7 @@ public: }; UCLASS() -class PROJECTELERI_API ATimeOfDayManager : public AActor +class PROJECTELERI_API ATimeOfDayManager : public AActor, public IInteractableActorInterface { GENERATED_BODY() @@ -322,6 +324,8 @@ public: FTimeOfDaySaveData GetSaveData() const; void LoadSaveData(const FTimeOfDaySaveData &saveData); + + virtual void ToggleInteractableUI_Implementation(bool bActive) override; protected: // Called when the game starts or when spawned @@ -359,6 +363,9 @@ protected: TMap WeatherPresetDistributionMap; UPROPERTY() UMaterialInstanceDynamic* VolumetricCloudMaterialInstance; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly) + UInteractionWidgetComponent* WidgetComponent; public: UPROPERTY(EditAnywhere, BlueprintReadWrite)