diff --git a/EndlessVendetta/.gitignore b/EndlessVendetta/.gitignore index 24acec7a..54c50950 100644 --- a/EndlessVendetta/.gitignore +++ b/EndlessVendetta/.gitignore @@ -16,6 +16,7 @@ ### UnrealEngine ### # Visual Studio 2015 user specific files .vs/ +.idea/ # Compiled Object files *.slo diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml index 18b2937a..3a72e6ff 100644 --- a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml +++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/workspace.xml @@ -1,5 +1,64 @@ + + Intermediate/ProjectFiles/EndlessVendetta.vcxproj + + + + + + + + + + + + + + + + + + + + + + + + @@ -63,4 +122,22 @@ + + + + + 1706900339638 + + + + + + + \ No newline at end of file diff --git a/EndlessVendetta/Config/DefaultEngine.ini b/EndlessVendetta/Config/DefaultEngine.ini index 43b2de20..fb4f7741 100644 --- a/EndlessVendetta/Config/DefaultEngine.ini +++ b/EndlessVendetta/Config/DefaultEngine.ini @@ -60,7 +60,7 @@ +CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") [/Script/EngineSettings.GameMapsSettings] -EditorStartupMap=/Game/Levels/ControlTutorialLevel.ControlTutorialLevel +EditorStartupMap=/Game/Levels/MainMenuLevel.MainMenuLevel LocalMapOptions= TransitionMap=None bUseSplitscreen=True @@ -69,7 +69,7 @@ ThreePlayerSplitscreenLayout=FavorTop FourPlayerSplitscreenLayout=Grid bOffsetPlayerGamepadIds=False GameInstanceClass=/Script/EndlessVendetta.EVGameInstance -GameDefaultMap=/Game/Levels/ControlTutorialLevel.ControlTutorialLevel +GameDefaultMap=/Game/Levels/MainMenuLevel.MainMenuLevel ServerDefaultMap=/Engine/Maps/Entry.Entry GlobalDefaultGameMode=/Script/EndlessVendetta.EndlessVendettaGameMode GlobalDefaultServerGameMode=None diff --git a/EndlessVendetta/Config/DefaultGame.ini b/EndlessVendetta/Config/DefaultGame.ini index 224486bc..e26801cb 100644 --- a/EndlessVendetta/Config/DefaultGame.ini +++ b/EndlessVendetta/Config/DefaultGame.ini @@ -101,6 +101,9 @@ bSkipMovies=False +IniSectionDenylist=StorageServers +MapsToCook=(FilePath="/Game/Levels/ControlTutorialLevel") +MapsToCook=(FilePath="/Game/Levels/Apartment_hit") ++MapsToCook=(FilePath="/Game/Levels/MainMenuLevel") ++MapsToCook=(FilePath="/Game/Levels/TempOpenWorld") ++MapsToCook=(FilePath="/Game/Levels/EnemyAITest") +DirectoriesToAlwaysCook=(Path="/Interchange/Functions") +DirectoriesToAlwaysCook=(Path="/Interchange/gltf") +DirectoriesToAlwaysCook=(Path="/Interchange/Materials") diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_2StripTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_2StripTable.uasset new file mode 100644 index 00000000..176ce991 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_2StripTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4173bbb99ed7551dd216c3f159de978ce4cf589e9fcb2c8360c9c864e491a1e2 +size 9180 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_3StripTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_3StripTable.uasset new file mode 100644 index 00000000..ab137c37 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_3StripTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0735b1c0d8b616c487ca423a3ac78005a9ab0549458274dcb00cdb58ef791f67 +size 14162 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_AOHighlightTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_AOHighlightTable.uasset new file mode 100644 index 00000000..bae4c86a --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_AOHighlightTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07afabc0c84f119ec624a65efe1c354cec47dfd57c06e52d1a99600ea0bd4102 +size 9485 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_BaseRGBTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_BaseRGBTable.uasset new file mode 100644 index 00000000..39a03216 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_BaseRGBTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2c6a6e9fd7c972c49af2cbb3a535a6d5a586f9249dd0380ee08e47d954cf0ef +size 8893 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_BurgasTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_BurgasTable.uasset new file mode 100644 index 00000000..98c6490a --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_BurgasTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17409768100554ae606126642715fafcd40008e9073309b9658606b8c9a921a1 +size 13067 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_CandlelightTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_CandlelightTable.uasset new file mode 100644 index 00000000..7b32f026 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_CandlelightTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:565882fee42c87d2522f442755bcf730b65ac895a2a6fe85231fcf469f7a1be7 +size 14656 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_ChromaTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_ChromaTable.uasset new file mode 100644 index 00000000..47fc514d --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_ChromaTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c65bf851097f549e455d869621fb15228ac167ce1948cbdd10d878fdc0be0f2 +size 9908 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_CrispWarmTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_CrispWarmTable.uasset new file mode 100644 index 00000000..ef8291b0 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_CrispWarmTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65b3d16892a30b506e6397cbd08f751075fa26f2cef0386754794c704d6004d4 +size 9134 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_CrispWinterTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_CrispWinterTable.uasset new file mode 100644 index 00000000..ba7a8eee --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_CrispWinterTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c78d9c4576065e0f4d1082e45c7387ac9c9b99675d6ad67882f0691d99e176c +size 11465 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_DesertTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_DesertTable.uasset new file mode 100644 index 00000000..2fe5fec0 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_DesertTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c6c664d72b3aa3502171708e319d25c30bd36c20e14da3ee8bf87f256d55deb +size 15084 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_DrasticBWTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_DrasticBWTable.uasset new file mode 100644 index 00000000..29284f41 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_DrasticBWTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0da8cb86d2bddc788d8dcd42e33b615400b8989603d4711c452b540e1c2be63b +size 9492 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/BP_CombatWorkbench.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_DropBluesTable.uasset similarity index 82% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/BP_CombatWorkbench.uasset rename to EndlessVendetta/Content/Assets/LUT/LUT_DropBluesTable.uasset index 2e888b3f..e737d4c4 100644 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/BP_CombatWorkbench.uasset +++ b/EndlessVendetta/Content/Assets/LUT/LUT_DropBluesTable.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ca32d8fb46fc46a26048f0055e978a2581adb2139ee494329a1041da61bf936 -size 2760 +oid sha256:fa92879a5b4fbb062ec4777b5b1d0f50f4988cf02034d6d494a6b744aa0f525f +size 15581 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_FallColorsTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_FallColorsTable.uasset new file mode 100644 index 00000000..4d3dc5a7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_FallColorsTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f813113e8fa1c1ef10530bc742f280653d1c877b8d5dac7ee96a54282a76c2 +size 15660 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_FilmStockTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_FilmStockTable.uasset new file mode 100644 index 00000000..fc3b24b8 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_FilmStockTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b66582f10221fc79c460d612fc326d418e6affaaf8fda36b03a1588ffc5056d +size 12483 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_FoggyNightTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_FoggyNightTable.uasset new file mode 100644 index 00000000..2b2189c8 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_FoggyNightTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b03c429f27b5e79e3021e562ba4e55318055f5d034cdfb331d6db34f59644b4 +size 15879 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_HaskovoTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_HaskovoTable.uasset new file mode 100644 index 00000000..b85fbd8f --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_HaskovoTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:652ef0e07b8213ee9fecdd8ad85a9d2bda340fd169dd42cc67f2270682cb99f2 +size 14811 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_HorrorBlueTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_HorrorBlueTable.uasset new file mode 100644 index 00000000..46e1e02b --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_HorrorBlueTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a63d7b0c5e5d6e46a52244f407f8bff185c7fffbf7447311e74f795de53c66cc +size 16412 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_KidnPlayTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_KidnPlayTable.uasset new file mode 100644 index 00000000..1d4c2346 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_KidnPlayTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bad4df2999ffb9caeaf825dfa02fc9aee58179391fb435d4a7ffd2c236e40086 +size 13926 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_LateSunsetTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_LateSunsetTable.uasset new file mode 100644 index 00000000..0f3ddacf --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_LateSunsetTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54766a3085ff5c78ab4f9b04496754da5447855178552fca36a9b574a79963e7 +size 16283 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_LightBluePurpleTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_LightBluePurpleTable.uasset new file mode 100644 index 00000000..a15b9715 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_LightBluePurpleTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbfb871358407167907587c976b2d8efe96ca9fd9b96ea67b45e3e4b493c96f4 +size 10643 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_MoonlightTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_MoonlightTable.uasset new file mode 100644 index 00000000..16db7815 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_MoonlightTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aa72bbcc759937bbea99758c413989b8ff862037761ad09b6df1a9abed5af1b +size 13215 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_NightFromDayTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_NightFromDayTable.uasset new file mode 100644 index 00000000..bf3104e3 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_NightFromDayTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b33b4a44ad7372bb7b565b425d5542b21ef9dbc714649ec56f651b60519e4778 +size 14215 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_PernikTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_PernikTable.uasset new file mode 100644 index 00000000..3b333b62 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_PernikTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73fa25427bc3796940853ee62b100920f943d479c3e1f3aa00c74c8171209090 +size 14850 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_PurplePastelWhiteTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_PurplePastelWhiteTable.uasset new file mode 100644 index 00000000..cfcc04cc --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_PurplePastelWhiteTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:628e3efd2d06aef31860fe0ea32c7d75cc66e4bc1d4530f475b01ebfa6e6c5e6 +size 11397 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_RedFromLumaTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_RedFromLumaTable.uasset new file mode 100644 index 00000000..846196be --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_RedFromLumaTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5be8bad14ab764eb7abc91b0b9860d41f3d4eef857d999f49eff8bc82ff18043 +size 12109 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_SofiaTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_SofiaTable.uasset new file mode 100644 index 00000000..9db1d4d8 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_SofiaTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a726d94245644d8ab49a5c16f5902794d8016dc213a452dc3c213d859c7ab85 +size 16202 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_SoftWarmingTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_SoftWarmingTable.uasset new file mode 100644 index 00000000..f65c1fa9 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_SoftWarmingTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfda167f02167d6c040257d664a7f125141b2bbf58ae5930e0d4043eb2f71326 +size 11188 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_TealOrangeContrastTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_TealOrangeContrastTable.uasset new file mode 100644 index 00000000..61c2ab49 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_TealOrangeContrastTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6324cfbb7f430b41f76d0385a49890c755efe478057b087015b6150f144100da +size 16834 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_TensionGreenTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_TensionGreenTable.uasset new file mode 100644 index 00000000..71c93a9c --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_TensionGreenTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6071f12f4d6fb1414d745d38f995e2233e619aa78cb3d0bd2da88221f49c9263 +size 16024 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_VarnaTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_VarnaTable.uasset new file mode 100644 index 00000000..c2afeca4 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_VarnaTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ee99af2e336cc4f696fbb6688e16f139af1dee83cbf4e494bdb230fde27ea52 +size 15970 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_YambolTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_YambolTable.uasset new file mode 100644 index 00000000..075161fc --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_YambolTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b785f1095e59d36cbbce4d3595cbc6a829a34bb3a0a660d99577cd468f358a31 +size 14918 diff --git a/EndlessVendetta/Content/Assets/LUT/LUT_YellowPurpleTable.uasset b/EndlessVendetta/Content/Assets/LUT/LUT_YellowPurpleTable.uasset new file mode 100644 index 00000000..14f3734b --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/LUT_YellowPurpleTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80d5360b4126213544370c07021aeba763e400ab763bfcc4855dae5baafc73aa +size 10712 diff --git a/EndlessVendetta/Content/Assets/LUT/sepia.uasset b/EndlessVendetta/Content/Assets/LUT/sepia.uasset new file mode 100644 index 00000000..99187bb3 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/sepia.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca68bf61c65aa35525002f80e1a4c1048d2fe55cd6484432e8fa6ba0bbfdd666 +size 16207 diff --git a/EndlessVendetta/Content/Assets/LUT/vibrant_test_table_01.uasset b/EndlessVendetta/Content/Assets/LUT/vibrant_test_table_01.uasset new file mode 100644 index 00000000..9cbdf640 --- /dev/null +++ b/EndlessVendetta/Content/Assets/LUT/vibrant_test_table_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b509b8e32220f37086fc76546ecba546f09927146123fc1af8ac01feb9c03407 +size 11916 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Mirror_Texture/Bathroom_Mirror.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Mirror_Texture/Bathroom_Mirror.uasset index 45f4213e..5cc809ca 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Mirror_Texture/Bathroom_Mirror.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Mirror_Texture/Bathroom_Mirror.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5fde4502ac704c1003547612e52045ad9ab2ce8260887bed47177fdc153c5591 -size 14299 +oid sha256:62687c37f04c037ad32b9481f15a16e613e6c6502c80ef30b9a3376231ad79ce +size 13605 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Shower_Texture/Shower_Texture.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Shower_Texture/Shower_Texture.uasset index e8a2d440..2c3b2e75 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Shower_Texture/Shower_Texture.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Shower_Texture/Shower_Texture.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:171ed4cf5cae49ad8bf59cef8a50b62d9c4db3b264b46ef498e973a7238780ee -size 14989 +oid sha256:4920f862265ee3c70a598e3be0ed75eadb3d88b2a80d6731b89deac3d797daf3 +size 13286 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Sink_Texture/Sink_Texture.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Sink_Texture/Sink_Texture.uasset index d44ff32b..10a84894 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Sink_Texture/Sink_Texture.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Sink_Texture/Sink_Texture.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6eb0b468952a82ef3628f1977f7b964f48ee2ade332d868b1fa73d8a2859cfb2 -size 12870 +oid sha256:b3c9304d8380492c63e70883b63058547a1eddb60ac915aed5d1594080bdde9a +size 11596 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Tap_Texture/Tap_Texture.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Tap_Texture/Tap_Texture.uasset index a35a036e..1b93689a 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Tap_Texture/Tap_Texture.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Tap_Texture/Tap_Texture.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3486d36bcd9731f28772837b88aa13537f760069151de0a81a14bc7887e84172 -size 13649 +oid sha256:cd87004f019fd38cb334537044ccd45c7b6eb0e2ea5bc8356e6e97ab62f5b72b +size 11776 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Seat/Toilet_Seat_Texture.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Seat/Toilet_Seat_Texture.uasset index 89eadda8..ce55f90c 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Seat/Toilet_Seat_Texture.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Seat/Toilet_Seat_Texture.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ff7a998ec5e4d4e3bea2c37b49bf59c2f61733636fa2dc5f6db4ebad07078bb -size 11719 +oid sha256:b718e533698c60193b881f907f002f087117096d533a25be337bf57e78717cae +size 10734 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Toilet/Toilet_Texture.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Toilet/Toilet_Texture.uasset index 4cce17a0..0d0f3923 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Toilet/Toilet_Texture.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Bathroom/Toilet_Texture/Toilet/Toilet_Texture.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f51082b53052fb8a8c83571952b09ef7f34ec5a3856349a2592a88ddbc21f342 -size 12511 +oid sha256:660e8cd4308630bd639f8664d0fa0b026118290934063b726da5753fb208fcd7 +size 10859 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset new file mode 100644 index 00000000..593155ab --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/DoorFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c578908cc14d1ff8cddf68cf6ec41cc630569fbf6f810f654fbffb7109a5f8d4 +size 29796 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Counter.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Counter.uasset index f0c332b7..ae863cf3 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Counter.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Counter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24f63c60295d078953eaa822c375436fb978800dd7576ce406fd9cdb8bfc1904 -size 12503 +oid sha256:0d37cd60ca7f37073bd5676a903e00ea9be1e9a3ec235d0dd87c52f16d6ed947 +size 11981 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Cupboard44.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Cupboard44.uasset index dba51d8b..47849e0f 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Cupboard44.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Cupboard44.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d75d7f58eaaa3139542ea023298952336d47b7d289c4a1d4df7a277a9b0d59b -size 12108 +oid sha256:d0c8f3349459ef980b66717f95f2314ce70d049f6bc8ac27d0dd80014809bdbf +size 12324 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Draws.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Draws.uasset index 71af3be2..c59ae09e 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Draws.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Kitchen/Materials/Draws.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c10aa4e0e28b965a473b12257c3d05cabe38f4d8e0c0b57e833cadbac436b1b9 -size 11244 +oid sha256:fa0e2c8a32d5b8ba91cfbd6f5e8eabd29f1dbfbb2cdd2bf2464c14ac3f11d57f +size 10704 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/ceiling_light_02/ceiling_light_02_orange.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/ceiling_light_02/ceiling_light_02_orange.uasset index ec8aeb24..d8a868ba 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/ceiling_light_02/ceiling_light_02_orange.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/ceiling_light_02/ceiling_light_02_orange.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5b9d488ee5e362f100a4924afe17b6dbb3039e3112b5bd482df71f3302052f0 -size 13002 +oid sha256:ad0d46be2d0a6e0a33f342769e4ec4b270b26307cec2fa3e6f1b1e421b29b807 +size 11463 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/lamp_01/lamp_01_blue.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/lamp_01/lamp_01_blue.uasset index 9517aa66..bcf7de61 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/lamp_01/lamp_01_blue.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/lamp_01/lamp_01_blue.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3db264a7b130a06244e3a49dca892177315d1b2a81865ce235fa5f5e194e696e -size 15634 +oid sha256:a8c7c3c965a97de09fc1e38bc86545de193d026a316066c3b0a40429780f7250 +size 15146 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_01/wall_light_01_orange.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_01/wall_light_01_orange.uasset index bef62466..3ac6035c 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_01/wall_light_01_orange.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_01/wall_light_01_orange.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e40d5c789007ac42573bfd211db39cddabaaca3e8841f96f16616f3ee54eb34 -size 13822 +oid sha256:ddb0291ab683762522ed26fdd342eeb9546e821a873a173cf7dfa67287c9a28d +size 12630 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_02/wall_light_02_orange.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_02/wall_light_02_orange.uasset index 7475f490..f2d804cc 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_02/wall_light_02_orange.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Lights/lights_textures/wall_light_02/wall_light_02_orange.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97c052964b723e73a17f033341dc0c3538d7f04d149f24532a7f56b13643989f -size 12568 +oid sha256:385035a96e4caa66b9df50ae72013e854997ba7743a3ef368cb62fc1d527bbb7 +size 11029 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug01.uasset new file mode 100644 index 00000000..c49c2b09 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c598ad12df877a5e0476cff03b380258dca3e05017bf415edea3e63e76c53288 +size 18752 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug02.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug02.uasset new file mode 100644 index 00000000..c16e0826 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c3667128a04932f62aa1235b4a6b4587224d7f818e7aae0e1259e46ad6d0322 +size 15908 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug03.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug03.uasset new file mode 100644 index 00000000..f730dc20 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug03.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:997d095144c3bb1b18e73755df8adcadc2318bca7aa59ecc9b00c2e236e665ab +size 16422 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset new file mode 100644 index 00000000..88003fd9 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Rug_graph_basecolor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94d72647b4d8f51e3d79b84e34289b8ca60694ec303e32b30d0ca2568c68cbdd +size 23195321 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset index f8f91a92..83cbe85d 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_BaseColor.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:016706ad2a87a09dcbeeed286891a73c8384b62021abc5fb4b1f36e3f0f37399 -size 617426 +oid sha256:9dd1272c8b07fa191733f94b8f6b39419156fd4bd32af5cd614b0c2e1b78467b +size 642872 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset index db454649..1ce61f4b 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_Normal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5636d8962414a67bb9535bdc4570d93b7cdb398ecba3a90c9fea261c66c4ca0 -size 1090483 +oid sha256:503302dc11a3434a82972bfca6bbfd4c9bc97234b3f28d3552a99db5d71e650a +size 1085295 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset index 4038185b..b8052cfa 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Bed01/bed1_low_Bed_OcclusionRoughnessMetallic.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1168a7a90dd257178ce0e4fb92bedb23e817dc43d862e461110fc26a2eb49143 -size 307929 +oid sha256:f17969000533ad280a1c4aa7202751941f0c018db003ea52b8f103557a4fd2e4 +size 288426 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/B_BookShelf.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/B_BookShelf.uasset index 2cc5f1a0..615d8ab5 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/B_BookShelf.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/B_BookShelf.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e1833b6faf97d493964d91ac9d83cb9a628c539bfb6288868dbf9e1e1480fc3 -size 13096 +oid sha256:c5eda860cb2b53faaf322497dcd9e65a911f698d30d9f9a777c3daaadb0c993b +size 13748 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/M_Books.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/M_Books.uasset index 19d15e5e..b53603df 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/M_Books.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf/M_Books.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a4740cda303fc78a754cc9bc1688037377ef97bd09ca793c87cf245609f2b9c -size 13837 +oid sha256:729fff11a9906d2b8407fc8df287c1164ff6626a2a2e4dc35d94c7d80bcb9d3c +size 11767 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf_Edge/M_BooksShelfEdge.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf_Edge/M_BooksShelfEdge.uasset index 1868b332..6f0d7630 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf_Edge/M_BooksShelfEdge.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/BookShelf_Edge/M_BooksShelfEdge.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ded6c421983414e4b87a3bab28a0959b1e63d7c36df756c1714d0c2c74325aa3 -size 12395 +oid sha256:6dfb537b7977472a78afe5de0f15e36faccae68d4f564d83754f8aa90afa171b +size 11305 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/CLOCK01/m_clock01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/CLOCK01/m_clock01.uasset index f5ab0f00..1111dd28 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/CLOCK01/m_clock01.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/CLOCK01/m_clock01.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e09599451b476ee8164439a6e2e07b2e79fd140c310ffa657c953cbd3615cbc -size 11502 +oid sha256:a9f9a723f4512a3dc01378d123309c06ed718ece66c58b485baac6139ef93340 +size 11130 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset new file mode 100644 index 00000000..6473e0dc --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:247843d01f8be1b0d647a49372a1fe01276f823764d0b9e285e29fae5ac07579 +size 481691 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset new file mode 100644 index 00000000..daa40dc7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b9deae910bd3154a8545c334d13e5359044ce9d5b9a0547970b25d6d0396fdf +size 1607262 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..74770c2a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/Frame_low_DoorFrame_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:844c55e59d814ded847c070eb8e5dae5477db61c60cb4a62a1f17ca24b91ab3b +size 316640 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset new file mode 100644 index 00000000..2de71c2e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/DoorFrame/M_DoorFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28016347c8277940b8c6958005aeb78207be2c7b42439dea51af1c7ba39a5142 +size 12229 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Chamber.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Chamber.uasset index defab6e5..b081756c 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Chamber.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Chamber.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:952227d32fa9cd1cf9ad103e1aa826124d3013074de2130df956c5a04e69d3a1 -size 14735 +oid sha256:124fad8f3b528b138d3e370d360c4591e33fa5ba8fe8c2e94839c063b0a553a0 +size 11939 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Gameboy_MugCup01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Gameboy_MugCup01.uasset index 0b818c1f..9e4a7761 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Gameboy_MugCup01.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Gameboy_MugCup01.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7df692f1e7f3f41df8bc472e7034604638d060fa552802d72fc4605a58ce173 -size 19693 +oid sha256:38ef1631f51679b26cbfe6ff6c78cb5d56ed9ff84726bee868244b00587fc881 +size 16706 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Table02.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Table02.uasset index 51fbe2ad..5478440a 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Table02.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_Table02.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:919288c600089c5b553d59bcf950517558962fa119ef25bb4ec3b6495ffd7bc3 -size 13819 +oid sha256:d49a957dd18b98c65ddcb96e860b31e3b797b3a87145998802bf90f802d74b86 +size 12688 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece.uasset index f474a884..1e2ece53 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5b0cc314c81adfea85698a6b90eb31c70b223d2beb445012e8683832003a496 -size 15283 +oid sha256:d6d8f8168f26e4e10f2dae01ee2ca1bd62a71e46dd823df587956b7b57627365 +size 13992 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/M_wallpiece02.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/M_wallpiece02.uasset new file mode 100644 index 00000000..6f9e3bdb --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/M_wallpiece02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:187f33689a3d833e4a0c5c5eda6c01ade8201a06fdab3aadc5e275cdbc1425fc +size 18029 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset new file mode 100644 index 00000000..92afd9a7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cba085b6aacbf0a721780bd87ddbe7da3f54c796feef62da0b61f3ab6b982d2 +size 1741132 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset new file mode 100644 index 00000000..f4c2009b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbc63f4b055caceb16eb6e3c31fa688fce07fbdd96b31b4f8a096a2882813fa7 +size 1830742 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..0917c433 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallPiece02/Wall01_WallPiece02_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7efd9884c740716555c130a9911856dde53a2915f9f1f18f49bcb5ab2796b48 +size 270472 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallTest.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallTest.uasset new file mode 100644 index 00000000..d73ea792 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/M_WallTest.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee8d7439843338eea8a5785699ac35b3bc702c5614745edfb1b1e1785bca30a5 +size 11463 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset new file mode 100644 index 00000000..aa2b0c72 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/M_RugTrim01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4d4ed190fd5c11eef8d97f53c0b9a1bec4f3e394285d1929a8735da42671ff0 +size 18401 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_BaseColor.uasset new file mode 100644 index 00000000..6c98fc02 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f88f51c8b4f45b84184569bc2fb688876c71bf9bc2b4f1224369cbb96fbaf96c +size 2075587 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset new file mode 100644 index 00000000..daab4707 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a640efef6ebae2faefc853184f891226237d0f84844505827be87150c2373a1 +size 3341437 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..99028e10 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Rug01/Panel_Rug01_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12bfea5270f1a724a6b54428de415eea226104579f1bbfbc536a612a63a53e8c +size 531484 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/TRadio/M_Radio.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/TRadio/M_Radio.uasset index 28afc60c..a63be2ec 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/TRadio/M_Radio.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/TRadio/M_Radio.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b722ffae2a72f01f84108391913695b42df54aae98c4fc8c1661d335c8fa656 -size 13128 +oid sha256:a05612fef4304e2b141603b5488fb0fa5a8d26556a8ddfa35dbc6319f382a2ed +size 12057 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset new file mode 100644 index 00000000..7279972c --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/M_Wardrobe.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e4ffb500a0b827f13cdaba798e64971dc56bbdcdadef92a48c0965b780051fa +size 12974 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset new file mode 100644 index 00000000..9048b98b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0e6e63429af968cdf97ebe1095f2e18e582af470eb2587d97add2e10335e130 +size 1043460 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset new file mode 100644 index 00000000..ffd1b378 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3c9410dc53302d4b675ff55e503c3122d28c420e22060b16d86b4044bee8f22 +size 956753 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..d6092aa5 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Wardrobe/Wardrobe_low_Wardrobe_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fc6777d6326d08fb20610e30b6a29d5b727eb54fd701f8d177714e28ab694c7 +size 635629 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler.uasset new file mode 100644 index 00000000..8e9ebd2f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:654110b3f9e035f5bb609e094fc8b10d640e006277feb69c613cfd95087ada48 +size 14251 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..fe1454a1 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b7c59d4afaa6ba9b0976c2e6356e305366c2efc342f0d56c7c97024ccba83b7 +size 3767275 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Emissive.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Emissive.uasset new file mode 100644 index 00000000..995c4851 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Emissive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43b80c0e78584e591ea8843aa6e2df8edf71869b52e1e0421f0360b1e01afe37 +size 138730 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..fcf4ad64 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:654d8e3c9ac7086299f3e8811c3098e675e2fdd2bd3d091f02e5c35ff929f730 +size 1923526 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..e8795e6f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/boiler/boiler_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae800e08efa72490a4afd21673b63c0282016adf79ed7ed5a78e45304af335c3 +size 4754523 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cabinets/cabinet_01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cabinets/cabinet_01.uasset index 84adc553..fc78439e 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cabinets/cabinet_01.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cabinets/cabinet_01.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9337175440c79d144cab5aa716e46a73753c56fcf50662348b0d134dc428b9c2 -size 16330 +oid sha256:92432113540ea30b778f2e0e2f5d34c9f12ea38bb90a2cbdc00f092e41e24b06 +size 16190 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/chair_01/chair.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/chair_01/chair.uasset index e3839fb9..bee60842 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/chair_01/chair.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/chair_01/chair.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:807bdfacec387b49ae2057b87bead8e1df81ef6563b0c9568a8f81a9d73ca2ce -size 14179 +oid sha256:61af9635ba5030371b93336536543d947c12eb3c235e556c31afc7bca3d98958 +size 13883 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cofffee_table/coffee_table_bl.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cofffee_table/coffee_table_bl.uasset index dadef7fc..b977d3cc 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cofffee_table/coffee_table_bl.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/cofffee_table/coffee_table_bl.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e876e73343bd57250499efa633a2fd09a928f59a2ac67b8a2b89acd87e764433 -size 29879 +oid sha256:bb5395f3fe1d96037f54bd524be2db2db3679fcaf8e3db2cc2cb66d64988f741 +size 24459 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_ambientocclusion.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_ambientocclusion.uasset new file mode 100644 index 00000000..429a325a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_ambientocclusion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07f1673cfc27c368d1670b885687cc09e8197706e6a379e7b1f7f515c1d55a1f +size 1027414 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_basecolor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_basecolor.uasset new file mode 100644 index 00000000..84615427 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_basecolor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d016aa40e73b6562c55ae676841c8fa872f727fee7c167c145ffdf11ffdc2e69 +size 2441599 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_opacity.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_opacity.uasset new file mode 100644 index 00000000..799d5a59 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_dust_decal_opacity.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51c1db29e79a12f35d37c2cfc197b8e8b2de9f0b8909cf1ccc784ffd40a9cc8c +size 969107 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_ambientocclusion.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_ambientocclusion.uasset new file mode 100644 index 00000000..b8585790 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_ambientocclusion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28a17308f3bf5e8792cfd82e2f3904b1ec2a6a0e6a2e05a05698dff3986a6278 +size 1011354 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_basecolor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_basecolor.uasset new file mode 100644 index 00000000..baac4038 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_basecolor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d5dc826320b527d8325c22619aa8ff2f7dee1e609d55fba4817b72bc6bff0ff +size 2250395 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_opacity.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_opacity.uasset new file mode 100644 index 00000000..1c2774c7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/EV_grunge_decal_opacity.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fb47a2cb0ecf8e69e516c144c9a068416042fec4bf277bc1b7854002d1e0f05 +size 1011147 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/decal_dust.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/decal_dust.uasset new file mode 100644 index 00000000..7dbddb0b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/decal_dust.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dafec8003a798553ae1d30bd27b3d3b871422133de679a9552f76f6265f39f58 +size 11655 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/decal_grunge.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/decal_grunge.uasset new file mode 100644 index 00000000..796a42c8 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/decals/decal_grunge.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1356d3d2f43eed9d491e2c6f2197e04d53e7895493eb540f0356f2ab7e5d71f8 +size 9333 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/fireplace/fireplace.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/fireplace/fireplace.uasset index 703db0ba..bfde63ae 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/fireplace/fireplace.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/fireplace/fireplace.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55a43b825eae14cb745c317a9417396f9a243b81218331ef2e2ebd8e81d0098f -size 15954 +oid sha256:b94ab1e2633ea6c0e06a14565816dc7427d5fbcb863f10d1d6b77412e26882fb +size 16260 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironing_board.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironing_board.uasset new file mode 100644 index 00000000..6faefc4d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironing_board.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b0e3178e71e3469480c413f429014d00393da20cf70e478f445ae27b5c57217 +size 15969 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..7e76d0df --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a48a317c04e4c6d4e77e05d8471f29eb2fb0ee199d7c007ab001b4fcdcff754e +size 857423 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..27081fe7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2513aa75002329ec59d9a06092de3190915db72e87742a4698dde35291803e69 +size 962924 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..447a6505 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/ironing_board/ironingboard_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:663c1dae8ef9a7195aa6712b05a65299d0273a15a7cd9b190c031e20b066d3b8 +size 1294633 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket.uasset new file mode 100644 index 00000000..ccd1f3ad --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d738cb6bdba34fb53097094d0c61789c94efd0307534c010a9deb03bdf144585 +size 13465 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_BaseColor.uasset new file mode 100644 index 00000000..1dcf7480 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5dd08ea8e9ca73c031ae0505442f461d8df1da952ab50d6865c889fc9527dce +size 1147505 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_Normal.uasset new file mode 100644 index 00000000..3b717570 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:641f2bc733f40b74d21284bd24edb5ad6321a494ebb5f6b58b056411f0a6bd77 +size 1216299 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..3b8d9f68 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_basket_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00980642a2810606d2ced631960e9349fb639f6d30bb1e44c418e8903de22c61 +size 414692 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails.uasset new file mode 100644 index 00000000..329e0682 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e6cc89409f5912b85bf16b161ec51442b413b521bec6f928fcd4d942e0cf29c +size 11912 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_BaseColor.uasset new file mode 100644 index 00000000..7f7e5de0 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5c9b81c0c4c20d7bad195633dacc312ae2da85bfdf222d0f1dd4c2b249a33ef +size 503220 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_Normal.uasset new file mode 100644 index 00000000..7c950997 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bbd96250d6e923da0868173a0e2e8e3f62078fcb4b1188509ab8bdd6598a45b +size 542511 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..41df9933 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_rails_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e765485e41b662ccb510d1e99a8ebb0b974dc485f26051a0251dfac5e4a6c140 +size 510869 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table.uasset new file mode 100644 index 00000000..cec4ab52 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23349db6d151dfd7641a231c21c73d01a9c327c88b1d387d3f35d0218177d506 +size 13900 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_BaseColor.uasset new file mode 100644 index 00000000..bd13df62 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58211274320f6064d34d955823e2d40dc3ea7fa5bd7df29221aa74a086d2202f +size 913203 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_Normal.uasset new file mode 100644 index 00000000..6e7439db --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc590f166a85600189856e3219208adf480bb78a2139348564ae37f8aadbefe1 +size 107662 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..cc76bdf6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/laundry/laundry_table_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f9ade9d917ae6747204c1f8951e4e46cb7cc7198de340331ebad40f2f29429 +size 217686 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/CORP_SOCIALISM_poster_2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/CORP_SOCIALISM_poster_2.uasset new file mode 100644 index 00000000..86558c81 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/CORP_SOCIALISM_poster_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42c9a71191408a7378c18487d21d97a0a016cedbc1dae22d228cd09f8e65012a +size 18907 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset new file mode 100644 index 00000000..d534808b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0b2fcc8046d34fc876a7714109c2e598fdb8b0be7d35dfada954b2a906c430e +size 10872 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_CORP_SOCIALISM_poster_2_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_CORP_SOCIALISM_poster_2_BaseColor.uasset new file mode 100644 index 00000000..475db767 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_CORP_SOCIALISM_poster_2_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6581f8889e815c5313369abd693f27df5b897a983a97dae6d8abd405e574861 +size 1829716 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster1_BaseColor.uasset new file mode 100644 index 00000000..203ebd51 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d49bcc75b362399dce7110c11637d50fc69bd76a9116f0d87e365eadf868b835 +size 1024498 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster2_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster2_BaseColor.uasset new file mode 100644 index 00000000..d880822a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster2_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ca1708ff419c1d3a23dc2679f227cbe66d50f7af5d2aea20400043064e7ad23 +size 1255793 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster3_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster3_BaseColor.uasset new file mode 100644 index 00000000..e1675560 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_KOMET_poster3_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeea66bbdec2ffa13fa3d66c0f707789434776a74149d087568491ecfd6ad132 +size 2405785 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHI10_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHI10_BaseColor.uasset new file mode 100644 index 00000000..d0c7453e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHI10_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63ceaf4ea439c2ed41fdc36fd731f339dae2770c7c3f7800d82139e713879c1c +size 684518 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP6_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP6_BaseColor.uasset new file mode 100644 index 00000000..fbc470c9 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP6_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35b25a4f4e5e7de446c7cbb807f6d2f5c08ccdf81c7656d51248b767e2a7caaa +size 742020 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP7_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP7_BaseColor.uasset new file mode 100644 index 00000000..79ba955c --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP7_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12528bf29236e1bbe23b4461b462e1d45fee92679547ff47f1aac383b36651d8 +size 696543 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP8_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP8_BaseColor.uasset new file mode 100644 index 00000000..b0b98d18 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP8_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3549e3c6529fe1fa4d7ef5788c08f2ddd6288df91242d2716f6950030fa1b3c6 +size 775789 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP9_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP9_BaseColor.uasset new file mode 100644 index 00000000..64f0932e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_SPACESHIP9_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbc5d30b238ab45da6455e15efcb00fbacf00104cc240477d672e3cd1f404147 +size 1209879 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster2_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster2_BaseColor.uasset new file mode 100644 index 00000000..5628b0fe --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster2_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6960e3be0602cb4f2402f2c968a7013e6aefe2046b96b0339fd9b1463549babf +size 660020 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster4_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster4_BaseColor.uasset new file mode 100644 index 00000000..0b3eb84d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster4_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65433a769bd8db7d46f21cb116830ce76f552878795e2f00306d39e7a137a6db +size 972832 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster_BaseColor.uasset new file mode 100644 index 00000000..1307875f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_TORIO_poster_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f85ed02c46920db994acf195227128c0fcc477124e0570848d1341d765b95d8 +size 782218 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster1_BaseColor.uasset new file mode 100644 index 00000000..0a9030ea --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86dcce3d342f517ae909de507b2c05c5973320a1ebb71f9952f919c96fd39142 +size 355738 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster2_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster2_BaseColor.uasset new file mode 100644 index 00000000..bf1c32b2 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster2_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49b63c2357aed34afea1c4907fbab7248a56d3be6efe3e0ce644b5f65c1ebaa6 +size 344956 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster3_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster3_BaseColor.uasset new file mode 100644 index 00000000..708ea245 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_VLAST_poster3_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2f1fd6118ab23963eb6ff32414e8366ffe2f18e7856ddb315b76ddf8bb7e552 +size 783831 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_BaseColor.uasset new file mode 100644 index 00000000..ba909d39 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:962f09adcf0c1aa1e8079d81a48ff7ab3304b08a42176aa9597a63339ad936e8 +size 3969349 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_Normal.uasset new file mode 100644 index 00000000..33952e6d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db7caf6e4b8b4645eaad1ad20a13b264508661a29eab4e18bbfb2d6b39c25e39 +size 56251 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..af0f20e6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_glass_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2d721c04eda225ced7d43febbea0f9a1fdf5707b19be0615e579078a4d09db9 +size 2183900 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal.uasset new file mode 100644 index 00000000..c886db6a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbcd3168bcf4817d5882ca9d3f9939a6b257401b9e596773bc17e79923f3c66c +size 12696 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_BaseColor.uasset new file mode 100644 index 00000000..2f5e5e8b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed4fe169d38d58f2c12803dffe9eefbb6a1f38a3575bfb801524a29f1ca0693b +size 1843961 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_Normal.uasset new file mode 100644 index 00000000..68d5de11 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:379677ee86b33f564c967091753ab36cc016e6711492e080c911ac7754a4916a +size 3104123 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..3bb8b092 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_metal_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ce3c8bb5233b10ac7427a9f3ac3a3451d2446137f381041dd8d473f5507d0d6 +size 3442594 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_Normal.uasset new file mode 100644 index 00000000..31ae574b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1435f2ab43364c3c8f7e9a30f0932706c9ff816794b8bdbeb3fa50bbc8a63ae7 +size 1912620 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..503a598a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/frame_poster_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9ebd6d9f38883bed33518fabab6b900bd919377f7b631eaa317e53c58cc3b92 +size 1429535 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster1.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster1.uasset new file mode 100644 index 00000000..af5782f8 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:880252cad78514366bf7932e60d4cebce3bcc5393a0eb135a8c931dd3cb297d4 +size 14306 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster2.uasset new file mode 100644 index 00000000..2b8b9d4a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2270c17e8e92fda32343505f80bd3e67657f5c4cbda75f0dd95098a8ea8a1890 +size 13497 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster3.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster3.uasset new file mode 100644 index 00000000..d014f4d3 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_KOMET_poster3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b50d5e98f3324998ea0fa03418941868bebd92c22b00d1db0c92537cfa6eef +size 16667 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset new file mode 100644 index 00000000..02380191 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP10.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b12932dc517f5415aeee17258b81be468bdfe609638cba89a3778a39275162d +size 13836 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset new file mode 100644 index 00000000..9a3e656a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52727988bfbb81122d315f0d01916e2ba494fb86d69694c660faaf92b071cff3 +size 13055 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset new file mode 100644 index 00000000..4f20d28f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85a0f86530805696f7e8dda40bb16fd2c50d360f68a24f93839e6f15d9a9d2c4 +size 12403 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset new file mode 100644 index 00000000..64de6e27 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bfc2ec418e58c749dba041328d4ecb4273e7f81cfd4d31c93f48de553eb9d89 +size 12903 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset new file mode 100644 index 00000000..323a02df --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_SPACESHIP9.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3454ac32000a1a68eec6a71d78f8426299339c3f48857e161ec210d5d4b4f0dd +size 13948 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster.uasset new file mode 100644 index 00000000..da28cf76 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7af3f7d2ec8f08760f6f712fb863e09ec856f085ea2e0ab675ccbc4070a93ec +size 15382 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster2.uasset new file mode 100644 index 00000000..bf2adc69 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0bf0dd26ac167b535ee566023c54461c68ca99c9e676a53ad0f5c60fef3c032 +size 16021 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster4.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster4.uasset new file mode 100644 index 00000000..6d40d30e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_TORIO_poster4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bb1d4d532f7acc15eb48f7f89dd8e6389bd6d6eab90d5a79695e5a4aac63721 +size 15218 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster1.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster1.uasset new file mode 100644 index 00000000..5211e053 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5ce74e3d45ee1f7487be3db0259484a74be92402d1767edd8110d58e8e0d29f +size 12365 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster2.uasset new file mode 100644 index 00000000..41635cd1 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a1d16d52e9385d16be2bd29c596c61bd28d509fab367784203184ab7895ce8d +size 11878 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster3.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster3.uasset new file mode 100644 index 00000000..015e3a7d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/poster_VLAST_poster3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2b24c2cb7ada4f2e5ff4e6c4caf7c3cd89ccd6b2fc6bb5985b41c780931938e +size 12885 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_laundry.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_laundry.uasset new file mode 100644 index 00000000..a53a68e5 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_laundry.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32bc6a16a1ceace189afe78cdc3f1e3b5355fa1764ea0bc0a5c72ca6ca737134 +size 14432 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..1808477a --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b462d582854e81408c989a328fd29d7678447ea23fa3fa5665ca5b349dcd6921 +size 398780 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..cf68873f --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1825c4cd12193d837ff477d02ee9fe4c68a81a64f49aeb8338139f28d13adb5 +size 167212 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..6ed11450 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/shelf_laundry/shelf_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acd5ec3e132fa0f3f5122f55326bd4c01d219a71991a48464d2b60b0d42ac584 +size 73230 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/side_table/side_table_ye.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/side_table/side_table_ye.uasset index 588e6f42..2d95b716 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/side_table/side_table_ye.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/side_table/side_table_ye.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bee15307e1072d93ec3623c3d717372276721c90e3276a53ebecb77de9a4ccb1 -size 24225 +oid sha256:53e551d2d2ae526c9ba4838dcde092ef19345452e6afa2dc364dd4a5a2ebf846 +size 19612 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/sofa_02/sofa_02.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/sofa_02/sofa_02.uasset index e3245bf4..70d58dd0 100644 --- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/sofa_02/sofa_02.uasset +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/sofa_02/sofa_02.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:59e5de77ae561c21c524ec182345337034b0be8f13303b037249dc97757398ba -size 18596 +oid sha256:dec2889284d75544fd452d2334869c9ba2155dbc3bcb52818cc6ed0c6a7e05d5 +size 19188 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer.uasset new file mode 100644 index 00000000..250ef5d6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5e01cd668ac0bbec6d460ca5f4779f4c2a5b9358c9d98dbb562220deb10e13d +size 14682 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..456be651 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a55c2066663d2d0c54206f95341f561407635ed9838bcbe375f867b3e55976c +size 962040 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset new file mode 100644 index 00000000..7b4526da --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Emissive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b3d3abc730ca16f51a7a441571c0d5bae687009e20dc6fec505031314faed3b +size 35869 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..71294bd7 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1b590770b8ff0493ba21819c746dfbcc6c371cc5f063724533dcc0e7599449e +size 965295 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..8fe1474e --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/dryer_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47abc04c38ce07a9cc1a4b441287f35900ee9cfc0e111724b2101a4de469f876 +size 174265 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer.uasset new file mode 100644 index 00000000..add2204c --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c47d548981b20a60e9df956fb0676956fa9a8cbdbcdb93ab5d825908ab3f9fd0 +size 14237 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_BaseColor.uasset new file mode 100644 index 00000000..ffc5cca6 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c271e51e4bb62ba49d6e3debfebcc9eac7488b06126bf750574385dd4a372eff +size 1050958 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Emissive.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Emissive.uasset new file mode 100644 index 00000000..93d575e4 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Emissive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99d9c6edb0ede55b687afca95bf7aab2e47e0006d521ab4b1ed03e7a17af3f1a +size 34536 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Normal.uasset new file mode 100644 index 00000000..eda8fb8b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:092eb1e2e86cbec6f7f1a56d89a611a7311eabf1588c7ed920889f0284b9e1c0 +size 965328 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..9e03c57d --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/washer_n_dryer/washer_low_standardSurface1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e143983eb11a8ec57e52b4597dd34a1ecd4077d212c927732dec92bb89fdd454 +size 174298 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset new file mode 100644 index 00000000..e39721b5 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Wardrobe_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:052e33f77ccd7185c8c5c0d2e0d5e9b23e4ac6050c1c66f496bd06b74863e399 +size 49396 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/boiler_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/boiler_low.uasset new file mode 100644 index 00000000..50f21ddb --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/boiler_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73bbf1ae727e6b76480fde6f60a72eb66177a99a0da8e79978f6212b47c1541b +size 177145 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/dryer_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/dryer_low.uasset new file mode 100644 index 00000000..2c10cfab --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/dryer_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28236549a9dfc3fec74c440e94c80919ccbeabd3f99c0367b45621d3b5663445 +size 113260 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/ironingboard_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/ironingboard_low.uasset new file mode 100644 index 00000000..d650fefc --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/ironingboard_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e76052ed1456fc8fb9cec40c6fbabf6645392e39356bb1e6d1a7801eac69dba0 +size 120476 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/laundry_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/laundry_low.uasset new file mode 100644 index 00000000..c868de54 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/laundry_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8af264a994db050885905860d98afda46dfb3bd026f5e9ad205e78208e731a4 +size 178531 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shelf_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shelf_low.uasset new file mode 100644 index 00000000..1b5e9fa4 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shelf_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eea02aecd9280cf26002dfb8e5acb63c65276c271a221a5bcdc47147b304388a +size 38141 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/becca_shovel.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/becca_shovel.uasset new file mode 100644 index 00000000..981d3b61 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/becca_shovel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3b1482d78352464495fb59c0faef86c05c213b62b5394497d458ef7190de859 +size 15312 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low.uasset new file mode 100644 index 00000000..ed648809 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03d1188e290a6af54d699dd1619b15b94e3a355d6e43a7bf4bf822292c51e691 +size 83613 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_BaseColor.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_BaseColor.uasset new file mode 100644 index 00000000..1e4e7cfd --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_BaseColor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:450c976b63250b8371529feeaaaa2319167aa21dd4db6f7d874d43ace68098f4 +size 680422 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_Normal.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_Normal.uasset new file mode 100644 index 00000000..c10a17ec --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_Normal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c710c226b864974a9e3851ca4c74f3e1c735677fd44bca152c4317065b7808bc +size 1574790 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_OcclusionRoughnessMetallic.uasset new file mode 100644 index 00000000..4d743f37 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/boiler_room/shh/real_shovel_low_lambert1_OcclusionRoughnessMetallic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c6e5375ed1a2f5fb0d94de2ae152879b0af4e840b37adf73d56de195f5a901e +size 925531 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/frame.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/frame.uasset new file mode 100644 index 00000000..765c200b --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/frame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6331a1642afb4c7bf37ffeb290b055acbc45fac82703acf899e7a6d245e56206 +size 27140 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/particle_effects/dust_small.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/particle_effects/dust_small.uasset new file mode 100644 index 00000000..0bb45044 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/particle_effects/dust_small.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad7dc75325b63ab858cf940fbf44b78a5ba93b3ed8238fbe19c8374f0d418759 +size 1017855 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/particle_effects/dust_test_01.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/particle_effects/dust_test_01.uasset new file mode 100644 index 00000000..31ebe594 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/particle_effects/dust_test_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:494168b1b8a1363e4b6bd8977f6a7cbdd267189926dcc49af103a1a7bc9701f6 +size 848853 diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/standardSurface2.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/standardSurface2.uasset new file mode 100644 index 00000000..ce102d54 --- /dev/null +++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/standardSurface2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18862c1d7476da86e4d63ffcc8eaeff682de37973f9953f574c8fd86a66900b8 +size 8215 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/BP_Elevator.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/BP_Elevator.uasset new file mode 100644 index 00000000..f6e4a525 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/BP_Elevator.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a28c44c09d3ee396d17502b08ad02f029c01b5f0927fa3ec295dc77621a87dbf +size 101367 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/CP_ElimTImothyHuntsmer.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CP_ElimTImothyHuntsmer.uasset new file mode 100644 index 00000000..13650e05 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CP_ElimTImothyHuntsmer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:402b1927aa8568280268ea72ed9a74d119cfb7f90b15aea33b51e2c77d676638 +size 98725 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.png b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.png new file mode 100644 index 00000000..798913fa --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6defdebce48d779d1cf9053de2a395b030f4034602ad2027a0b4a082b168cf3 +size 146340 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.uasset new file mode 100644 index 00000000..c61f6f3d --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a9afa23ae558b83cb702459c867762949f69aef33c0f2f8a56e183deef52932 +size 194758 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.png b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.png new file mode 100644 index 00000000..6b66e440 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40542ca5853424aac1fde9208cd0c1ed33cb85166ea4ec97ad8f0f3ca2e15346 +size 178614 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.uasset new file mode 100644 index 00000000..6f47784b --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b42f7563773dec9db697b0e2621bf9ce0f4f66c973f77ef24e3ffec0f633e14a +size 187754 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.png b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.png new file mode 100644 index 00000000..4dab7396 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7766c777eb648565ddd99693d5d8fb69dad34ce1d5489e69ce617939bbde6bf +size 19246 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.uasset new file mode 100644 index 00000000..ac6f5814 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/CinematicFrmaes/TimothyEliminatedSequence3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:161d5bd4b9ad1fd63d358155ca4612b125d7471c35dd39219bb0727fdf255cf0 +size 46015 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset new file mode 100644 index 00000000..30ecc43f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/MB_Apartment.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c24d0e32c594435e5c24f57444e1a99c1c7e491256f16bf15f60f1a627928600 +size 23786 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset new file mode 100644 index 00000000..69c1e83d --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/OWCP_Apartment.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f671cf047ef64679d0a306f563a38958bb751c78b68c615d63c539ec1cf84b92 +size 24453 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/TargetEliminatedSequence.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/TargetEliminatedSequence.uasset new file mode 100644 index 00000000..cc5c5772 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/TargetEliminatedSequence.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59b317daaff6320cb349f0431e5afd1dda081e7ccd94c85e1410a79acb309b5c +size 15321 diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/WBP_TimothyEliminated.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/WBP_TimothyEliminated.uasset new file mode 100644 index 00000000..7288e08b --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/WBP_TimothyEliminated.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cf418c167f49075338deb5047703b031ac61ed014b691277846e62a97bca97e +size 105471 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/BountyDirector.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/BountyDirector.uasset deleted file mode 100644 index 2bf1b703..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/BountyDirector.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb434bd86f5440300a97827c0043b25f804e7648ac189615a90fb0ba61978060 -size 22149 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.uasset deleted file mode 100644 index cbb194b6..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:168c4766d0d0686ae57a992b6b59db7ff0bf98e75547d37623910aa3d8c3649b -size 247653 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_PC_Display.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_PC_Display.uasset deleted file mode 100644 index 5e266442..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_PC_Display.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:acab50641ebfd8ec73bda00d7ce661f23e7773e4b88863de1982b34b52ebc114 -size 1026639 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset deleted file mode 100644 index 02a4c8b4..00000000 --- a/EndlessVendetta/Content/BountySystem/BountyDirector/WBP_StaticPCBG.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1fd8cfefdb9488ee066675e784fe4fe0ec31f689d82741b5cc8d5cfdbf0b64e4 -size 29059 diff --git a/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset b/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset new file mode 100644 index 00000000..069dbaf8 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4def4c35207288e74d661944c22141894dab91956f6460bf59c67373a2732c4 +size 26814 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset index 0be75321..efcbde67 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40bd75983c7b88eeb6da42edb3385099060d4fe752549c93b78022ef04178432 -size 23414 +oid sha256:2a9f8a712306da06c1d52eca49f38b700757456c7de80e65a955f34b4d30ae5d +size 21612 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset index 58851687..dcb8b4a8 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BP_FakePC.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:344ee11e0bef8351a5864ff640c6683b671b770618d874e7176520acf7ce28d4 -size 31613 +oid sha256:b71c8e03553562e61f578505293ae2d566f9cb7aa3e4807ca2e12238f684711e +size 31703 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ARTargets.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ARTargets.uasset index 2af01bdc..36650dc1 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ARTargets.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ARTargets.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2fa8f3a9544a1a634ef263e4fbb972cd89d36e288969fd8ab0433b58d3217ed -size 139421 +oid sha256:fb666c3b8ece874e8ed766a2044f48dcd90c90c92d91544dfd7c63e1cd5ed1be +size 137365 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_BeginPlay.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_BeginPlay.uasset index 1cbf22b6..cb98668e 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_BeginPlay.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_BeginPlay.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aeaebe8f4e55dd6acef6fafb7f68b37daa8de601f6e7c49b731afcbbd8359737 -size 23701 +oid sha256:3cc9d57fa13895cf12ef2b16c2fc357c7251c429519d0d4ced1973aa95cc2877 +size 63667 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_CrouchTutorial.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_CrouchTutorial.uasset index 6eb66527..841de14e 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_CrouchTutorial.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_CrouchTutorial.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5325ea111c8fb93bc1041dd9c0047c5e79a495b1d915692a93953e66f9928b7a -size 32432 +oid sha256:d4efb7c1ba1f73f8a28af056a62999ebe516fb9a5417d67e0b923527c73106fd +size 32191 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterApartment.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterApartment.uasset index 071fbb33..94fbb18f 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterApartment.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterApartment.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec504a6b730e8a130a953402743ccc6bc824ceb5a81c01faf75c4c09f3b4270e -size 24494 +oid sha256:a2462cc97e58b98796201e445f71d8ea88b65a47c49ee1df949d76eb37bc3892 +size 24165 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterSpaceShip.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterSpaceShip.uasset index 0dacf6c4..460acb58 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterSpaceShip.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_EnterSpaceShip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed613e63504155e721996dea2f3180730a6b814cd3711ec6c49d2ed3f923cdf0 -size 30859 +oid sha256:bbfb03b3eb01f922dc51f468218f2c718d79033b5e79d14852c5e158937c6a5f +size 30816 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_GoToParkourRoom.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_GoToParkourRoom.uasset index 725a2f8d..610ddb92 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_GoToParkourRoom.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_GoToParkourRoom.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6240a080976c8265bb3f30dabffaa60e39342e4ad21a09e0c6e502b26db1bd9f -size 79097 +oid sha256:7708afcb260864d1ea1c68dc91bc59b9112809ad42a1aed2319505dbc9b1eb4a +size 78283 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_JumpAcross.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_JumpAcross.uasset index 051f0897..2cc8f74d 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_JumpAcross.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_JumpAcross.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4253efb3878b3746237d94284c111cbf6b7194174abacc443977b6c5c05376f2 -size 32263 +oid sha256:36d12b8f4022742a62116cf0f9331774ae808a1c5823aad5c7deb88d6bc8e95a +size 32097 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_LandAtTheLZ.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_LandAtTheLZ.uasset index 08d2e523..6b6b9f3d 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_LandAtTheLZ.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_LandAtTheLZ.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5c29582635bba8a022617ea4ab24a67129c83637a62708033c73e202e660c73a -size 32480 +oid sha256:d750a1fb59aa72b306a51d728cb5f030fd6ba160bac08bc8d243f8333e34105c +size 32186 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickAGun.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickAGun.uasset index e57df75c..701a0043 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickAGun.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickAGun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2bc46d8f06b67bb59c378a7fae31b43fdc3687f2564a982805a339d6cf7eb336 -size 101877 +oid sha256:d9958f2c1c8bce46aee31989458737e7ce1b0b77c89ec4e77945addcbaa202e0 +size 98464 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpAR.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpAR.uasset index 974afaa5..abf4d3ec 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpAR.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpAR.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dd1d85ab782abd0e077f12beb4112d4451c7c64d574fdac5286e919c833fd3ad -size 112873 +oid sha256:e0d22b524ec3ba6a4f487a053cb0c30d797f7ad84a68eaf2a4e1520117b206cc +size 108582 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpPistol.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpPistol.uasset index 5f6bbddd..e2287dc0 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpPistol.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpPistol.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b671686018ce92a788dd6081c763154a924b59d545598e4664e12fb8b7349785 -size 112610 +oid sha256:225ebd8974c59ad97fd7432439ff1b1b38a823ecece0aa37cd90204ac9d7d5b9 +size 108723 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpShotgun.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpShotgun.uasset index e3a3f7b0..e7143b86 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpShotgun.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpShotgun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:517c23d9b6fe1d1c153e85a8fba4c1395718150de1043538126813b8528f2b29 -size 112571 +oid sha256:477cc99dfadffda504188c966a3ae4ea9b3c46a9854ef1f910ded5830d14a15d +size 107851 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpSniper.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpSniper.uasset index 59489c9b..59579cc7 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpSniper.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickUpSniper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b40a020b449acdbe5936f8f50ca0392383ed9052fbc816bd801bc8f7891a116 -size 112615 +oid sha256:804d570352178c6a3c98388a67c672b2dfff00831c4f4239c9626223609de69f +size 107716 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickupShipKeys.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickupShipKeys.uasset index 4fe69927..b07c55b8 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickupShipKeys.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PickupShipKeys.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8acdf6bef392e519d56700c01d14c8baf5846ef88312e094fdd9ad43ec928b1d -size 35556 +oid sha256:7382be6426cf944bdf11682efcefb49bf1da004ef678716def3a234cf4e9bd6e +size 35513 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PistolTargets.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PistolTargets.uasset index 1aa9c10a..a4b439fe 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PistolTargets.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_PistolTargets.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a5faea0ea4c17c09962caf04dbd847ae816e8393357f9d3aa3b98e58a536cd5 -size 138635 +oid sha256:bee00855718a89c9ffc159bd2a4e95ce9c5538d2570649e79ee3248c088fb631 +size 137451 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ShotgunTargets.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ShotgunTargets.uasset index 5310f2a3..be2dc5f1 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ShotgunTargets.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_ShotgunTargets.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9479dddf3a10d1d0d4c531c7a99b4b92c228fdba019413fae1dcc5b3ef3a611a -size 139218 +oid sha256:7d56f6fa8da408d61da9b2e6b354dd90e3e34d1ecfe05d2ccc5563314b12341d +size 137495 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SignPapers.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SignPapers.uasset index 17653bdc..eef16353 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SignPapers.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SignPapers.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39f596602119a2d87afe4264d72d7c128a466d15e70edd392be378dad3c07c60 -size 41769 +oid sha256:789a0ed560bafea9492c5f9e8b8f4081c7113620cec63e13623c8dbdb78fb33a +size 41619 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SniperTargets.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SniperTargets.uasset index 5b294b0d..1d92c881 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SniperTargets.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SniperTargets.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7b8f05d26ba5ca90f8715c4b4f46a602ffecfe30b16dff0162e2109245b2f32d -size 133796 +oid sha256:9d0d70db58a092d9889facf2c50a62628132278b35214692c0895166e169379b +size 131406 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SprintAcross.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SprintAcross.uasset index 3d7aa91c..c247b51f 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SprintAcross.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_SprintAcross.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:997d9aabef7ac6af506b7c5e0ae86773102ebe12751037356f93165a94a3b8aa -size 32411 +oid sha256:6499e8e62f26382870864eed81685520f4e8cc09dd44cb344dfbd73e71e1df3d +size 32170 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_VaultOver.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_VaultOver.uasset index f4893bc5..6f90c07b 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_VaultOver.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Checkpoints/CP_VaultOver.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0c8afdedd67bcb947122e95349c550600f599cd77cc28d582f422bf7f97e547f -size 32316 +oid sha256:63e22888a9cdb2f057306006eb4ad8d4276b68c438627d0fc7176f5058fd13a9 +size 32097 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Cutscenes/WBP_GameIntro.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Cutscenes/WBP_GameIntro.uasset new file mode 100644 index 00000000..c3ee7b1f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/Cutscenes/WBP_GameIntro.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d46e59922d5c6c22e421303807855e757a2de879cb81e482ab4e5329e3cf1b38 +size 93040 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset index 34fc9e16..11607e4e 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e8460e234c4bb8d7571c60a13281283510f8e388120cbe9527f2bd6a3f0b4a0 -size 26318 +oid sha256:14fd53a50ee9b233156dd4e8ff06c7a92800afbe4934bb067d7fe94c28d2cdda +size 26131 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset new file mode 100644 index 00000000..2ed776b6 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6f9debd6a0a8ef030b539f4e5a09d27bfd0c840cf7ae6ee680612eede4e454f +size 24209 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset index ac8bd1a3..7318d3fe 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bba29d903bd71cd8616cb0d7fac5d27b6f96532ca0f79a8ec153e2de884045c3 -size 22827 +oid sha256:4a8d81ddcd99e038c7e5e087ad382fb0c3d9fb5685316366ba152b07ff86f9f2 +size 22698 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset index 66bf5551..7a992806 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_GadgetWall.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:370cad49c42aa8322993053abfa0955b5aeb9c6035392c82a01d7bf12c7e6e3f -size 93912 +oid sha256:0f58fe8846e4dfd57ddd385a05c04f0dfbbdf342829567375efd75e1aad361fc +size 92072 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset index 4161fe1b..c6f71fc5 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:589125c0e5dd3e531117df471dc16a549d3ef6f72ddd7ceed1b6832b9f75371a -size 22912 +oid sha256:11a7c980f59dd567c5f59e3963537536bd3f2dd69d43067ac1f84bf228e48983 +size 22967 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset index e63ad1c3..4562a026 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:007c41e02175f5148b70e70402ff985c1d343b0ce85f5b5845f82351aeb6c8b6 -size 105113 +oid sha256:f9efcb82f57b17b3a9bc48530ba28334fbbad9c2220784a68275972634c5946d +size 102503 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset index ad3cfd25..58eaf6e3 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b24b7285a71d441bb8813d55db2341fe7e99b97fb25b33a84ca1e1c4a7bee0f -size 111590 +oid sha256:d69e435f092b24d3e1e71b2016f5b331f16c3a1c03c0bfb78c1a1e4c65c253c3 +size 108370 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset index 9905d716..625e8c0d 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Parkour/BP_SprintWall3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed77e01ce92927b44b11dc1b5515bdac53fe8c0669c02884850972d491a74381 -size 110924 +oid sha256:cc730be68f2ab24f99721d5a4a07dc3bbccd048b08eb244c5d8c0a3e2fa13543 +size 107933 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset index 2f3a6471..3cbc8128 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_NonShootableTarget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9da4b09d534f6e2890b12d0dbaacba8204da954d9c88f454395070346a61c993 -size 63628 +oid sha256:7d195c14ffcbabf84b66202c1a1e8c2575fc2a528fef5785084f76c99198e4ca +size 63790 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset index 4e299b9e..50e84f33 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/BP_Target.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e333e91573e1d36e39ad1e52eb0da38a11aefc23ed219427acfc9ffe3a3160f0 -size 99655 +oid sha256:6fc7c50381ecef344c02fce37526cf44de06d07d0bdc4e697ef4ec30e8f0e8f4 +size 98315 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset new file mode 100644 index 00000000..38743b98 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/M_Target.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13e2f623f9de1a599a75178637b756a7081b59fa03e5f3eced51cca1836a9423 +size 15545 diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset index f02b0cc5..d9f2948d 100644 --- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset +++ b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/Target/standardSurface1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d04d6fd6e9dc14ff6f65a890367b8165bf8e9db049cd1cd7339f2e999dd8833 -size 8260 +oid sha256:5964328a707ccd0d44172ddefc1dce4ae9159c3ec8b8146b3eda19d3097d3664 +size 1642 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/BountyDirector.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/BountyDirector.uasset new file mode 100644 index 00000000..64387264 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/BountyDirector.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f10c06825d0044b2d4be64e29bcddb66f8cbbff423ee7c4d3e8fdd0f1fbf00fc +size 22219 diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.jpg b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/BountyDirector/PC_Background.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.uasset new file mode 100644 index 00000000..41d69c17 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/PC_Background.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:658a104a86c28d2c666caa71db206093bd5345567a2e8ab5c11f5a177bd5d639 +size 247667 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset new file mode 100644 index 00000000..16bb4a81 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_PC_Display.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a478e964b2a600c91f592778049e1f6011049f76555225f9e7a6de26832daec +size 1024136 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset new file mode 100644 index 00000000..b2603fb1 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/BountyDirector/WBP_StaticPCBG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1b83c38a21515446e89c93b1c52d3544b78c66c709ac8b3a1f90f4fe15d5ee8 +size 28610 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset new file mode 100644 index 00000000..7307ab77 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f07405491766078ac280ee603e56e23e1c8fb67bab131368aa6c9e59dd3b2c +size 63586 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset new file mode 100644 index 00000000..315558fe --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d3dcedd3c3121a883ccd1f32979bb75c505962763d35fa2d56eeb45e22f48bc +size 36512 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset new file mode 100644 index 00000000..9f8bdb01 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84d921ae3f886b7982cd7cd3bd3220bbe0684ed02a4c29917e18feaffb921e79 +size 63625 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset new file mode 100644 index 00000000..2745e6b8 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2698a2ae2b1292052cf3305d6f13ff650feb019e96d6661707cc6f2d7e86a72 +size 63619 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset new file mode 100644 index 00000000..a92f29ca --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:022989dc5dfc1db3a356b48324761390e13d861fd55b863d5160047f8c5e06bd +size 63613 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset new file mode 100644 index 00000000..5589244d --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b8f2f01ccf500fbadb5a240f7dbef80656bbb0156cb9a37172fc318cff18549 +size 22879 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset new file mode 100644 index 00000000..45962650 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:774b37246cc07ee0e243da33343721048e0aaee4f895de2efb34cb68141b278b +size 22941 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset new file mode 100644 index 00000000..fea2a55c --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d69237482e5b359319cd3da38443f444029c3e17ce28ee6963c132cabc8af07 +size 22875 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset new file mode 100644 index 00000000..86e26ecc --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BP_WeaponTable.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52ce673af2c9929ca4172dc11a825fd775000834aeb60c0bf566d0ee09a96c84 +size 29694 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset new file mode 100644 index 00000000..4af01071 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2be049b806cbf608d0062def11a2c31313a7c8fa7db8a235361060540e67d810 +size 139491 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset new file mode 100644 index 00000000..4555e49e --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91bb76daaa241739e84cd8e5475db967b7a090ed397749872e0eed9e67751764 +size 81995 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset new file mode 100644 index 00000000..f894918b --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57e44aea22dc6a0679b5520909b3141f93767849078b00f61981ec60edc6e236 +size 58101 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset new file mode 100644 index 00000000..850985d1 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b752be467bc1f771cab1606e0a4359e941121c3de2cd6adab366ef9c5edf37c +size 57900 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset new file mode 100644 index 00000000..7f54a4f4 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:574b8e6737057c2a38c3d914e37fdad923d8afca96cd8ccf8eb409680ca4703c +size 38502 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset new file mode 100644 index 00000000..891c1a92 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd4f218e1269d71aa2fd5504af0d75233d5fc305cfe12463918af6092496b84 +size 60195 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset new file mode 100644 index 00000000..39f853ff --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13c689be17d437fa22bab321597eabff9577e164f610d6568d19a65ada975b44 +size 100380 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset new file mode 100644 index 00000000..3679d599 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30cc1f6d2125612681ab878e8aebfa4646193e40df54775d9844cf296b82c295 +size 112244 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset new file mode 100644 index 00000000..7c8c9649 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbcab427c8e1bfdd423b6991820145e68bd892fdbc202185ef34f4a561444f90 +size 147980 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset new file mode 100644 index 00000000..03a31093 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3503aa4e773a374ef6d4175005f3e6d1e5c4e40f673e326b52211824ff3f1449 +size 156494 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset new file mode 100644 index 00000000..c672543d --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc4c2421452de8606495aab0466b8e08f09084b3f1856a45c58dfcf02be6231d +size 42155 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset new file mode 100644 index 00000000..b1804e89 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14ee8aa50aaae227912d0a7f0c9f309bd04bc49400bff4dbe8d5ceb95605f740 +size 46647 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset new file mode 100644 index 00000000..5bcf5fc6 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce45fda78c7faea91cedcad4463e498859625f54277d615fca69536b0a3e0d89 +size 143141 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.png diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset new file mode 100644 index 00000000..1f5c659a --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1714e5970e23885870f1e4fe41eab9a3b034c0f26ead5346aa77bc9adeb3362 +size 39841 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset new file mode 100644 index 00000000..61428964 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6db8fa7f0cf34e90e33d18300222b4169b78ed334ecd145f440512360b5940b +size 38604 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset new file mode 100644 index 00000000..a167a1f2 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cd387fbda243514dd8bd7a03a29a782dd87ef9a6ac0d5c9ccbfcd5a33b14501 +size 46677 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset new file mode 100644 index 00000000..ee75aa60 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0afa8f007cd324eb2e52ea0bf0674ce9ba3ed337ae6459dd310dd304ae3d219 +size 144256 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset new file mode 100644 index 00000000..7bc9e5bf --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db5b3c6db40c0ead734f6febffc883903ae8898c7ea35950ba92d64d9477bf7d +size 213168 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset new file mode 100644 index 00000000..129eefbf --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c480a50c56791e4ae21ac2cdf3f9a362ec14665b376bbe595f310fa6ea30d7f +size 118680 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset new file mode 100644 index 00000000..6d65eb5f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0eab344456c153b25f15718f40309ab3c11ca722a5a0a689137a799041f87826 +size 86035 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset new file mode 100644 index 00000000..ca1680ce --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cc5988a0b0d09e9c4b718cdaed4e47842a960de3a817a6b9ba457f504d2fbbb +size 103436 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset new file mode 100644 index 00000000..af6e4d99 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab67366fd4d5c24e140afd8a1d857cbfa510602f42eab8be85cf8994e4246647 +size 105561 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset new file mode 100644 index 00000000..0935974a --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50269b6f53df831840a1b8edf1030aa0a8c78a970e0f610ed9759b6a34cc4b50 +size 13032 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset new file mode 100644 index 00000000..d9247c70 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fecb40716ffa8b66706ae8e99910f2794668107ff51e3274315f6e099981ae0 +size 105632 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset new file mode 100644 index 00000000..aecdb2bc --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06018ab9ab92c83bd1b8973f7f1705d29fcdac2941b1f6d7370d08d9048747c4 +size 13089 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset new file mode 100644 index 00000000..82aad92f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bac33da3b4123d3ad696c2c0e77ab098bf71ed7492cf5e024d88079ac551a349 +size 105626 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset new file mode 100644 index 00000000..5be8abd6 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6155f001c5cf3ed0c06b8d16083dd60cc7edbb717bc695fb966e4f6c2a4d695 +size 13089 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset new file mode 100644 index 00000000..013a1727 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91b9659ffd04e6cda37de8659bde09613ac91a6257dede524aa5176f9084eb11 +size 105642 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset new file mode 100644 index 00000000..cccbf3ba --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0366093de4e1c824bd9f4ddd08454796321231d365859dea9f62d057d8366bc0 +size 13056 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset new file mode 100644 index 00000000..012b9935 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27d9760d1c3b135c09a17652620b54ab2ddf4a5f4b6bb5b9b914b151c83a3735 +size 105561 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset new file mode 100644 index 00000000..dfa92ffd --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a02c8f1d1b55231822f18e3480293e91ca44034dcbf9a6375b63e169aff838e +size 13128 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset new file mode 100644 index 00000000..26f92651 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d16a2f29193444a7ca6ea3558388089b3addf32426a7c1e632ac2c90fa1943b +size 106185 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset new file mode 100644 index 00000000..d3fc7dad --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c781553daaed3c0268de5fa03194f560601fd4213379b399b480ab7d7c0df61 +size 13013 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset new file mode 100644 index 00000000..339d5998 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cecad06a61c97b651f509cd3760e549660bcf4689ddfc2a113888a868f4cf5d4 +size 105635 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset new file mode 100644 index 00000000..bb99b337 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6528d16cbcf7954407e69ce0e0bcd00199d1efcec89f66b9350985307ca83f15 +size 13099 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset new file mode 100644 index 00000000..4b3ad12f --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13927ed75b340c1d45994f6480d05e126b49286b7f70abc72a1cafb9b605a98a +size 520121 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset new file mode 100644 index 00000000..91a03129 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF10.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b10f0282440b1714e84bda283dd5ad5d4897a5ee948aa7a705c3277ef5c132c +size 190157 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset new file mode 100644 index 00000000..cbac11e1 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF11.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b41278c784f571d5b7cf90e5196870d569ad3a3408e58efa2f9e14b739d5974 +size 199897 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset new file mode 100644 index 00000000..c04f8079 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF12.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56a286eac8b1f21e971c758cfc398e694075bcc248725b49e4331bb28648c2a1 +size 278017 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset new file mode 100644 index 00000000..2fabc459 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF13.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8991ab471958d9e0d17318e31d994f069bca9477208f94ed674dfcdb3dc0d0ef +size 216055 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset new file mode 100644 index 00000000..6412f628 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF14.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7feadcc7a9a72d1608a6cb555e42c120bf3761d0283a633047ade546eff507e1 +size 207094 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset new file mode 100644 index 00000000..56a815d8 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF15.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31d285958b9bb9d53914a97f99dc12b69724c3a041b6331bd6f66c1087e55911 +size 265263 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset new file mode 100644 index 00000000..1803fe27 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF16.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bc7068735cf576c29aa70a804b1c19439797a9e89f4a5af4be363655b50af1e +size 287312 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset new file mode 100644 index 00000000..e556406e --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF17.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d69aa3909bdca7c18e8dde23e5998c612a5201c44c88e37f6d5a42649587cc31 +size 93883 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset new file mode 100644 index 00000000..e373a51a --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF18.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d5080a9dd754481cc48c3ecda48ef344728619abefb1591a2523c76d8a72cd7 +size 222878 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset new file mode 100644 index 00000000..2d972709 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF19.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a00bb41cb941855298ecc641a8606a2aaef1afc2c16edbc16b20fe73a75fe24 +size 349142 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset new file mode 100644 index 00000000..7affc7ad --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:526e67746bf784480c303624c2db22f42cc92b5891a4a5df45724090036de95a +size 514336 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset new file mode 100644 index 00000000..90545539 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF20.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1dadc8686d931a7d56dcc615bd360aec43e3d863c62c060a27f9542134d4b8a +size 279722 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset new file mode 100644 index 00000000..e4ab3727 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF21.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7b0d8b2f8fa3c67325eb40fce823c4992b033430e7a2035c46a46b96b85e921 +size 264996 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset new file mode 100644 index 00000000..352e3fd5 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF22.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02672d579a231b7f20e46f660e952424a5ee2cb7c8a65ad2c62a40e65a6955c8 +size 201422 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset new file mode 100644 index 00000000..054f3996 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF23.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:171f8a1ffaa8e823519dcfeabfc38c20e3b8a8a29b55693eb979a5e22de30404 +size 233885 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset new file mode 100644 index 00000000..276e16bf --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF24.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25c3a4bc8f7e9264a6e08faeb207179690a080064944d88b102064aca921f326 +size 243473 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset new file mode 100644 index 00000000..b889b439 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:255743fd8a4d98470627936bf3db65554e66a030c458eb89ae5fb549dfa51f1c +size 223849 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset new file mode 100644 index 00000000..a0b77c55 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0f95956468b3565535547dcd9dedd920265df86ee1fd300e2a564c8166fd6c6 +size 154165 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset new file mode 100644 index 00000000..c77c07c3 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71072ea290b02ba755a99d0ba7431ddcf7af53d9c6244848115fcf3ee4798a48 +size 196697 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset new file mode 100644 index 00000000..f1c4860c --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6130543f18fdb50a710b67240134ebb87ba9eec8a6702ebfcf591b60cda5d30 +size 230606 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset new file mode 100644 index 00000000..820a5fb7 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:941ee76cbcfd6d076fa433390a1a4f51ab71ecc98b004e45b50e2652f0848241 +size 234033 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset new file mode 100644 index 00000000..b8f45980 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34069edf6defdb76d68ae1dd44c4de0ad6fb5e9b17bc981efaf9d6259facd2a0 +size 225008 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset new file mode 100644 index 00000000..931cb465 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/IntroF9.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b00bd581cec253a1d34aa241f880d5e5aa1c481d7b90e1768275abcc44a0cb55 +size 251635 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg similarity index 100% rename from EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg rename to EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.jpg diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset new file mode 100644 index 00000000..7711c2f3 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeff5c7a398d612a5e100b13b7ddb36a2a2c2816c0447d22a6c6010935fe0c7c +size 148266 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset new file mode 100644 index 00000000..6935f4fa --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f5abe814da514365911427a44fb06d527d89c83c9ec09e21bf6e9330a86c0fd +size 131544 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/MB_TutorialFacility.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/MB_TutorialFacility.uasset new file mode 100644 index 00000000..776777f7 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/MB_TutorialFacility.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e2c6f5432fcd43a5ec6d741122cb6b7bffc728fba418b26443ee16e516b5046 +size 16338 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset new file mode 100644 index 00000000..31ba4319 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/RespawnPoint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bec6acd307ed9b0de4e228831379a95dbcb20f1ed5cd738bc12d8c53b7f8c2f6 +size 22142 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/TrainingFacilityBountyDirector.uasset b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/TrainingFacilityBountyDirector.uasset new file mode 100644 index 00000000..6c7107e6 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/TutorialFacility/TrainingFacilityBountyDirector.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09c762bea1a69f8d7349755bab6889a697003177850255e124c2e5fe7825fe3d +size 22406 diff --git a/EndlessVendetta/Content/BountySystem/Legacy/testintesting.uasset b/EndlessVendetta/Content/BountySystem/Legacy/testintesting.uasset new file mode 100644 index 00000000..9007fcab --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Legacy/testintesting.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:066668e7bba9999c8cc5d09b26520ffbd5327d37de8789099af2764841720bca +size 9250 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset deleted file mode 100644 index 822f2d62..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/CP_MB.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4630de4ea95731ea1488ab3b135b07396a1dd842f9909c6380d2a7934c2aa8d7 -size 63981 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset deleted file mode 100644 index 0309cf1b..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/MainBounty/MB_TestBounty.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3bee98bbd8e50e208c8f9ee6c2a8560f183a2bba774f090b183ab236ba7ebd22 -size 38649 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset deleted file mode 100644 index 79086246..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_1.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd5b80d48c39e4dbd4f62dafaecb54ec5c7fa2a1d12dfbdd1f9be85cc74b368a -size 64021 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset deleted file mode 100644 index 30c128aa..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d27935ca0589d21ab1e7ca9ebd3de80fa4666c43fdc239cbe4cd13358ecb5d71 -size 64015 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset deleted file mode 100644 index 7804ed1b..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/CP_3.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:127a3c5d1ddd972ed32552a4e0e61f4d72d94ed978d98ad9eec8933e2711c6c0 -size 64009 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset deleted file mode 100644 index d88016a5..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_1.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e89aba9e6af5b1bd48b5b2b48242eb1d057a63f552b22ea6122091a81556d9d6 -size 22765 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset deleted file mode 100644 index f61482fd..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ae78ca79d0f944fd9ae21df42c30f3993f595e6a750455a5960cd0e4b890143 -size 22827 diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset deleted file mode 100644 index f575b5b1..00000000 --- a/EndlessVendetta/Content/BountySystem/TestBounties/FavourSystemBountyTest/SideBounties/SB_3.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:736bb99394a031e33b1a14f712b0ad0b6540cc047153933347b449746f46ffc5 -size 22761 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BP_WeaponTable.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BP_WeaponTable.uasset deleted file mode 100644 index fd66d6d4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BP_WeaponTable.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:00bbbb9790870bbe08879eec576c3c57f0eca6162cfe7063cb2f2a0c10b87a93 -size 29602 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset deleted file mode 100644 index e35ad8ed..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ElimTutorialTarget.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e517fd38bf17f395edda2c998cbed260ac94e95ab348f7eb696232dffd112dc9 -size 143697 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset deleted file mode 100644 index 537c3b62..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb422b19b15ab7568686c196a6f8344053589c94ab572025195f6a31ed6e2a7a -size 83208 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset deleted file mode 100644 index 16ed3897..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a95afab359651372dc7a4b610c26acdceee19e660d3e0a1036eecc5e9dc081ba -size 59234 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset deleted file mode 100644 index 9baa8118..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_IntroCinematic.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:66f9f7016f0fb3d431f16dc9ec1c045a7123a20d7001bb1094c5d43fd7cfcb3b -size 60949 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset deleted file mode 100644 index c1b4c121..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_ParkourTutorial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20c146ca9121d08cc486f1d15b935101e2faad580974b40b32144f4f3cf466b6 -size 38506 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset deleted file mode 100644 index 80f6d632..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/CP_PickUpWeapon.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c983ac6f5ed8e39f4fd28d0d35a06fc6b1d4569f0448a3e6672a1cc664e91175 -size 60950 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset deleted file mode 100644 index 942a2ae0..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_CQCRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96f0a512c232f3f8d44a79dde7fd6da8d34a02581ac068f010f9ffdaf7bba755 -size 101077 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset deleted file mode 100644 index 12a9aaa2..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/BP_LongRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f8f3d90b13b51423a6cba2d48c8b722b3659b7a14f4bcb6ac730a20df8339b1a -size 112942 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset deleted file mode 100644 index b7080ef7..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutCQCRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a329b5461ac74c60fb7e33cc1369d9985dfb5cf33c1f85ddf207a36f94e3fb8 -size 147979 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset deleted file mode 100644 index ffe2f671..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/FiringRanges/CP_CheckOutLongRange.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e035f7ddd3dcf755fb0ed071ba8d162c3a8b17bb9e5fe788443a35df5a0f5b21 -size 156499 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset deleted file mode 100644 index 35556abe..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_GadgetTutorial.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c9c1c5174be17340a5c1af17f65ebad2f56450fb8194dd1aee554d703ac68ed -size 2754 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset deleted file mode 100644 index 3ac4ffc8..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_InfiniteHealthEnemy.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff0184855d0b831ff073d507262a1297f3fd676f49a4ec28ded918fbb8896069 -size 42127 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_Recon.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_Recon.uasset deleted file mode 100644 index 6f1b328e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_Recon.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86a649d86566076f0904ef7792d413399eedea9e074a4d60603396c5ea3734fb -size 2763 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset deleted file mode 100644 index 546a248e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/BP_ReconWorkbench.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:191a1e2ab132262fdd234e16a45508f0bff1cc081c977e49cffba1c4017bb052 -size 2801 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset deleted file mode 100644 index 36b8ab99..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/CP_CombatTraining.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e05c2b2a67900f795bea030cd060cb7ce55f4801f5573c5e4b5ab22ff5aa4198 -size 47609 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset deleted file mode 100644 index 7ab35daf..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Combat/GT_OverloadModule.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c3f7370adadacaa691397522121b6c975e922c007eba7b08420598f3cb906fdb -size 143122 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset deleted file mode 100644 index b4abdb12..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/GadgetTutorialIcon.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c8b4bb3136c292666348a27c69ab73e1431c62985783fa66a12f622d002228f -size 39827 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset deleted file mode 100644 index 4c9ab416..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/BP_ReconWorkbench.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db7428812684fd4a236a27ac272036dcb2c51411792f52a44c6c2880229efda7 -size 2738 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset deleted file mode 100644 index 0edb31b5..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_GoDownstairs.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9f83c02b2613872e32f795c91ce190d44c2cfdf83785965105ed43d9e326ec7e -size 38762 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset deleted file mode 100644 index 90dbb721..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/CP_ReconTraining.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8c6becce8ef63d5920459cc97049122bbd5c56ff7886c49fbbccd06f2f24d8f1 -size 47510 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset deleted file mode 100644 index c361a44b..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_RingModule.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:029257b219ada12742b0a16af98a8904c477cd27345d9997c9a3fc79d1327117 -size 144242 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset deleted file mode 100644 index 2ca83102..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/Recon/GT_VisionLink.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:535cd7f074418223d517abe6748a7c40749000dcfa9ecb5e17d7d1c378b5360e -size 214724 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset deleted file mode 100644 index 69d96971..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/GadgetTutorial/WBP_GadgetMenu.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:810d2dfb5cf17a33620f773ada8e2d7972ad795139900d78e326fdae5af35239 -size 119297 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset deleted file mode 100644 index faf0e8c8..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_EnterSimulationCutscene.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:42595da531f4db98b51bb2fdb8f617a91fd9de728df25a64f47b7200947f884c -size 86733 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset deleted file mode 100644 index 3abe2366..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/WBP_HiredCutscene.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddfa2b5455c745aaf63af8000945f2696d2248d6f059347bd4c2dd927910baed -size 104895 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset deleted file mode 100644 index 282d52f2..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/BE_TF_Bedroom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1df06845b2be99973a0567e9bbd4b05f87ff4ac270bd78e78d030f41996826dc -size 106375 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset deleted file mode 100644 index 68f70e77..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/BedroomEnemy/PP_TF_Bedroom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df5a2500d27329e8de757164387d7d8f8b63b58119bb7ad63898a34cd053c653 -size 13034 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset deleted file mode 100644 index 313cc740..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/BE_TF_Dining.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8abac0ac05cf183bc4a7d6a6b54dad56a476d41b49db54a85933b704b0b10a8 -size 106926 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset deleted file mode 100644 index 58c88511..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/DiningRoomEnemy/PP_TF_DiningRoom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8b98d4f4b418d7e056899dc8153137c700342c0325dfc4d9bf126d84af445ca -size 13061 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset deleted file mode 100644 index 3876306c..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/BE_TF_Living.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96bf3bc05b1d4a6a76556282cf0817abee6af85a9bc4f10af94c323e10e6b06a -size 106920 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset deleted file mode 100644 index 65e00893..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/LivingRoomEnemy/PP_TF_LivingRoom.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:966e6cbe348de1734c26bbf2dfadc4238378765a962a155cb7aae81295fd83bb -size 13061 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset deleted file mode 100644 index 65966bd4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/BE_TF_Outside.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ec0a4d9f721fa3407d9977d6e47e742426d1e49f5f2c40ee5167d153ea6e9058 -size 106934 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset deleted file mode 100644 index 12e36731..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fc837363528efff7871b4dfcbdc89052ce58dee49ff3ab8fb3bfe7b95be9a05a -size 2682 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset deleted file mode 100644 index 4bd16431..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_OutBack.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:406ab0ed0c686c21a00dda4b3d6e268eacf6bfc911cc5fbfc6615897e6e7f4ee -size 2674 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset deleted file mode 100644 index 6cd3336f..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/OutsidePatrolEnemy/PP_TF_Outside.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:731235fa24a1937da6099c8925abd34bbf99d4a1a6334c993c89f7a4b3114f0f -size 13791 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset deleted file mode 100644 index 8b8d13cd..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/BE_TF_Roaming.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f0567198a616343a45aef20d4be70b57a7eefefb6c54668645ce397186e27bf6 -size 106932 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset deleted file mode 100644 index 67602f41..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/RoamingEnemy/PP_TF_Roaming.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:062d6ee93303344368b3401d4a0bd412fa1d1af6cc95a81607453054cc697d67 -size 13100 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset deleted file mode 100644 index 1b25edbb..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/BE_TF_Target.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8a3d210a0ff91d671754196ced646a4128ea967f531e2c1c27201fbf9eba9c7f -size 107795 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset deleted file mode 100644 index b7adcb40..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/TargetEnemy/PP_TF_Target.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:496b55e0f80f2e6208269215944632df3161f025bc5888e294cf92b6deb13a2b -size 12985 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset deleted file mode 100644 index 787e0913..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/BE_TF_Upstairs.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ae60e9cb9b9afd7fe56aae046399dfd98ea8db80ecacffc4d278e262452ddb45 -size 106997 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset deleted file mode 100644 index 9c71a224..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Enemies/UpstairsPatrolEnemy/PP_TF_Upstairs.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2f2065e357769a2642143c21eae5fea45a3a60dfe59706f944d18ffe930b205 -size 13071 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.uasset deleted file mode 100644 index ff594e93..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF1.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d3222e9e86643dc447022502f2d9dc090dc6a5ceba6cb22140e5defb450ca494 -size 520107 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.uasset deleted file mode 100644 index faa470af..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF10.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ee539ee295fde45825def6001d96e70a7355c910663339a71f9c8c07fcbd820 -size 190143 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.uasset deleted file mode 100644 index a1b1fbdd..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF11.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a9f7052caaca78dbd170a68b849e9a498fb9d1c0167dfac5ec0d3d6e1a5f106a -size 199883 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.uasset deleted file mode 100644 index 1ba1c568..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF12.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:599a90873cb758c9263040510ae22bc8c88f19e2541f495c0f8f26f8fe7bd58f -size 278003 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.uasset deleted file mode 100644 index 8ccad9af..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF13.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:70a02c53ec549db94daae705eadfcadf479712eab787bc99be7b0072dbbf189e -size 216041 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.uasset deleted file mode 100644 index 9043d5d4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF14.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac65e38904a43f9572a5541d03d18fba8541cb04d0022c33d650a8e22e1c0e99 -size 207080 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.uasset deleted file mode 100644 index 8f9e9b0e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF15.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:66ced6f4829c1047301466482d34b1ab715a75f9786b4d67201c7e0dd1de2c27 -size 265249 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.uasset deleted file mode 100644 index cbbab91d..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF16.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e9c1b089ca16b48abbbe8f8e3707d58359c31b1714b1cc09d0a6cd8ff761408 -size 287298 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.uasset deleted file mode 100644 index 1ae804b0..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF17.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67b866902ab14c076b998c503565fe47b9a286b804ba15dbffa941f777e75523 -size 93869 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.uasset deleted file mode 100644 index 942736aa..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF18.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:314f8e68e722882c47507880a3a01d31e2cc3ae7b38499fac5aff1970f4063dc -size 222864 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.uasset deleted file mode 100644 index 94cda5d1..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF19.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9443f0754a9150ccc2d576068d9477f8af0de722dd48c1674bb779c168cb3c52 -size 349128 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.uasset deleted file mode 100644 index 1b733020..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF2.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22920c78e8d4fce5e8201fd7f3677f71af46e9a2983a318ccd59b7953abe5041 -size 514322 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.uasset deleted file mode 100644 index e08a1cea..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF20.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df4909ec22cfb8bb33b96b9543d632d94f698aedad617b7155caccfa30f51620 -size 279708 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.uasset deleted file mode 100644 index 1e98746a..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF21.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6ae7b861db5537ec6da74a374df59ab9de83245d0f2edc89700e64192cbc0bb -size 264982 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.uasset deleted file mode 100644 index 37e99fbc..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF22.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:693e100e900d78d4f0b6b2b9e4aa94887f3f5ff61472e27d6637440ecd986906 -size 201408 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.uasset deleted file mode 100644 index 47834a34..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF23.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bc5d4c874b276896a5c7e312baf31dec449ecf8335fe16c0f840cacdf4e54455 -size 233871 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.uasset deleted file mode 100644 index 62348f3f..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF24.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a405f2635dab582bc03bcd0d1755e748119069f1cd9bd1cf999368508b530091 -size 243459 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.uasset deleted file mode 100644 index 007c07e5..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF3.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:839551287c132b8adf1f989383f7eeef22dc25d1ce0c3715a9aa8ac584d007b3 -size 223835 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.uasset deleted file mode 100644 index c4d6f37f..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF4.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3af6b53040bbf9c6981c279d869765e118dc793358bc7b3e8cb3e85afadab01a -size 154151 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.uasset deleted file mode 100644 index 3a9ad85e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF5.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:302ea1f05c0bb01b3857874440db2e9eebcae7bbe8f2900be6764d6b98080a6c -size 196683 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.uasset deleted file mode 100644 index ed717240..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF6.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:58142883f2158722839c0bb64738a269a1f960cdd82840857246e9738416f53b -size 230592 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.uasset deleted file mode 100644 index 871edbb6..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF7.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2e56bd8e60a11b604e5b6037c7abf13a929bc8695e28afee55fe1afaeda2496e -size 234019 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.uasset deleted file mode 100644 index 57dc1edd..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF8.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:12f8fd87f96144c9f206f7faac11f2bc7b016fa9b2977d0b509802279cbe477f -size 224994 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.uasset deleted file mode 100644 index f5b1d62e..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/IntroF9.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94cc5c50d6999063d3ae435b09ce77696c5d6aad8103ea084ec7e4d995e26b3c -size 251621 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset deleted file mode 100644 index 068824b4..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/PlayersHomeShipImage.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b96eabdd3e093be39d5544ed2b3dfa40947e53a7f14ce0b9a20f381417e064be -size 148252 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset deleted file mode 100644 index 9423ea04..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/IntroCutscene/WBP_IntroCutscene.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d72553065b7759af8b25f2f70ded6db41e0f89f9d67aa11a19a9850ceca2562 -size 133720 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/MB_TutorialFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/MB_TutorialFacility.uasset deleted file mode 100644 index 24c72606..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/MB_TutorialFacility.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f832cb5ec5d4dfc2edd473b4cfd0ac80019547d5f2d1125b4a71942de584bb76 -size 16169 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/RespawnPoint.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/RespawnPoint.uasset deleted file mode 100644 index cfefe2d6..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/RespawnPoint.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ddfaf161972d5ed7da321d0764e3887dd4b91ef6d6e294ed590f8645bd5c1e01 -size 22117 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/TrainingFacilityBountyDirector.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/TrainingFacilityBountyDirector.uasset deleted file mode 100644 index 35ada0bc..00000000 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/TrainingFacilityBountyDirector.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1e75c64d6be90e7099664b99af6b8faab033decb1e269ab3e9f472e0e0fc2eb -size 22314 diff --git a/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.png b/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.png new file mode 100644 index 00000000..26e35bd5 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ab3a1fdab300776fa77b01bcaa676620d8ae5eaf96b3e121179f419cd5c1e0f +size 112854 diff --git a/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.uasset b/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.uasset new file mode 100644 index 00000000..805b8a75 --- /dev/null +++ b/EndlessVendetta/Content/BountySystem/Waypoint/MainBountyIcon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47deb8998ce928b6448dcbd1a22e3309e144cf43cc5440ac286024dd3aa83167 +size 84616 diff --git a/EndlessVendetta/Content/BountySystem/Waypoint/WaypointArrow.uasset b/EndlessVendetta/Content/BountySystem/Waypoint/WaypointArrow.uasset deleted file mode 100644 index 77db169b..00000000 --- a/EndlessVendetta/Content/BountySystem/Waypoint/WaypointArrow.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:581ee1ef957a3b4e90433ecabc49b6afd731418013eb96e516f54876097f0ca4 -size 255 diff --git a/EndlessVendetta/Content/BountySystem/testintesting.uasset b/EndlessVendetta/Content/BountySystem/testintesting.uasset deleted file mode 100644 index 0c667c09..00000000 --- a/EndlessVendetta/Content/BountySystem/testintesting.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a52448bedde7fdbdaa6dd78db571d463666715dcf04c67bb55dedb81fe8d8488 -size 9233 diff --git a/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset b/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset new file mode 100644 index 00000000..99fe8f57 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/BP_ChoiceButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92491ea67e7c30c15a81fb5f3f5ea677337f308489c06b92509a99b0fc6ad5bb +size 47654 diff --git a/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset new file mode 100644 index 00000000..085864ef --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/BP_DialogueUI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35908c5dcdb5143afd98a83341d8cb46d90ab1430b3d365f1b4707d85c793c70 +size 224018 diff --git a/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset new file mode 100644 index 00000000..c8a1e2e7 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b1e0389b55c1a3619cc6d04739ca92ebf332e67c2f9fce20a7d9a240d7fc654 +size 87783 diff --git a/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset b/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset new file mode 100644 index 00000000..94d07770 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Mayor_tutorial_dialogue_tree.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ff24a84d1c042c20b8f3ec95ad35354f71120cae523ef67a0e54a129fb4c738 +size 106796 diff --git a/EndlessVendetta/Content/Dialogue/TestDialogueCube.uasset b/EndlessVendetta/Content/Dialogue/TestDialogueCube.uasset new file mode 100644 index 00000000..c527979a --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/TestDialogueCube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f02a139ca0765bc88152d89b253c76f11837193aaaaf1822f950d38578cc5e1 +size 2455 diff --git a/EndlessVendetta/Content/Dialogue/Testing/BP_Mayor.uasset b/EndlessVendetta/Content/Dialogue/Testing/BP_Mayor.uasset new file mode 100644 index 00000000..86869ecb --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/BP_Mayor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4280fd261e4b0d85f410669264906255cdcc74e55477faa4fe5e46c3d33aeee4 +size 30273 diff --git a/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle.uasset b/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle.uasset new file mode 100644 index 00000000..5ad7be4d --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f6e6d75f641a2e7dd11f95db5bfc72cde7bb66e942831962061901cf79f21b3 +size 785162 diff --git a/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle_PhysicsAsset.uasset b/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle_PhysicsAsset.uasset new file mode 100644 index 00000000..fb0f6134 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle_PhysicsAsset.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d59d593d60ea9144d8f0632eb29ee2d1ee92fcbe20e5fccb7a34505beb9a71 +size 16250 diff --git a/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle_Skeleton.uasset b/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle_Skeleton.uasset new file mode 100644 index 00000000..5a52dca2 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/Catman_Idle_Skeleton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97c387ee6c4607c9a841c13d5f309ce7e48158b7db0521f0f9c65549324c326e +size 13447 diff --git a/EndlessVendetta/Content/Dialogue/Testing/Material.uasset b/EndlessVendetta/Content/Dialogue/Testing/Material.uasset new file mode 100644 index 00000000..9eab430c --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/Material.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3d1f8b1ff90eb9ba3ff2dc40dc19d0deef6e69dc213255bee4f7748e4b04346 +size 7914 diff --git a/EndlessVendetta/Content/Dialogue/Testing/Material_001.uasset b/EndlessVendetta/Content/Dialogue/Testing/Material_001.uasset new file mode 100644 index 00000000..bc52c384 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/Material_001.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:656790daef70f5db329953fe750bd011cc50dd34ff9b0ba51bb2e26476d85972 +size 8143 diff --git a/EndlessVendetta/Content/Dialogue/Testing/Material_002.uasset b/EndlessVendetta/Content/Dialogue/Testing/Material_002.uasset new file mode 100644 index 00000000..83dce43a --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/Material_002.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b041ea1092257c487bab6aef0483e5e6c950a6f90474bdaf4dd9976c5fee72bb +size 8143 diff --git a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueCube.uasset b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueCube.uasset new file mode 100644 index 00000000..c12313ff --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueCube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7323a610767b1f1cc758dd6fa1c9cb34407545561ad153e0ad0ac12cb78f894 +size 28384 diff --git a/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset new file mode 100644 index 00000000..5f598325 --- /dev/null +++ b/EndlessVendetta/Content/Dialogue/Testing/TestDialogueTree.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec1e794ed8e8a4409f4bc77584623c727508513bf407e4059ce1e4a41b8d90c1 +size 24487 diff --git a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset index 0f1eb268..28e6c3fd 100644 --- a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset +++ b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67c8259a243d5c66d35b91458da2dd7e9e860224052098ba554eba470cee4a2a -size 2162660 +oid sha256:388390c8d51429942976c17d06b5e4084e652f9b2554782794c1dad2d766438c +size 2113778 diff --git a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset index c6396a47..8a95da14 100644 --- a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset +++ b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9c7063e48c0b3c23194a6a2fc3625da96d20bbd92fece19210001cf0cac8964 -size 8568 +oid sha256:a791858557c1d4a2c87aefc7d0cff0cb191cb6d496ec518f602ce3db92323815 +size 9020 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset index 9e824917..46367c77 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c99ec2b828cf671d0d33afa160e745375f0b82d79a8b49f2e9e74c0b68aedd7f -size 76231 +oid sha256:f8ca10fde945fbab4c1f76b326cd5808c53a338dedd01c73be8ae655552aa31c +size 474080 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset index 5cd48aa7..f2ca1773 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_ARTEST1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55d9774b1be0067976e247efb9c0924028d8e6f104a2356fc3c244d0ca0bcbab -size 40721 +oid sha256:da280a53ff9a19fc5698a2e4e87a2f0b6e4fd81c95fb5929a659cdb507b0d446 +size 41581 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset index 2ef319e4..201ac1f9 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c20c755e25ce7a0993636889cf8bf6196888a85f4428e15eb600c48cb357d5f4 -size 123751 +oid sha256:f4d4c8728c6346fed52e60b7b56fa54a6492180815d2cee29d8d8730ac624947 +size 125545 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset index cc04228d..f570bf8e 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4358c8520e164b973fae2ae1a18307f0eb691ecfd94b433cbda1052b8b2751fa -size 7209 +oid sha256:c17011787947edd0492999385adc17e76b12aa4fe03ef946ae96b2ad435f4eda +size 9114 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset index 4b1c45a0..bcdca35f 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6f31b971cc0237138a2bd8e0aa68d0ac68cac907b0a05aa9617c69883a711cd5 -size 125774 +oid sha256:27baa0566dff77e1a10c6ad16334355882c66dc68bddb90cd8790af23918a24c +size 126225 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset new file mode 100644 index 00000000..b98fc270 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c875b5a56660d1175d197651084a60f82e244678cb44b7ed2354937caced1c0 +size 964880 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset new file mode 100644 index 00000000..f38a4924 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_PhysicsAsset.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d65a0223ea0c6fdc4c9be73cf9f1b4b9be6a0a74e416e198ea002a014a79313 +size 7534 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset new file mode 100644 index 00000000..33067b99 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_HandGun_Skeleton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:224fd066e908fdcb82c95df41d433787f45507d56387cb8978feaf6f2d759125 +size 7075 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset new file mode 100644 index 00000000..95ca8f4f --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f31ef8fe90ab7b57893b0b8167d8a1bc5b6df8aa9d73832fe1cbf7c0effc9314 +size 1004195 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset new file mode 100644 index 00000000..86aec470 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72bc48c594152df6409f6eed91ca4ee8518d641f8528171a54a3d925d1041a41 +size 6552237 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset new file mode 100644 index 00000000..cd6200ad --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/Pistol_Assets/SM_gun_ORM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d2d3d737a5f330587a3c60a2c3f904e6c0c33ef540e39e7eda196bf995a1ee2 +size 2765283 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset index 8e445757..2a158809 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Shotguns/BP_BaseShotgun.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d4bcd23aa245c0819235be1d2d992930fed4440aabdafba514d6a1f99a418fcb -size 124531 +oid sha256:362a64d67da0cb91a66300f81b87b5482e4cd9a1058aafb5b012ed79a835ba07 +size 125596 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset index 881c555d..658f6c74 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Snipers/BaseSniper.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3335a1091802c5f484bcc99a573e0cbd388e3cbb586147614ede78c274a14fc -size 124510 +oid sha256:cf3cb3f1c18d9cef57e27220662bc04a7cfb0de1aff48d810eaefeed37c29d20 +size 127332 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/DoorBP/BP_Door.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/DoorBP/BP_Door.uasset new file mode 100644 index 00000000..6c55793e --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/DoorBP/BP_Door.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d577d68165ea935df55d93682617ee4cde6015fd49125424514f6d7f4724246a +size 69897 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/DoorBP/WBP_DoorPrompt.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/DoorBP/WBP_DoorPrompt.uasset new file mode 100644 index 00000000..b55b152d --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/DoorBP/WBP_DoorPrompt.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7cff7bcd8f753a0c636853df512555687c1450a25dd908391b55b7589c220ec +size 79813 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/DoorPrompt/BP_Door.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/DoorPrompt/BP_Door.uasset deleted file mode 100644 index 2e39669d..00000000 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/DoorPrompt/BP_Door.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03cc628cc4a9ab85f3fb7754903bb0b4f5cbf3db50b0cb2044f6812aec991c82 -size 71627 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/DoorPrompt/WBP_DoorPrompt.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/DoorPrompt/WBP_DoorPrompt.uasset deleted file mode 100644 index 5608096e..00000000 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/DoorPrompt/WBP_DoorPrompt.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd2cc6201da826cdd7357a5f683f0c9d0638cd2c44ebaab60b6585f1c2659159 -size 81251 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Idle.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Idle.uasset new file mode 100644 index 00000000..451728d5 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4edc2f6d9b0bde40c02ba5fec57f3f08573add14e1d62bbed4e4cb33a74f73a +size 7217 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_OutOfStam.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_OutOfStam.uasset new file mode 100644 index 00000000..c8468545 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_OutOfStam.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e7640dc1229f02365ed721ad413a620bf85e1a1280a08cec8b56e499f7820af +size 6830 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Sprint.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Sprint.uasset new file mode 100644 index 00000000..929d8476 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Sprint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a9231f702f7fffdfe9f4bd9024bcb549a148dd6d9a4410f55475f6445d0a432 +size 6791 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Walk.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Walk.uasset new file mode 100644 index 00000000..7b388294 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/HeadBobbingEffect/CameraShake_Walk.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0465ca03bf373461df13d58cf2ad596af380542610db4f3a151a91128482be61 +size 6765 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/BP_WeaponWorkbench.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/BP_WeaponWorkbench.uasset new file mode 100644 index 00000000..065961de --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/BP_WeaponWorkbench.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d75e36753040dd1b42758b69e6c786086cdef6c0bb189130b8d0e611ba119da9 +size 139146 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_SilencerImage.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_SilencerImage.uasset new file mode 100644 index 00000000..e4bcc0c7 --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_SilencerImage.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6541b0e884663dee959f9484786850d0a8dc7727b41a2fc8a063ac28381ee851 +size 22763 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_Workbench.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_Workbench.uasset new file mode 100644 index 00000000..ec08dd4c --- /dev/null +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/Workbench_WeaponAttachments/Workbench_UI/WBP_Workbench.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26e12a1e4c8c9e552111d447a43b2e8518c1f916d96239e30a9699079dd04d3f +size 228620 diff --git a/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset b/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset index 91e47258..a1590c6f 100644 --- a/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset +++ b/EndlessVendetta/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f4e7da19e1c7c367caadb1bf513b3f7353b8ae90bf24428e0418487ec339670b -size 22171 +oid sha256:3e87ba3269dc65b8d3dd5024eaeb7bd23f9645fdb6626293ecdc212a0d0778b6 +size 22438 diff --git a/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb.uasset b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb.uasset new file mode 100644 index 00000000..61def072 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d48b68f103c839f484864e16b1c70825eca0272b7658887945efe190eb61a9a +size 154427 diff --git a/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb_Font.uasset b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb_Font.uasset new file mode 100644 index 00000000..0df62046 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Conthrax/conthrax-sb_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c83f32cb77196ba00771af4c65bafda85ec8cefcc88b79f278623c7ba3c824a +size 6544 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold.uasset new file mode 100644 index 00000000..6ccdae65 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b653e74a78e127d4fc9dd2b86bc02a6f3db120d8ceb5a19164e13dea5ae93b57 +size 57094 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold_Font.uasset new file mode 100644 index 00000000..592af238 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Bold_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d29c99ed7afe6a7a4ab39261a8a5d47962c510846c56d76499fa820fc4e2ee60 +size 6405 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold.uasset new file mode 100644 index 00000000..161fff54 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfc9c97c08173fe375d30d4f16ec209499c14a077136050883a4ae27985891b7 +size 57221 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold_Font.uasset new file mode 100644 index 00000000..4f762266 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraBold_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c4ed01d92f0b771b7bb4d906b094a4be893e4ed48a4a0c36f1a232fa4078a13 +size 6511 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight.uasset new file mode 100644 index 00000000..57f022dc --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a0d57985ba024b3f880f2767ff8b875d70ad3419a6fc163db97435e271b265 +size 57352 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight_Font.uasset new file mode 100644 index 00000000..8343f26b --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-ExtraLight_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32ead0bdec890960b8379909515ab973d1a72e8dcfddc1fb83951b0d978c07ac +size 6397 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light.uasset new file mode 100644 index 00000000..c8e8d3c3 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:523ae9c30e94afaec9568627e44082b9ceacecd2a88c3589a520e638b02a73f6 +size 57233 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light_Font.uasset new file mode 100644 index 00000000..f96aabbd --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Light_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6361409472cd93b6bc9b06a061e275e3bb43e8fb90ac974a0ed279ba1a3c80b7 +size 6320 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium.uasset new file mode 100644 index 00000000..13ce41e9 --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b9fb607be1b5aeb2161da1ab2f77d237307e3e2cc2eb9a6bce2ca55a27c8b18 +size 57216 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium_Font.uasset new file mode 100644 index 00000000..0d52c0ba --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Medium_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c764f1fa07a8736117f6c1a6c748cc7604f04b4980f7204b2e4915975e85e43 +size 6485 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular.uasset new file mode 100644 index 00000000..83319abe --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83bdf29373fca452a260331538560971cfc7770ca021cf312955b899f358cf13 +size 57155 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular_Font.uasset new file mode 100644 index 00000000..6bef215d --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-Regular_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0981619a0267c6a381b1c9c18e4335ffdb52df11e0e77293771512ab33263aed +size 6479 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold.uasset new file mode 100644 index 00000000..5db5b16c --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3fe22e46ed7b55f8eddab603d0619c96ef21afac64fff1f736c237ee1b37421 +size 57234 diff --git a/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold_Font.uasset b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold_Font.uasset new file mode 100644 index 00000000..ae0d41cc --- /dev/null +++ b/EndlessVendetta/Content/Fonts/Oxanium/Oxanium-SemiBold_Font.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:216d140f81e1f045143e623730dcf07185008cd2e3e800fd81d9149f5a8606e9 +size 6522 diff --git a/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset index ac45c725..37d99b25 100644 --- a/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset +++ b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a0ac6bb1c776390adbc9e10c1a9e9c6629c4f69eea6d3720d502a3b7807abf0 -size 110595 +oid sha256:fb1496b56a8e87f9025f0c245ee55e585e0b81277a74162d0531f777414f8443 +size 111687 diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset index e5b9faad..c9f59c0f 100644 --- a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset +++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:163e6c220966ca84c1c7e3f9ae176fe99bb0f7b8b364403ad5cf42f0272a87f0 -size 108688 +oid sha256:d3ae912ab5c02aa352d2e9d4f1885e7217791a701f23b241535cd24def3e1a20 +size 109272 diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset index d69e0e6a..47972023 100644 --- a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset +++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00265bc01e803ae78c9486a50cdb2fe60b93de0d265a599dec052b079cc724c8 -size 4272 +oid sha256:a59d5848a9889747f69cfc80ff33d051308070c9764d0836994374b37c6038c5 +size 5353 diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset index aea6e927..74f5f55e 100644 --- a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset +++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:576cf6674035552a043dab60a2173beec40cf65683d138ad0df40f66fd48370b -size 108618 +oid sha256:d6c1b0360db438f17c7cbb7a907c95ae67d455c711d94866ee07bbeb932f0acd +size 109202 diff --git a/EndlessVendetta/Content/Levels/Apartment_hit.umap b/EndlessVendetta/Content/Levels/Apartment_hit.umap index 3699de65..e11bff2b 100644 --- a/EndlessVendetta/Content/Levels/Apartment_hit.umap +++ b/EndlessVendetta/Content/Levels/Apartment_hit.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fa51241ae1af23456e7f888143053bb9725a7b23a368ba22605845f0c9990797 -size 234051 +oid sha256:c0323083b144e4004c8d4923094ebbc18d011c193b614beef9a0cef1af5728bb +size 372293 diff --git a/EndlessVendetta/Content/Levels/BP_EVGameMode.uasset b/EndlessVendetta/Content/Levels/BP_EVGameMode.uasset new file mode 100644 index 00000000..5071a49d --- /dev/null +++ b/EndlessVendetta/Content/Levels/BP_EVGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15c54b4347648ffc36e88cb70a4ab7496f81c85300b8856d30b24dbbb57abc8b +size 19500 diff --git a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap index 9748e914..acf3a596 100644 --- a/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap +++ b/EndlessVendetta/Content/Levels/ControlTutorialLevel.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a86a917f878f965f58aa3bf308f3fdb2c29dd30ddc5d7f261b2dd0447ee3c44c -size 17258822 +oid sha256:c78dde892caa4b4cb292592b66f9ee2fd986382798310e40212c1f80ee418cee +size 3452507 diff --git a/EndlessVendetta/Content/Levels/MainMenuLevel.umap b/EndlessVendetta/Content/Levels/MainMenuLevel.umap new file mode 100644 index 00000000..d2321b53 --- /dev/null +++ b/EndlessVendetta/Content/Levels/MainMenuLevel.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c86b9618ce0418f07d9a359900fa7815818fc8e5f0a1956b2bfb87a4452fe01 +size 306418 diff --git a/EndlessVendetta/Content/Levels/TempOpenWorld.umap b/EndlessVendetta/Content/Levels/TempOpenWorld.umap new file mode 100644 index 00000000..331dc700 --- /dev/null +++ b/EndlessVendetta/Content/Levels/TempOpenWorld.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3977a136e9c4c43dad14b8288902b6cf0cf3c7b46eac4dfdcb8cc25e225edc02 +size 13864728 diff --git a/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset b/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset new file mode 100644 index 00000000..c0d71a60 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/BP_MainSaveGame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9d27472d220a66dded1121bfbd0e985360e88d0a86dc6f88894db11aa2e117a +size 9426 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuCharacter.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuCharacter.uasset new file mode 100644 index 00000000..51e22328 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:402426e80078bade413ec8c155d3b75b527978e2364d7e38c6b7dfb7edc104e2 +size 23103 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuGameMode.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuGameMode.uasset new file mode 100644 index 00000000..2aa1f19e --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f694765327ae7ced9a163d61f69472fcd8b629eda7649b0cab4936ab36c07d +size 19647 diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset new file mode 100644 index 00000000..6891d70e --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad835c5a96e5af4cdf7871ccb3a74e336cf83ef1f3eb8b0171ffdb88dcab7d50 +size 128279 diff --git a/EndlessVendetta/Content/MainMenu/MainMenuGameMode.uasset b/EndlessVendetta/Content/MainMenu/MainMenuGameMode.uasset new file mode 100644 index 00000000..120877b5 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/MainMenuGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02c10b675c4a29abf6f9b7a4da2be54839783e3b31fa9ccefbd8b98784480c23 +size 2460 diff --git a/EndlessVendetta/Content/MainMenu/MainMenuLevelSequence.uasset b/EndlessVendetta/Content/MainMenu/MainMenuLevelSequence.uasset new file mode 100644 index 00000000..7cb23377 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/MainMenuLevelSequence.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40b6fe4997aac2fb85d7adae23cdece606540e7e0c4f2922de025d98e20a1f7f +size 102280 diff --git a/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1.uasset b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1.uasset new file mode 100644 index 00000000..94c0b816 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c45189d39477bb218b76eb906ade0e079d528c9b0bd97dcd91595d3d84c5498b +size 10175168 diff --git a/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1.wav b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1.wav new file mode 100644 index 00000000..54d8d35a --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:660d9a04574795e7b164f04772283cb6e4cd61d45f585333f92542e4add86387 +size 12501608 diff --git a/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1_Cue.uasset b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1_Cue.uasset new file mode 100644 index 00000000..68511f67 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_1_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f029c7540d6196fc8aefada0553299b6173827df03d6448a4489d3261a1ad2d +size 5262 diff --git a/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2.uasset b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2.uasset new file mode 100644 index 00000000..02149b54 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ab7d47d6559b81d51e0575f55eb4a10aa96504500b0ab5ddce0fb4b9c40cc2e +size 4793489 diff --git a/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2.wav b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2.wav new file mode 100644 index 00000000..565e456c --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d93748a6a06c7eb63398e7a38ee260ef84644b372303827c50b36a155266cba2 +size 6124136 diff --git a/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2_Cue.uasset b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2_Cue.uasset new file mode 100644 index 00000000..63544fa2 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Music/Menu_maybe_2_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7cb8bb57a58a09b99e491c541603316db857a4e9f40c01c029ccd2a4020dcf7 +size 5262 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset new file mode 100644 index 00000000..289edced --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenu.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb7364e8bc0576814cbb1332a7dc1c0468f3a04d683b98e4b117b2cab0033bf1 +size 114749 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset new file mode 100644 index 00000000..31ab59b2 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_MainMenuSequenceFade.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3db0e8cde21f61ee69a8556a7e4091ef9dfadc39679eaace9185918351dd2bcf +size 57284 diff --git a/EndlessVendetta/Content/MainMenu/Widgets/WBP_StudioIntro.uasset b/EndlessVendetta/Content/MainMenu/Widgets/WBP_StudioIntro.uasset new file mode 100644 index 00000000..802b2be3 --- /dev/null +++ b/EndlessVendetta/Content/MainMenu/Widgets/WBP_StudioIntro.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc9e802496b96fce577dd02600d98755c0eb2499d038b7a7b1f14cbc7226999 +size 68533 diff --git a/EndlessVendetta/Content/Ships/BP_HomeShip.uasset b/EndlessVendetta/Content/Ships/BP_HomeShip.uasset index 2fcb8256..f47c8e96 100644 --- a/EndlessVendetta/Content/Ships/BP_HomeShip.uasset +++ b/EndlessVendetta/Content/Ships/BP_HomeShip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5adf54f06d91186e171b05251396919a7994ee9c88964a4a49a4743058b2df8b -size 38469 +oid sha256:9b365fc235303095ae9a94177656b3e5294012ada186a2f0d89de08cb38bf2d3 +size 38349 diff --git a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset index 414ee7d9..92ea4e0b 100644 --- a/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset +++ b/EndlessVendetta/Content/Ships/BP_SpaceShip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c424148a2d3ebc876cb27453c51f1383792430536cde08915c4114a366e77bc -size 37169 +oid sha256:b44f822f5c6482c3351c981ff00819af201f59f73a9f8a4a84e2eb6ba0bd9d72 +size 59373 diff --git a/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.png b/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.png new file mode 100644 index 00000000..a5784314 --- /dev/null +++ b/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e160dc0e0259e441a356594e7fd64f791cafa8071872310ac32fa9f7dea6e73c +size 366544 diff --git a/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset b/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset new file mode 100644 index 00000000..f91d508f --- /dev/null +++ b/EndlessVendetta/Content/Ships/LZ_HomeHubIcon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e492db2251e6e8a8ccd0fa57f4ecbb86d19662484b74a4a52ed1a84943fc3783 +size 318979 diff --git a/EndlessVendetta/Content/Ships/LandingZone.uasset b/EndlessVendetta/Content/Ships/LandingZone.uasset index 32fb9317..d8d6f2ba 100644 --- a/EndlessVendetta/Content/Ships/LandingZone.uasset +++ b/EndlessVendetta/Content/Ships/LandingZone.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ea90e487ea5bf751b7573ac6ef2be781c1efdf4e0bae7c8b95f9fbf0c4169dd -size 113548 +oid sha256:dfde55ec08a338b74108a49afc1af5c2f689d323773b9cc4719adcacce033a03 +size 77058 diff --git a/EndlessVendetta/Content/Ships/LandingZoneIcon.png b/EndlessVendetta/Content/Ships/LandingZoneIcon.png new file mode 100644 index 00000000..3fb9bcaa --- /dev/null +++ b/EndlessVendetta/Content/Ships/LandingZoneIcon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8512b3a28465f4570eee63557f0dd56211e85ce32b87227c0de9789c4b7be559 +size 203875 diff --git a/EndlessVendetta/Content/Ships/LandingZoneIcon.uasset b/EndlessVendetta/Content/Ships/LandingZoneIcon.uasset new file mode 100644 index 00000000..3de4997f --- /dev/null +++ b/EndlessVendetta/Content/Ships/LandingZoneIcon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea65d4aa723707110e27c6765eadd3cd8bbdf3902cfb12e67b76b3e01f5992e2 +size 162033 diff --git a/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset b/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset new file mode 100644 index 00000000..1ed70fe2 --- /dev/null +++ b/EndlessVendetta/Content/Ships/LandingZone_HomeHub.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abbb67678dc0d1cac94a866d1604c7658d787b8c4e2f8d8f69b1dfd85ac763d1 +size 92831 diff --git a/EndlessVendetta/Content/Ships/WBP_LandingZone.uasset b/EndlessVendetta/Content/Ships/WBP_LandingZone.uasset index 4e8bc23f..29ff3dda 100644 --- a/EndlessVendetta/Content/Ships/WBP_LandingZone.uasset +++ b/EndlessVendetta/Content/Ships/WBP_LandingZone.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e302d2da63cfd690807b0dd6dacd7b4b4b1176e88945f007ffd2c12211cdf9c -size 42570 +oid sha256:4fdbdd41b8678797719817f408afef87573bf6c01d7c87c79d12d2b4eeea5aee +size 42518 diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset index 1c0675e1..8720c67f 100644 --- a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset +++ b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2b1214c2656169689002a1b8976a3ae6c3287520fae9ca08f71889c57690c775 +oid sha256:2948a0f047ea3d4c550459ad2641ce7a098433ea2c165c572d9816ad798fd473 size 66790690 diff --git a/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset b/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset new file mode 100644 index 00000000..05ac52df --- /dev/null +++ b/EndlessVendetta/Content/StarterContent/Shapes/TempSilencer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09bd5fb96ee510542e6f9c5439748cae1542863fd4909d649bf76be51e9d4468 +size 28225 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset new file mode 100644 index 00000000..a5e2facf --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/24/JBARER4CBJ0QZT5CZY8ID6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84b30818e9bae891d6c94279a7ca4f0fc7de1ef3432141d4a7adc9057459595e +size 6503 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset new file mode 100644 index 00000000..50f5595b --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/0/GQ/QPISORMXEPSB0MNOUMBIZ4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c4ce0647a5c6be70b5b2078d285a9d14a8a6eb0264271d36931b66c7a7904b6 +size 6516 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset new file mode 100644 index 00000000..667b9993 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/2/ZU/URNIY7YZNRDH4QY14A8BN4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9b1da883f91278772e9215096e70c10d298b9416f1b392476303d0f8235dbe1 +size 6952 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset new file mode 100644 index 00000000..11295e10 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/PG/AISD2CY0WTWKV1BJDYTYJ3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d53dac7e3e749916ed5e5802c3c3495f2895827dcb66e9b2f49a8cac9a4ecb5 +size 6664 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset new file mode 100644 index 00000000..0d782ca2 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/9/V5/00HOTT7GJB6N5M6TZHPJO5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f97293c8252b81250776e74e7637a467ec93628edeac54773472326b7bd45303 +size 6593 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset new file mode 100644 index 00000000..86bd9ab5 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/HT/HCK94DMZ442FV8M21GRO0Q.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a02acdaa622152fe92278f5c6bcfa93a1f8831cee568902f7fde1b519ae6f6f +size 6374 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/X5/OKD54JHXNGXNVF4JEBBMVP.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/X5/OKD54JHXNGXNVF4JEBBMVP.uasset deleted file mode 100644 index e0940ef3..00000000 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/DoorTestLevel/D/X5/OKD54JHXNGXNVF4JEBBMVP.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f37bd6fd21d44596891c4bd6763bd936b1ff98425033925bbed475ee4d2f5b9 -size 7302 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/BH/KS02NXNXRR4I87WM39RJJN.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/BH/KS02NXNXRR4I87WM39RJJN.uasset new file mode 100644 index 00000000..24c2fecd --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/BH/KS02NXNXRR4I87WM39RJJN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c62abbef4890ad85a6b0c5056e7cad9a1963f937c34630f3a5ba29d584bde1c +size 6362 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset index 76ff7bba..f99c95bc 100644 --- a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3ded950368a5368f3187fcdae9b883ab92a7b57840a28a3613a0024df71d2098 -size 27121 +oid sha256:ca5b42f11542b515ca1b651d50754be68ce0bdc4fefe264a2993b01e6e7a9506 +size 16757 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/5/LS/LPZ549UOJAZIWJNZLR0EH0.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/5/LS/LPZ549UOJAZIWJNZLR0EH0.uasset new file mode 100644 index 00000000..75ca0ce6 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/5/LS/LPZ549UOJAZIWJNZLR0EH0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f1cdc2ca5697a5f4e97574930f1a81e9ea5203847aa2abc34fe682a322d150e +size 4218 diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/WM/7S8OEF1ALOX6NKI759UPUB.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/WM/7S8OEF1ALOX6NKI759UPUB.uasset new file mode 100644 index 00000000..16fa5da5 --- /dev/null +++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/WM/7S8OEF1ALOX6NKI759UPUB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3b486e5f781568dfc3311e0a748054cd44c937f24cf97813ffdb41bc57ff9ab +size 4797 diff --git a/EndlessVendetta/EndlessVendetta.sln.DotSettings.user b/EndlessVendetta/EndlessVendetta.sln.DotSettings.user new file mode 100644 index 00000000..3e7d92d6 --- /dev/null +++ b/EndlessVendetta/EndlessVendetta.sln.DotSettings.user @@ -0,0 +1,5 @@ + + C:\Users\Rafal\AppData\Local\JetBrains\Rider2023.3\resharper-host\temp\Rider\vAny\CoverageData\_EndlessVendetta.-1253833435\Snapshot\snapshot.utdcvr + <SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> + <Solution /> +</SessionState> \ No newline at end of file diff --git a/EndlessVendetta/EndlessVendetta.uproject b/EndlessVendetta/EndlessVendetta.uproject index 7e992166..f9454b2c 100644 --- a/EndlessVendetta/EndlessVendetta.uproject +++ b/EndlessVendetta/EndlessVendetta.uproject @@ -14,6 +14,11 @@ "CoreUObject", "UMG" ] + }, + { + "Name": "DialogueSystemEditor", + "Type": "Editor", + "LoadingPhase": "PostEngineInit" } ], "Plugins": [ diff --git a/EndlessVendetta/Plugins/GenericGraph/.gitignore b/EndlessVendetta/Plugins/GenericGraph/.gitignore new file mode 100644 index 00000000..7b887157 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/.gitignore @@ -0,0 +1,14 @@ +Binaries +DerivedDataCache +Intermediate +Saved +Build +*.sdf +*.sln +*.suo +*.opensdf +*.opendb +*.db +/docs/sphinx-build-result +/.vs +NoCommit \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/GenericGraph.uplugin b/EndlessVendetta/Plugins/GenericGraph/GenericGraph.uplugin new file mode 100644 index 00000000..68e4ef88 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/GenericGraph.uplugin @@ -0,0 +1,30 @@ +{ + "FileVersion" : 3, + "Version" : 1, + "VersionName" : "1.0", + "FriendlyName" : "Generic Graph Plugin", + "Description" : "", + "Category" : "GenericGraph", + "CreatedBy" : "jinyuliao", + "CreatedByURL" : "", + "DocsURL" : "", + "MarketplaceURL" : "", + "SupportURL" : "", + "EnabledByDefault" : true, + "CanContainContent" : true, + "IsBetaVersion" : false, + "Installed" : false, + "Modules" : + [ + { + "Name" : "GenericGraphRuntime", + "Type" : "Runtime", + "LoadingPhase" : "PreDefault" + }, + { + "Name" : "GenericGraphEditor", + "Type" : "Editor", + "LoadingPhase" : "Default" + } + ] +} \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/LICENSE b/EndlessVendetta/Plugins/GenericGraph/LICENSE new file mode 100644 index 00000000..9c189b15 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 jinyuliao + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Resources/AutoArrangeIcon.png b/EndlessVendetta/Plugins/GenericGraph/Resources/AutoArrangeIcon.png new file mode 100644 index 00000000..b5e6c3b1 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Resources/AutoArrangeIcon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71dff338a731ee7bf2def0d378b0a866615d2ee72aa591ab4ed7ad1105049806 +size 5528 diff --git a/EndlessVendetta/Plugins/GenericGraph/Resources/Icon128.png b/EndlessVendetta/Plugins/GenericGraph/Resources/Icon128.png new file mode 100644 index 00000000..57ee2a55 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Resources/Icon128.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9eb6f69963ee569b0a8a4446e21f69d0a93205caf07b30cc37b1fddb62599602 +size 15543 diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/GenericGraphEditor.Build.cs b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/GenericGraphEditor.Build.cs new file mode 100644 index 00000000..aa57f0ce --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/GenericGraphEditor.Build.cs @@ -0,0 +1,62 @@ +using UnrealBuildTool; + +public class GenericGraphEditor : ModuleRules +{ + public GenericGraphEditor(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + bLegacyPublicIncludePaths = false; + ShadowVariableWarningLevel = WarningLevel.Error; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + } + ); + + PrivateIncludePaths.AddRange( + new string[] { + // ... add other private include paths required here ... + "GenericGraphEditor/Private", + "GenericGraphEditor/Public", + } + ); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "UnrealEd", + // ... add other public dependencies that you statically link with here ... + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "GenericGraphRuntime", + "AssetTools", + "Slate", + "InputCore", + "SlateCore", + "GraphEditor", + "PropertyEditor", + "EditorStyle", + "Kismet", + "KismetWidgets", + "ApplicationCore", + "ToolMenus", + // ... add private dependencies that you statically link with here ... + } + ); + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + } + ); + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AssetTypeActions_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AssetTypeActions_GenericGraph.cpp new file mode 100644 index 00000000..643911c7 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AssetTypeActions_GenericGraph.cpp @@ -0,0 +1,48 @@ +#include "AssetTypeActions_GenericGraph.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/AssetEditor_GenericGraph.h" + +#define LOCTEXT_NAMESPACE "AssetTypeActions_GenericGraph" + +FAssetTypeActions_GenericGraph::FAssetTypeActions_GenericGraph(EAssetTypeCategories::Type InAssetCategory) + : MyAssetCategory(InAssetCategory) +{ +} + +FText FAssetTypeActions_GenericGraph::GetName() const +{ + return LOCTEXT("FGenericGraphAssetTypeActionsName", "Generic Graph"); +} + +FColor FAssetTypeActions_GenericGraph::GetTypeColor() const +{ + return FColor(129, 196, 115); +} + +UClass* FAssetTypeActions_GenericGraph::GetSupportedClass() const +{ + return UGenericGraph::StaticClass(); +} + +void FAssetTypeActions_GenericGraph::OpenAssetEditor(const TArray& InObjects, TSharedPtr EditWithinLevelEditor) +{ + const EToolkitMode::Type Mode = EditWithinLevelEditor.IsValid() ? EToolkitMode::WorldCentric : EToolkitMode::Standalone; + + for (auto ObjIt = InObjects.CreateConstIterator(); ObjIt; ++ObjIt) + { + if (UGenericGraph* Graph = Cast(*ObjIt)) + { + TSharedRef NewGraphEditor(new FAssetEditor_GenericGraph()); + NewGraphEditor->InitGenericGraphAssetEditor(Mode, EditWithinLevelEditor, Graph); + } + } +} + +uint32 FAssetTypeActions_GenericGraph::GetCategories() +{ + return MyAssetCategory; +} + +////////////////////////////////////////////////////////////////////////// + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/AutoLayoutStrategy.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/AutoLayoutStrategy.cpp new file mode 100644 index 00000000..4d03bd87 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/AutoLayoutStrategy.cpp @@ -0,0 +1,96 @@ +#include "AutoLayout/AutoLayoutStrategy.h" +#include "Kismet/KismetMathLibrary.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" + +UAutoLayoutStrategy::UAutoLayoutStrategy() +{ + Settings = nullptr; + MaxIteration = 50; + OptimalDistance = 150; +} + +UAutoLayoutStrategy::~UAutoLayoutStrategy() +{ + +} + +FBox2D UAutoLayoutStrategy::GetNodeBound(UEdGraphNode* EdNode) +{ + int32 NodeWidth = GetNodeWidth(Cast(EdNode)); + int32 NodeHeight = GetNodeHeight(Cast(EdNode)); + FVector2D Min(EdNode->NodePosX, EdNode->NodePosY); + FVector2D Max(EdNode->NodePosX + NodeWidth, EdNode->NodePosY + NodeHeight); + return FBox2D(Min, Max); +} + +FBox2D UAutoLayoutStrategy::GetActualBounds(UGenericGraphNode* RootNode) +{ + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + + FBox2D Rtn = GetNodeBound(EdGraph->NodeMap[RootNode]); + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + Rtn += GetNodeBound(EdGraph->NodeMap[Node]); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } + return Rtn; +} + +void UAutoLayoutStrategy::RandomLayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& Bound) +{ + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[Node]; + + EdNode_Node->NodePosX = UKismetMathLibrary::RandomFloatInRange(Bound.Min.X, Bound.Max.X); + EdNode_Node->NodePosY = UKismetMathLibrary::RandomFloatInRange(Bound.Min.Y, Bound.Max.Y); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } +} + +int32 UAutoLayoutStrategy::GetNodeWidth(UEdNode_GenericGraphNode* EdNode) +{ + return EdNode->SEdNode->GetCachedGeometry().GetLocalSize().X; +} + +int32 UAutoLayoutStrategy::GetNodeHeight(UEdNode_GenericGraphNode* EdNode) +{ + return EdNode->SEdNode->GetCachedGeometry().GetLocalSize().Y; +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/ForceDirectedLayoutStrategy.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/ForceDirectedLayoutStrategy.cpp new file mode 100644 index 00000000..8d66bfcb --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/ForceDirectedLayoutStrategy.cpp @@ -0,0 +1,162 @@ +#include "AutoLayout/ForceDirectedLayoutStrategy.h" + +static inline float CoolDown(float Temp, float CoolDownRate) +{ + if (Temp < .01) return .01; + return Temp - (Temp / CoolDownRate); +} + +static inline float GetAttractForce(float X, float K) +{ + return (X * X) / K; +} + +static inline float GetRepulseForce(float X, float k) +{ + return X != 0 ? k * k / X : TNumericLimits::Max(); +} + +UForceDirectedLayoutStrategy::UForceDirectedLayoutStrategy() +{ + bRandomInit = false; + CoolDownRate = 10; + InitTemperature = 10.f; +} + +UForceDirectedLayoutStrategy::~UForceDirectedLayoutStrategy() +{ + +} + +void UForceDirectedLayoutStrategy::Layout(UEdGraph* _EdGraph) +{ + EdGraph = Cast(_EdGraph); + check(EdGraph != nullptr); + + EdGraph->RebuildGenericGraph(); + Graph = EdGraph->GetGenericGraph(); + check(Graph != nullptr); + + if (Settings != nullptr) + { + OptimalDistance = Settings->OptimalDistance; + MaxIteration = Settings->MaxIteration; + bRandomInit = Settings->bRandomInit; + } + + FBox2D PreTreeBound(ForceInitToZero); + for (int32 i = 0; i < Graph->RootNodes.Num(); ++i) + { + PreTreeBound = LayoutOneTree(Graph->RootNodes[i], PreTreeBound); + } +} + +FBox2D UForceDirectedLayoutStrategy::LayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& PreTreeBound) +{ + float Temp = InitTemperature; + FBox2D TreeBound = GetActualBounds(RootNode); + TreeBound.Min.X += PreTreeBound.Max.X + OptimalDistance; + TreeBound.Max.X += PreTreeBound.Max.X + OptimalDistance; + + if (bRandomInit) + { + RandomLayoutOneTree(RootNode, TreeBound); + } + + float RepulseForce, AttractForce, Distance; + FVector2D Diff; + + TMap NodeToDisplacement; + + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + NodeToDisplacement.Add(EdGraph->Nodes[i], FVector2D(0.f, 0.f)); + } + + for (int32 IterrationNum = 0; IterrationNum < MaxIteration; ++IterrationNum) + { + // Calculate the repulsive forces. + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + for (int32 j = 0; j < EdGraph->Nodes.Num(); ++j) + { + if (i == j) + continue; + Diff.X = EdGraph->Nodes[i]->NodePosX - EdGraph->Nodes[j]->NodePosX; + Diff.Y = EdGraph->Nodes[i]->NodePosY - EdGraph->Nodes[j]->NodePosY; + Distance = Diff.Size(); + Diff.Normalize(); + + RepulseForce = Distance > 2 * OptimalDistance ? 0 : GetRepulseForce(Distance, OptimalDistance); + + NodeToDisplacement[EdGraph->Nodes[i]] += Diff * RepulseForce; + } + } + + // Calculate the attractive forces. + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int32 i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + UEdNode_GenericGraphNode* EdNode_ParentNode = EdGraph->NodeMap[Node]; + + for (int32 j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + + UEdNode_GenericGraphNode* EdNode_ChildNode = EdGraph->NodeMap[Node->ChildrenNodes[j]]; + + Diff.X = EdNode_ChildNode->NodePosX - EdNode_ParentNode->NodePosY; + Diff.Y = EdNode_ChildNode->NodePosY - EdNode_ParentNode->NodePosY; + Distance = Diff.Size(); + Diff.Normalize(); + + AttractForce = GetAttractForce(Distance, OptimalDistance); + + NodeToDisplacement[EdNode_ParentNode] += Distance * Diff; + NodeToDisplacement[EdNode_ChildNode] -= Distance * Diff; + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } + + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + UEdGraphNode* EdNode = EdGraph->Nodes[i]; + Distance = NodeToDisplacement[EdNode].Size(); + NodeToDisplacement[EdNode].Normalize(); + + float Minimum = Distance < Temp ? Distance : Temp; + EdNode->NodePosX += NodeToDisplacement[EdNode].X * Minimum; + EdNode->NodePosY += NodeToDisplacement[EdNode].Y * Minimum; + } + + Temp = CoolDown(Temp, CoolDownRate); + } + + FBox2D ActualBound = GetActualBounds(RootNode); + + FVector2D Center = ActualBound.GetCenter(); + FVector2D TreeCenter = TreeBound.GetCenter(); + + FVector2D Scale = (TreeBound.Max - TreeBound.Min) / (ActualBound.Max - ActualBound.Min); + + for (int32 i = 0; i < EdGraph->Nodes.Num(); ++i) + { + UEdGraphNode* EdNode = EdGraph->Nodes[i]; + EdNode->NodePosX = TreeCenter.X + Scale.X * (EdNode->NodePosX - Center.X); + EdNode->NodePosY = TreeCenter.Y + Scale.Y * (EdNode->NodePosY - Center.Y); + } + + return TreeBound; +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/TreeLayoutStrategy.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/TreeLayoutStrategy.cpp new file mode 100644 index 00000000..93163208 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/AutoLayout/TreeLayoutStrategy.cpp @@ -0,0 +1,241 @@ +#include "AutoLayout/TreeLayoutStrategy.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" + +UTreeLayoutStrategy::UTreeLayoutStrategy() +{ +} + +UTreeLayoutStrategy::~UTreeLayoutStrategy() +{ + +} + +void UTreeLayoutStrategy::Layout(UEdGraph* _EdGraph) +{ + EdGraph = Cast(_EdGraph); + check(EdGraph != nullptr); + + EdGraph->RebuildGenericGraph(); + Graph = EdGraph->GetGenericGraph(); + check(Graph != nullptr); + + bool bFirstPassOnly = false; + + if (Settings != nullptr) + { + OptimalDistance = Settings->OptimalDistance; + MaxIteration = Settings->MaxIteration; + bFirstPassOnly = Settings->bFirstPassOnly; + } + + FVector2D Anchor(0.f, 0.f); + for (int32 i = 0; i < Graph->RootNodes.Num(); ++i) + { + UGenericGraphNode* RootNode = Graph->RootNodes[i]; + InitPass(RootNode, Anchor); + + if (!bFirstPassOnly) + { + for (int32 j = 0; j < MaxIteration; ++j) + { + bool HasConflict = ResolveConflictPass(RootNode); + if (!HasConflict) + { + break; + } + } + } + } + + for (int32 i = 0; i < Graph->RootNodes.Num(); ++i) + { + for (int32 j = 0; j < i; ++j) + { + ResolveConflict(Graph->RootNodes[j], Graph->RootNodes[i]); + } + } +} + +void UTreeLayoutStrategy::InitPass(UGenericGraphNode* RootNode, const FVector2D& Anchor) +{ + UEdNode_GenericGraphNode* EdNode_RootNode = EdGraph->NodeMap[RootNode]; + + FVector2D ChildAnchor(FVector2D(0.f, GetNodeHeight(EdNode_RootNode) + OptimalDistance + Anchor.Y)); + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + UGenericGraphNode* Child = RootNode->ChildrenNodes[i]; + UEdNode_GenericGraphNode* EdNode_ChildNode = EdGraph->NodeMap[Child]; + if (i > 0) + { + UGenericGraphNode* PreChild = RootNode->ChildrenNodes[i - 1]; + UEdNode_GenericGraphNode* EdNode_PreChildNode = EdGraph->NodeMap[PreChild]; + ChildAnchor.X += OptimalDistance + GetNodeWidth(EdNode_PreChildNode) / 2; + } + ChildAnchor.X += GetNodeWidth(EdNode_ChildNode) / 2; + InitPass(Child, ChildAnchor); + } + + float NodeWidth = GetNodeWidth(EdNode_RootNode); + + EdNode_RootNode->NodePosY = Anchor.Y; + if (RootNode->ChildrenNodes.Num() == 0) + { + EdNode_RootNode->NodePosX = Anchor.X - NodeWidth / 2; + } + else + { + UpdateParentNodePosition(RootNode); + } +} + +bool UTreeLayoutStrategy::ResolveConflictPass(UGenericGraphNode* Node) +{ + bool HasConflict = false; + for (int32 i = 0; i < Node->ChildrenNodes.Num(); ++i) + { + UGenericGraphNode* Child = Node->ChildrenNodes[i]; + if (ResolveConflictPass(Child)) + { + HasConflict = true; + } + } + + for (int32 i = 0; i < Node->ParentNodes.Num(); ++i) + { + UGenericGraphNode* ParentNode = Node->ParentNodes[i]; + for (int32 j = 0; j < ParentNode->ChildrenNodes.Num(); ++j) + { + UGenericGraphNode* LeftSibling = ParentNode->ChildrenNodes[j]; + if (LeftSibling == Node) + break; + if (ResolveConflict(LeftSibling, Node)) + { + HasConflict = true; + } + } + } + + return HasConflict; +} + +bool UTreeLayoutStrategy::ResolveConflict(UGenericGraphNode* LRoot, UGenericGraphNode* RRoot) +{ + TArray RightContour, LeftContour; + + GetRightContour(LRoot, 0, RightContour); + GetLeftContour(RRoot, 0, LeftContour); + + int32 MaxOverlapDistance = 0; + int32 Num = FMath::Min(LeftContour.Num(), RightContour.Num()); + for (int32 i = 0; i < Num; ++i) + { + if (RightContour.Contains(LeftContour[i]) || LeftContour.Contains(RightContour[i])) + break; + + int32 RightBound = RightContour[i]->NodePosX + GetNodeWidth(RightContour[i]); + int32 LeftBound = LeftContour[i]->NodePosX; + int32 Distance = RightBound + OptimalDistance - LeftBound; + if (Distance > MaxOverlapDistance) + { + MaxOverlapDistance = Distance; + } + } + + if (MaxOverlapDistance > 0) + { + ShiftSubTree(RRoot, FVector2D(MaxOverlapDistance, 0.f)); + + TArray ParentNodes = RRoot->ParentNodes; + TArray NextParentNodes; + while (ParentNodes.Num() != 0) + { + for (int32 i = 0; i < ParentNodes.Num(); ++i) + { + UpdateParentNodePosition(ParentNodes[i]); + + NextParentNodes.Append(ParentNodes[i]->ParentNodes); + } + + ParentNodes = NextParentNodes; + NextParentNodes.Reset(); + } + + return true; + } + else + { + return false; + } +} + +void UTreeLayoutStrategy::GetLeftContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour) +{ + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[RootNode]; + if (Level >= Contour.Num()) + { + Contour.Add(EdNode_Node); + } + else if (EdNode_Node->NodePosX < Contour[Level]->NodePosX) + { + Contour[Level] = EdNode_Node; + } + + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + GetLeftContour(RootNode->ChildrenNodes[i], Level + 1, Contour); + } +} + +void UTreeLayoutStrategy::GetRightContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour) +{ + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[RootNode]; + if (Level >= Contour.Num()) + { + Contour.Add(EdNode_Node); + } + else if (EdNode_Node->NodePosX + GetNodeWidth(EdNode_Node) > Contour[Level]->NodePosX + GetNodeWidth(Contour[Level])) + { + Contour[Level] = EdNode_Node; + } + + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + GetRightContour(RootNode->ChildrenNodes[i], Level + 1, Contour); + } +} + +void UTreeLayoutStrategy::ShiftSubTree(UGenericGraphNode* RootNode, const FVector2D& Offset) +{ + UEdNode_GenericGraphNode* EdNode_Node = EdGraph->NodeMap[RootNode]; + EdNode_Node->NodePosX += Offset.X; + EdNode_Node->NodePosY += Offset.Y; + + for (int32 i = 0; i < RootNode->ChildrenNodes.Num(); ++i) + { + UGenericGraphNode* Child = RootNode->ChildrenNodes[i]; + + if (Child->ParentNodes[0] == RootNode) + { + ShiftSubTree(RootNode->ChildrenNodes[i], Offset); + } + } +} + +void UTreeLayoutStrategy::UpdateParentNodePosition(UGenericGraphNode* ParentNode) +{ + UEdNode_GenericGraphNode* EdNode_ParentNode = EdGraph->NodeMap[ParentNode]; + if (ParentNode->ChildrenNodes.Num() % 2 == 0) + { + UEdNode_GenericGraphNode* FirstChild = EdGraph->NodeMap[ParentNode->ChildrenNodes[0]]; + UEdNode_GenericGraphNode* LastChild = EdGraph->NodeMap[ParentNode->ChildrenNodes.Last()]; + float LeftBound = FirstChild->NodePosX; + float RightBound = LastChild->NodePosX + GetNodeWidth(LastChild); + EdNode_ParentNode->NodePosX = (LeftBound + RightBound) / 2 - GetNodeWidth(EdNode_ParentNode) / 2; + } + else + { + UEdNode_GenericGraphNode* MidChild = EdGraph->NodeMap[ParentNode->ChildrenNodes[ParentNode->ChildrenNodes.Num() / 2]]; + EdNode_ParentNode->NodePosX = MidChild->NodePosX + GetNodeWidth(MidChild) / 2 - GetNodeWidth(EdNode_ParentNode) / 2; + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.cpp new file mode 100644 index 00000000..1d9127cc --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.cpp @@ -0,0 +1,46 @@ +#include "GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h" +#include "GenericGraphAssetEditor/AssetEditor_GenericGraph.h" +#include "GenericGraphAssetEditor/EditorCommands_GenericGraph.h" +#include "GenericGraphAssetEditor/GenericGraphEditorStyle.h" + +#define LOCTEXT_NAMESPACE "AssetEditorToolbar_GenericGraph" + +void FAssetEditorToolbar_GenericGraph::AddGenericGraphToolbar(TSharedPtr Extender) +{ + check(GenericGraphEditor.IsValid()); + TSharedPtr GenericGraphEditorPtr = GenericGraphEditor.Pin(); + + TSharedPtr ToolbarExtender = MakeShareable(new FExtender); + ToolbarExtender->AddToolBarExtension("Asset", EExtensionHook::After, GenericGraphEditorPtr->GetToolkitCommands(), FToolBarExtensionDelegate::CreateSP( this, &FAssetEditorToolbar_GenericGraph::FillGenericGraphToolbar )); + GenericGraphEditorPtr->AddToolbarExtender(ToolbarExtender); +} + +void FAssetEditorToolbar_GenericGraph::FillGenericGraphToolbar(FToolBarBuilder& ToolbarBuilder) +{ + check(GenericGraphEditor.IsValid()); + TSharedPtr GenericGraphEditorPtr = GenericGraphEditor.Pin(); + + ToolbarBuilder.BeginSection("Generic Graph"); + { + ToolbarBuilder.AddToolBarButton(FEditorCommands_GenericGraph::Get().GraphSettings, + NAME_None, + LOCTEXT("GraphSettings_Label", "Graph Settings"), + LOCTEXT("GraphSettings_ToolTip", "Show the Graph Settings"), + FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.GameSettings")); + } + ToolbarBuilder.EndSection(); + + ToolbarBuilder.BeginSection("Util"); + { + ToolbarBuilder.AddToolBarButton(FEditorCommands_GenericGraph::Get().AutoArrange, + NAME_None, + LOCTEXT("AutoArrange_Label", "Auto Arrange"), + LOCTEXT("AutoArrange_ToolTip", "Auto arrange nodes, not perfect, but still handy"), + FSlateIcon(FGenericGraphEditorStyle::GetStyleSetName(), "GenericGraphEditor.AutoArrange")); + } + ToolbarBuilder.EndSection(); + +} + + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditor_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditor_GenericGraph.cpp new file mode 100644 index 00000000..68507d39 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetEditor_GenericGraph.cpp @@ -0,0 +1,819 @@ +#include "GenericGraphAssetEditor/AssetEditor_GenericGraph.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h" +#include "GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h" +#include "GenericGraphAssetEditor/EditorCommands_GenericGraph.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "AssetToolsModule.h" +#include "HAL/PlatformApplicationMisc.h" +#include "Framework/Commands/GenericCommands.h" +#include "GraphEditorActions.h" +#include "IDetailsView.h" +#include "PropertyEditorModule.h" +#include "Editor/UnrealEd/Public/Kismet2/BlueprintEditorUtils.h" +#include "Kismet2/KismetEditorUtilities.h" +#include "EdGraphUtilities.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "AutoLayout/TreeLayoutStrategy.h" +#include "AutoLayout/ForceDirectedLayoutStrategy.h" + +#define LOCTEXT_NAMESPACE "AssetEditor_GenericGraph" + +const FName GenericGraphEditorAppName = FName(TEXT("GenericGraphEditorApp")); + +struct FGenericGraphAssetEditorTabs +{ + // Tab identifiers + static const FName GenericGraphPropertyID; + static const FName ViewportID; + static const FName GenericGraphEditorSettingsID; +}; + +////////////////////////////////////////////////////////////////////////// + +const FName FGenericGraphAssetEditorTabs::GenericGraphPropertyID(TEXT("GenericGraphProperty")); +const FName FGenericGraphAssetEditorTabs::ViewportID(TEXT("Viewport")); +const FName FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID(TEXT("GenericGraphEditorSettings")); + +////////////////////////////////////////////////////////////////////////// + +FAssetEditor_GenericGraph::FAssetEditor_GenericGraph() +{ + EditingGraph = nullptr; + + GenricGraphEditorSettings = NewObject(UGenericGraphEditorSettings::StaticClass()); + +#if ENGINE_MAJOR_VERSION < 5 + OnPackageSavedDelegateHandle = UPackage::PackageSavedEvent.AddRaw(this, &FAssetEditor_GenericGraph::OnPackageSaved); +#else // #if ENGINE_MAJOR_VERSION < 5 + OnPackageSavedDelegateHandle = UPackage::PackageSavedWithContextEvent.AddRaw(this, &FAssetEditor_GenericGraph::OnPackageSavedWithContext); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 +} + +FAssetEditor_GenericGraph::~FAssetEditor_GenericGraph() +{ +#if ENGINE_MAJOR_VERSION < 5 + UPackage::PackageSavedEvent.Remove(OnPackageSavedDelegateHandle); +#else // #if ENGINE_MAJOR_VERSION < 5 + UPackage::PackageSavedWithContextEvent.Remove(OnPackageSavedDelegateHandle); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 +} + +void FAssetEditor_GenericGraph::InitGenericGraphAssetEditor(const EToolkitMode::Type Mode, const TSharedPtr< IToolkitHost >& InitToolkitHost, UGenericGraph* Graph) +{ + EditingGraph = Graph; + CreateEdGraph(); + + FGenericCommands::Register(); + FGraphEditorCommands::Register(); + FEditorCommands_GenericGraph::Register(); + + if (!ToolbarBuilder.IsValid()) + { + ToolbarBuilder = MakeShareable(new FAssetEditorToolbar_GenericGraph(SharedThis(this))); + } + + BindCommands(); + + CreateInternalWidgets(); + + TSharedPtr ToolbarExtender = MakeShareable(new FExtender); + + ToolbarBuilder->AddGenericGraphToolbar(ToolbarExtender); + + // Layout + const TSharedRef StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_GenericGraphEditor_Layout_v1") + ->AddArea + ( + FTabManager::NewPrimaryArea()->SetOrientation(Orient_Vertical) +#if ENGINE_MAJOR_VERSION < 5 + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.1f) + ->AddTab(GetToolbarTabId(), ETabState::OpenedTab)->SetHideTabWell(true) + ) +#endif // #if ENGINE_MAJOR_VERSION < 5 + ->Split + ( + FTabManager::NewSplitter()->SetOrientation(Orient_Horizontal)->SetSizeCoefficient(0.9f) + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.65f) + ->AddTab(FGenericGraphAssetEditorTabs::ViewportID, ETabState::OpenedTab)->SetHideTabWell(true) + ) + ->Split + ( + FTabManager::NewSplitter()->SetOrientation(Orient_Vertical) + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.7f) + ->AddTab(FGenericGraphAssetEditorTabs::GenericGraphPropertyID, ETabState::OpenedTab)->SetHideTabWell(true) + ) + ->Split + ( + FTabManager::NewStack() + ->SetSizeCoefficient(0.3f) + ->AddTab(FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID, ETabState::OpenedTab) + ) + ) + ) + ); + + const bool bCreateDefaultStandaloneMenu = true; + const bool bCreateDefaultToolbar = true; + FAssetEditorToolkit::InitAssetEditor(Mode, InitToolkitHost, GenericGraphEditorAppName, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, EditingGraph, false); + + RegenerateMenusAndToolbars(); +} + +void FAssetEditor_GenericGraph::RegisterTabSpawners(const TSharedRef& InTabManager) +{ + WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_GenericGraphEditor", "Generic Graph Editor")); + auto WorkspaceMenuCategoryRef = WorkspaceMenuCategory.ToSharedRef(); + + FAssetEditorToolkit::RegisterTabSpawners(InTabManager); + + InTabManager->RegisterTabSpawner(FGenericGraphAssetEditorTabs::ViewportID, FOnSpawnTab::CreateSP(this, &FAssetEditor_GenericGraph::SpawnTab_Viewport)) + .SetDisplayName(LOCTEXT("GraphCanvasTab", "Viewport")) + .SetGroup(WorkspaceMenuCategoryRef) + .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "GraphEditor.EventGraph_16x")); + + InTabManager->RegisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphPropertyID, FOnSpawnTab::CreateSP(this, &FAssetEditor_GenericGraph::SpawnTab_Details)) + .SetDisplayName(LOCTEXT("DetailsTab", "Property")) + .SetGroup(WorkspaceMenuCategoryRef) + .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details")); + + InTabManager->RegisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID, FOnSpawnTab::CreateSP(this, &FAssetEditor_GenericGraph::SpawnTab_EditorSettings)) + .SetDisplayName(LOCTEXT("EditorSettingsTab", "Generic Graph Editor Setttings")) + .SetGroup(WorkspaceMenuCategoryRef) + .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details")); +} + +void FAssetEditor_GenericGraph::UnregisterTabSpawners(const TSharedRef& InTabManager) +{ + FAssetEditorToolkit::UnregisterTabSpawners(InTabManager); + + InTabManager->UnregisterTabSpawner(FGenericGraphAssetEditorTabs::ViewportID); + InTabManager->UnregisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphPropertyID); + InTabManager->UnregisterTabSpawner(FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID); +} + +FName FAssetEditor_GenericGraph::GetToolkitFName() const +{ + return FName("FGenericGraphEditor"); +} + +FText FAssetEditor_GenericGraph::GetBaseToolkitName() const +{ + return LOCTEXT("GenericGraphEditorAppLabel", "Generic Graph Editor"); +} + +FText FAssetEditor_GenericGraph::GetToolkitName() const +{ + const bool bDirtyState = EditingGraph->GetOutermost()->IsDirty(); + + FFormatNamedArguments Args; + Args.Add(TEXT("GenericGraphName"), FText::FromString(EditingGraph->GetName())); + Args.Add(TEXT("DirtyState"), bDirtyState ? FText::FromString(TEXT("*")) : FText::GetEmpty()); + return FText::Format(LOCTEXT("GenericGraphEditorToolkitName", "{GenericGraphName}{DirtyState}"), Args); +} + +FText FAssetEditor_GenericGraph::GetToolkitToolTipText() const +{ + return FAssetEditorToolkit::GetToolTipTextForObject(EditingGraph); +} + +FLinearColor FAssetEditor_GenericGraph::GetWorldCentricTabColorScale() const +{ + return FLinearColor::White; +} + +FString FAssetEditor_GenericGraph::GetWorldCentricTabPrefix() const +{ + return TEXT("GenericGraphEditor"); +} + +FString FAssetEditor_GenericGraph::GetDocumentationLink() const +{ + return TEXT(""); +} + +void FAssetEditor_GenericGraph::SaveAsset_Execute() +{ + if (EditingGraph != nullptr) + { + RebuildGenericGraph(); + } + + FAssetEditorToolkit::SaveAsset_Execute(); +} + +void FAssetEditor_GenericGraph::AddReferencedObjects(FReferenceCollector& Collector) +{ + Collector.AddReferencedObject(EditingGraph); + Collector.AddReferencedObject(EditingGraph->EdGraph); +} + +UGenericGraphEditorSettings* FAssetEditor_GenericGraph::GetSettings() const +{ + return GenricGraphEditorSettings; +} + +TSharedRef FAssetEditor_GenericGraph::SpawnTab_Viewport(const FSpawnTabArgs& Args) +{ + check(Args.GetTabId() == FGenericGraphAssetEditorTabs::ViewportID); + + TSharedRef SpawnedTab = SNew(SDockTab) + .Label(LOCTEXT("ViewportTab_Title", "Viewport")); + + if (ViewportWidget.IsValid()) + { + SpawnedTab->SetContent(ViewportWidget.ToSharedRef()); + } + + return SpawnedTab; +} + +TSharedRef FAssetEditor_GenericGraph::SpawnTab_Details(const FSpawnTabArgs& Args) +{ + check(Args.GetTabId() == FGenericGraphAssetEditorTabs::GenericGraphPropertyID); + + return SNew(SDockTab) +#if ENGINE_MAJOR_VERSION < 5 + .Icon(FAppStyle::GetBrush("LevelEditor.Tabs.Details")) +#endif // #if ENGINE_MAJOR_VERSION < 5 + .Label(LOCTEXT("Details_Title", "Property")) + [ + PropertyWidget.ToSharedRef() + ]; +} + +TSharedRef FAssetEditor_GenericGraph::SpawnTab_EditorSettings(const FSpawnTabArgs& Args) +{ + check(Args.GetTabId() == FGenericGraphAssetEditorTabs::GenericGraphEditorSettingsID); + + return SNew(SDockTab) +#if ENGINE_MAJOR_VERSION < 5 + .Icon(FAppStyle::GetBrush("LevelEditor.Tabs.Details")) +#endif // #if ENGINE_MAJOR_VERSION < 5 + .Label(LOCTEXT("EditorSettings_Title", "Generic Graph Editor Setttings")) + [ + EditorSettingsWidget.ToSharedRef() + ]; +} + +void FAssetEditor_GenericGraph::CreateInternalWidgets() +{ + ViewportWidget = CreateViewportWidget(); + + FDetailsViewArgs Args; + Args.bHideSelectionTip = true; + Args.NotifyHook = this; + + FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked("PropertyEditor"); + PropertyWidget = PropertyModule.CreateDetailView(Args); + PropertyWidget->SetObject(EditingGraph); + PropertyWidget->OnFinishedChangingProperties().AddSP(this, &FAssetEditor_GenericGraph::OnFinishedChangingProperties); + + EditorSettingsWidget = PropertyModule.CreateDetailView(Args); + EditorSettingsWidget->SetObject(GenricGraphEditorSettings); +} + +TSharedRef FAssetEditor_GenericGraph::CreateViewportWidget() +{ + FGraphAppearanceInfo AppearanceInfo; + AppearanceInfo.CornerText = LOCTEXT("AppearanceCornerText_GenericGraph", "Generic Graph"); + + CreateCommandList(); + + SGraphEditor::FGraphEditorEvents InEvents; + InEvents.OnSelectionChanged = SGraphEditor::FOnSelectionChanged::CreateSP(this, &FAssetEditor_GenericGraph::OnSelectedNodesChanged); + InEvents.OnNodeDoubleClicked = FSingleNodeEvent::CreateSP(this, &FAssetEditor_GenericGraph::OnNodeDoubleClicked); + + return SNew(SGraphEditor) + .AdditionalCommands(GraphEditorCommands) + .IsEditable(true) + .Appearance(AppearanceInfo) + .GraphToEdit(EditingGraph->EdGraph) + .GraphEvents(InEvents) + .AutoExpandActionMenu(true) + .ShowGraphStateOverlay(false); +} + +void FAssetEditor_GenericGraph::BindCommands() +{ + ToolkitCommands->MapAction(FEditorCommands_GenericGraph::Get().GraphSettings, + FExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::GraphSettings), + FCanExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::CanGraphSettings) + ); + + ToolkitCommands->MapAction(FEditorCommands_GenericGraph::Get().AutoArrange, + FExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::AutoArrange), + FCanExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::CanAutoArrange) + ); +} + +void FAssetEditor_GenericGraph::CreateEdGraph() +{ + if (EditingGraph->EdGraph == nullptr) + { + EditingGraph->EdGraph = CastChecked(FBlueprintEditorUtils::CreateNewGraph(EditingGraph, NAME_None, UEdGraph_GenericGraph::StaticClass(), UAssetGraphSchema_GenericGraph::StaticClass())); + EditingGraph->EdGraph->bAllowDeletion = false; + + // Give the schema a chance to fill out any required nodes (like the results node) + const UEdGraphSchema* Schema = EditingGraph->EdGraph->GetSchema(); + Schema->CreateDefaultNodesForGraph(*EditingGraph->EdGraph); + } +} + +void FAssetEditor_GenericGraph::CreateCommandList() +{ + if (GraphEditorCommands.IsValid()) + { + return; + } + + GraphEditorCommands = MakeShareable(new FUICommandList); + + // Can't use CreateSP here because derived editor are already implementing TSharedFromThis + // however it should be safe, since commands are being used only within this editor + // if it ever crashes, this function will have to go away and be reimplemented in each derived class + + GraphEditorCommands->MapAction(FEditorCommands_GenericGraph::Get().GraphSettings, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::GraphSettings), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanGraphSettings)); + + GraphEditorCommands->MapAction(FEditorCommands_GenericGraph::Get().AutoArrange, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::AutoArrange), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanAutoArrange)); + + GraphEditorCommands->MapAction(FGenericCommands::Get().SelectAll, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::SelectAllNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanSelectAllNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Delete, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::DeleteSelectedNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanDeleteNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Copy, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CopySelectedNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanCopyNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Cut, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CutSelectedNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanCutNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Paste, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::PasteNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanPasteNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Duplicate, + FExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::DuplicateNodes), + FCanExecuteAction::CreateRaw(this, &FAssetEditor_GenericGraph::CanDuplicateNodes) + ); + + GraphEditorCommands->MapAction(FGenericCommands::Get().Rename, + FExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::OnRenameNode), + FCanExecuteAction::CreateSP(this, &FAssetEditor_GenericGraph::CanRenameNodes) + ); +} + +TSharedPtr FAssetEditor_GenericGraph::GetCurrGraphEditor() const +{ + return ViewportWidget; +} + +FGraphPanelSelectionSet FAssetEditor_GenericGraph::GetSelectedNodes() const +{ + FGraphPanelSelectionSet CurrentSelection; + TSharedPtr FocusedGraphEd = GetCurrGraphEditor(); + if (FocusedGraphEd.IsValid()) + { + CurrentSelection = FocusedGraphEd->GetSelectedNodes(); + } + + return CurrentSelection; +} + +void FAssetEditor_GenericGraph::RebuildGenericGraph() +{ + if (EditingGraph == nullptr) + { + LOG_WARNING(TEXT("FGenericGraphAssetEditor::RebuildGenericGraph EditingGraph is nullptr")); + return; + } + + UEdGraph_GenericGraph* EdGraph = Cast(EditingGraph->EdGraph); + check(EdGraph != nullptr); + + EdGraph->RebuildGenericGraph(); +} + +void FAssetEditor_GenericGraph::SelectAllNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (CurrentGraphEditor.IsValid()) + { + CurrentGraphEditor->SelectAllNodes(); + } +} + +bool FAssetEditor_GenericGraph::CanSelectAllNodes() +{ + return true; +} + +void FAssetEditor_GenericGraph::DeleteSelectedNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return; + } + + const FScopedTransaction Transaction(FGenericCommands::Get().Delete->GetDescription()); + + CurrentGraphEditor->GetCurrentGraph()->Modify(); + + const FGraphPanelSelectionSet SelectedNodes = CurrentGraphEditor->GetSelectedNodes(); + CurrentGraphEditor->ClearSelectionSet(); + + for (FGraphPanelSelectionSet::TConstIterator NodeIt(SelectedNodes); NodeIt; ++NodeIt) + { + UEdGraphNode* EdNode = Cast(*NodeIt); + if (EdNode == nullptr || !EdNode->CanUserDeleteNode()) + continue;; + + if (UEdNode_GenericGraphNode* EdNode_Node = Cast(EdNode)) + { + EdNode_Node->Modify(); + + const UEdGraphSchema* Schema = EdNode_Node->GetSchema(); + if (Schema != nullptr) + { + Schema->BreakNodeLinks(*EdNode_Node); + } + + EdNode_Node->DestroyNode(); + } + else + { + EdNode->Modify(); + EdNode->DestroyNode(); + } + } +} + +bool FAssetEditor_GenericGraph::CanDeleteNodes() +{ + // If any of the nodes can be deleted then we should allow deleting + const FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node != nullptr && Node->CanUserDeleteNode()) + { + return true; + } + } + + return false; +} + +void FAssetEditor_GenericGraph::DeleteSelectedDuplicatableNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return; + } + + const FGraphPanelSelectionSet OldSelectedNodes = CurrentGraphEditor->GetSelectedNodes(); + CurrentGraphEditor->ClearSelectionSet(); + + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(OldSelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node && Node->CanDuplicateNode()) + { + CurrentGraphEditor->SetNodeSelection(Node, true); + } + } + + // Delete the duplicatable nodes + DeleteSelectedNodes(); + + CurrentGraphEditor->ClearSelectionSet(); + + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(OldSelectedNodes); SelectedIter; ++SelectedIter) + { + if (UEdGraphNode* Node = Cast(*SelectedIter)) + { + CurrentGraphEditor->SetNodeSelection(Node, true); + } + } +} + +void FAssetEditor_GenericGraph::CutSelectedNodes() +{ + CopySelectedNodes(); + DeleteSelectedDuplicatableNodes(); +} + +bool FAssetEditor_GenericGraph::CanCutNodes() +{ + return CanCopyNodes() && CanDeleteNodes(); +} + +void FAssetEditor_GenericGraph::CopySelectedNodes() +{ + // Export the selected nodes and place the text on the clipboard + FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + + FString ExportedText; + + for (FGraphPanelSelectionSet::TIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node == nullptr) + { + SelectedIter.RemoveCurrent(); + continue; + } + + if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(*SelectedIter)) + { + UEdNode_GenericGraphNode* StartNode = EdNode_Edge->GetStartNode(); + UEdNode_GenericGraphNode* EndNode = EdNode_Edge->GetEndNode(); + + if (!SelectedNodes.Contains(StartNode) || !SelectedNodes.Contains(EndNode)) + { + SelectedIter.RemoveCurrent(); + continue; + } + } + + Node->PrepareForCopying(); + } + + FEdGraphUtilities::ExportNodesToText(SelectedNodes, ExportedText); + FPlatformApplicationMisc::ClipboardCopy(*ExportedText); +} + +bool FAssetEditor_GenericGraph::CanCopyNodes() +{ + // If any of the nodes can be duplicated then we should allow copying + const FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + for (FGraphPanelSelectionSet::TConstIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter) + { + UEdGraphNode* Node = Cast(*SelectedIter); + if (Node && Node->CanDuplicateNode()) + { + return true; + } + } + + return false; +} + +void FAssetEditor_GenericGraph::PasteNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (CurrentGraphEditor.IsValid()) + { + PasteNodesHere(CurrentGraphEditor->GetPasteLocation()); + } +} + +void FAssetEditor_GenericGraph::PasteNodesHere(const FVector2D& Location) +{ + // Find the graph editor with focus + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return; + } + // Select the newly pasted stuff + UEdGraph* EdGraph = CurrentGraphEditor->GetCurrentGraph(); + + { + const FScopedTransaction Transaction(FGenericCommands::Get().Paste->GetDescription()); + EdGraph->Modify(); + + // Clear the selection set (newly pasted stuff will be selected) + CurrentGraphEditor->ClearSelectionSet(); + + // Grab the text to paste from the clipboard. + FString TextToImport; + FPlatformApplicationMisc::ClipboardPaste(TextToImport); + + // Import the nodes + TSet PastedNodes; + FEdGraphUtilities::ImportNodesFromText(EdGraph, TextToImport, PastedNodes); + + //Average position of nodes so we can move them while still maintaining relative distances to each other + FVector2D AvgNodePosition(0.0f, 0.0f); + + for (TSet::TIterator It(PastedNodes); It; ++It) + { + UEdGraphNode* Node = *It; + AvgNodePosition.X += Node->NodePosX; + AvgNodePosition.Y += Node->NodePosY; + } + + float InvNumNodes = 1.0f / float(PastedNodes.Num()); + AvgNodePosition.X *= InvNumNodes; + AvgNodePosition.Y *= InvNumNodes; + + for (TSet::TIterator It(PastedNodes); It; ++It) + { + UEdGraphNode* Node = *It; + CurrentGraphEditor->SetNodeSelection(Node, true); + + Node->NodePosX = (Node->NodePosX - AvgNodePosition.X) + Location.X; + Node->NodePosY = (Node->NodePosY - AvgNodePosition.Y) + Location.Y; + + Node->SnapToGrid(16); + + // Give new node a different Guid from the old one + Node->CreateNewGuid(); + } + } + + // Update UI + CurrentGraphEditor->NotifyGraphChanged(); + + UObject* GraphOwner = EdGraph->GetOuter(); + if (GraphOwner) + { + GraphOwner->PostEditChange(); + GraphOwner->MarkPackageDirty(); + } +} + +bool FAssetEditor_GenericGraph::CanPasteNodes() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (!CurrentGraphEditor.IsValid()) + { + return false; + } + + FString ClipboardContent; + FPlatformApplicationMisc::ClipboardPaste(ClipboardContent); + + return FEdGraphUtilities::CanImportNodesFromText(CurrentGraphEditor->GetCurrentGraph(), ClipboardContent); +} + +void FAssetEditor_GenericGraph::DuplicateNodes() +{ + CopySelectedNodes(); + PasteNodes(); +} + +bool FAssetEditor_GenericGraph::CanDuplicateNodes() +{ + return CanCopyNodes(); +} + +void FAssetEditor_GenericGraph::GraphSettings() +{ + PropertyWidget->SetObject(EditingGraph); +} + +bool FAssetEditor_GenericGraph::CanGraphSettings() const +{ + return true; +} + +void FAssetEditor_GenericGraph::AutoArrange() +{ + UEdGraph_GenericGraph* EdGraph = Cast(EditingGraph->EdGraph); + check(EdGraph != nullptr); + + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorAutoArrange", "Generic Graph Editor: Auto Arrange")); + + EdGraph->Modify(); + + UAutoLayoutStrategy* LayoutStrategy = nullptr; + switch (GenricGraphEditorSettings->AutoLayoutStrategy) + { + case EAutoLayoutStrategy::Tree: + LayoutStrategy = NewObject(EdGraph, UTreeLayoutStrategy::StaticClass()); + break; + case EAutoLayoutStrategy::ForceDirected: + LayoutStrategy = NewObject(EdGraph, UForceDirectedLayoutStrategy::StaticClass()); + break; + default: + break; + } + + if (LayoutStrategy != nullptr) + { + LayoutStrategy->Settings = GenricGraphEditorSettings; + LayoutStrategy->Layout(EdGraph); + LayoutStrategy->ConditionalBeginDestroy(); + } + else + { + LOG_ERROR(TEXT("FAssetEditor_GenericGraph::AutoArrange LayoutStrategy is null.")); + } +} + +bool FAssetEditor_GenericGraph::CanAutoArrange() const +{ + return EditingGraph != nullptr && Cast(EditingGraph->EdGraph) != nullptr; +} + +void FAssetEditor_GenericGraph::OnRenameNode() +{ + TSharedPtr CurrentGraphEditor = GetCurrGraphEditor(); + if (CurrentGraphEditor.IsValid()) + { + const FGraphPanelSelectionSet SelectedNodes = GetSelectedNodes(); + for (FGraphPanelSelectionSet::TConstIterator NodeIt(SelectedNodes); NodeIt; ++NodeIt) + { + UEdGraphNode* SelectedNode = Cast(*NodeIt); + if (SelectedNode != NULL && SelectedNode->bCanRenameNode) + { + CurrentGraphEditor->IsNodeTitleVisible(SelectedNode, true); + break; + } + } + } +} + +bool FAssetEditor_GenericGraph::CanRenameNodes() const +{ + UEdGraph_GenericGraph* EdGraph = Cast(EditingGraph->EdGraph); + check(EdGraph != nullptr); + + UGenericGraph* Graph = EdGraph->GetGenericGraph(); + check(Graph != nullptr) + + return Graph->bCanRenameNode && GetSelectedNodes().Num() == 1; +} + +void FAssetEditor_GenericGraph::OnSelectedNodesChanged(const TSet& NewSelection) +{ + TArray Selection; + + for (UObject* SelectionEntry : NewSelection) + { + Selection.Add(SelectionEntry); + } + + if (Selection.Num() == 0) + { + PropertyWidget->SetObject(EditingGraph); + + } + else + { + PropertyWidget->SetObjects(Selection); + } +} + +void FAssetEditor_GenericGraph::OnNodeDoubleClicked(UEdGraphNode* Node) +{ + +} + +void FAssetEditor_GenericGraph::OnFinishedChangingProperties(const FPropertyChangedEvent& PropertyChangedEvent) +{ + if (EditingGraph == nullptr) + return; + + EditingGraph->EdGraph->GetSchema()->ForceVisualizationCacheClear(); +} + +#if ENGINE_MAJOR_VERSION < 5 +void FAssetEditor_GenericGraph::OnPackageSaved(const FString& PackageFileName, UObject* Outer) +{ + RebuildGenericGraph(); +} +#else // #if ENGINE_MAJOR_VERSION < 5 +void FAssetEditor_GenericGraph::OnPackageSavedWithContext(const FString& PackageFileName, UPackage* Package, FObjectPostSaveContext ObjectSaveContext) +{ + RebuildGenericGraph(); +} +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 + +void FAssetEditor_GenericGraph::RegisterToolbarTab(const TSharedRef& InTabManager) +{ + FAssetEditorToolkit::RegisterTabSpawners(InTabManager); +} + + +#undef LOCTEXT_NAMESPACE + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.cpp new file mode 100644 index 00000000..8c873f8d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.cpp @@ -0,0 +1,476 @@ +#include "GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h" +#include "ToolMenus.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h" +#include "GraphEditorActions.h" +#include "Framework/Commands/GenericCommands.h" +#include "AutoLayout/ForceDirectedLayoutStrategy.h" +#include "AutoLayout/TreeLayoutStrategy.h" + +#define LOCTEXT_NAMESPACE "AssetSchema_GenericGraph" + +int32 UAssetGraphSchema_GenericGraph::CurrentCacheRefreshID = 0; + + +class FNodeVisitorCycleChecker +{ +public: + /** Check whether a loop in the graph would be caused by linking the passed-in nodes */ + bool CheckForLoop(UEdGraphNode* StartNode, UEdGraphNode* EndNode) + { + + VisitedNodes.Add(StartNode); + + return TraverseNodes(EndNode); + } + +private: + bool TraverseNodes(UEdGraphNode* Node) + { + VisitedNodes.Add(Node); + + for (auto MyPin : Node->Pins) + { + if (MyPin->Direction == EGPD_Output) + { + for (auto OtherPin : MyPin->LinkedTo) + { + UEdGraphNode* OtherNode = OtherPin->GetOwningNode(); + if (VisitedNodes.Contains(OtherNode)) + { + // Only an issue if this is a back-edge + return false; + } + else if (!FinishedNodes.Contains(OtherNode)) + { + // Only should traverse if this node hasn't been traversed + if (!TraverseNodes(OtherNode)) + return false; + } + } + } + } + + VisitedNodes.Remove(Node); + FinishedNodes.Add(Node); + return true; + }; + + + TSet VisitedNodes; + TSet FinishedNodes; +}; + +UEdGraphNode* FAssetSchemaAction_GenericGraph_NewNode::PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode /*= true*/) +{ + UEdGraphNode* ResultNode = nullptr; + + if (NodeTemplate != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorNewNode", "Generic Graph Editor: New Node")); + ParentGraph->Modify(); + if (FromPin != nullptr) + FromPin->Modify(); + + NodeTemplate->Rename(nullptr, ParentGraph); + ParentGraph->AddNode(NodeTemplate, true, bSelectNewNode); + + NodeTemplate->CreateNewGuid(); + NodeTemplate->PostPlacedNewNode(); + NodeTemplate->AllocateDefaultPins(); + NodeTemplate->AutowireNewNode(FromPin); + + NodeTemplate->NodePosX = Location.X; + NodeTemplate->NodePosY = Location.Y; + + NodeTemplate->GenericGraphNode->SetFlags(RF_Transactional); + NodeTemplate->SetFlags(RF_Transactional); + + ResultNode = NodeTemplate; + } + + return ResultNode; +} + +void FAssetSchemaAction_GenericGraph_NewNode::AddReferencedObjects(FReferenceCollector& Collector) +{ + FEdGraphSchemaAction::AddReferencedObjects(Collector); + Collector.AddReferencedObject(NodeTemplate); +} + +UEdGraphNode* FAssetSchemaAction_GenericGraph_NewEdge::PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode /*= true*/) +{ + UEdGraphNode* ResultNode = nullptr; + + if (NodeTemplate != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorNewEdge", "Generic Graph Editor: New Edge")); + ParentGraph->Modify(); + if (FromPin != nullptr) + FromPin->Modify(); + + NodeTemplate->Rename(nullptr, ParentGraph); + ParentGraph->AddNode(NodeTemplate, true, bSelectNewNode); + + NodeTemplate->CreateNewGuid(); + NodeTemplate->PostPlacedNewNode(); + NodeTemplate->AllocateDefaultPins(); + NodeTemplate->AutowireNewNode(FromPin); + + NodeTemplate->NodePosX = Location.X; + NodeTemplate->NodePosY = Location.Y; + + NodeTemplate->GenericGraphEdge->SetFlags(RF_Transactional); + NodeTemplate->SetFlags(RF_Transactional); + + ResultNode = NodeTemplate; + } + + return ResultNode; +} + +void FAssetSchemaAction_GenericGraph_NewEdge::AddReferencedObjects(FReferenceCollector& Collector) +{ + FEdGraphSchemaAction::AddReferencedObjects(Collector); + Collector.AddReferencedObject(NodeTemplate); +} + +void UAssetGraphSchema_GenericGraph::GetBreakLinkToSubMenuActions(UToolMenu* Menu, UEdGraphPin* InGraphPin) +{ + // Make sure we have a unique name for every entry in the list + TMap< FString, uint32 > LinkTitleCount; + + FToolMenuSection& Section = Menu->FindOrAddSection("GenericGraphAssetGraphSchemaPinActions"); + + // Add all the links we could break from + for (TArray::TConstIterator Links(InGraphPin->LinkedTo); Links; ++Links) + { + UEdGraphPin* Pin = *Links; + FString TitleString = Pin->GetOwningNode()->GetNodeTitle(ENodeTitleType::ListView).ToString(); + FText Title = FText::FromString(TitleString); + if (Pin->PinName != TEXT("")) + { + TitleString = FString::Printf(TEXT("%s (%s)"), *TitleString, *Pin->PinName.ToString()); + + // Add name of connection if possible + FFormatNamedArguments Args; + Args.Add(TEXT("NodeTitle"), Title); + Args.Add(TEXT("PinName"), Pin->GetDisplayName()); + Title = FText::Format(LOCTEXT("BreakDescPin", "{NodeTitle} ({PinName})"), Args); + } + + uint32& Count = LinkTitleCount.FindOrAdd(TitleString); + + FText Description; + FFormatNamedArguments Args; + Args.Add(TEXT("NodeTitle"), Title); + Args.Add(TEXT("NumberOfNodes"), Count); + + if (Count == 0) + { + Description = FText::Format(LOCTEXT("BreakDesc", "Break link to {NodeTitle}"), Args); + } + else + { + Description = FText::Format(LOCTEXT("BreakDescMulti", "Break link to {NodeTitle} ({NumberOfNodes})"), Args); + } + ++Count; + + Section.AddMenuEntry(NAME_None, Description, Description, FSlateIcon(), FUIAction( + FExecuteAction::CreateUObject(this, &UAssetGraphSchema_GenericGraph::BreakSinglePinLink, const_cast(InGraphPin), *Links))); + } +} + +EGraphType UAssetGraphSchema_GenericGraph::GetGraphType(const UEdGraph* TestEdGraph) const +{ + return GT_StateMachine; +} + +void UAssetGraphSchema_GenericGraph::GetGraphContextActions(FGraphContextMenuBuilder& ContextMenuBuilder) const +{ + UGenericGraph* Graph = CastChecked(ContextMenuBuilder.CurrentGraph->GetOuter()); + + if (Graph->NodeType == nullptr) + { + return; + } + + const bool bNoParent = (ContextMenuBuilder.FromPin == NULL); + + const FText AddToolTip = LOCTEXT("NewGenericGraphNodeTooltip", "Add node here"); + + TSet > Visited; + + FText Desc = Graph->NodeType.GetDefaultObject()->ContextMenuName; + + if (Desc.IsEmpty()) + { + FString Title = Graph->NodeType->GetName(); + Title.RemoveFromEnd("_C"); + Desc = FText::FromString(Title); + } + + if (!Graph->NodeType->HasAnyClassFlags(CLASS_Abstract)) + { + TSharedPtr NewNodeAction(new FAssetSchemaAction_GenericGraph_NewNode(LOCTEXT("GenericGraphNodeAction", "Generic Graph Node"), Desc, AddToolTip, 0)); + NewNodeAction->NodeTemplate = NewObject(ContextMenuBuilder.OwnerOfTemporaries); + NewNodeAction->NodeTemplate->GenericGraphNode = NewObject(NewNodeAction->NodeTemplate, Graph->NodeType); + NewNodeAction->NodeTemplate->GenericGraphNode->Graph = Graph; + ContextMenuBuilder.AddAction(NewNodeAction); + + Visited.Add(Graph->NodeType); + } + + for (TObjectIterator It; It; ++It) + { + if (It->IsChildOf(Graph->NodeType) && !It->HasAnyClassFlags(CLASS_Abstract) && !Visited.Contains(*It)) + { + TSubclassOf NodeType = *It; + + if (It->GetName().StartsWith("REINST") || It->GetName().StartsWith("SKEL")) + continue; + + if (!Graph->GetClass()->IsChildOf(NodeType.GetDefaultObject()->CompatibleGraphType)) + continue; + + Desc = NodeType.GetDefaultObject()->ContextMenuName; + + if (Desc.IsEmpty()) + { + FString Title = NodeType->GetName(); + Title.RemoveFromEnd("_C"); + Desc = FText::FromString(Title); + } + + TSharedPtr Action(new FAssetSchemaAction_GenericGraph_NewNode(LOCTEXT("GenericGraphNodeAction", "Generic Graph Node"), Desc, AddToolTip, 0)); + Action->NodeTemplate = NewObject(ContextMenuBuilder.OwnerOfTemporaries); + Action->NodeTemplate->GenericGraphNode = NewObject(Action->NodeTemplate, NodeType); + Action->NodeTemplate->GenericGraphNode->Graph = Graph; + ContextMenuBuilder.AddAction(Action); + + Visited.Add(NodeType); + } + } +} + +void UAssetGraphSchema_GenericGraph::GetContextMenuActions(UToolMenu* Menu, UGraphNodeContextMenuContext* Context) const +{ + if (Context->Pin) + { + { + FToolMenuSection& Section = Menu->AddSection("GenericGraphAssetGraphSchemaNodeActions", LOCTEXT("PinActionsMenuHeader", "Pin Actions")); + // Only display the 'Break Links' option if there is a link to break! + if (Context->Pin->LinkedTo.Num() > 0) + { + Section.AddMenuEntry(FGraphEditorCommands::Get().BreakPinLinks); + + // add sub menu for break link to + if (Context->Pin->LinkedTo.Num() > 1) + { + Section.AddSubMenu( + "BreakLinkTo", + LOCTEXT("BreakLinkTo", "Break Link To..."), + LOCTEXT("BreakSpecificLinks", "Break a specific link..."), + FNewToolMenuDelegate::CreateUObject((UAssetGraphSchema_GenericGraph* const)this, &UAssetGraphSchema_GenericGraph::GetBreakLinkToSubMenuActions, const_cast(Context->Pin))); + } + else + { + ((UAssetGraphSchema_GenericGraph* const)this)->GetBreakLinkToSubMenuActions(Menu, const_cast(Context->Pin)); + } + } + } + } + else if (Context->Node) + { + { + FToolMenuSection& Section = Menu->AddSection("GenericGraphAssetGraphSchemaNodeActions", LOCTEXT("ClassActionsMenuHeader", "Node Actions")); + Section.AddMenuEntry(FGenericCommands::Get().Delete); + Section.AddMenuEntry(FGenericCommands::Get().Cut); + Section.AddMenuEntry(FGenericCommands::Get().Copy); + Section.AddMenuEntry(FGenericCommands::Get().Duplicate); + + Section.AddMenuEntry(FGraphEditorCommands::Get().BreakNodeLinks); + } + } + + Super::GetContextMenuActions(Menu, Context); +} + +const FPinConnectionResponse UAssetGraphSchema_GenericGraph::CanCreateConnection(const UEdGraphPin* A, const UEdGraphPin* B) const +{ + // Make sure the pins are not on the same node + if (A->GetOwningNode() == B->GetOwningNode()) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinErrorSameNode", "Can't connect node to itself")); + } + + const UEdGraphPin *Out = A; + const UEdGraphPin *In = B; + + UEdNode_GenericGraphNode* EdNode_Out = Cast(Out->GetOwningNode()); + UEdNode_GenericGraphNode* EdNode_In = Cast(In->GetOwningNode()); + + if (EdNode_Out == nullptr || EdNode_In == nullptr) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinError", "Not a valid UGenericGraphEdNode")); + } + + //Determine if we can have cycles or not + bool bAllowCycles = false; + auto EdGraph = Cast(Out->GetOwningNode()->GetGraph()); + if (EdGraph != nullptr) + { + bAllowCycles = EdGraph->GetGenericGraph()->bCanBeCyclical; + } + + // check for cycles + FNodeVisitorCycleChecker CycleChecker; + if (!bAllowCycles && !CycleChecker.CheckForLoop(Out->GetOwningNode(), In->GetOwningNode())) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinErrorCycle", "Can't create a graph cycle")); + } + + FText ErrorMessage; + if (!EdNode_Out->GenericGraphNode->CanCreateConnectionTo(EdNode_In->GenericGraphNode, EdNode_Out->GetOutputPin()->LinkedTo.Num(), ErrorMessage)) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, ErrorMessage); + } + if (!EdNode_In->GenericGraphNode->CanCreateConnectionFrom(EdNode_Out->GenericGraphNode, EdNode_In->GetInputPin()->LinkedTo.Num(), ErrorMessage)) + { + return FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, ErrorMessage); + } + + + if (EdNode_Out->GenericGraphNode->GetGraph()->bEdgeEnabled) + { + return FPinConnectionResponse(CONNECT_RESPONSE_MAKE_WITH_CONVERSION_NODE, LOCTEXT("PinConnect", "Connect nodes with edge")); + } + else + { + return FPinConnectionResponse(CONNECT_RESPONSE_MAKE, LOCTEXT("PinConnect", "Connect nodes")); + } +} + +bool UAssetGraphSchema_GenericGraph::TryCreateConnection(UEdGraphPin* A, UEdGraphPin* B) const +{ + // We don't actually care about the pin, we want the node that is being dragged between + UEdNode_GenericGraphNode* NodeA = Cast(A->GetOwningNode()); + UEdNode_GenericGraphNode* NodeB = Cast(B->GetOwningNode()); + + // Check that this edge doesn't already exist + for (UEdGraphPin *TestPin : NodeA->GetOutputPin()->LinkedTo) + { + UEdGraphNode* ChildNode = TestPin->GetOwningNode(); + if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(ChildNode)) + { + ChildNode = EdNode_Edge->GetEndNode(); + } + + if (ChildNode == NodeB) + return false; + } + + if (NodeA && NodeB) + { + // Always create connections from node A to B, don't allow adding in reverse + Super::TryCreateConnection(NodeA->GetOutputPin(), NodeB->GetInputPin()); + return true; + } + else + { + return false; + } +} + +bool UAssetGraphSchema_GenericGraph::CreateAutomaticConversionNodeAndConnections(UEdGraphPin* A, UEdGraphPin* B) const +{ + UEdNode_GenericGraphNode* NodeA = Cast(A->GetOwningNode()); + UEdNode_GenericGraphNode* NodeB = Cast(B->GetOwningNode()); + + // Are nodes and pins all valid? + if (!NodeA || !NodeA->GetOutputPin() || !NodeB || !NodeB->GetInputPin()) + return false; + + UGenericGraph* Graph = NodeA->GenericGraphNode->GetGraph(); + + FVector2D InitPos((NodeA->NodePosX + NodeB->NodePosX) / 2, (NodeA->NodePosY + NodeB->NodePosY) / 2); + + FAssetSchemaAction_GenericGraph_NewEdge Action; + Action.NodeTemplate = NewObject(NodeA->GetGraph()); + Action.NodeTemplate->SetEdge(NewObject(Action.NodeTemplate, Graph->EdgeType)); + UEdNode_GenericGraphEdge* EdgeNode = Cast(Action.PerformAction(NodeA->GetGraph(), nullptr, InitPos, false)); + + // Always create connections from node A to B, don't allow adding in reverse + EdgeNode->CreateConnections(NodeA, NodeB); + + return true; +} + +class FConnectionDrawingPolicy* UAssetGraphSchema_GenericGraph::CreateConnectionDrawingPolicy(int32 InBackLayerID, int32 InFrontLayerID, float InZoomFactor, const FSlateRect& InClippingRect, class FSlateWindowElementList& InDrawElements, class UEdGraph* InGraphObj) const +{ + return new FConnectionDrawingPolicy_GenericGraph(InBackLayerID, InFrontLayerID, InZoomFactor, InClippingRect, InDrawElements, InGraphObj); +} + +FLinearColor UAssetGraphSchema_GenericGraph::GetPinTypeColor(const FEdGraphPinType& PinType) const +{ + return FColor::White; +} + +void UAssetGraphSchema_GenericGraph::BreakNodeLinks(UEdGraphNode& TargetNode) const +{ + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_BreakNodeLinks", "Break Node Links")); + + Super::BreakNodeLinks(TargetNode); +} + +void UAssetGraphSchema_GenericGraph::BreakPinLinks(UEdGraphPin& TargetPin, bool bSendsNodeNotifcation) const +{ + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_BreakPinLinks", "Break Pin Links")); + + Super::BreakPinLinks(TargetPin, bSendsNodeNotifcation); +} + +void UAssetGraphSchema_GenericGraph::BreakSinglePinLink(UEdGraphPin* SourcePin, UEdGraphPin* TargetPin) const +{ + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_BreakSinglePinLink", "Break Pin Link")); + + Super::BreakSinglePinLink(SourcePin, TargetPin); +} + +UEdGraphPin* UAssetGraphSchema_GenericGraph::DropPinOnNode(UEdGraphNode* InTargetNode, const FName& InSourcePinName, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection) const +{ + UEdNode_GenericGraphNode* EdNode = Cast(InTargetNode); + switch (InSourcePinDirection) + { + case EGPD_Input: + return EdNode->GetOutputPin(); + case EGPD_Output: + return EdNode->GetInputPin(); + default: + return nullptr; + } +} + +bool UAssetGraphSchema_GenericGraph::SupportsDropPinOnNode(UEdGraphNode* InTargetNode, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection, FText& OutErrorMessage) const +{ + return Cast(InTargetNode) != nullptr; +} + +bool UAssetGraphSchema_GenericGraph::IsCacheVisualizationOutOfDate(int32 InVisualizationCacheID) const +{ + return CurrentCacheRefreshID != InVisualizationCacheID; +} + +int32 UAssetGraphSchema_GenericGraph::GetCurrentVisualizationCacheID() const +{ + return CurrentCacheRefreshID; +} + +void UAssetGraphSchema_GenericGraph::ForceVisualizationCacheClear() const +{ + ++CurrentCacheRefreshID; +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.cpp new file mode 100644 index 00000000..a727293d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.cpp @@ -0,0 +1,149 @@ +#include "GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" + +FConnectionDrawingPolicy_GenericGraph::FConnectionDrawingPolicy_GenericGraph(int32 InBackLayerID, int32 InFrontLayerID, float ZoomFactor, const FSlateRect& InClippingRect, FSlateWindowElementList& InDrawElements, UEdGraph* InGraphObj) + : FConnectionDrawingPolicy(InBackLayerID, InFrontLayerID, ZoomFactor, InClippingRect, InDrawElements) + , GraphObj(InGraphObj) +{ +} + +void FConnectionDrawingPolicy_GenericGraph::DetermineWiringStyle(UEdGraphPin* OutputPin, UEdGraphPin* InputPin, /*inout*/ FConnectionParams& Params) +{ + Params.AssociatedPin1 = OutputPin; + Params.AssociatedPin2 = InputPin; + Params.WireThickness = 1.5f; + + const bool bDeemphasizeUnhoveredPins = HoveredPins.Num() > 0; + if (bDeemphasizeUnhoveredPins) + { + ApplyHoverDeemphasis(OutputPin, InputPin, /*inout*/ Params.WireThickness, /*inout*/ Params.WireColor); + } +} + +void FConnectionDrawingPolicy_GenericGraph::Draw(TMap, FArrangedWidget>& InPinGeometries, FArrangedChildren& ArrangedNodes) +{ + // Build an acceleration structure to quickly find geometry for the nodes + NodeWidgetMap.Empty(); + for (int32 NodeIndex = 0; NodeIndex < ArrangedNodes.Num(); ++NodeIndex) + { + FArrangedWidget& CurWidget = ArrangedNodes[NodeIndex]; + TSharedRef ChildNode = StaticCastSharedRef(CurWidget.Widget); + NodeWidgetMap.Add(ChildNode->GetNodeObj(), NodeIndex); + } + + // Now draw + FConnectionDrawingPolicy::Draw(InPinGeometries, ArrangedNodes); +} + +void FConnectionDrawingPolicy_GenericGraph::DrawPreviewConnector(const FGeometry& PinGeometry, const FVector2D& StartPoint, const FVector2D& EndPoint, UEdGraphPin* Pin) +{ + FConnectionParams Params; + DetermineWiringStyle(Pin, nullptr, /*inout*/ Params); + + if (Pin->Direction == EEdGraphPinDirection::EGPD_Output) + { + DrawSplineWithArrow(FGeometryHelper::FindClosestPointOnGeom(PinGeometry, EndPoint), EndPoint, Params); + } + else + { + DrawSplineWithArrow(FGeometryHelper::FindClosestPointOnGeom(PinGeometry, StartPoint), StartPoint, Params); + } +} + +void FConnectionDrawingPolicy_GenericGraph::DrawSplineWithArrow(const FVector2D& StartAnchorPoint, const FVector2D& EndAnchorPoint, const FConnectionParams& Params) +{ + // bUserFlag1 indicates that we need to reverse the direction of connection (used by debugger) + const FVector2D& P0 = Params.bUserFlag1 ? EndAnchorPoint : StartAnchorPoint; + const FVector2D& P1 = Params.bUserFlag1 ? StartAnchorPoint : EndAnchorPoint; + + Internal_DrawLineWithArrow(P0, P1, Params); +} + +void FConnectionDrawingPolicy_GenericGraph::Internal_DrawLineWithArrow(const FVector2D& StartAnchorPoint, const FVector2D& EndAnchorPoint, const FConnectionParams& Params) +{ + //@TODO: Should this be scaled by zoom factor? + const float LineSeparationAmount = 4.5f; + + const FVector2D DeltaPos = EndAnchorPoint - StartAnchorPoint; + const FVector2D UnitDelta = DeltaPos.GetSafeNormal(); + const FVector2D Normal = FVector2D(DeltaPos.Y, -DeltaPos.X).GetSafeNormal(); + + // Come up with the final start/end points + const FVector2D DirectionBias = Normal * LineSeparationAmount; + const FVector2D LengthBias = ArrowRadius.X * UnitDelta; + const FVector2D StartPoint = StartAnchorPoint + DirectionBias + LengthBias; + const FVector2D EndPoint = EndAnchorPoint + DirectionBias - LengthBias; + + // Draw a line/spline + DrawConnection(WireLayerID, StartPoint, EndPoint, Params); + + // Draw the arrow + const FVector2D ArrowDrawPos = EndPoint - ArrowRadius; + const float AngleInRadians = FMath::Atan2(DeltaPos.Y, DeltaPos.X); + + FSlateDrawElement::MakeRotatedBox( + DrawElementsList, + ArrowLayerID, + FPaintGeometry(ArrowDrawPos, ArrowImage->ImageSize * ZoomFactor, ZoomFactor), + ArrowImage, + ESlateDrawEffect::None, + AngleInRadians, + TOptional(), + FSlateDrawElement::RelativeToElement, + Params.WireColor + ); +} + +void FConnectionDrawingPolicy_GenericGraph::DrawSplineWithArrow(const FGeometry& StartGeom, const FGeometry& EndGeom, const FConnectionParams& Params) +{ + // Get a reasonable seed point (halfway between the boxes) + const FVector2D StartCenter = FGeometryHelper::CenterOf(StartGeom); + const FVector2D EndCenter = FGeometryHelper::CenterOf(EndGeom); + const FVector2D SeedPoint = (StartCenter + EndCenter) * 0.5f; + + // Find the (approximate) closest points between the two boxes + const FVector2D StartAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(StartGeom, SeedPoint); + const FVector2D EndAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(EndGeom, SeedPoint); + + DrawSplineWithArrow(StartAnchorPoint, EndAnchorPoint, Params); +} + +FVector2D FConnectionDrawingPolicy_GenericGraph::ComputeSplineTangent(const FVector2D& Start, const FVector2D& End) const +{ + const FVector2D Delta = End - Start; + const FVector2D NormDelta = Delta.GetSafeNormal(); + + return NormDelta; +} + +void FConnectionDrawingPolicy_GenericGraph::DetermineLinkGeometry(FArrangedChildren& ArrangedNodes, TSharedRef& OutputPinWidget, + UEdGraphPin* OutputPin, UEdGraphPin* InputPin, FArrangedWidget*& StartWidgetGeometry, FArrangedWidget*& EndWidgetGeometry) +{ + if (UEdNode_GenericGraphEdge* EdgeNode = Cast(InputPin->GetOwningNode())) + { + UEdNode_GenericGraphNode* Start = EdgeNode->GetStartNode(); + UEdNode_GenericGraphNode* End = EdgeNode->GetEndNode(); + if (Start != nullptr && End != nullptr) + { + int32* StartNodeIndex = NodeWidgetMap.Find(Start); + int32* EndNodeIndex = NodeWidgetMap.Find(End); + if (StartNodeIndex != nullptr && EndNodeIndex != nullptr) + { + StartWidgetGeometry = &(ArrangedNodes[*StartNodeIndex]); + EndWidgetGeometry = &(ArrangedNodes[*EndNodeIndex]); + } + } + } + else + { + StartWidgetGeometry = PinGeometries->Find(OutputPinWidget); + + if (TSharedPtr* pTargetWidget = PinToPinWidgetMap.Find(InputPin)) + { + TSharedRef InputWidget = (*pTargetWidget).ToSharedRef(); + EndWidgetGeometry = PinGeometries->Find(InputWidget); + } + } +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdGraph_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdGraph_GenericGraph.cpp new file mode 100644 index 00000000..f730756f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdGraph_GenericGraph.cpp @@ -0,0 +1,205 @@ +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" + +UEdGraph_GenericGraph::UEdGraph_GenericGraph() +{ + +} + +UEdGraph_GenericGraph::~UEdGraph_GenericGraph() +{ + +} + +void UEdGraph_GenericGraph::RebuildGenericGraph() +{ + LOG_INFO(TEXT("UGenericGraphEdGraph::RebuildGenericGraph has been called")); + + UGenericGraph* Graph = GetGenericGraph(); + + Clear(); + + for (int i = 0; i < Nodes.Num(); ++i) + { + if (UEdNode_GenericGraphNode* EdNode = Cast(Nodes[i])) + { + if (EdNode->GenericGraphNode == nullptr) + continue; + + UGenericGraphNode* GenericGraphNode = EdNode->GenericGraphNode; + + NodeMap.Add(GenericGraphNode, EdNode); + + Graph->AllNodes.Add(GenericGraphNode); + + for (int PinIdx = 0; PinIdx < EdNode->Pins.Num(); ++PinIdx) + { + UEdGraphPin* Pin = EdNode->Pins[PinIdx]; + + if (Pin->Direction != EEdGraphPinDirection::EGPD_Output) + continue; + + for (int LinkToIdx = 0; LinkToIdx < Pin->LinkedTo.Num(); ++LinkToIdx) + { + UGenericGraphNode* ChildNode = nullptr; + if (UEdNode_GenericGraphNode* EdNode_Child = Cast(Pin->LinkedTo[LinkToIdx]->GetOwningNode())) + { + ChildNode = EdNode_Child->GenericGraphNode; + } + else if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(Pin->LinkedTo[LinkToIdx]->GetOwningNode())) + { + UEdNode_GenericGraphNode* Child = EdNode_Edge->GetEndNode();; + if (Child != nullptr) + { + ChildNode = Child->GenericGraphNode; + } + } + + if (ChildNode != nullptr) + { + GenericGraphNode->ChildrenNodes.Add(ChildNode); + + ChildNode->ParentNodes.Add(GenericGraphNode); + } + else + { + LOG_ERROR(TEXT("UEdGraph_GenericGraph::RebuildGenericGraph can't find child node")); + } + } + } + } + else if (UEdNode_GenericGraphEdge* EdgeNode = Cast(Nodes[i])) + { + UEdNode_GenericGraphNode* StartNode = EdgeNode->GetStartNode(); + UEdNode_GenericGraphNode* EndNode = EdgeNode->GetEndNode(); + UGenericGraphEdge* Edge = EdgeNode->GenericGraphEdge; + + if (StartNode == nullptr || EndNode == nullptr || Edge == nullptr) + { + LOG_ERROR(TEXT("UEdGraph_GenericGraph::RebuildGenericGraph add edge failed.")); + continue; + } + + EdgeMap.Add(Edge, EdgeNode); + + Edge->Graph = Graph; + Edge->Rename(nullptr, Graph, REN_DontCreateRedirectors | REN_DoNotDirty); + Edge->StartNode = StartNode->GenericGraphNode; + Edge->EndNode = EndNode->GenericGraphNode; + Edge->StartNode->Edges.Add(Edge->EndNode, Edge); + } + } + + for (int i = 0; i < Graph->AllNodes.Num(); ++i) + { + UGenericGraphNode* Node = Graph->AllNodes[i]; + if (Node->ParentNodes.Num() == 0) + { + Graph->RootNodes.Add(Node); + + SortNodes(Node); + } + + Node->Graph = Graph; + Node->Rename(nullptr, Graph, REN_DontCreateRedirectors | REN_DoNotDirty); + } + + Graph->RootNodes.Sort([&](const UGenericGraphNode& L, const UGenericGraphNode& R) + { + UEdNode_GenericGraphNode* EdNode_LNode = NodeMap[&L]; + UEdNode_GenericGraphNode* EdNode_RNode = NodeMap[&R]; + return EdNode_LNode->NodePosX < EdNode_RNode->NodePosX; + }); +} + +UGenericGraph* UEdGraph_GenericGraph::GetGenericGraph() const +{ + return CastChecked(GetOuter()); +} + +bool UEdGraph_GenericGraph::Modify(bool bAlwaysMarkDirty /*= true*/) +{ + bool Rtn = Super::Modify(bAlwaysMarkDirty); + + GetGenericGraph()->Modify(); + + for (int32 i = 0; i < Nodes.Num(); ++i) + { + Nodes[i]->Modify(); + } + + return Rtn; +} + +void UEdGraph_GenericGraph::Clear() +{ + UGenericGraph* Graph = GetGenericGraph(); + + Graph->ClearGraph(); + NodeMap.Reset(); + EdgeMap.Reset(); + + for (int i = 0; i < Nodes.Num(); ++i) + { + if (UEdNode_GenericGraphNode* EdNode = Cast(Nodes[i])) + { + UGenericGraphNode* GenericGraphNode = EdNode->GenericGraphNode; + if (GenericGraphNode) + { + GenericGraphNode->ParentNodes.Reset(); + GenericGraphNode->ChildrenNodes.Reset(); + GenericGraphNode->Edges.Reset(); + } + } + } +} + +void UEdGraph_GenericGraph::SortNodes(UGenericGraphNode* RootNode) +{ + int Level = 0; + TArray CurrLevelNodes = { RootNode }; + TArray NextLevelNodes; + TSet Visited; + + while (CurrLevelNodes.Num() != 0) + { + int32 LevelWidth = 0; + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + Visited.Add(Node); + + auto Comp = [&](const UGenericGraphNode& L, const UGenericGraphNode& R) + { + UEdNode_GenericGraphNode* EdNode_LNode = NodeMap[&L]; + UEdNode_GenericGraphNode* EdNode_RNode = NodeMap[&R]; + return EdNode_LNode->NodePosX < EdNode_RNode->NodePosX; + }; + + Node->ChildrenNodes.Sort(Comp); + Node->ParentNodes.Sort(Comp); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + UGenericGraphNode* ChildNode = Node->ChildrenNodes[j]; + if(!Visited.Contains(ChildNode)) + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } +} + +void UEdGraph_GenericGraph::PostEditUndo() +{ + Super::PostEditUndo(); + + NotifyGraphChanged(); +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphEdge.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphEdge.cpp new file mode 100644 index 00000000..636ce9c4 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphEdge.cpp @@ -0,0 +1,97 @@ +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphEdge.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" + +#define LOCTEXT_NAMESPACE "EdNode_GenericGraphEdge" + +UEdNode_GenericGraphEdge::UEdNode_GenericGraphEdge() +{ + bCanRenameNode = true; +} + +void UEdNode_GenericGraphEdge::SetEdge(UGenericGraphEdge* Edge) +{ + GenericGraphEdge = Edge; +} + +void UEdNode_GenericGraphEdge::AllocateDefaultPins() +{ + UEdGraphPin* Inputs = CreatePin(EGPD_Input, TEXT("Edge"), FName(), TEXT("In")); + Inputs->bHidden = true; + UEdGraphPin* Outputs = CreatePin(EGPD_Output, TEXT("Edge"), FName(), TEXT("Out")); + Outputs->bHidden = true; +} + +FText UEdNode_GenericGraphEdge::GetNodeTitle(ENodeTitleType::Type TitleType) const +{ + if (GenericGraphEdge) + { + return GenericGraphEdge->GetNodeTitle(); + } + return FText(); +} + +void UEdNode_GenericGraphEdge::PinConnectionListChanged(UEdGraphPin* Pin) +{ + if (Pin->LinkedTo.Num() == 0) + { + // Commit suicide; transitions must always have an input and output connection + Modify(); + + // Our parent graph will have our graph in SubGraphs so needs to be modified to record that. + if (UEdGraph* ParentGraph = GetGraph()) + { + ParentGraph->Modify(); + } + + DestroyNode(); + } +} + +void UEdNode_GenericGraphEdge::PrepareForCopying() +{ + GenericGraphEdge->Rename(nullptr, this, REN_DontCreateRedirectors | REN_DoNotDirty); +} + +void UEdNode_GenericGraphEdge::CreateConnections(UEdNode_GenericGraphNode* Start, UEdNode_GenericGraphNode* End) +{ + Pins[0]->Modify(); + Pins[0]->LinkedTo.Empty(); + + Start->GetOutputPin()->Modify(); + Pins[0]->MakeLinkTo(Start->GetOutputPin()); + + // This to next + Pins[1]->Modify(); + Pins[1]->LinkedTo.Empty(); + + End->GetInputPin()->Modify(); + Pins[1]->MakeLinkTo(End->GetInputPin()); +} + +UEdNode_GenericGraphNode* UEdNode_GenericGraphEdge::GetStartNode() +{ + if (Pins[0]->LinkedTo.Num() > 0) + { + return Cast(Pins[0]->LinkedTo[0]->GetOwningNode()); + } + else + { + return nullptr; + } +} + +UEdNode_GenericGraphNode* UEdNode_GenericGraphEdge::GetEndNode() +{ + if (Pins[1]->LinkedTo.Num() > 0) + { + return Cast(Pins[1]->LinkedTo[0]->GetOwningNode()); + } + else + { + return nullptr; + } +} + +#undef LOCTEXT_NAMESPACE + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphNode.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphNode.cpp new file mode 100644 index 00000000..9a487cf6 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EdNode_GenericGraphNode.cpp @@ -0,0 +1,84 @@ +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "Kismet2/Kismet2NameValidators.h" +#include "Kismet2/BlueprintEditorUtils.h" + +#define LOCTEXT_NAMESPACE "EdNode_GenericGraph" + +UEdNode_GenericGraphNode::UEdNode_GenericGraphNode() +{ + bCanRenameNode = true; +} + +UEdNode_GenericGraphNode::~UEdNode_GenericGraphNode() +{ + +} + +void UEdNode_GenericGraphNode::AllocateDefaultPins() +{ + CreatePin(EGPD_Input, "MultipleNodes", FName(), TEXT("In")); + CreatePin(EGPD_Output, "MultipleNodes", FName(), TEXT("Out")); +} + +UEdGraph_GenericGraph* UEdNode_GenericGraphNode::GetGenericGraphEdGraph() +{ + return Cast(GetGraph()); +} + +FText UEdNode_GenericGraphNode::GetNodeTitle(ENodeTitleType::Type TitleType) const +{ + if (GenericGraphNode == nullptr) + { + return Super::GetNodeTitle(TitleType); + } + else + { + return GenericGraphNode->GetNodeTitle(); + } +} + +void UEdNode_GenericGraphNode::PrepareForCopying() +{ + GenericGraphNode->Rename(nullptr, this, REN_DontCreateRedirectors | REN_DoNotDirty); +} + +void UEdNode_GenericGraphNode::AutowireNewNode(UEdGraphPin* FromPin) +{ + Super::AutowireNewNode(FromPin); + + if (FromPin != nullptr) + { + if (GetSchema()->TryCreateConnection(FromPin, GetInputPin())) + { + FromPin->GetOwningNode()->NodeConnectionListChanged(); + } + } +} + +void UEdNode_GenericGraphNode::SetGenericGraphNode(UGenericGraphNode* InNode) +{ + GenericGraphNode = InNode; +} + +FLinearColor UEdNode_GenericGraphNode::GetBackgroundColor() const +{ + return GenericGraphNode == nullptr ? FLinearColor::Black : GenericGraphNode->GetBackgroundColor(); +} + +UEdGraphPin* UEdNode_GenericGraphNode::GetInputPin() const +{ + return Pins[0]; +} + +UEdGraphPin* UEdNode_GenericGraphNode::GetOutputPin() const +{ + return Pins[1]; +} + +void UEdNode_GenericGraphNode::PostEditUndo() +{ + UEdGraphNode::PostEditUndo(); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EditorCommands_GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EditorCommands_GenericGraph.cpp new file mode 100644 index 00000000..8cd338f5 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/EditorCommands_GenericGraph.cpp @@ -0,0 +1,11 @@ +#include "GenericGraphAssetEditor/EditorCommands_GenericGraph.h" + +#define LOCTEXT_NAMESPACE "EditorCommands_GenericGraph" + +void FEditorCommands_GenericGraph::RegisterCommands() +{ + UI_COMMAND(GraphSettings, "Graph Settings", "Graph Settings", EUserInterfaceActionType::Button, FInputChord()); + UI_COMMAND(AutoArrange, "Auto Arrange", "Auto Arrange", EUserInterfaceActionType::Button, FInputChord()); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphDragConnection.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphDragConnection.cpp new file mode 100644 index 00000000..c8c3999d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphDragConnection.cpp @@ -0,0 +1,325 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "GenericGraphAssetEditor/GenericGraphDragConnection.h" +#include "Widgets/SBoxPanel.h" +#include "Framework/Application/SlateApplication.h" +#include "Widgets/Images/SImage.h" +#include "EdGraph/EdGraph.h" +#include "SGraphPanel.h" +#include "ScopedTransaction.h" + +TSharedRef FGenericGraphDragConnection::New(const TSharedRef& GraphPanel, const FDraggedPinTable& DraggedPins) +{ + TSharedRef Operation = MakeShareable(new FGenericGraphDragConnection(GraphPanel, DraggedPins)); + Operation->Construct(); + + return Operation; +} + +void FGenericGraphDragConnection::OnDrop(bool bDropWasHandled, const FPointerEvent& MouseEvent) +{ + GraphPanel->OnStopMakingConnection(); + + Super::OnDrop(bDropWasHandled, MouseEvent); +} + +void FGenericGraphDragConnection::OnDragged(const class FDragDropEvent& DragDropEvent) +{ + FVector2D TargetPosition = DragDropEvent.GetScreenSpacePosition(); + + // Reposition the info window wrt to the drag + CursorDecoratorWindow->MoveWindowTo(DragDropEvent.GetScreenSpacePosition() + DecoratorAdjust); + // Request the active panel to scroll if required + GraphPanel->RequestDeferredPan(TargetPosition); +} + +void FGenericGraphDragConnection::HoverTargetChanged() +{ + TArray UniqueMessages; + + if (UEdGraphPin* TargetPinObj = GetHoveredPin()) + { + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + // Check the schema for connection responses + for (UEdGraphPin* StartingPinObj : ValidSourcePins) + { + // The Graph object in which the pins reside. + UEdGraph* GraphObj = StartingPinObj->GetOwningNode()->GetGraph(); + + // Determine what the schema thinks about the wiring action + const FPinConnectionResponse Response = GraphObj->GetSchema()->CanCreateConnection(StartingPinObj, TargetPinObj); + + if (Response.Response == ECanCreateConnectionResponse::CONNECT_RESPONSE_DISALLOW) + { + TSharedPtr NodeWidget = TargetPinObj->GetOwningNode()->DEPRECATED_NodeWidget.Pin(); + if (NodeWidget.IsValid()) + { + NodeWidget->NotifyDisallowedPinConnection(StartingPinObj, TargetPinObj); + } + } + + UniqueMessages.AddUnique(Response); + } + } + else if (UEdNode_GenericGraphNode* TargetNodeObj = Cast(GetHoveredNode())) + { + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + // Check the schema for connection responses + for (UEdGraphPin* StartingPinObj : ValidSourcePins) + { + FPinConnectionResponse Response; + FText ResponseText; + + const UEdGraphSchema *Schema = StartingPinObj->GetSchema(); + UEdGraphPin *TargetPin = TargetNodeObj->GetInputPin(); + + if (Schema && TargetPin) + { + Response = Schema->CanCreateConnection(StartingPinObj, TargetPin); + if (Response.Response == ECanCreateConnectionResponse::CONNECT_RESPONSE_DISALLOW) + { + TSharedPtr NodeWidget = TargetPin->GetOwningNode()->DEPRECATED_NodeWidget.Pin(); + if (NodeWidget.IsValid()) + { + NodeWidget->NotifyDisallowedPinConnection(StartingPinObj, TargetPinObj); + } + } + } + else + { +#define LOCTEXT_NAMESPACE "AssetSchema_GenericGraph" + Response = FPinConnectionResponse(CONNECT_RESPONSE_DISALLOW, LOCTEXT("PinError", "Not a valid UGenericGraphEdNode")); +#undef LOCTEXT_NAMESPACE + } + + UniqueMessages.AddUnique(Response); + } + } + else if (UEdGraph* CurrentHoveredGraph = GetHoveredGraph()) + { + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + for (UEdGraphPin* StartingPinObj : ValidSourcePins) + { + // Let the schema describe the connection we might make + FPinConnectionResponse Response = CurrentHoveredGraph->GetSchema()->CanCreateNewNodes(StartingPinObj); + if (!Response.Message.IsEmpty()) + { + UniqueMessages.AddUnique(Response); + } + } + } + + // Let the user know the status of dropping now + if (UniqueMessages.Num() == 0) + { + // Display the place a new node icon, we're not over a valid pin and have no message from the schema + SetSimpleFeedbackMessage( + FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.NewNode")), + FLinearColor::White, + NSLOCTEXT("GraphEditor.Feedback", "PlaceNewNode", "Place a new node.")); + } + else + { + // Take the unique responses and create visual feedback for it + TSharedRef FeedbackBox = SNew(SVerticalBox); + for (auto ResponseIt = UniqueMessages.CreateConstIterator(); ResponseIt; ++ResponseIt) + { + // Determine the icon + const FSlateBrush* StatusSymbol = NULL; + + switch (ResponseIt->Response) + { + case CONNECT_RESPONSE_MAKE: + case CONNECT_RESPONSE_BREAK_OTHERS_A: + case CONNECT_RESPONSE_BREAK_OTHERS_B: + case CONNECT_RESPONSE_BREAK_OTHERS_AB: + StatusSymbol = FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.OK")); + break; + + case CONNECT_RESPONSE_MAKE_WITH_CONVERSION_NODE: + StatusSymbol = FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.ViaCast")); + break; + + case CONNECT_RESPONSE_DISALLOW: + default: + StatusSymbol = FAppStyle::GetBrush(TEXT("Graph.ConnectorFeedback.Error")); + break; + } + + // Add a new message row + FeedbackBox->AddSlot() + .AutoHeight() + [ + SNew(SHorizontalBox) + + SHorizontalBox::Slot() + .AutoWidth() + .Padding(3.0f) + .VAlign(VAlign_Center) + [ + SNew(SImage).Image(StatusSymbol) + ] + + SHorizontalBox::Slot() + .AutoWidth() + .VAlign(VAlign_Center) + [ + SNew(STextBlock).Text(ResponseIt->Message) + ] + ]; + } + + SetFeedbackMessage(FeedbackBox); + } +} + +FGenericGraphDragConnection::FGenericGraphDragConnection(const TSharedRef& GraphPanelIn, const FDraggedPinTable& DraggedPinsIn) + : GraphPanel(GraphPanelIn) + , DraggingPins(DraggedPinsIn) + , DecoratorAdjust(FSlateApplication::Get().GetCursorSize()) +{ + if (DraggingPins.Num() > 0) + { + const UEdGraphPin* PinObj = FDraggedPinTable::TConstIterator(DraggedPinsIn)->GetPinObj(*GraphPanelIn); + if (PinObj && PinObj->Direction == EGPD_Input) + { + DecoratorAdjust *= FVector2D(-1.0f, 1.0f); + } + } + + for (const FGraphPinHandle& DraggedPin : DraggedPinsIn) + { + GraphPanelIn->OnBeginMakingConnection(DraggedPin); + } +} + +FReply FGenericGraphDragConnection::DroppedOnPin(FVector2D ScreenPosition, FVector2D GraphPosition) +{ + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + const FScopedTransaction Transaction(NSLOCTEXT("UnrealEd", "GraphEd_CreateConnection", "Create Pin Link")); + + UEdGraphPin* PinB = GetHoveredPin(); + bool bError = false; + TSet NodeList; + + for (UEdGraphPin* PinA : ValidSourcePins) + { + if ((PinA != NULL) && (PinB != NULL)) + { + UEdGraph* MyGraphObj = PinA->GetOwningNode()->GetGraph(); + + if (MyGraphObj->GetSchema()->TryCreateConnection(PinA, PinB)) + { + if (!PinA->IsPendingKill()) + { + NodeList.Add(PinA->GetOwningNode()); + } + if (!PinB->IsPendingKill()) + { + NodeList.Add(PinB->GetOwningNode()); + } + } + } + else + { + bError = true; + } + } + + // Send all nodes that received a new pin connection a notification + for (auto It = NodeList.CreateConstIterator(); It; ++It) + { + UEdGraphNode* Node = (*It); + Node->NodeConnectionListChanged(); + } + + if (bError) + { + return FReply::Unhandled(); + } + + return FReply::Handled(); +} + +FReply FGenericGraphDragConnection::DroppedOnNode(FVector2D ScreenPosition, FVector2D GraphPosition) +{ + bool bHandledPinDropOnNode = false; + UEdGraphNode* NodeOver = GetHoveredNode(); + + if (NodeOver) + { + // Gather any source drag pins + TArray ValidSourcePins; + ValidateGraphPinList(/*out*/ ValidSourcePins); + + if (ValidSourcePins.Num()) + { + for (UEdGraphPin* SourcePin : ValidSourcePins) + { + // Check for pin drop support + FText ResponseText; + if (SourcePin->GetOwningNode() != NodeOver && SourcePin->GetSchema()->SupportsDropPinOnNode(NodeOver, SourcePin->PinType, SourcePin->Direction, ResponseText)) + { + bHandledPinDropOnNode = true; + + // Find which pin name to use and drop the pin on the node + const FName PinName = SourcePin->PinFriendlyName.IsEmpty() ? SourcePin->PinName : *SourcePin->PinFriendlyName.ToString(); + + const FScopedTransaction Transaction((SourcePin->Direction == EGPD_Output) ? NSLOCTEXT("UnrealEd", "AddInParam", "Add In Parameter") : NSLOCTEXT("UnrealEd", "AddOutParam", "Add Out Parameter")); + + UEdGraphPin* EdGraphPin = NodeOver->GetSchema()->DropPinOnNode(GetHoveredNode(), PinName, SourcePin->PinType, SourcePin->Direction); + + // This can invalidate the source pin due to node reconstruction, abort in that case + if (SourcePin->GetOwningNodeUnchecked() && EdGraphPin) + { + SourcePin->Modify(); + EdGraphPin->Modify(); + SourcePin->GetSchema()->TryCreateConnection(SourcePin, EdGraphPin); + } + } + + // If we have not handled the pin drop on node and there is an error message, do not let other actions occur. + if (!bHandledPinDropOnNode && !ResponseText.IsEmpty()) + { + bHandledPinDropOnNode = true; + } + } + } + } + return bHandledPinDropOnNode ? FReply::Handled() : FReply::Unhandled(); +} + +FReply FGenericGraphDragConnection::DroppedOnPanel(const TSharedRef< SWidget >& Panel, FVector2D ScreenPosition, FVector2D GraphPosition, UEdGraph& Graph) +{ + // Gather any source drag pins + TArray PinObjects; + ValidateGraphPinList(/*out*/ PinObjects); + + // Create a context menu + TSharedPtr WidgetToFocus = GraphPanel->SummonContextMenu(ScreenPosition, GraphPosition, NULL, NULL, PinObjects); + + // Give the context menu focus + return (WidgetToFocus.IsValid()) + ? FReply::Handled().SetUserFocus(WidgetToFocus.ToSharedRef(), EFocusCause::SetDirectly) + : FReply::Handled(); +} + + +void FGenericGraphDragConnection::ValidateGraphPinList(TArray& OutValidPins) +{ + OutValidPins.Empty(DraggingPins.Num()); + for (const FGraphPinHandle& PinHandle : DraggingPins) + { + if (UEdGraphPin* GraphPin = PinHandle.GetPinObj(*GraphPanel)) + { + OutValidPins.Add(GraphPin); + } + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphEditorStyle.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphEditorStyle.cpp new file mode 100644 index 00000000..6870128f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/GenericGraphEditorStyle.cpp @@ -0,0 +1,54 @@ +#include "GenericGraphAssetEditor/GenericGraphEditorStyle.h" +#include "Styling/SlateStyleRegistry.h" +#include "Styling/SlateTypes.h" +#include "Misc/Paths.h" + +TSharedPtr FGenericGraphEditorStyle::StyleSet = nullptr; + +#define IMAGE_BRUSH( RelativePath, ... ) FSlateImageBrush( StyleSet->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ ) +#define BOX_BRUSH( RelativePath, ... ) FSlateBoxBrush( StyleSet->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ ) +#define BORDER_BRUSH( RelativePath, ... ) FSlateBorderBrush( StyleSet->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ ) +#define TTF_FONT( RelativePath, ... ) FSlateFontInfo( StyleSet->RootToContentDir( RelativePath, TEXT(".ttf") ), __VA_ARGS__ ) +#define OTF_FONT( RelativePath, ... ) FSlateFontInfo( StyleSet->RootToContentDir( RelativePath, TEXT(".otf") ), __VA_ARGS__ ) + +void FGenericGraphEditorStyle::Initialize() +{ + const FVector2D Icon20x20(20.0f, 20.0f); + const FVector2D Icon40x40(40.0f, 40.0f); + const FVector2D Icon64x64(64.0f, 64.0f); + + if (StyleSet.IsValid()) + { + return; + } + + StyleSet = MakeShareable(new FSlateStyleSet("GenericGraphEditorStyle")); + + StyleSet->SetContentRoot(FPaths::ProjectPluginsDir() / TEXT("GenericGraph/Resources")); + + StyleSet->Set("GenericGraphEditor.AutoArrange", new IMAGE_BRUSH("AutoArrangeIcon", Icon40x40)); + StyleSet->Set("GenericGraphEditor.AutoArrange.Small", new IMAGE_BRUSH( "AutoArrangeIcon", Icon20x20 ) ); + + FSlateStyleRegistry::RegisterSlateStyle(*StyleSet.Get()); +} + +void FGenericGraphEditorStyle::Shutdown() +{ + if (StyleSet.IsValid()) + { + FSlateStyleRegistry::UnRegisterSlateStyle(*StyleSet.Get()); + ensure(StyleSet.IsUnique()); + StyleSet.Reset(); + } +} + +const FName& FGenericGraphEditorStyle::GetStyleSetName() +{ + return StyleSet->GetStyleSetName(); +} + +#undef IMAGE_BRUSH +#undef BOX_BRUSH +#undef BORDER_BRUSH +#undef TTF_FONT +#undef OTF_FONT diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.cpp new file mode 100644 index 00000000..d46b0777 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.cpp @@ -0,0 +1,199 @@ +#include "GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h" +#include "Widgets/SBoxPanel.h" +#include "Widgets/Images/SImage.h" +#include "Widgets/Text/SInlineEditableTextBlock.h" +#include "Widgets/SToolTip.h" +#include "SGraphPanel.h" +#include "EdGraphSchema_K2.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h" + +#define LOCTEXT_NAMESPACE "SGenericGraphEdge" + +void SEdNode_GenericGraphEdge::Construct(const FArguments& InArgs, UEdNode_GenericGraphEdge* InNode) +{ + this->GraphNode = InNode; + this->UpdateGraphNode(); +} + +bool SEdNode_GenericGraphEdge::RequiresSecondPassLayout() const +{ + return true; +} + +void SEdNode_GenericGraphEdge::PerformSecondPassLayout(const TMap< UObject*, TSharedRef >& NodeToWidgetLookup) const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + + FGeometry StartGeom; + FGeometry EndGeom; + + UEdNode_GenericGraphNode* Start = EdgeNode->GetStartNode(); + UEdNode_GenericGraphNode* End = EdgeNode->GetEndNode(); + if (Start != nullptr && End != nullptr) + { + const TSharedRef* pFromWidget = NodeToWidgetLookup.Find(Start); + const TSharedRef* pToWidget = NodeToWidgetLookup.Find(End); + if (pFromWidget != nullptr && pToWidget != nullptr) + { + const TSharedRef& FromWidget = *pFromWidget; + const TSharedRef& ToWidget = *pToWidget; + + StartGeom = FGeometry(FVector2D(Start->NodePosX, Start->NodePosY), FVector2D::ZeroVector, FromWidget->GetDesiredSize(), 1.0f); + EndGeom = FGeometry(FVector2D(End->NodePosX, End->NodePosY), FVector2D::ZeroVector, ToWidget->GetDesiredSize(), 1.0f); + } + } + + PositionBetweenTwoNodesWithOffset(StartGeom, EndGeom, 0, 1); +} + +void SEdNode_GenericGraphEdge::OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo) +{ + SGraphNode::OnNameTextCommited(InText, CommitInfo); + + UEdNode_GenericGraphEdge* MyNode = CastChecked(GraphNode); + + if (MyNode != nullptr && MyNode->GenericGraphEdge != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorRenameEdge", "Generic Graph Editor: Rename Edge")); + MyNode->Modify(); + MyNode->GenericGraphEdge->SetNodeTitle(InText); + UpdateGraphNode(); + } +} + +void SEdNode_GenericGraphEdge::UpdateGraphNode() +{ + InputPins.Empty(); + OutputPins.Empty(); + + RightNodeBox.Reset(); + LeftNodeBox.Reset(); + + TSharedPtr NodeTitle = SNew(SNodeTitle, GraphNode); + + this->ContentScale.Bind( this, &SGraphNode::GetContentScale ); + this->GetOrAddSlot( ENodeZone::Center ) + .HAlign(HAlign_Center) + .VAlign(VAlign_Center) + [ + SNew(SOverlay) + + SOverlay::Slot() + [ + SNew(SImage) + .Image(FAppStyle::GetBrush("Graph.TransitionNode.ColorSpill")) + .ColorAndOpacity(this, &SEdNode_GenericGraphEdge::GetEdgeColor) + ] + + SOverlay::Slot() + [ + SNew(SImage) + .Image(this, &SEdNode_GenericGraphEdge::GetEdgeImage) + .Visibility(this, &SEdNode_GenericGraphEdge::GetEdgeImageVisibility) + ] + + + SOverlay::Slot() + .Padding(FMargin(4.0f, 4.0f, 4.0f, 4.0f)) + [ + SNew(SVerticalBox) + + SVerticalBox::Slot() + .HAlign(HAlign_Center) + .AutoHeight() + [ + SAssignNew(InlineEditableText, SInlineEditableTextBlock) + .ColorAndOpacity(FLinearColor::Black) + .Visibility(this, &SEdNode_GenericGraphEdge::GetEdgeTitleVisbility) + .Font(FCoreStyle::GetDefaultFontStyle("Regular", 12)) + .Text(NodeTitle.Get(), &SNodeTitle::GetHeadTitle) + .OnTextCommitted(this, &SEdNode_GenericGraphEdge::OnNameTextCommited) + ] + + SVerticalBox::Slot() + .AutoHeight() + [ + NodeTitle.ToSharedRef() + ] + + ] + ]; +} + +void SEdNode_GenericGraphEdge::PositionBetweenTwoNodesWithOffset(const FGeometry& StartGeom, const FGeometry& EndGeom, int32 NodeIndex, int32 MaxNodes) const +{ + // Get a reasonable seed point (halfway between the boxes) + const FVector2D StartCenter = FGeometryHelper::CenterOf(StartGeom); + const FVector2D EndCenter = FGeometryHelper::CenterOf(EndGeom); + const FVector2D SeedPoint = (StartCenter + EndCenter) * 0.5f; + + // Find the (approximate) closest points between the two boxes + const FVector2D StartAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(StartGeom, SeedPoint); + const FVector2D EndAnchorPoint = FGeometryHelper::FindClosestPointOnGeom(EndGeom, SeedPoint); + + // Position ourselves halfway along the connecting line between the nodes, elevated away perpendicular to the direction of the line + const float Height = 30.0f; + + const FVector2D DesiredNodeSize = GetDesiredSize(); + + FVector2D DeltaPos(EndAnchorPoint - StartAnchorPoint); + + if (DeltaPos.IsNearlyZero()) + { + DeltaPos = FVector2D(10.0f, 0.0f); + } + + const FVector2D Normal = FVector2D(DeltaPos.Y, -DeltaPos.X).GetSafeNormal(); + + const FVector2D NewCenter = StartAnchorPoint + (0.5f * DeltaPos) + (Height * Normal); + + FVector2D DeltaNormal = DeltaPos.GetSafeNormal(); + + // Calculate node offset in the case of multiple transitions between the same two nodes + // MultiNodeOffset: the offset where 0 is the centre of the transition, -1 is 1 + // towards the PrevStateNode and +1 is 1 towards the NextStateNode. + + const float MutliNodeSpace = 0.2f; // Space between multiple transition nodes (in units of ) + const float MultiNodeStep = (1.f + MutliNodeSpace); //Step between node centres (Size of node + size of node spacer) + + const float MultiNodeStart = -((MaxNodes - 1) * MultiNodeStep) / 2.f; + const float MultiNodeOffset = MultiNodeStart + (NodeIndex * MultiNodeStep); + + // Now we need to adjust the new center by the node size, zoom factor and multi node offset + const FVector2D NewCorner = NewCenter - (0.5f * DesiredNodeSize) + (DeltaNormal * MultiNodeOffset * DesiredNodeSize.Size()); + + GraphNode->NodePosX = NewCorner.X; + GraphNode->NodePosY = NewCorner.Y; +} + +FSlateColor SEdNode_GenericGraphEdge::GetEdgeColor() const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + if (EdgeNode != nullptr && EdgeNode->GenericGraphEdge != nullptr) + { + return EdgeNode->GenericGraphEdge->GetEdgeColour(); + } + return FLinearColor(0.9f, 0.9f, 0.9f, 1.0f); +} + +const FSlateBrush* SEdNode_GenericGraphEdge::GetEdgeImage() const +{ + return FAppStyle::GetBrush("Graph.TransitionNode.Icon"); +} + +EVisibility SEdNode_GenericGraphEdge::GetEdgeImageVisibility() const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + if (EdgeNode && EdgeNode->GenericGraphEdge && EdgeNode->GenericGraphEdge->bShouldDrawTitle) + return EVisibility::Hidden; + + return EVisibility::Visible; +} + +EVisibility SEdNode_GenericGraphEdge::GetEdgeTitleVisbility() const +{ + UEdNode_GenericGraphEdge* EdgeNode = CastChecked(GraphNode); + if (EdgeNode && EdgeNode->GenericGraphEdge && EdgeNode->GenericGraphEdge->bShouldDrawTitle) + return EVisibility::Visible; + + return EVisibility::Collapsed; +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphNode.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphNode.cpp new file mode 100644 index 00000000..d69e7eea --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/SEdNode_GenericGraphNode.cpp @@ -0,0 +1,336 @@ +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" +#include "GenericGraphEditorPCH.h" +#include "GenericGraphAssetEditor/Colors_GenericGraph.h" +#include "SLevelOfDetailBranchNode.h" +#include "Widgets/Text/SInlineEditableTextBlock.h" +#include "SCommentBubble.h" +#include "SlateOptMacros.h" +#include "SGraphPin.h" +#include "GraphEditorSettings.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/GenericGraphDragConnection.h" + +#define LOCTEXT_NAMESPACE "EdNode_GenericGraph" + +////////////////////////////////////////////////////////////////////////// +class SGenericGraphPin : public SGraphPin +{ +public: + SLATE_BEGIN_ARGS(SGenericGraphPin) {} + SLATE_END_ARGS() + + void Construct(const FArguments& InArgs, UEdGraphPin* InPin) + { + this->SetCursor(EMouseCursor::Default); + + bShowLabel = true; + + GraphPinObj = InPin; + check(GraphPinObj != nullptr); + + const UEdGraphSchema* Schema = GraphPinObj->GetSchema(); + check(Schema); + + SBorder::Construct(SBorder::FArguments() + .BorderImage(this, &SGenericGraphPin::GetPinBorder) + .BorderBackgroundColor(this, &SGenericGraphPin::GetPinColor) + .OnMouseButtonDown(this, &SGenericGraphPin::OnPinMouseDown) + .Cursor(this, &SGenericGraphPin::GetPinCursor) + .Padding(FMargin(5.0f)) + ); + } + +protected: + virtual FSlateColor GetPinColor() const override + { + return GenericGraphColors::Pin::Default; + } + + virtual TSharedRef GetDefaultValueWidget() override + { + return SNew(STextBlock); + } + + const FSlateBrush* GetPinBorder() const + { + return FAppStyle::GetBrush(TEXT("Graph.StateNode.Body")); + } + + virtual TSharedRef SpawnPinDragEvent(const TSharedRef& InGraphPanel, const TArray< TSharedRef >& InStartingPins) override + { + FGenericGraphDragConnection::FDraggedPinTable PinHandles; + PinHandles.Reserve(InStartingPins.Num()); + // since the graph can be refreshed and pins can be reconstructed/replaced + // behind the scenes, the DragDropOperation holds onto FGraphPinHandles + // instead of direct widgets/graph-pins + for (const TSharedRef& PinWidget : InStartingPins) + { + PinHandles.Add(PinWidget->GetPinObj()); + } + + return FGenericGraphDragConnection::New(InGraphPanel, PinHandles); + } + +}; + + +////////////////////////////////////////////////////////////////////////// +void SEdNode_GenericGraphNode::Construct(const FArguments& InArgs, UEdNode_GenericGraphNode* InNode) +{ + GraphNode = InNode; + UpdateGraphNode(); + InNode->SEdNode = this; +} + +BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION +void SEdNode_GenericGraphNode::UpdateGraphNode() +{ + const FMargin NodePadding = FMargin(5); + const FMargin NamePadding = FMargin(2); + + InputPins.Empty(); + OutputPins.Empty(); + + // Reset variables that are going to be exposed, in case we are refreshing an already setup node. + RightNodeBox.Reset(); + LeftNodeBox.Reset(); + + const FSlateBrush *NodeTypeIcon = GetNameIcon(); + + FLinearColor TitleShadowColor(0.6f, 0.6f, 0.6f); + TSharedPtr ErrorText; + TSharedPtr NodeBody; + TSharedPtr NodeTitle = SNew(SNodeTitle, GraphNode); + + this->ContentScale.Bind(this, &SGraphNode::GetContentScale); + this->GetOrAddSlot(ENodeZone::Center) + .HAlign(HAlign_Fill) + .VAlign(VAlign_Center) + [ + SNew(SBorder) + .BorderImage(FAppStyle::GetBrush("Graph.StateNode.Body")) + .Padding(0.0f) + .BorderBackgroundColor(this, &SEdNode_GenericGraphNode::GetBorderBackgroundColor) + [ + SNew(SOverlay) + + + SOverlay::Slot() + .HAlign(HAlign_Fill) + .VAlign(VAlign_Fill) + [ + SNew(SVerticalBox) + + // Input Pin Area + + SVerticalBox::Slot() + .FillHeight(1) + [ + SAssignNew(LeftNodeBox, SVerticalBox) + ] + + // Output Pin Area + + SVerticalBox::Slot() + .FillHeight(1) + [ + SAssignNew(RightNodeBox, SVerticalBox) + ] + ] + + + SOverlay::Slot() + .HAlign(HAlign_Center) + .VAlign(VAlign_Center) + .Padding(8.0f) + [ + SNew(SBorder) + .BorderImage(FAppStyle::GetBrush("Graph.StateNode.ColorSpill")) + .BorderBackgroundColor(TitleShadowColor) + .HAlign(HAlign_Center) + .VAlign(VAlign_Center) + .Visibility(EVisibility::SelfHitTestInvisible) + .Padding(6.0f) + [ + SAssignNew(NodeBody, SVerticalBox) + + // Title + + SVerticalBox::Slot() + .AutoHeight() + [ + SNew(SHorizontalBox) + + // Error message + + SHorizontalBox::Slot() + .AutoWidth() + [ + SAssignNew(ErrorText, SErrorText) + .BackgroundColor(this, &SEdNode_GenericGraphNode::GetErrorColor) + .ToolTipText(this, &SEdNode_GenericGraphNode::GetErrorMsgToolTip) + ] + + // Icon + +SHorizontalBox::Slot() + .AutoWidth() + .VAlign(VAlign_Center) + [ + SNew(SImage) + .Image(NodeTypeIcon) + ] + + // Node Title + + SHorizontalBox::Slot() + .Padding(FMargin(4.0f, 0.0f, 4.0f, 0.0f)) + [ + SNew(SVerticalBox) + + SVerticalBox::Slot() + .AutoHeight() + [ + SAssignNew(InlineEditableText, SInlineEditableTextBlock) + .Style(FAppStyle::Get(), "Graph.StateNode.NodeTitleInlineEditableText") + .Text(NodeTitle.Get(), &SNodeTitle::GetHeadTitle) + .OnVerifyTextChanged(this, &SEdNode_GenericGraphNode::OnVerifyNameTextChanged) + .OnTextCommitted(this, &SEdNode_GenericGraphNode::OnNameTextCommited) + .IsReadOnly(this, &SEdNode_GenericGraphNode::IsNameReadOnly) + .IsSelected(this, &SEdNode_GenericGraphNode::IsSelectedExclusively) + ] + + SVerticalBox::Slot() + .AutoHeight() + [ + NodeTitle.ToSharedRef() + ] + ] + ] + ] + ] + ] + ]; + + // Create comment bubble + TSharedPtr CommentBubble; + const FSlateColor CommentColor = GetDefault()->DefaultCommentNodeTitleColor; + + SAssignNew(CommentBubble, SCommentBubble) + .GraphNode(GraphNode) + .Text(this, &SGraphNode::GetNodeComment) + .OnTextCommitted(this, &SGraphNode::OnCommentTextCommitted) + .ColorAndOpacity(CommentColor) + .AllowPinning(true) + .EnableTitleBarBubble(true) + .EnableBubbleCtrls(true) + .GraphLOD(this, &SGraphNode::GetCurrentLOD) + .IsGraphNodeHovered(this, &SGraphNode::IsHovered); + + GetOrAddSlot(ENodeZone::TopCenter) + .SlotOffset(TAttribute(CommentBubble.Get(), &SCommentBubble::GetOffset)) + .SlotSize(TAttribute(CommentBubble.Get(), &SCommentBubble::GetSize)) + .AllowScaling(TAttribute(CommentBubble.Get(), &SCommentBubble::IsScalingAllowed)) + .VAlign(VAlign_Top) + [ + CommentBubble.ToSharedRef() + ]; + + ErrorReporting = ErrorText; + ErrorReporting->SetError(ErrorMsg); + CreatePinWidgets(); +} + +void SEdNode_GenericGraphNode::CreatePinWidgets() +{ + UEdNode_GenericGraphNode* StateNode = CastChecked(GraphNode); + + for (int32 PinIdx = 0; PinIdx < StateNode->Pins.Num(); PinIdx++) + { + UEdGraphPin* MyPin = StateNode->Pins[PinIdx]; + if (!MyPin->bHidden) + { + TSharedPtr NewPin = SNew(SGenericGraphPin, MyPin); + + AddPin(NewPin.ToSharedRef()); + } + } +} + +void SEdNode_GenericGraphNode::AddPin(const TSharedRef& PinToAdd) +{ + PinToAdd->SetOwner(SharedThis(this)); + + const UEdGraphPin* PinObj = PinToAdd->GetPinObj(); + const bool bAdvancedParameter = PinObj && PinObj->bAdvancedView; + if (bAdvancedParameter) + { + PinToAdd->SetVisibility( TAttribute(PinToAdd, &SGraphPin::IsPinVisibleAsAdvanced) ); + } + + TSharedPtr PinBox; + if (PinToAdd->GetDirection() == EEdGraphPinDirection::EGPD_Input) + { + PinBox = LeftNodeBox; + InputPins.Add(PinToAdd); + } + else // Direction == EEdGraphPinDirection::EGPD_Output + { + PinBox = RightNodeBox; + OutputPins.Add(PinToAdd); + } + + if (PinBox) + { + PinBox->AddSlot() + .HAlign(HAlign_Fill) + .VAlign(VAlign_Fill) + .FillHeight(1.0f) + //.Padding(6.0f, 0.0f) + [ + PinToAdd + ]; + } +} + +bool SEdNode_GenericGraphNode::IsNameReadOnly() const +{ + UEdNode_GenericGraphNode* EdNode_Node = Cast(GraphNode); + check(EdNode_Node != nullptr); + + UGenericGraph* GenericGraph = EdNode_Node->GenericGraphNode->Graph; + check(GenericGraph != nullptr); + + return (!GenericGraph->bCanRenameNode || !EdNode_Node->GenericGraphNode->IsNameEditable()) || SGraphNode::IsNameReadOnly(); +} + +END_SLATE_FUNCTION_BUILD_OPTIMIZATION + +void SEdNode_GenericGraphNode::OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo) +{ + SGraphNode::OnNameTextCommited(InText, CommitInfo); + + UEdNode_GenericGraphNode* MyNode = CastChecked(GraphNode); + + if (MyNode != nullptr && MyNode->GenericGraphNode != nullptr) + { + const FScopedTransaction Transaction(LOCTEXT("GenericGraphEditorRenameNode", "Generic Graph Editor: Rename Node")); + MyNode->Modify(); + MyNode->GenericGraphNode->Modify(); + MyNode->GenericGraphNode->SetNodeTitle(InText); + UpdateGraphNode(); + } +} + +FSlateColor SEdNode_GenericGraphNode::GetBorderBackgroundColor() const +{ + UEdNode_GenericGraphNode* MyNode = CastChecked(GraphNode); + return MyNode ? MyNode->GetBackgroundColor() : GenericGraphColors::NodeBorder::HighlightAbortRange0; +} + +FSlateColor SEdNode_GenericGraphNode::GetBackgroundColor() const +{ + return GenericGraphColors::NodeBody::Default; +} + +EVisibility SEdNode_GenericGraphNode::GetDragOverMarkerVisibility() const +{ + return EVisibility::Visible; +} + +const FSlateBrush* SEdNode_GenericGraphNode::GetNameIcon() const +{ + return FAppStyle::GetBrush(TEXT("BTEditor.Graph.BTNode.Icon")); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/Settings_GenericGraphEditor.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/Settings_GenericGraphEditor.cpp new file mode 100644 index 00000000..a5180a8d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphAssetEditor/Settings_GenericGraphEditor.cpp @@ -0,0 +1,24 @@ +#include "GenericGraphAssetEditor/Settings_GenericGraphEditor.h" + +UGenericGraphEditorSettings::UGenericGraphEditorSettings() +{ + AutoLayoutStrategy = EAutoLayoutStrategy::Tree; + + bFirstPassOnly = false; + + bRandomInit = false; + + OptimalDistance = 100.f; + + MaxIteration = 50; + + InitTemperature = 10.f; + + CoolDownRate = 10.f; +} + +UGenericGraphEditorSettings::~UGenericGraphEditorSettings() +{ + +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphEditor.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphEditor.cpp new file mode 100644 index 00000000..b83d1f6d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphEditor.cpp @@ -0,0 +1,55 @@ +#include "GenericGraphEditor.h" +#include "GenericGraphNodeFactory.h" +#include "AssetTypeActions_GenericGraph.h" +#include "GenericGraphAssetEditor/GenericGraphEditorStyle.h" + +DEFINE_LOG_CATEGORY(GenericGraphEditor) + +#define LOCTEXT_NAMESPACE "Editor_GenericGraph" + +void FGenericGraphEditor::StartupModule() +{ + FGenericGraphEditorStyle::Initialize(); + + GraphPanelNodeFactory_GenericGraph = MakeShareable(new FGraphPanelNodeFactory_GenericGraph()); + FEdGraphUtilities::RegisterVisualNodeFactory(GraphPanelNodeFactory_GenericGraph); + + IAssetTools& AssetTools = FModuleManager::LoadModuleChecked("AssetTools").Get(); + + GenericGraphAssetCategoryBit = AssetTools.RegisterAdvancedAssetCategory(FName(TEXT("GenericGraph")), LOCTEXT("GenericGraphAssetCategory", "GenericGraph")); + + RegisterAssetTypeAction(AssetTools, MakeShareable(new FAssetTypeActions_GenericGraph(GenericGraphAssetCategoryBit))); +} + + +void FGenericGraphEditor::ShutdownModule() +{ + // Unregister all the asset types that we registered + if (FModuleManager::Get().IsModuleLoaded("AssetTools")) + { + IAssetTools& AssetTools = FModuleManager::GetModuleChecked("AssetTools").Get(); + for (int32 Index = 0; Index < CreatedAssetTypeActions.Num(); ++Index) + { + AssetTools.UnregisterAssetTypeActions(CreatedAssetTypeActions[Index].ToSharedRef()); + } + } + + if (GraphPanelNodeFactory_GenericGraph.IsValid()) + { + FEdGraphUtilities::UnregisterVisualNodeFactory(GraphPanelNodeFactory_GenericGraph); + GraphPanelNodeFactory_GenericGraph.Reset(); + } + + FGenericGraphEditorStyle::Shutdown(); +} + +void FGenericGraphEditor::RegisterAssetTypeAction(IAssetTools& AssetTools, TSharedRef Action) +{ + AssetTools.RegisterAssetTypeActions(Action); + CreatedAssetTypeActions.Add(Action); +} + +IMPLEMENT_MODULE(FGenericGraphEditor, GenericGraphEditor) + +#undef LOCTEXT_NAMESPACE + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphFactory.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphFactory.cpp new file mode 100644 index 00000000..4c9fc7bb --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphFactory.cpp @@ -0,0 +1,117 @@ +#include "GenericGraphFactory.h" +#include "GenericGraph.h" + +#include "ClassViewerModule.h" +#include "ClassViewerFilter.h" +#include "Kismet2/KismetEditorUtilities.h" +#include "Kismet2/SClassPickerDialog.h" + +#define LOCTEXT_NAMESPACE "GenericGraphFactory" + +class FAssetClassParentFilter : public IClassViewerFilter +{ +public: + FAssetClassParentFilter() + : DisallowedClassFlags(CLASS_None), bDisallowBlueprintBase(false) + {} + + /** All children of these classes will be included unless filtered out by another setting. */ + TSet< const UClass* > AllowedChildrenOfClasses; + + /** Disallowed class flags. */ + EClassFlags DisallowedClassFlags; + + /** Disallow blueprint base classes. */ + bool bDisallowBlueprintBase; + + virtual bool IsClassAllowed(const FClassViewerInitializationOptions& InInitOptions, const UClass* InClass, TSharedRef< FClassViewerFilterFuncs > InFilterFuncs) override + { + bool bAllowed= !InClass->HasAnyClassFlags(DisallowedClassFlags) + && InFilterFuncs->IfInChildOfClassesSet(AllowedChildrenOfClasses, InClass) != EFilterReturn::Failed; + + if (bAllowed && bDisallowBlueprintBase) + { + if (FKismetEditorUtilities::CanCreateBlueprintOfClass(InClass)) + { + return false; + } + } + + return bAllowed; + } + + virtual bool IsUnloadedClassAllowed(const FClassViewerInitializationOptions& InInitOptions, const TSharedRef< const IUnloadedBlueprintData > InUnloadedClassData, TSharedRef< FClassViewerFilterFuncs > InFilterFuncs) override + { + if (bDisallowBlueprintBase) + { + return false; + } + + return !InUnloadedClassData->HasAnyClassFlags(DisallowedClassFlags) + && InFilterFuncs->IfInChildOfClassesSet(AllowedChildrenOfClasses, InUnloadedClassData) != EFilterReturn::Failed; + } +}; + + +UGenericGraphFactory::UGenericGraphFactory() +{ + bCreateNew = true; + bEditAfterNew = true; + SupportedClass = UGenericGraph::StaticClass(); +} + +UGenericGraphFactory::~UGenericGraphFactory() +{ + +} + +bool UGenericGraphFactory::ConfigureProperties() +{ + // nullptr the GenericGraphClass so we can check for selection + GenericGraphClass = nullptr; + + // Load the classviewer module to display a class picker + FClassViewerModule& ClassViewerModule = FModuleManager::LoadModuleChecked("ClassViewer"); + + // Fill in options + FClassViewerInitializationOptions Options; + Options.Mode = EClassViewerMode::ClassPicker; + +#if ENGINE_MAJOR_VERSION < 5 + TSharedPtr Filter = MakeShareable(new FAssetClassParentFilter); + Options.ClassFilter = Filter; +#else // #if ENGINE_MAJOR_VERSION < 5 + TSharedRef Filter = MakeShareable(new FAssetClassParentFilter); + Options.ClassFilters.Add(Filter); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 + + Filter->DisallowedClassFlags = CLASS_Abstract | CLASS_Deprecated | CLASS_NewerVersionExists | CLASS_HideDropDown; + Filter->AllowedChildrenOfClasses.Add(UGenericGraph::StaticClass()); + + const FText TitleText = LOCTEXT("CreateGenericGraphAssetOptions", "Pick Generic Graph Class"); + UClass* ChosenClass = nullptr; + const bool bPressedOk = SClassPickerDialog::PickClass(TitleText, Options, ChosenClass, UGenericGraph::StaticClass()); + + if ( bPressedOk ) + { + GenericGraphClass = ChosenClass; + } + + return bPressedOk; +} + +UObject* UGenericGraphFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) +{ + if (GenericGraphClass != nullptr) + { + return NewObject(InParent, GenericGraphClass, Name, Flags | RF_Transactional); + } + else + { + check(Class->IsChildOf(UGenericGraph::StaticClass())); + return NewObject(InParent, Class, Name, Flags | RF_Transactional); + } + +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphNodeFactory.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphNodeFactory.cpp new file mode 100644 index 00000000..e79dd2cf --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Private/GenericGraphNodeFactory.cpp @@ -0,0 +1,20 @@ +#include "GenericGraphNodeFactory.h" +#include +#include "GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/SEdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" + +TSharedPtr FGraphPanelNodeFactory_GenericGraph::CreateNode(UEdGraphNode* Node) const +{ + if (UEdNode_GenericGraphNode* EdNode_GraphNode = Cast(Node)) + { + return SNew(SEdNode_GenericGraphNode, EdNode_GraphNode); + } + else if (UEdNode_GenericGraphEdge* EdNode_Edge = Cast(Node)) + { + return SNew(SEdNode_GenericGraphEdge, EdNode_Edge); + } + return nullptr; +} + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AssetTypeActions_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AssetTypeActions_GenericGraph.h new file mode 100644 index 00000000..8d7ba935 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AssetTypeActions_GenericGraph.h @@ -0,0 +1,19 @@ +#pragma once + +#include "CoreMinimal.h" +#include "AssetTypeActions_Base.h" + +class GENERICGRAPHEDITOR_API FAssetTypeActions_GenericGraph : public FAssetTypeActions_Base +{ +public: + FAssetTypeActions_GenericGraph(EAssetTypeCategories::Type InAssetCategory); + + virtual FText GetName() const override; + virtual FColor GetTypeColor() const override; + virtual UClass* GetSupportedClass() const override; + virtual void OpenAssetEditor(const TArray& InObjects, TSharedPtr EditWithinLevelEditor = TSharedPtr()) override; + virtual uint32 GetCategories() override; + +private: + EAssetTypeCategories::Type MyAssetCategory; +}; \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/AutoLayoutStrategy.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/AutoLayoutStrategy.h new file mode 100644 index 00000000..52a5efb3 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/AutoLayoutStrategy.h @@ -0,0 +1,40 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraph.h" +#include "GenericGraph.h" +#include "GenericGraphAssetEditor/EdGraph_GenericGraph.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphNode.h" +#include "GenericGraphAssetEditor/EdNode_GenericGraphEdge.h" +#include "GenericGraphAssetEditor/Settings_GenericGraphEditor.h" +#include "AutoLayoutStrategy.generated.h" + +UCLASS(abstract) +class GENERICGRAPHEDITOR_API UAutoLayoutStrategy : public UObject +{ + GENERATED_BODY() +public: + UAutoLayoutStrategy(); + virtual ~UAutoLayoutStrategy(); + + virtual void Layout(UEdGraph* G) {}; + + class UGenericGraphEditorSettings* Settings; + +protected: + int32 GetNodeWidth(UEdNode_GenericGraphNode* EdNode); + + int32 GetNodeHeight(UEdNode_GenericGraphNode* EdNode); + + FBox2D GetNodeBound(UEdGraphNode* EdNode); + + FBox2D GetActualBounds(UGenericGraphNode* RootNode); + + virtual void RandomLayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& Bound); + +protected: + UGenericGraph* Graph; + UEdGraph_GenericGraph* EdGraph; + int32 MaxIteration; + int32 OptimalDistance; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/ForceDirectedLayoutStrategy.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/ForceDirectedLayoutStrategy.h new file mode 100644 index 00000000..e5c40c95 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/ForceDirectedLayoutStrategy.h @@ -0,0 +1,24 @@ +#pragma once + +#include "CoreMinimal.h" +#include "AutoLayoutStrategy.h" +#include "ForceDirectedLayoutStrategy.generated.h" + +UCLASS() +class GENERICGRAPHEDITOR_API UForceDirectedLayoutStrategy : public UAutoLayoutStrategy +{ + GENERATED_BODY() +public: + UForceDirectedLayoutStrategy(); + virtual ~UForceDirectedLayoutStrategy(); + + virtual void Layout(UEdGraph* EdGraph) override; + +protected: + virtual FBox2D LayoutOneTree(UGenericGraphNode* RootNode, const FBox2D& PreTreeBound); + +protected: + bool bRandomInit; + float InitTemperature; + float CoolDownRate; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/TreeLayoutStrategy.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/TreeLayoutStrategy.h new file mode 100644 index 00000000..27c7ff42 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/AutoLayout/TreeLayoutStrategy.h @@ -0,0 +1,29 @@ +#pragma once + +#include "CoreMinimal.h" +#include "AutoLayoutStrategy.h" +#include "TreeLayoutStrategy.generated.h" + +UCLASS() +class GENERICGRAPHEDITOR_API UTreeLayoutStrategy : public UAutoLayoutStrategy +{ + GENERATED_BODY() +public: + UTreeLayoutStrategy(); + virtual ~UTreeLayoutStrategy(); + + virtual void Layout(UEdGraph* EdGraph) override; + +protected: + void InitPass(UGenericGraphNode* RootNode, const FVector2D& Anchor); + bool ResolveConflictPass(UGenericGraphNode* Node); + + bool ResolveConflict(UGenericGraphNode* LRoot, UGenericGraphNode* RRoot); + + void GetLeftContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour); + void GetRightContour(UGenericGraphNode* RootNode, int32 Level, TArray& Contour); + + void ShiftSubTree(UGenericGraphNode* RootNode, const FVector2D& Offset); + + void UpdateParentNodePosition(UGenericGraphNode* RootNode); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h new file mode 100644 index 00000000..37e5d092 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditorToolbar_GenericGraph.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "CoreMinimal.h" + +class FAssetEditor_GenericGraph; +class FExtender; +class FToolBarBuilder; + +class GENERICGRAPHEDITOR_API FAssetEditorToolbar_GenericGraph : public TSharedFromThis +{ +public: + FAssetEditorToolbar_GenericGraph(TSharedPtr InGenericGraphEditor) + : GenericGraphEditor(InGenericGraphEditor) {} + + void AddGenericGraphToolbar(TSharedPtr Extender); + +private: + void FillGenericGraphToolbar(FToolBarBuilder& ToolbarBuilder); + +protected: + /** Pointer back to the blueprint editor tool that owns us */ + TWeakPtr GenericGraphEditor; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditor_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditor_GenericGraph.h new file mode 100644 index 00000000..f1cc415b --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetEditor_GenericGraph.h @@ -0,0 +1,137 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Settings_GenericGraphEditor.h" +#include "GenericGraph.h" + +#if ENGINE_MAJOR_VERSION == 5 +#include "UObject/ObjectSaveContext.h" +#endif // #if ENGINE_MAJOR_VERSION == 5 + +class FGGAssetEditorToolbar; + +class GENERICGRAPHEDITOR_API FAssetEditor_GenericGraph : public FAssetEditorToolkit, public FNotifyHook, public FGCObject +{ +public: + FAssetEditor_GenericGraph(); + virtual ~FAssetEditor_GenericGraph(); + + void InitGenericGraphAssetEditor(const EToolkitMode::Type Mode, const TSharedPtr< IToolkitHost >& InitToolkitHost, UGenericGraph* Graph); + + // IToolkit interface + virtual void RegisterTabSpawners(const TSharedRef& TabManager) override; + virtual void UnregisterTabSpawners(const TSharedRef& TabManager) override; + // End of IToolkit interface + + // FAssetEditorToolkit + virtual FName GetToolkitFName() const override; + virtual FText GetBaseToolkitName() const override; + virtual FText GetToolkitName() const override; + virtual FText GetToolkitToolTipText() const override; + virtual FLinearColor GetWorldCentricTabColorScale() const override; + virtual FString GetWorldCentricTabPrefix() const override; + virtual FString GetDocumentationLink() const override; + virtual void SaveAsset_Execute() override; + // End of FAssetEditorToolkit + + //Toolbar + void UpdateToolbar(); + TSharedPtr GetToolbarBuilder() { return ToolbarBuilder; } + void RegisterToolbarTab(const TSharedRef& TabManager); + + + // FSerializableObject interface + virtual void AddReferencedObjects(FReferenceCollector& Collector) override; + // End of FSerializableObject interface + +#if ENGINE_MAJOR_VERSION == 5 + // FGCObject interface + virtual FString GetReferencerName() const + { + return TEXT("FAssetEditor_LTGenericGraph"); + } + // ~FGCObject interface +#endif // #if ENGINE_MAJOR_VERSION == 5 + + UGenericGraphEditorSettings* GetSettings() const; + +protected: + TSharedRef SpawnTab_Viewport(const FSpawnTabArgs& Args); + TSharedRef SpawnTab_Details(const FSpawnTabArgs& Args); + TSharedRef SpawnTab_EditorSettings(const FSpawnTabArgs& Args); + + void CreateInternalWidgets(); + TSharedRef CreateViewportWidget(); + + + void BindCommands(); + + void CreateEdGraph(); + + void CreateCommandList(); + + TSharedPtr GetCurrGraphEditor() const; + + FGraphPanelSelectionSet GetSelectedNodes() const; + + void RebuildGenericGraph(); + + // Delegates for graph editor commands + void SelectAllNodes(); + bool CanSelectAllNodes(); + void DeleteSelectedNodes(); + bool CanDeleteNodes(); + void DeleteSelectedDuplicatableNodes(); + void CutSelectedNodes(); + bool CanCutNodes(); + void CopySelectedNodes(); + bool CanCopyNodes(); + void PasteNodes(); + void PasteNodesHere(const FVector2D& Location); + bool CanPasteNodes(); + void DuplicateNodes(); + bool CanDuplicateNodes(); + + void GraphSettings(); + bool CanGraphSettings() const; + + void AutoArrange(); + bool CanAutoArrange() const; + + void OnRenameNode(); + bool CanRenameNodes() const; + + ////////////////////////////////////////////////////////////////////////// + // graph editor event + void OnSelectedNodesChanged(const TSet& NewSelection); + + void OnNodeDoubleClicked(UEdGraphNode* Node); + + void OnFinishedChangingProperties(const FPropertyChangedEvent& PropertyChangedEvent); + +#if ENGINE_MAJOR_VERSION < 5 + void OnPackageSaved(const FString& PackageFileName, UObject* Outer); +#else // #if ENGINE_MAJOR_VERSION < 5 + void OnPackageSavedWithContext(const FString& PackageFileName, UPackage* Package, FObjectPostSaveContext ObjectSaveContext); +#endif // #else // #if ENGINE_MAJOR_VERSION < 5 + +protected: + UGenericGraphEditorSettings* GenricGraphEditorSettings; + + UGenericGraph* EditingGraph; + + //Toolbar + TSharedPtr ToolbarBuilder; + + /** Handle to the registered OnPackageSave delegate */ + FDelegateHandle OnPackageSavedDelegateHandle; + + TSharedPtr ViewportWidget; + TSharedPtr PropertyWidget; + TSharedPtr EditorSettingsWidget; + + /** The command list for this editor */ + TSharedPtr GraphEditorCommands; +}; + + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h new file mode 100644 index 00000000..faf74b9c --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/AssetGraphSchema_GenericGraph.h @@ -0,0 +1,90 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraph.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.h" +#include "AssetGraphSchema_GenericGraph.generated.h" + +class UEdNode_GenericGraphNode; +class UEdNode_GenericGraphEdge; +class UAutoLayoutStrategy; + +/** Action to add a node to the graph */ +USTRUCT() +struct GENERICGRAPHEDITOR_API FAssetSchemaAction_GenericGraph_NewNode : public FEdGraphSchemaAction +{ + GENERATED_USTRUCT_BODY(); + +public: + FAssetSchemaAction_GenericGraph_NewNode(): NodeTemplate(nullptr) {} + + FAssetSchemaAction_GenericGraph_NewNode(const FText& InNodeCategory, const FText& InMenuDesc, const FText& InToolTip, const int32 InGrouping) + : FEdGraphSchemaAction(InNodeCategory, InMenuDesc, InToolTip, InGrouping), NodeTemplate(nullptr) {} + + virtual UEdGraphNode* PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode = true) override; + virtual void AddReferencedObjects(FReferenceCollector& Collector) override; + + UEdNode_GenericGraphNode* NodeTemplate; +}; + +USTRUCT() +struct GENERICGRAPHEDITOR_API FAssetSchemaAction_GenericGraph_NewEdge : public FEdGraphSchemaAction +{ + GENERATED_USTRUCT_BODY(); + +public: + FAssetSchemaAction_GenericGraph_NewEdge(): NodeTemplate(nullptr){} + + FAssetSchemaAction_GenericGraph_NewEdge(const FText& InNodeCategory, const FText& InMenuDesc, const FText& InToolTip, const int32 InGrouping) + : FEdGraphSchemaAction(InNodeCategory, InMenuDesc, InToolTip, InGrouping), NodeTemplate(nullptr) {} + + virtual UEdGraphNode* PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, bool bSelectNewNode = true) override; + virtual void AddReferencedObjects(FReferenceCollector& Collector) override; + + UEdNode_GenericGraphEdge* NodeTemplate; +}; + +UCLASS(MinimalAPI) +class UAssetGraphSchema_GenericGraph : public UEdGraphSchema +{ + GENERATED_BODY() + +public: + void GetBreakLinkToSubMenuActions(class UToolMenu* Menu, class UEdGraphPin* InGraphPin); + + virtual EGraphType GetGraphType(const UEdGraph* TestEdGraph) const override; + + virtual void GetGraphContextActions(FGraphContextMenuBuilder& ContextMenuBuilder) const override; + + virtual void GetContextMenuActions(class UToolMenu* Menu, class UGraphNodeContextMenuContext* Context) const override; + + virtual const FPinConnectionResponse CanCreateConnection(const UEdGraphPin* A, const UEdGraphPin* B) const override; + + virtual bool TryCreateConnection(UEdGraphPin* A, UEdGraphPin* B) const override; + virtual bool CreateAutomaticConversionNodeAndConnections(UEdGraphPin* A, UEdGraphPin* B) const override; + + virtual class FConnectionDrawingPolicy* CreateConnectionDrawingPolicy(int32 InBackLayerID, int32 InFrontLayerID, float InZoomFactor, const FSlateRect& InClippingRect, class FSlateWindowElementList& InDrawElements, class UEdGraph* InGraphObj) const override; + + virtual FLinearColor GetPinTypeColor(const FEdGraphPinType& PinType) const override; + + virtual void BreakNodeLinks(UEdGraphNode& TargetNode) const override; + + virtual void BreakPinLinks(UEdGraphPin& TargetPin, bool bSendsNodeNotifcation) const override; + + virtual void BreakSinglePinLink(UEdGraphPin* SourcePin, UEdGraphPin* TargetPin) const override; + + virtual UEdGraphPin* DropPinOnNode(UEdGraphNode* InTargetNode, const FName& InSourcePinName, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection) const override; + + virtual bool SupportsDropPinOnNode(UEdGraphNode* InTargetNode, const FEdGraphPinType& InSourcePinType, EEdGraphPinDirection InSourcePinDirection, FText& OutErrorMessage) const override; + + virtual bool IsCacheVisualizationOutOfDate(int32 InVisualizationCacheID) const override; + + virtual int32 GetCurrentVisualizationCacheID() const override; + + virtual void ForceVisualizationCacheClear() const override; + +private: + static int32 CurrentCacheRefreshID; +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Colors_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Colors_GenericGraph.h new file mode 100644 index 00000000..5258d1a8 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Colors_GenericGraph.h @@ -0,0 +1,45 @@ +#pragma once + +#include "CoreMinimal.h" + +namespace GenericGraphColors +{ + namespace NodeBody + { + const FLinearColor Default(0.1f, 0.1f, 0.1f); + const FLinearColor Root(0.5f, 0.5f, 0.5f, 0.1f); + const FLinearColor Error(1.0f, 0.0f, 0.0f); + } + + namespace NodeBorder + { + const FLinearColor Inactive(0.08f, 0.08f, 0.08f); + const FLinearColor Root(0.2f, 0.2f, 0.2f, 0.2f); + const FLinearColor Selected(1.00f, 0.08f, 0.08f); + const FLinearColor ActiveDebugging(1.0f, 1.0f, 0.0f); + const FLinearColor InactiveDebugging(0.4f, 0.4f, 0.0f); + const FLinearColor HighlightAbortRange0(0.0f, 0.22f, 0.4f); + const FLinearColor HighlightAbortRange1(0.0f, 0.4f, 0.22f); + const FLinearColor Disconnected(0.f, 0.f, 0.f); + const FLinearColor BrokenWithParent(1.f, 0.f, 1.f); + const FLinearColor QuickFind(0.f, 0.8f, 0.f); + } + + namespace Pin + { + const FLinearColor Diff(0.9f, 0.2f, 0.15f); + const FLinearColor Hover(1.0f, 0.7f, 0.0f); + const FLinearColor Default(0.02f, 0.02f, 0.02f); + const FLinearColor SingleNode(0.02f, 0.02f, 0.02f); + } + + namespace Connection + { + const FLinearColor Default(1.0f, 1.0f, 1.0f); + } + + namespace Action + { + const FLinearColor DragMarker(1.0f, 1.0f, 0.2f); + } +} diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h new file mode 100644 index 00000000..e375e816 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/ConnectionDrawingPolicy_GenericGraph.h @@ -0,0 +1,27 @@ +#pragma once + +#include "CoreMinimal.h" +#include "ConnectionDrawingPolicy.h" + +class GENERICGRAPHEDITOR_API FConnectionDrawingPolicy_GenericGraph : public FConnectionDrawingPolicy +{ +protected: + UEdGraph* GraphObj; + TMap NodeWidgetMap; + +public: + FConnectionDrawingPolicy_GenericGraph(int32 InBackLayerID, int32 InFrontLayerID, float ZoomFactor, const FSlateRect& InClippingRect, FSlateWindowElementList& InDrawElements, UEdGraph* InGraphObj); + + // FConnectionDrawingPolicy interface + virtual void DetermineWiringStyle(UEdGraphPin* OutputPin, UEdGraphPin* InputPin, /*inout*/ FConnectionParams& Params) override; + virtual void Draw(TMap, FArrangedWidget>& PinGeometries, FArrangedChildren& ArrangedNodes) override; + virtual void DrawSplineWithArrow(const FGeometry& StartGeom, const FGeometry& EndGeom, const FConnectionParams& Params) override; + virtual void DrawSplineWithArrow(const FVector2D& StartPoint, const FVector2D& EndPoint, const FConnectionParams& Params) override; + virtual void DrawPreviewConnector(const FGeometry& PinGeometry, const FVector2D& StartPoint, const FVector2D& EndPoint, UEdGraphPin* Pin) override; + virtual FVector2D ComputeSplineTangent(const FVector2D& Start, const FVector2D& End) const override; + virtual void DetermineLinkGeometry(FArrangedChildren& ArrangedNodes, TSharedRef& OutputPinWidget, UEdGraphPin* OutputPin, UEdGraphPin* InputPin, FArrangedWidget*& StartWidgetGeometry, FArrangedWidget*& EndWidgetGeometry) override; + // End of FConnectionDrawingPolicy interface + +protected: + void Internal_DrawLineWithArrow(const FVector2D& StartAnchorPoint, const FVector2D& EndAnchorPoint, const FConnectionParams& Params); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdGraph_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdGraph_GenericGraph.h new file mode 100644 index 00000000..5cb92af3 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdGraph_GenericGraph.h @@ -0,0 +1,39 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraph.h" +#include "EdGraph_GenericGraph.generated.h" + +class UGenericGraph; +class UGenericGraphNode; +class UGenericGraphEdge; +class UEdNode_GenericGraphNode; +class UEdNode_GenericGraphEdge; + +UCLASS() +class GENERICGRAPHEDITOR_API UEdGraph_GenericGraph : public UEdGraph +{ + GENERATED_BODY() + +public: + UEdGraph_GenericGraph(); + virtual ~UEdGraph_GenericGraph(); + + virtual void RebuildGenericGraph(); + + UGenericGraph* GetGenericGraph() const; + + virtual bool Modify(bool bAlwaysMarkDirty = true) override; + virtual void PostEditUndo() override; + + UPROPERTY(Transient) + TMap NodeMap; + + UPROPERTY(Transient) + TMap EdgeMap; + +protected: + void Clear(); + + void SortNodes(UGenericGraphNode* RootNode); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphEdge.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphEdge.h new file mode 100644 index 00000000..ac480d8f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphEdge.h @@ -0,0 +1,42 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraphNode.h" +#include "EdNode_GenericGraphEdge.generated.h" + +class UGenericGraphNode; +class UGenericGraphEdge; +class UEdNode_GenericGraphNode; + +UCLASS(MinimalAPI) +class UEdNode_GenericGraphEdge : public UEdGraphNode +{ + GENERATED_BODY() + +public: + UEdNode_GenericGraphEdge(); + + UPROPERTY() + class UEdGraph* Graph; + + UPROPERTY(VisibleAnywhere, Instanced, Category = "GenericGraph") + UGenericGraphEdge* GenericGraphEdge; + + void SetEdge(UGenericGraphEdge* Edge); + + virtual void AllocateDefaultPins() override; + + virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override; + + virtual void PinConnectionListChanged(UEdGraphPin* Pin) override; + + virtual void PrepareForCopying() override; + + virtual UEdGraphPin* GetInputPin() const { return Pins[0]; } + virtual UEdGraphPin* GetOutputPin() const { return Pins[1]; } + + void CreateConnections(UEdNode_GenericGraphNode* Start, UEdNode_GenericGraphNode* End); + + UEdNode_GenericGraphNode* GetStartNode(); + UEdNode_GenericGraphNode* GetEndNode(); +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphNode.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphNode.h new file mode 100644 index 00000000..258a089c --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EdNode_GenericGraphNode.h @@ -0,0 +1,42 @@ +#pragma once + +#include "CoreMinimal.h" +#include "EdGraph/EdGraphNode.h" +#include "GenericGraphNode.h" +#include "EdNode_GenericGraphNode.generated.h" + +class UEdNode_GenericGraphEdge; +class UEdGraph_GenericGraph; +class SEdNode_GenericGraphNode; + +UCLASS(MinimalAPI) +class UEdNode_GenericGraphNode : public UEdGraphNode +{ + GENERATED_BODY() + +public: + UEdNode_GenericGraphNode(); + virtual ~UEdNode_GenericGraphNode(); + + UPROPERTY(VisibleAnywhere, Instanced, Category = "GenericGraph") + UGenericGraphNode* GenericGraphNode; + + void SetGenericGraphNode(UGenericGraphNode* InNode); + UEdGraph_GenericGraph* GetGenericGraphEdGraph(); + + SEdNode_GenericGraphNode* SEdNode; + + virtual void AllocateDefaultPins() override; + virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override; + virtual void PrepareForCopying() override; + virtual void AutowireNewNode(UEdGraphPin* FromPin) override; + + virtual FLinearColor GetBackgroundColor() const; + virtual UEdGraphPin* GetInputPin() const; + virtual UEdGraphPin* GetOutputPin() const; + +#if WITH_EDITOR + virtual void PostEditUndo() override; +#endif + +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EditorCommands_GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EditorCommands_GenericGraph.h new file mode 100644 index 00000000..ff6c5bd9 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/EditorCommands_GenericGraph.h @@ -0,0 +1,18 @@ +#pragma once + +#include "CoreMinimal.h" + +class GENERICGRAPHEDITOR_API FEditorCommands_GenericGraph : public TCommands +{ +public: + /** Constructor */ + FEditorCommands_GenericGraph() + : TCommands("GenericGraphEditor", NSLOCTEXT("Contexts", "GenericGraphEditor", "Generic Graph Editor"), NAME_None, FAppStyle::GetAppStyleSetName()) + { + } + + TSharedPtr GraphSettings; + TSharedPtr AutoArrange; + + virtual void RegisterCommands() override; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphDragConnection.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphDragConnection.h new file mode 100644 index 00000000..bd0a91af --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphDragConnection.h @@ -0,0 +1,52 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Input/DragAndDrop.h" +#include "Input/Reply.h" +#include "Widgets/SWidget.h" +#include "SGraphPin.h" +#include "GraphEditorDragDropAction.h" + +class SGraphPanel; +class UEdGraph; + +class FGenericGraphDragConnection : public FGraphEditorDragDropAction +{ +public: + DRAG_DROP_OPERATOR_TYPE(FDragConnection, FGraphEditorDragDropAction) + + typedef TArray FDraggedPinTable; + static TSharedRef New(const TSharedRef& InGraphPanel, const FDraggedPinTable& InStartingPins); + + // FDragDropOperation interface + virtual void OnDrop(bool bDropWasHandled, const FPointerEvent& MouseEvent) override; + // End of FDragDropOperation interface + + // FGraphEditorDragDropAction interface + virtual void HoverTargetChanged() override; + virtual FReply DroppedOnPin(FVector2D ScreenPosition, FVector2D GraphPosition) override; + virtual FReply DroppedOnNode(FVector2D ScreenPosition, FVector2D GraphPosition) override; + virtual FReply DroppedOnPanel(const TSharedRef< SWidget >& Panel, FVector2D ScreenPosition, FVector2D GraphPosition, UEdGraph& Graph) override; + virtual void OnDragged(const class FDragDropEvent& DragDropEvent) override; + // End of FGraphEditorDragDropAction interface + + /* + * Function to check validity of graph pins in the StartPins list. This check helps to prevent processing graph pins which are outdated. + */ + virtual void ValidateGraphPinList(TArray& OutValidPins); + +protected: + typedef FGraphEditorDragDropAction Super; + + // Constructor: Make sure to call Construct() after factorying one of these + FGenericGraphDragConnection(const TSharedRef& GraphPanel, const FDraggedPinTable& DraggedPins); + +protected: + TSharedPtr GraphPanel; + FDraggedPinTable DraggingPins; + + /** Offset information for the decorator widget */ + FVector2D DecoratorAdjust; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphEditorStyle.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphEditorStyle.h new file mode 100644 index 00000000..577312f3 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/GenericGraphEditorStyle.h @@ -0,0 +1,16 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Styling/SlateStyle.h" + +class GENERICGRAPHEDITOR_API FGenericGraphEditorStyle +{ +public: + static void Initialize(); + static void Shutdown(); + + static const FName& GetStyleSetName(); + +private: + static TSharedPtr StyleSet; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h new file mode 100644 index 00000000..8505a5f6 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphEdge.h @@ -0,0 +1,40 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Styling/SlateColor.h" +#include "Widgets/DeclarativeSyntaxSupport.h" +#include "Widgets/SWidget.h" +#include "SNodePanel.h" +#include "SGraphNode.h" + +class SToolTip; +class UEdNode_GenericGraphEdge; + +class GENERICGRAPHEDITOR_API SEdNode_GenericGraphEdge : public SGraphNode +{ +public: + SLATE_BEGIN_ARGS(SEdNode_GenericGraphEdge){} + SLATE_END_ARGS() + + void Construct(const FArguments& InArgs, UEdNode_GenericGraphEdge* InNode); + + virtual bool RequiresSecondPassLayout() const override; + virtual void PerformSecondPassLayout(const TMap< UObject*, TSharedRef >& NodeToWidgetLookup) const override; + + virtual void UpdateGraphNode() override; + + // Calculate position for multiple nodes to be placed between a start and end point, by providing this nodes index and max expected nodes + void PositionBetweenTwoNodesWithOffset(const FGeometry& StartGeom, const FGeometry& EndGeom, int32 NodeIndex, int32 MaxNodes) const; + + void OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo); + +protected: + FSlateColor GetEdgeColor() const; + + const FSlateBrush* GetEdgeImage() const; + + EVisibility GetEdgeImageVisibility() const; + EVisibility GetEdgeTitleVisbility() const; +private: + TSharedPtr TextEntryWidget; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphNode.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphNode.h new file mode 100644 index 00000000..1d4d9b99 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/SEdNode_GenericGraphNode.h @@ -0,0 +1,32 @@ +#pragma once + +#include "CoreMinimal.h" +#include "SGraphNode.h" + +class UEdNode_GenericGraphNode; + +class GENERICGRAPHEDITOR_API SEdNode_GenericGraphNode : public SGraphNode +{ +public: + SLATE_BEGIN_ARGS(SEdNode_GenericGraphNode) {} + SLATE_END_ARGS() + + void Construct(const FArguments& InArgs, UEdNode_GenericGraphNode* InNode); + + virtual void UpdateGraphNode() override; + virtual void CreatePinWidgets() override; + virtual void AddPin(const TSharedRef& PinToAdd) override; + virtual bool IsNameReadOnly() const override; + + void OnNameTextCommited(const FText& InText, ETextCommit::Type CommitInfo); + + virtual FSlateColor GetBorderBackgroundColor() const; + virtual FSlateColor GetBackgroundColor() const; + + virtual EVisibility GetDragOverMarkerVisibility() const; + + virtual const FSlateBrush* GetNameIcon() const; + +protected: +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Settings_GenericGraphEditor.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Settings_GenericGraphEditor.h new file mode 100644 index 00000000..c1e39156 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphAssetEditor/Settings_GenericGraphEditor.h @@ -0,0 +1,42 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Settings_GenericGraphEditor.generated.h" + +UENUM(BlueprintType) +enum class EAutoLayoutStrategy : uint8 +{ + Tree, + ForceDirected, +}; + +UCLASS() +class GENERICGRAPHEDITOR_API UGenericGraphEditorSettings : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraphEditorSettings(); + virtual ~UGenericGraphEditorSettings(); + + UPROPERTY(EditDefaultsOnly, Category = "AutoArrange") + float OptimalDistance; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + EAutoLayoutStrategy AutoLayoutStrategy; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + int32 MaxIteration; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + bool bFirstPassOnly; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + bool bRandomInit; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + float InitTemperature; + + UPROPERTY(EditDefaultsOnly, AdvancedDisplay, Category = "AutoArrange") + float CoolDownRate; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditor.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditor.h new file mode 100644 index 00000000..f710fc2c --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditor.h @@ -0,0 +1,23 @@ +#pragma once +#include "Modules/ModuleManager.h" +#include "GenericGraphEditorModule.h" +#include +#include + +class FGenericGraphEditor : public IGenericGraphEditor +{ + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; + + +private: + void RegisterAssetTypeAction(IAssetTools& AssetTools, TSharedRef Action); + +private: + TArray< TSharedPtr > CreatedAssetTypeActions; + + EAssetTypeCategories::Type GenericGraphAssetCategoryBit; + + TSharedPtr GraphPanelNodeFactory_GenericGraph; +}; \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorModule.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorModule.h new file mode 100644 index 00000000..c042dc1f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorModule.h @@ -0,0 +1,34 @@ +#include"Modules/ModuleManager.h" + +DECLARE_LOG_CATEGORY_EXTERN(GenericGraphEditor, Log, All); + +/** + * The public interface to this module + */ +class IGenericGraphEditor : public IModuleInterface +{ + +public: + + /** + * Singleton-like access to this module's interface. This is just for convenience! + * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. + * + * @return Returns singleton instance, loading the module on demand if needed + */ + static IGenericGraphEditor& Get() + { + return FModuleManager::LoadModuleChecked< IGenericGraphEditor >("GenericGraphEditor"); + } + + /** + * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. + * + * @return True if the module is loaded and ready to use + */ + static bool IsAvailable() + { + return FModuleManager::Get().IsModuleLoaded("GenericGraphEditor"); + } +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorPCH.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorPCH.h new file mode 100644 index 00000000..f0385f7d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphEditorPCH.h @@ -0,0 +1,13 @@ +#pragma once + +#include "GenericGraph.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.h" + +// You should place include statements to your module's private header files here. You only need to +// add includes for headers that are used in most of your module's source files though. +#include "GenericGraphEditor.h" + +#define LOG_INFO(FMT, ...) UE_LOG(GenericGraphEditor, Display, (FMT), ##__VA_ARGS__) +#define LOG_WARNING(FMT, ...) UE_LOG(GenericGraphEditor, Warning, (FMT), ##__VA_ARGS__) +#define LOG_ERROR(FMT, ...) UE_LOG(GenericGraphEditor, Error, (FMT), ##__VA_ARGS__) diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphFactory.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphFactory.h new file mode 100644 index 00000000..00cc44d4 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphFactory.h @@ -0,0 +1,22 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Factories/Factory.h" +#include "GenericGraph.h" +#include "GenericGraphFactory.generated.h" + +UCLASS() +class GENERICGRAPHEDITOR_API UGenericGraphFactory : public UFactory +{ + GENERATED_BODY() + +public: + UGenericGraphFactory(); + virtual ~UGenericGraphFactory(); + + UPROPERTY(EditAnywhere, Category=DataAsset) + TSubclassOf GenericGraphClass; + + virtual bool ConfigureProperties() override; + virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override; +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphNodeFactory.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphNodeFactory.h new file mode 100644 index 00000000..5feb3345 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphEditor/Public/GenericGraphNodeFactory.h @@ -0,0 +1,8 @@ +#pragma once +#include +#include + +class FGraphPanelNodeFactory_GenericGraph : public FGraphPanelNodeFactory +{ + virtual TSharedPtr CreateNode(UEdGraphNode* Node) const override; +}; \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/GenericGraphRuntime.Build.cs b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/GenericGraphRuntime.Build.cs new file mode 100644 index 00000000..e3d5c5d9 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/GenericGraphRuntime.Build.cs @@ -0,0 +1,51 @@ +using UnrealBuildTool; + +public class GenericGraphRuntime : ModuleRules +{ + public GenericGraphRuntime(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + bLegacyPublicIncludePaths = false; + ShadowVariableWarningLevel = WarningLevel.Error; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + } + ); + + PrivateIncludePaths.AddRange( + new string[] { + "GenericGraphRuntime/Private", + // ... add other private include paths required here ... + } + ); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + // ... add other public dependencies that you statically link with here ... + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + // ... add private dependencies that you statically link with here ... + "Slate", + "SlateCore", + "GameplayTags" + } + ); + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + } + ); + } +} \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraph.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraph.cpp new file mode 100644 index 00000000..c2bbb302 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraph.cpp @@ -0,0 +1,136 @@ +#include "GenericGraph.h" +#include "GenericGraphRuntimePCH.h" +#include "Engine/Engine.h" + +#define LOCTEXT_NAMESPACE "GenericGraph" + +UGenericGraph::UGenericGraph() +{ + NodeType = UGenericGraphNode::StaticClass(); + EdgeType = UGenericGraphEdge::StaticClass(); + + bEdgeEnabled = true; + +#if WITH_EDITORONLY_DATA + EdGraph = nullptr; + + bCanRenameNode = true; +#endif +} + +UGenericGraph::~UGenericGraph() +{ + +} + +void UGenericGraph::Print(bool ToConsole /*= true*/, bool ToScreen /*= true*/) +{ + int Level = 0; + TArray CurrLevelNodes = RootNodes; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + FString Message = FString::Printf(TEXT("%s, Level %d"), *Node->GetDescription().ToString(), Level); + + if (ToConsole) + { + LOG_INFO(TEXT("%s"), *Message); + } + + if (ToScreen && GEngine != nullptr) + { + GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Blue, Message); + } + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } +} + +int UGenericGraph::GetLevelNum() const +{ + int Level = 0; + TArray CurrLevelNodes = RootNodes; + TArray NextLevelNodes; + + while (CurrLevelNodes.Num() != 0) + { + for (int i = 0; i < CurrLevelNodes.Num(); ++i) + { + UGenericGraphNode* Node = CurrLevelNodes[i]; + check(Node != nullptr); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + CurrLevelNodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++Level; + } + + return Level; +} + +void UGenericGraph::GetNodesByLevel(int Level, TArray& Nodes) +{ + int CurrLEvel = 0; + TArray NextLevelNodes; + + Nodes = RootNodes; + + while (Nodes.Num() != 0) + { + if (CurrLEvel == Level) + break; + + for (int i = 0; i < Nodes.Num(); ++i) + { + UGenericGraphNode* Node = Nodes[i]; + check(Node != nullptr); + + for (int j = 0; j < Node->ChildrenNodes.Num(); ++j) + { + NextLevelNodes.Add(Node->ChildrenNodes[j]); + } + } + + Nodes = NextLevelNodes; + NextLevelNodes.Reset(); + ++CurrLEvel; + } +} + +void UGenericGraph::ClearGraph() +{ + for (int i = 0; i < AllNodes.Num(); ++i) + { + UGenericGraphNode* Node = AllNodes[i]; + if (Node) + { + Node->ParentNodes.Empty(); + Node->ChildrenNodes.Empty(); + Node->Edges.Empty(); + } + } + + AllNodes.Empty(); + RootNodes.Empty(); +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphEdge.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphEdge.cpp new file mode 100644 index 00000000..6d0118c7 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphEdge.cpp @@ -0,0 +1,23 @@ +#include "GenericGraphEdge.h" + +UGenericGraphEdge::UGenericGraphEdge() +{ + +} + +UGenericGraphEdge::~UGenericGraphEdge() +{ + +} + +UGenericGraph* UGenericGraphEdge::GetGraph() const +{ + return Graph; +} + +#if WITH_EDITOR +void UGenericGraphEdge::SetNodeTitle(const FText& NewTitle) +{ + NodeTitle = NewTitle; +} +#endif // #if WITH_EDITOR \ No newline at end of file diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphNode.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphNode.cpp new file mode 100644 index 00000000..548cdc3b --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphNode.cpp @@ -0,0 +1,90 @@ +#include "GenericGraphNode.h" +#include "GenericGraph.h" + +#define LOCTEXT_NAMESPACE "GenericGraphNode" + +UGenericGraphNode::UGenericGraphNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UGenericGraph::StaticClass(); + + BackgroundColor = FLinearColor::Black; +#endif +} + +UGenericGraphNode::~UGenericGraphNode() +{ +} + +UGenericGraphEdge* UGenericGraphNode::GetEdge(UGenericGraphNode* ChildNode) +{ + return Edges.Contains(ChildNode) ? Edges.FindChecked(ChildNode) : nullptr; +} + +FText UGenericGraphNode::GetDescription_Implementation() const +{ + return LOCTEXT("NodeDesc", "Generic Graph Node"); +} + +#if WITH_EDITOR +bool UGenericGraphNode::IsNameEditable() const +{ + return true; +} + +FLinearColor UGenericGraphNode::GetBackgroundColor() const +{ + return BackgroundColor; +} + +FText UGenericGraphNode::GetNodeTitle() const +{ + return NodeTitle.IsEmpty() ? GetDescription() : NodeTitle; +} + +void UGenericGraphNode::SetNodeTitle(const FText& NewTitle) +{ + NodeTitle = NewTitle; +} + +bool UGenericGraphNode::CanCreateConnection(UGenericGraphNode* Other, FText& ErrorMessage) +{ + return true; +} + +bool UGenericGraphNode::CanCreateConnectionTo(UGenericGraphNode* Other, int32 NumberOfChildrenNodes, FText& ErrorMessage) +{ + if (ChildrenLimitType == ENodeLimit::Limited && NumberOfChildrenNodes >= ChildrenLimit) + { + ErrorMessage = FText::FromString("Children limit exceeded"); + return false; + } + + return CanCreateConnection(Other, ErrorMessage); +} + +bool UGenericGraphNode::CanCreateConnectionFrom(UGenericGraphNode* Other, int32 NumberOfParentNodes, FText& ErrorMessage) +{ + if (ParentLimitType == ENodeLimit::Limited && NumberOfParentNodes >= ParentLimit) + { + ErrorMessage = FText::FromString("Parent limit exceeded"); + return false; + } + + return true; +} + + +#endif + +bool UGenericGraphNode::IsLeafNode() const +{ + return ChildrenNodes.Num() == 0; +} + +UGenericGraph* UGenericGraphNode::GetGraph() const +{ + return Graph; +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntime.cpp b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntime.cpp new file mode 100644 index 00000000..bfc33a53 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntime.cpp @@ -0,0 +1,29 @@ +#include "GenericGraphRuntimePCH.h" + +DEFINE_LOG_CATEGORY(GenericGraphRuntime) + +class FGenericGraphRuntime : public IGenericGraphRuntime +{ + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; + +IMPLEMENT_MODULE( FGenericGraphRuntime, GenericGraphRuntime ) + + + +void FGenericGraphRuntime::StartupModule() +{ + // This code will execute after your module is loaded into memory (but after global variables are initialized, of course.) +} + + +void FGenericGraphRuntime::ShutdownModule() +{ + // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, + // we call this function before unloading the module. +} + + + diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntimePCH.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntimePCH.h new file mode 100644 index 00000000..18feed8f --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Private/GenericGraphRuntimePCH.h @@ -0,0 +1,12 @@ +#pragma once + +// #include "CoreUObject.h" +// #include "Engine.h" + +// You should place include statements to your module's private header files here. You only need to +// add includes for headers that are used in most of your module's source files though. +#include "IGenericGraphRuntime.h" + +#define LOG_INFO(FMT, ...) UE_LOG(GenericGraphRuntime, Display, (FMT), ##__VA_ARGS__) +#define LOG_WARNING(FMT, ...) UE_LOG(GenericGraphRuntime, Warning, (FMT), ##__VA_ARGS__) +#define LOG_ERROR(FMT, ...) UE_LOG(GenericGraphRuntime, Error, (FMT), ##__VA_ARGS__) diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraph.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraph.h new file mode 100644 index 00000000..1ac0d39d --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraph.h @@ -0,0 +1,60 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.h" +#include "GameplayTagContainer.h" +#include "GenericGraph.generated.h" + +UCLASS(Blueprintable) +class GENERICGRAPHRUNTIME_API UGenericGraph : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraph(); + virtual ~UGenericGraph(); + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph") + FString Name; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph") + TSubclassOf NodeType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph") + TSubclassOf EdgeType; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GenericGraph") + FGameplayTagContainer GraphTags; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraph") + TArray RootNodes; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraph") + TArray AllNodes; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GenericGraph") + bool bEdgeEnabled; + + UFUNCTION(BlueprintCallable, Category = "GenericGraph") + void Print(bool ToConsole = true, bool ToScreen = true); + + UFUNCTION(BlueprintCallable, Category = "GenericGraph") + int GetLevelNum() const; + + UFUNCTION(BlueprintCallable, Category = "GenericGraph") + void GetNodesByLevel(int Level, TArray& Nodes); + + void ClearGraph(); + +#if WITH_EDITORONLY_DATA + UPROPERTY() + class UEdGraph* EdGraph; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph_Editor") + bool bCanRenameNode; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraph_Editor") + bool bCanBeCyclical; +#endif +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphEdge.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphEdge.h new file mode 100644 index 00000000..3df297b4 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphEdge.h @@ -0,0 +1,48 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "GenericGraphEdge.generated.h" + +class UGenericGraph; + +UCLASS(Blueprintable) +class GENERICGRAPHRUNTIME_API UGenericGraphEdge : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraphEdge(); + virtual ~UGenericGraphEdge(); + + UPROPERTY(VisibleAnywhere, Category = "GenericGraphNode") + UGenericGraph* Graph; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphEdge") + UGenericGraphNode* StartNode; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphEdge") + UGenericGraphNode* EndNode; + + UFUNCTION(BlueprintPure, Category = "GenericGraphEdge") + UGenericGraph* GetGraph() const; + +#if WITH_EDITORONLY_DATA + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + bool bShouldDrawTitle = false; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FText NodeTitle; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphEdge") + FLinearColor EdgeColour = FLinearColor(0.9f, 0.9f, 0.9f, 1.0f); +#endif + +#if WITH_EDITOR + virtual FText GetNodeTitle() const { return NodeTitle; } + FLinearColor GetEdgeColour() { return EdgeColour; } + + virtual void SetNodeTitle(const FText& NewTitle); +#endif + +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphNode.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphNode.h new file mode 100644 index 00000000..965d109e --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/GenericGraphNode.h @@ -0,0 +1,94 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Templates/SubclassOf.h" +#include "GenericGraphNode.generated.h" + +class UGenericGraph; +class UGenericGraphEdge; + +UENUM(BlueprintType) +enum class ENodeLimit : uint8 +{ + Unlimited, + Limited +}; + + +UCLASS(Blueprintable) +class GENERICGRAPHRUNTIME_API UGenericGraphNode : public UObject +{ + GENERATED_BODY() + +public: + UGenericGraphNode(); + virtual ~UGenericGraphNode(); + + UPROPERTY(VisibleDefaultsOnly, Category = "GenericGraphNode") + UGenericGraph* Graph; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphNode") + TArray ParentNodes; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphNode") + TArray ChildrenNodes; + + UPROPERTY(BlueprintReadOnly, Category = "GenericGraphNode") + TMap Edges; + + UFUNCTION(BlueprintCallable, Category = "GenericGraphNode") + virtual UGenericGraphEdge* GetEdge(UGenericGraphNode* ChildNode); + + UFUNCTION(BlueprintCallable, Category = "GenericGraphNode") + bool IsLeafNode() const; + + UFUNCTION(BlueprintCallable, Category = "GenericGraphNode") + UGenericGraph* GetGraph() const; + + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "GenericGraphNode") + FText GetDescription() const; + virtual FText GetDescription_Implementation() const; + + ////////////////////////////////////////////////////////////////////////// +#if WITH_EDITORONLY_DATA + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FText NodeTitle; + + UPROPERTY(VisibleDefaultsOnly, Category = "GenericGraphNode_Editor") + TSubclassOf CompatibleGraphType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FLinearColor BackgroundColor; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + FText ContextMenuName; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + ENodeLimit ParentLimitType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor" ,meta = (ClampMin = "0",EditCondition = "ParentLimitType == ENodeLimit::Limited", EditConditionHides)) + int32 ParentLimit; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor") + ENodeLimit ChildrenLimitType; + + UPROPERTY(EditDefaultsOnly, Category = "GenericGraphNode_Editor" ,meta = (ClampMin = "0",EditCondition = "ChildrenLimitType == ENodeLimit::Limited", EditConditionHides)) + int32 ChildrenLimit; + +#endif + +#if WITH_EDITOR + virtual bool IsNameEditable() const; + + virtual FLinearColor GetBackgroundColor() const; + + virtual FText GetNodeTitle() const; + + virtual void SetNodeTitle(const FText& NewTitle); + + virtual bool CanCreateConnection(UGenericGraphNode* Other, FText& ErrorMessage); + + virtual bool CanCreateConnectionTo(UGenericGraphNode* Other, int32 NumberOfChildrenNodes, FText& ErrorMessage); + virtual bool CanCreateConnectionFrom(UGenericGraphNode* Other, int32 NumberOfParentNodes, FText& ErrorMessage); +#endif +}; diff --git a/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/IGenericGraphRuntime.h b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/IGenericGraphRuntime.h new file mode 100644 index 00000000..f978a2b6 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/Source/GenericGraphRuntime/Public/IGenericGraphRuntime.h @@ -0,0 +1,36 @@ +#pragma once + +#include "Modules/ModuleManager.h" + +DECLARE_LOG_CATEGORY_EXTERN(GenericGraphRuntime, Log, All); + +/** + * The public interface to this module + */ +class IGenericGraphRuntime : public IModuleInterface +{ + +public: + + /** + * Singleton-like access to this module's interface. This is just for convenience! + * Beware of calling this during the shutdown phase, though. Your module might have been unloaded already. + * + * @return Returns singleton instance, loading the module on demand if needed + */ + static IGenericGraphRuntime& Get() + { + return FModuleManager::LoadModuleChecked< IGenericGraphRuntime >("GenericGraphRuntime"); + } + + /** + * Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true. + * + * @return True if the module is loaded and ready to use + */ + static bool IsAvailable() + { + return FModuleManager::Get().IsModuleLoaded( "GenericGraphRuntime" ); + } +}; + diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/GenericGraph.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/GenericGraph.png new file mode 100644 index 00000000..0d899979 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/GenericGraph.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:092185ad7a9989a69ba9543793326cf0f893fcc1a0895de65db3ca24ee7c970a +size 89534 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/ability-graph.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/ability-graph.png new file mode 100644 index 00000000..b65adf2a --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/ability-graph.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97bb76a079e7e37c685cfa0f480c4028be755577939d8ae3d51be6e5571112c +size 114519 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue01.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue01.png new file mode 100644 index 00000000..7fbb5326 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95ab320c78c5ed1a79b78686a9e453bf459805b71ca6b855305f2ac328103d9e +size 98959 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue02.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue02.png new file mode 100644 index 00000000..c03fde96 --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue02.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbbb01dc0b5af841164b8baeeebfb5aa769cb0710482f6accd984d02e0586eb9 +size 94706 diff --git a/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue03.png b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue03.png new file mode 100644 index 00000000..ec53962e --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/docs/images/dialogue/dialogue03.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a51f6bd700c3346982c523d3c6e535cadb7ec8f0dc6c806bd5c481e961e8969c +size 95655 diff --git a/EndlessVendetta/Plugins/GenericGraph/readme.rst b/EndlessVendetta/Plugins/GenericGraph/readme.rst new file mode 100644 index 00000000..f76c40ba --- /dev/null +++ b/EndlessVendetta/Plugins/GenericGraph/readme.rst @@ -0,0 +1,51 @@ +GenericGraphPlugin +================== + +Generic graph data structure plugin for ue4 + +.. image:: docs/images/GenericGraph.png + +Feature +------- + +* Custom asset type +* UE4 BehaviorTree-like asset editor +* Extendable graph node type +* Extendable graph edge type +* Extendable graph type(new asset type with generic graph editor, C++ only) + +Usage +----- + +* Ability system +* Dialogue system +* Quest system +* Etc + +Install +------- + +#. Clone this project to ${YourProject}/Plugins/ +#. Generate project file +#. Compile + +Tutorial +-------- + +`Dialogue System`_ (WIP) + +Example +------- + +Dialogue System and ability system: SRPGTemplate_ + +.. image:: docs/images/dialogue/dialogue01.png + +.. image:: docs/images/dialogue/dialogue02.png + +.. image:: docs/images/dialogue/dialogue03.png + +.. image:: docs/images/ability-graph.png + +.. _Dialogue System: https://jinyuliao.github.io/blog/html/2017/12/15/ue4_dialogue_system_part1.html +.. _SRPGTemplate: https://github.com/jinyuliao/SRPGTemplate diff --git a/EndlessVendetta/Source/DialogueSystemEditor/DialogueSystemEditor.Build.cs b/EndlessVendetta/Source/DialogueSystemEditor/DialogueSystemEditor.Build.cs new file mode 100644 index 00000000..c1cb2430 --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/DialogueSystemEditor.Build.cs @@ -0,0 +1,36 @@ +using UnrealBuildTool; + +public class DialogueSystemEditor : ModuleRules +{ + public DialogueSystemEditor(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicIncludePaths.AddRange( + new string[] + { + "EndlessVendetta/DialogueSystem" + } + ); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "CoreUObject", + "Engine", + "Slate", + "UnrealEd", + "SlateCore", + "GenericGraphRuntime", + "EndlessVendetta" + } + ); + } +} \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueSystemEditor.cpp b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueSystemEditor.cpp new file mode 100644 index 00000000..7a4fad39 --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueSystemEditor.cpp @@ -0,0 +1,17 @@ +#include "DialogueSystemEditor.h" + +#define LOCTEXT_NAMESPACE "FDialogueSystemEditorModule" + +void FDialogueSystemEditorModule::StartupModule() +{ + +} + +void FDialogueSystemEditorModule::ShutdownModule() +{ + +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FDialogueSystemEditorModule, DialogueSystemEditor) \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.cpp b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.cpp new file mode 100644 index 00000000..a1f39692 --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.cpp @@ -0,0 +1,28 @@ +#include "DialogueTreeFactory.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "DialogueSessionFactory" + +UDialogueTreeFactory::UDialogueTreeFactory() +{ + bCreateNew = true; + bEditAfterNew = true; + SupportedClass = UDialogueTree::StaticClass(); +} + +UObject* UDialogueTreeFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) +{ + return NewObject(InParent, Class, Name, Flags | RF_Transactional); +} + +FText UDialogueTreeFactory::GetDisplayName() const +{ + return LOCTEXT("FactoryName", "Dialogue Tree"); +} + +FString UDialogueTreeFactory::GetDefaultNewAssetName() const +{ + return "DialogueTree"; +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.h b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.h new file mode 100644 index 00000000..80d6f49d --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Private/DialogueTreeFactory.h @@ -0,0 +1,18 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Factories/Factory.h" +#include "DialogueTreeFactory.generated.h" + +UCLASS() +class UDialogueTreeFactory : public UFactory +{ + GENERATED_BODY() + +public: + UDialogueTreeFactory(); + + virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override; + virtual FText GetDisplayName() const override; + virtual FString GetDefaultNewAssetName() const override; +}; \ No newline at end of file diff --git a/EndlessVendetta/Source/DialogueSystemEditor/Public/DialogueSystemEditor.h b/EndlessVendetta/Source/DialogueSystemEditor/Public/DialogueSystemEditor.h new file mode 100644 index 00000000..3333f03a --- /dev/null +++ b/EndlessVendetta/Source/DialogueSystemEditor/Public/DialogueSystemEditor.h @@ -0,0 +1,11 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Modules/ModuleManager.h" + +class FDialogueSystemEditorModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp index 7ef3ff9d..e96b02ca 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp @@ -11,18 +11,14 @@ ABountyClass::ABountyClass() } -void ABountyClass::BeginPlay() +void ABountyClass::ActivateFirstCheckpoint() { - Super::BeginPlay(); - - SpawnCheckpoints(); + if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr) return; -} - -void ABountyClass::Tick(float DeltaTime) -{ - Super::Tick(DeltaTime); - + BountyCheckpoints[0]->Active = true; + BountyCheckpoints[0]->SpawnWaypoint(BountyTitle); + BountyCheckpoints[0]->CheckpointActivated(); + BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint); } void ABountyClass::SpawnCheckpoints() @@ -46,49 +42,45 @@ void ABountyClass::SpawnCheckpoints() BountyCheckpoints.Add(SpawnedCheckpoint); } - // Activate the first checkpoint and listen for its completion - BountyCheckpoints[0]->Active = true; - BountyCheckpoints[0]->SpawnWaypoint(BountyTitle); - BountyCheckpoints[0]->CheckpointActivated(); - BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint); + ActivateFirstCheckpoint(); } void ABountyClass::IncrementBountyCheckpoint() { + // --------------------------------------------------------------------------------------------------------------------- // Broadcast that the first Checkpoint has been completed so that side bounties can be destroyed - if (!BountyStarted) - { - BountyStarted = true; - CompletedFirstCheckpoint.Broadcast(); - } - - // Bounty Completion Condition - if (BountyCheckpoints.Num() <= 1) - { - Completed = true; - BountyCheckpoints[0]->Active = false; - BountyCheckpoints[0]->Destroy(); - BountyCheckpoints.RemoveAt(0); - UE_LOG(LogTemp, Warning, TEXT(" You've Completed the Bounty!! Well done")); - return; - } - - if (BountyCheckpoints[0] == nullptr) - { - UE_LOG(LogTemp, Fatal, TEXT("Missing checkpoint in bounty checkpoints, could've failed to spawn or cast")); - return; - } + // if (!BountyStarted) + // { + // BountyStarted = true; + // CompletedFirstCheckpoint.Broadcast(); + // } + // + // // Bounty Completion Condition + // if (BountyCheckpoints.Num() <= 1) + // { + // Completed = true; + // BountyCheckpoints[0]->Active = false; + // BountyCheckpoints[0]->Destroy(); + // BountyCheckpoints.RemoveAt(0); + // UE_LOG(LogTemp, Warning, TEXT(" You've Completed the Bounty!! Well done")); + // return; + // } + // + // if (BountyCheckpoints[0] == nullptr) + // { + // UE_LOG(LogTemp, Fatal, TEXT("Missing checkpoint in bounty checkpoints, could've failed to spawn or cast")); + // return; + // } + //--------------------------------------------------------------------------------------------------------------------- + if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr) return; + // Destroy Actor and Shrink Array BountyCheckpoints[0]->Active = false; BountyCheckpoints[0]->Destroy(); BountyCheckpoints.RemoveAt(0); - // Set the new checkpoint in pos 0 to be active and listen for it's completion - BountyCheckpoints[0]->Active = true; - BountyCheckpoints[0]->SpawnWaypoint(BountyTitle); - BountyCheckpoints[0]->CheckpointActivated(); - BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint); + ActivateFirstCheckpoint(); } void ABountyClass::CollectRewards_Implementation() diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h index 35b33288..94cb313b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h @@ -8,21 +8,58 @@ #include "BountyClass.generated.h" DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedFirstCheckpoint); +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedACheckpoint); UCLASS() class ENDLESSVENDETTA_API ABountyClass : public AActor { GENERATED_BODY() - // Used to temp store value of incoming replacement checkpoint class - TSubclassOf ReplacementCheckpointClass; +// ------------------- ATTRIBUTES ------------------------------ + + // Array of Checkpoint Classes to Spawn for this Bounty + UPROPERTY(EditDefaultsOnly, Category = "Bounty") + TArray> CheckpointsToSpawn; + +protected: + // Array of References to the Spawned in Checkpoints for this Bounty + TArray BountyCheckpoints; + +public: + FCompletedACheckpoint CompletedACheckpoint; + + +// ------------------- METHODS --------------------------------- +private: + // Activate the First Checkpoint in Bounty Checkpoints and Listen for its Completion + void ActivateFirstCheckpoint(); + +protected: + // Called when a checkpoint is completed, handles moving onto next checkpoint and discarding the old one + UFUNCTION() + virtual void IncrementBountyCheckpoint(); + +public: + // Sets default values for this actor's properties + ABountyClass(); + + // Spawns and stores this Bounties Checkpoints in order + void SpawnCheckpoints(); + + + + + + + +// ------------------- LEGACY CODE TO BE REWORKED --------------------------------- + bool BountyStarted = false; protected: // ------- Properties Set in Editor -------------- - UPROPERTY(EditDefaultsOnly, Category = "Bounty") - TArray> CheckpointsToSpawn; + UPROPERTY(EditDefaultsOnly, Category = "Bounty") int RewardMoney = 0; @@ -34,26 +71,20 @@ protected: FString BountyDesc; // ----------------------------------------------- - bool Completed = false; - // Spawned in Checkpoints for this Bounty - TArray BountyCheckpoints; - - // Spawns and stores this Bounties Checkpoints in order - void SpawnCheckpoints(); - // Called when the game starts or when spawned - virtual void BeginPlay() override; public: // Broadcast when first checkpoint from this bounty is completed FCompletedFirstCheckpoint CompletedFirstCheckpoint; + + // ------ Getters for Bounty and Checkpoint Properties ------ bool IsCompleted() { - return Completed; + return false; } FString GetBountyTitle() @@ -102,16 +133,7 @@ public: } // ---------------------------------------------------------- - - // Sets default values for this actor's properties - ABountyClass(); - - // Called every frame - virtual void Tick(float DeltaTime) override; - // Called when a checkpoint is completed, handles moving onto next checkpoint and discarding the old one - UFUNCTION() - virtual void IncrementBountyCheckpoint(); // Collect Money in C++, any other special reward will be implemented in BP if neccessary UFUNCTION(BlueprintCallable, BlueprintNativeEvent) diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.cpp new file mode 100644 index 00000000..2556bda7 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.cpp @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "FinalCheckpoint.h" +#include "EndlessVendetta/EVGameInstance.h" +#include "EndlessVendetta/Characters/BountyHunterCharacter.h" +#include "Kismet/GameplayStatics.h" + +void AFinalCheckpoint::CompleteBounty() +{ + UEVGameInstance* GI = Cast(GetWorld()->GetGameInstance()); + if (!IsValid(GI)) return; + + GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave++; + UGameplayStatics::SaveGameToSlot(GI->MainSaveGameInstanceRef, "MainSave", 0); + + FName OpnWrldLvlName = FName(Cast(GetWorld()->GetFirstPlayerController()->GetPawn())->GetOpenWorldLevelName()); + UGameplayStatics::OpenLevel(GetWorld(), OpnWrldLvlName); +} diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.h new file mode 100644 index 00000000..ad1f9d2b --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/FinalCheckpoint.h @@ -0,0 +1,22 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "EndlessVendetta/BountySystem/CheckpointClass.h" +#include "FinalCheckpoint.generated.h" + +/** + * + */ +UCLASS() +class ENDLESSVENDETTA_API AFinalCheckpoint : public ACheckpointClass +{ + GENERATED_BODY() + +protected: + // Increment and Save Current Main Bounty Index, as well as load Open World Level + UFUNCTION(BlueprintCallable) + void CompleteBounty(); + +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp index 0c9d0313..b2938653 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp @@ -20,7 +20,7 @@ void ACheckpointClass::BeginPlay() void ACheckpointClass::SpawnWaypoint(const FString& CurrentBountyTitle) { - if (!IsValid(WaypointActorClass)) return; + if (!IsValid(WaypointActorClass) || HideWaypoint) return; BountyTitle = CurrentBountyTitle; FActorSpawnParameters SpawnParams; @@ -31,6 +31,8 @@ void ACheckpointClass::SpawnWaypoint(const FString& CurrentBountyTitle) void ACheckpointClass::UpdateCheckpointWaypoint(FVector WaypointNewLoc) { + if (HideWaypoint) return; + FActorSpawnParameters SpawnParams; SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; if (WaypointActor) WaypointActor->Destroy(); diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h index 7a9ada47..09462ebf 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h @@ -29,6 +29,8 @@ class ENDLESSVENDETTA_API ACheckpointClass : public AActor FTransform CheckpointSpawnTransform; UPROPERTY(EditDefaultsOnly, Category = "Checkpoint") TSubclassOf WaypointActorClass; + UPROPERTY(EditDefaultsOnly, Category = "Checkpoint") + bool HideWaypoint = false; AWaypointActor* WaypointActor; // ---------------------------------------- diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp index cab4f924..1af830e7 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.cpp @@ -1,4 +1,4 @@ -// Fill out your copyright notice in the Description page of Project Settings. + // Fill out your copyright notice in the Description page of Project Settings. #include "MainBountyClass.h" @@ -6,13 +6,31 @@ void AMainBountyClass::IncrementBountyCheckpoint() { Super::IncrementBountyCheckpoint(); - FString TipToDisplay = ""; - if (!Completed) TipToDisplay = BountyCheckpoints[0]->GetCheckpointTip(); - Cast(GetWorld()->GetFirstPlayerController()->GetPawn())->CheckpointCompletedUI(TipToDisplay, Completed); + CompletedACheckpoint.Broadcast(); + // FString TipToDisplay = ""; + // if (!Completed) TipToDisplay = BountyCheckpoints[0]->GetCheckpointTip(); + // Cast(GetWorld()->GetFirstPlayerController()->GetPawn())->CheckpointCompletedUI("", false); +} + +void AMainBountyClass::SpawnOpenWorldCheckpoint() +{ + if (!IsValid(OpenWorldCheckpointClass)) return; + + FActorSpawnParameters SpawnParameters; + SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; + FVector Loc = OpenWorldCheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetLocation(); + FRotator Rot = OpenWorldCheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetRotation().Rotator(); + + OpenWorldcheckpoint = GetWorld()->SpawnActor(OpenWorldCheckpointClass, Loc, Rot, SpawnParameters); + OpenWorldcheckpoint->SpawnWaypoint(BountyTitle); } -void AMainBountyClass::SpawnAmmoDrops() + + + + + void AMainBountyClass::SpawnAmmoDrops() { UE_LOG(LogTemp, Display, TEXT("Bought Ammo Drops, but its not implemented yet")); // FActorSpawnParameters SpawnParameters; diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h index 6ec84be1..1617dfe6 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/MainBountyClass.h @@ -15,8 +15,37 @@ class ENDLESSVENDETTA_API AMainBountyClass : public ABountyClass { GENERATED_BODY() +// ------------------- ATTRIBUTES ------------------------------ + // Used to Spawn Open World Checkpoint for this Main Bounty + UPROPERTY(EditDefaultsOnly, Category = "Bounty") + TSubclassOf OpenWorldCheckpointClass; + + // Used to Store Ref for Bounty Tracking Functionality + ACheckpointClass* OpenWorldcheckpoint; + +protected: + + +public: + +// ------------------- METHODS --------------------------------- +private: + // Overrides to Display Correct Tip for Checkpoint void IncrementBountyCheckpoint() override; +protected: + + +public: + // Spawns the Single Checkpoint in the Open World for this Main Bounty + void SpawnOpenWorldCheckpoint(); + + + + + + +// ------------------- LEGACY CODE TO BE REWORKED --------------------------------- protected: UPROPERTY(EditDefaultsOnly, Category = "Bounty") TArray> SideBountiesToSpawn; @@ -47,6 +76,8 @@ public: { return SideBountiesToSpawn; } + + // ------------- Custom Bounty Alterations ------------- UFUNCTION(BlueprintImplementableEvent, Category = "Bounty") diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp index d28c84e6..6daec97b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp @@ -13,10 +13,12 @@ void ASideBountyClass::IncrementBountyCheckpoint() { Super::IncrementBountyCheckpoint(); - if (Completed) - { - CompletedSideBounty.Broadcast(FavoursEarnedForCompletion); - } + // Rework!!!! + + // if (Completed) + // { + // CompletedSideBounty.Broadcast(FavoursEarnedForCompletion); + // } } void ASideBountyClass::DestroyCheckpoints() diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp new file mode 100644 index 00000000..9d24e93b --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.cpp @@ -0,0 +1,59 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BountyHunterCharacter.h" +#include "Kismet/GameplayStatics.h" + +void ABountyHunterCharacter::SpawnMainBounty() +{ + UEVGameInstance* GI = Cast(GetGameInstance()); + if (!IsValid(GI->MainSaveGameInstanceRef)) return; + CurrentMainBountyIndex = GI->MainSaveGameInstanceRef->LastMainBountyIndexInOpenWorld; + + UE_LOG(LogTemp, Warning, TEXT("Loaded current bounty as %d"), CurrentMainBountyIndex); + + if (GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave > CurrentMainBountyIndex) CompleteCurrentMainBounty(GI); + + if (MainBountyClasses.IsEmpty() || MainBountyClasses.Num() <= CurrentMainBountyIndex|| !IsValid(MainBountyClasses[CurrentMainBountyIndex])) + { + AllBountiesCompleted(); + if (CurrentMainBountyIndex >= 2 && !(UGameplayStatics::GetCurrentLevelName(GetWorld()) == "EnemyAITest")) + { + UGameplayStatics::OpenLevel(GetWorld(), FName("EnemyAITest")); + } + return; + } + + CurrentMainBounty = GetWorld()->SpawnActor(MainBountyClasses[CurrentMainBountyIndex]); + const FAttachmentTransformRules AttachmentTransformRules(EAttachmentRule::SnapToTarget, true); + CurrentMainBounty->AttachToComponent(GetRootComponent(), AttachmentTransformRules); + + UGameplayStatics::GetCurrentLevelName(GetWorld()) == OpenWorldLevelName ? CurrentMainBounty->SpawnOpenWorldCheckpoint() : CurrentMainBounty->SpawnCheckpoints(); +} + +void ABountyHunterCharacter::CompleteCurrentMainBounty(UEVGameInstance* GI) +{ + // Collect rewards for bounty and move onto next + UE_LOG(LogTemp, Warning, TEXT("Would be collecting reward for completing bounty %d"), CurrentMainBountyIndex); + + CurrentMainBountyIndex = GI->MainSaveGameInstanceRef->CurrentMainBountyIndexSave; + GI->MainSaveGameInstanceRef->LastMainBountyIndexInOpenWorld = CurrentMainBountyIndex; + UGameplayStatics::SaveGameToSlot(GI->MainSaveGameInstanceRef, "MainSave", 0); +} + +void ABountyHunterCharacter::AllBountiesCompleted() +{ + UE_LOG(LogTemp, Warning, TEXT("Game Completed!!!! No more Bounties left... or you forgot to set a bounty at one of the indexes oof")); +} + +void ABountyHunterCharacter::BeginPlay() +{ + if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) SpawnMainBounty(); + Super::BeginPlay(); +} + +void ABountyHunterCharacter::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); +} + diff --git a/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h new file mode 100644 index 00000000..27be1e7f --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/BountyHunterCharacter.h @@ -0,0 +1,64 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" +#include "EndlessVendetta/EVGameInstance.h" +#include "EndlessVendetta/MainSaveGameClass.h" +#include "EndlessVendetta/BountySystem/MainBountyClass.h" +#include "BountyHunterCharacter.generated.h" + +/** + * + */ +UCLASS() +class ENDLESSVENDETTA_API ABountyHunterCharacter : public AEndlessVendettaCharacter +{ + GENERATED_BODY() +// ------------------- ATTRIBUTES ------------------------------ + + // Array of Main Bounties' Classes in Order + UPROPERTY(EditDefaultsOnly, Category = "Bounty Hunter") + TArray> MainBountyClasses; + + // Reference to the Currently Active Main Bounty + AMainBountyClass* CurrentMainBounty; + + // Index of Currently Active Main Bounty, Used for MainBountyClasses + int CurrentMainBountyIndex = 0; + + // Name of open world, so that the correct bounties can be spawned based on level + UPROPERTY(EditDefaultsOnly, Category = "Bounty Hunter") + FString OpenWorldLevelName = "ControlTutorialLevel"; + +protected: + + +public: + +// ------------------- METHODS --------------------------------- +private: + // Spawns Current Main Bounty along with its Side Bounties, and spawns its appropriate CP's based on level + void SpawnMainBounty(); + + // Collects Reward for Current Main Bounty and Increments the Main Bounty Index + void CompleteCurrentMainBounty(UEVGameInstance* GI); + + // Replaces Normal Bounty Info UI with Unique Game Over UI + void AllBountiesCompleted(); + +protected: + // Called When Player Spawns + virtual void BeginPlay() override; + + // Called every frame + virtual void Tick(float DeltaTime) override; +public: + // Used by Final Checkpoint to always load the Level set as the Open Level in here + FString GetOpenWorldLevelName() + { + return OpenWorldLevelName; + } + +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.cpp similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacter.cpp rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.cpp diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacter.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.h similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacter.h rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacter.h diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.cpp similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.cpp rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.cpp diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.h similarity index 100% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterAbilityBase.h rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterAbilityBase.h diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.cpp b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp similarity index 98% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.cpp rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp index 8127dea2..93d83d2f 100644 --- a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2019-2022 Drowning Dragons Limited. All Rights Reserved. -#include "EndlessVendetta/MyVICharacterBase.h" +#include "EndlessVendetta/Characters/MyVICharacterBase.h" #include "Pawn/VICharacterBase.h" #include "Net/UnrealNetwork.h" #include "GameFramework/CharacterMovementComponent.h" diff --git a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.h b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h similarity index 95% rename from EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.h rename to EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h index 40ae3f7f..11f60fa6 100644 --- a/EndlessVendetta/Source/EndlessVendetta/MyVICharacterBase.h +++ b/EndlessVendetta/Source/EndlessVendetta/Characters/MyVICharacterBase.h @@ -3,7 +3,8 @@ #pragma once #include "CoreMinimal.h" -#include "EndlessVendettaCharacter.h" +#include "BountyHunterCharacter.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" #include "VITypes.h" #include "Pawn/VIPawnInterface.h" #include "MyVICharacterBase.generated.h" @@ -19,7 +20,7 @@ class UVIPawnVaultComponent; * Requires multiple overrides which will cause errors if not correctly performed */ UCLASS(abstract) -class ENDLESSVENDETTA_API AMyVICharacterBase : public AEndlessVendettaCharacter, public IVIPawnInterface +class ENDLESSVENDETTA_API AMyVICharacterBase : public ABountyHunterCharacter, public IVIPawnInterface { GENERATED_BODY() diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h new file mode 100644 index 00000000..80681856 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_Dialogue.h @@ -0,0 +1,35 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "AC_PlayerDialogueInterpreter.h" +#include "DialogueTree.h" +#include "Components/ActorComponent.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" +#include "EndlessVendetta/InteractionInterface.h" +#include "Kismet/GameplayStatics.h" +#include "AC_Dialogue.generated.h" + + +UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) +class ENDLESSVENDETTA_API UAC_Dialogue : public UActorComponent +{ + GENERATED_BODY() + +public: + void Interact() const; + + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + UDialogueTree* DialogueTree; +}; + +inline void UAC_Dialogue::Interact() const +{ + GLog->Log("Interacting with dialogue"); + if (!IsValid(DialogueTree)) return; + AEndlessVendettaCharacter* Character = Cast(UGameplayStatics::GetPlayerCharacter(GetWorld(), 0)); + if (!IsValid(Cast(Character->GetComponentByClass(UAC_PlayerDialogueInterpreter::StaticClass())))) return; + Cast(Character->GetComponentByClass(UAC_PlayerDialogueInterpreter::StaticClass()))->StartDialogue(DialogueTree); + Character->bIsInDialogue = true; +} diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp new file mode 100644 index 00000000..f11997ca --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.cpp @@ -0,0 +1,123 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "AC_PlayerDialogueInterpreter.h" + +#include "EndlessVendetta/EndlessVendettaCharacter.h" + + +// Sets default values for this component's properties +UAC_PlayerDialogueInterpreter::UAC_PlayerDialogueInterpreter() +{ + // 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 = false; + + // ... +} + + +// Called when the game starts +void UAC_PlayerDialogueInterpreter::BeginPlay() +{ + Super::BeginPlay(); + + // ... +} + +FDialogueCharacter* UAC_PlayerDialogueInterpreter::GetCharacterSpeakingFromEnum(ECharacterSpeaking CharacterSpeakingEnum) const +{ + switch (CharacterSpeakingEnum) + { + case ECharacterSpeaking::Character1: + return &CurrentDialogueTree->Character1; + case ECharacterSpeaking::Character2: + return &CurrentDialogueTree->Character2; + case ECharacterSpeaking::Character3: + return &CurrentDialogueTree->Character3; + case ECharacterSpeaking::Character4: + return &CurrentDialogueTree->Character4; + } + return nullptr; +} + +// Called every frame +void UAC_PlayerDialogueInterpreter::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + + // ... +} + +void UAC_PlayerDialogueInterpreter::StartDialogue(UDialogueTree* DialogueTree) +{ + CurrentDialogueTree = DialogueTree; + CurrentTextNode = Cast(DialogueTree->RootNodes[0]->ChildrenNodes[0]); + if (!IsValid(CurrentTextNode)) return; + CurrentCharacterSpeaking = *GetCharacterSpeakingFromEnum(CurrentTextNode->DialogueCharacterSpeaking); + OnStartDialogue.Broadcast(CurrentTextNode); + + if (APlayerController* PlayerController = GetWorld()->GetFirstPlayerController()) + { + FInputModeUIOnly InputModeData; + InputModeData.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock); + PlayerController->SetInputMode(InputModeData); + PlayerController->bShowMouseCursor = true; + } +} + +void UAC_PlayerDialogueInterpreter::NextDialogue() +{ + if (!IsValid(CurrentTextNode)) return; + if (CurrentTextNode->ChildrenNodes.Num() == 0) + { + EndDialogue(); + return; + } + if (Cast(CurrentTextNode->ChildrenNodes[0])) + { + CurrentChoiceNode = Cast(CurrentTextNode->ChildrenNodes[0]); + OnChoiceDialogue.Broadcast(CurrentChoiceNode); + CurrentTextNode = nullptr; + } + else + { + CurrentTextNode = Cast(CurrentTextNode->ChildrenNodes[0]); + CurrentCharacterSpeaking = *GetCharacterSpeakingFromEnum(CurrentTextNode->DialogueCharacterSpeaking); + OnNextDialogue.Broadcast(CurrentTextNode); + CurrentChoiceNode = nullptr; + } +} + +void UAC_PlayerDialogueInterpreter::MakeChoiceDialogue(const int Choice) +{ + if (!IsValid(CurrentChoiceNode)) return; + if (Cast(CurrentChoiceNode->ChildrenNodes[Choice])) + { + CurrentChoiceNode = Cast(CurrentChoiceNode->ChildrenNodes[Choice]); + OnChoiceDialogue.Broadcast(CurrentChoiceNode); + CurrentTextNode = nullptr; + } + else + { + CurrentTextNode = Cast(CurrentChoiceNode->ChildrenNodes[Choice]); + CurrentCharacterSpeaking = *GetCharacterSpeakingFromEnum(CurrentTextNode->DialogueCharacterSpeaking); + OnNextDialogue.Broadcast(CurrentTextNode); + CurrentChoiceNode = nullptr; + } +} + +void UAC_PlayerDialogueInterpreter::EndDialogue() +{ + CurrentChoiceNode = nullptr; + CurrentTextNode = nullptr; + CurrentCharacterSpeaking = FDialogueCharacter(); + OnEndDialogue.Broadcast(); + + if (APlayerController* PlayerController = GetWorld()->GetFirstPlayerController()) + { + const FInputModeGameAndUI InputModeData; + PlayerController->SetInputMode(InputModeData); + PlayerController->bShowMouseCursor = false; + } +} diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h new file mode 100644 index 00000000..4da84a18 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/AC_PlayerDialogueInterpreter.h @@ -0,0 +1,66 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "DialogueChoiceNode.h" +#include "DialogueTextNode.h" +#include "Components/ActorComponent.h" +#include "AC_PlayerDialogueInterpreter.generated.h" + + +UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) +class ENDLESSVENDETTA_API UAC_PlayerDialogueInterpreter : public UActorComponent +{ + GENERATED_BODY() + +public: + // Sets default values for this component's properties + UAC_PlayerDialogueInterpreter(); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStartDialogue, UDialogueTextNode*, StartingNode); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnNextDialogue, UDialogueTextNode*, NextNode); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnChoiceDialogue, UDialogueChoiceNode*, ChoiceNode); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnEndDialogue); + + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnStartDialogue OnStartDialogue; + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnNextDialogue OnNextDialogue; + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnChoiceDialogue OnChoiceDialogue; + UPROPERTY(BlueprintAssignable, Category = "Dialogue") + FOnEndDialogue OnEndDialogue; + + UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "Dialogue") + UDialogueTree* CurrentDialogueTree; + UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "Dialogue") + FDialogueCharacter CurrentCharacterSpeaking; + +protected: + // Called when the game starts + virtual void BeginPlay() override; + +private: + UPROPERTY() + UDialogueTextNode* CurrentTextNode; + UPROPERTY() + UDialogueChoiceNode* CurrentChoiceNode; + FDialogueCharacter* GetCharacterSpeakingFromEnum(ECharacterSpeaking CharacterSpeakingEnum) const; + +public: + // Called every frame + virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; + + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void StartDialogue(UDialogueTree* DialogueTree); + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void NextDialogue(); + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void MakeChoiceDialogue(int Choice); + UFUNCTION(BlueprintCallable, Category = "Dialogue") + void EndDialogue(); +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.cpp new file mode 100644 index 00000000..8adadbb7 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.cpp @@ -0,0 +1,39 @@ +#include "DialogueAddItemNode.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "UDialogueTextNode" + +UDialogueAddItemNode::UDialogueAddItemNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UDialogueTree::StaticClass(); + + ContextMenuName = LOCTEXT("ConextMenuName", "Add Item Node"); +#endif +} + +#if WITH_EDITOR + +FText UDialogueAddItemNode::GetNodeTitle() const +{ + return Bruh; +} + +void UDialogueAddItemNode::SetNodeTitle(const FText& NewTitle) +{ + Bruh = NewTitle; +} + +FLinearColor UDialogueAddItemNode::GetBackgroundColor() const +{ + const UDialogueTree* DialogueTree = Cast(GetGraph()); + + if (DialogueTree == nullptr) + return Super::GetBackgroundColor(); + + return FLinearColor::Black; +} + +#endif + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.h new file mode 100644 index 00000000..b52856e6 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueAddItemNode.h @@ -0,0 +1,24 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "DialogueAddItemNode.generated.h" + +UCLASS(Blueprintable) +class UDialogueAddItemNode : public UGenericGraphNode +{ + GENERATED_BODY() +public: + UDialogueAddItemNode(); + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + FText Bruh; + +#if WITH_EDITOR + virtual FText GetNodeTitle() const override; + + virtual void SetNodeTitle(const FText& NewTitle) override; + + virtual FLinearColor GetBackgroundColor() const override; +#endif +}; \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp new file mode 100644 index 00000000..00c3b94f --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.cpp @@ -0,0 +1,58 @@ +#include "DialogueChoiceNode.h" + +#include "DialogueEdge.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "UDialogueChoiceNode" + +UDialogueChoiceNode::UDialogueChoiceNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UDialogueTree::StaticClass(); + + ContextMenuName = LOCTEXT("ConextMenuName", "Choice Node"); +#endif +} + +#if WITH_EDITOR + +FText UDialogueChoiceNode::GetNodeTitle() const +{ + bool bHasValidNumberOfChoices = false; + if (Choices.Num() == ChildrenNodes.Num()) bHasValidNumberOfChoices = true; + for (int i = 0; i < Edges.Num(); i++) + { + if (!bHasValidNumberOfChoices) + { + Cast(Edges[ChildrenNodes[i]])->EdgeColour = FLinearColor::Red; + Cast(Edges[ChildrenNodes[i]])->SetNodeTitle(FText::FromString("INVALID")); + } + else if (Choices[i].Len() > 15) + { + FString Substring = Choices[i].Left(15); + Substring.Append("..."); + Cast(Edges[ChildrenNodes[i]])->SetNodeTitle(FText::FromString(Substring)); + } + else + { + Cast(Edges[ChildrenNodes[i]])->SetNodeTitle(FText::FromString(Choices[i])); + Cast(Edges[ChildrenNodes[i]])->EdgeColour = FLinearColor::White; + } + } + const FText ChoiceNodeTitle = NodeTitle.IsEmpty() ? LOCTEXT("Choice Node", "Choice Node") : NodeTitle; + return FText::Format(LOCTEXT("Choice Node Title", "{0} [{1}]"), ChoiceNodeTitle, FText::AsNumber(Choices.Num())); +} + +FLinearColor UDialogueChoiceNode::GetBackgroundColor() const +{ + const UDialogueTree* DialogueTree = Cast(GetGraph()); + + if (DialogueTree == nullptr) + return Super::GetBackgroundColor(); + + return FLinearColor(1.f, 0.5f, 0.f, 1.f); +} + +#endif + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h new file mode 100644 index 00000000..9f38ede7 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueChoiceNode.h @@ -0,0 +1,22 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "DialogueChoiceNode.generated.h" + +UCLASS(Blueprintable) +class UDialogueChoiceNode : public UGenericGraphNode +{ + GENERATED_BODY() + +public: + UDialogueChoiceNode(); + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + TArray Choices; + +#if WITH_EDITOR + virtual FText GetNodeTitle() const override; + virtual FLinearColor GetBackgroundColor() const override; +#endif +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h new file mode 100644 index 00000000..0df68620 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueEdge.h @@ -0,0 +1,21 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphEdge.h" +#include "DialogueEdge.generated.h" + + +UCLASS(Blueprintable) +class UDialogueEdge : public UGenericGraphEdge +{ + GENERATED_BODY() + + UDialogueEdge(); +}; + +inline UDialogueEdge::UDialogueEdge() +{ +#if WITH_EDITORONLY_DATA + bShouldDrawTitle = true; +#endif +} diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp new file mode 100644 index 00000000..a4981347 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.cpp @@ -0,0 +1,31 @@ +#include "DialogueRootNode.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "UDialogueChoiceNode" + +UDialogueRootNode::UDialogueRootNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UDialogueTree::StaticClass(); + + ContextMenuName = LOCTEXT("ConextMenuName", "Root Node"); +#endif +} + +#if WITH_EDITOR +FText UDialogueRootNode::GetNodeTitle() const +{ + return LOCTEXT("Root Node", "ROOT"); +} + +FLinearColor UDialogueRootNode::GetBackgroundColor() const +{ + if (const UDialogueTree* DialogueTree = Cast(GetGraph()); DialogueTree == nullptr) + return Super::GetBackgroundColor(); + + return FLinearColor(0.f, 1.f, 0.f, 1.f); +} + +#endif + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.h new file mode 100644 index 00000000..56ae66bd --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueRootNode.h @@ -0,0 +1,20 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "DialogueRootNode.generated.h" + +UCLASS(Blueprintable) +class UDialogueRootNode : public UGenericGraphNode +{ + GENERATED_BODY() + +public: + UDialogueRootNode(); + +#if WITH_EDITOR + virtual FText GetNodeTitle() const override; + + virtual FLinearColor GetBackgroundColor() const override; +#endif +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp new file mode 100644 index 00000000..bc9c2e95 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.cpp @@ -0,0 +1,72 @@ +#include "DialogueTextNode.h" +#include "DialogueTree.h" + +#define LOCTEXT_NAMESPACE "UDialogueTextNode" + +UDialogueTextNode::UDialogueTextNode() +{ +#if WITH_EDITORONLY_DATA + CompatibleGraphType = UDialogueTree::StaticClass(); + + ContextMenuName = LOCTEXT("ConextMenuName", "Dialogue Node"); +#endif +} + +#if WITH_EDITOR + +FText UDialogueTextNode::GetNodeTitle() const +{ + if (Text.IsEmpty()) return LOCTEXT("EmptyParagraph", "(Empty paragraph)"); + FString WrappedText = Text.ToString(); + WrappedText = WrappedText.TrimStartAndEnd(); + if (Text.ToString().Len() > 20) + { + WrappedText = ""; + int CharCount = 0; + for (int i = 0; i < Text.ToString().Len(); i++) + { + if (CharCount > 20 && Text.ToString()[i] == ' ') + { + WrappedText += "\n"; + CharCount = 0; + } + else + { + WrappedText += Text.ToString()[i]; + CharCount++; + } + } + } + return FText::FromString(WrappedText); +} + +void UDialogueTextNode::SetNodeTitle(const FText& NewTitle) +{ + Text = NewTitle; +} + +FLinearColor UDialogueTextNode::GetBackgroundColor() const +{ + const UDialogueTree* DialogueTree = Cast(GetGraph()); + + if (DialogueTree == nullptr) + return Super::GetBackgroundColor(); + + switch (DialogueCharacterSpeaking) + { + case ECharacterSpeaking::Character1: + return DialogueTree->Character1.DialogueNodeBgColor; + case ECharacterSpeaking::Character2: + return DialogueTree->Character2.DialogueNodeBgColor; + case ECharacterSpeaking::Character3: + return DialogueTree->Character3.DialogueNodeBgColor; + case ECharacterSpeaking::Character4: + return DialogueTree->Character4.DialogueNodeBgColor; + default: + return FLinearColor::Black; + } +} + +#endif + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h new file mode 100644 index 00000000..4eb9f33d --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTextNode.h @@ -0,0 +1,36 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraphNode.h" +#include "DialogueTree.h" +#include "DialogueTextNode.generated.h" + +UENUM(BlueprintType) +enum class ECharacterSpeaking : uint8 +{ + Character1, + Character2, + Character3, + Character4 +}; + +UCLASS(Blueprintable) +class UDialogueTextNode : public UGenericGraphNode +{ + GENERATED_BODY() + +public: + UDialogueTextNode(); + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue", meta = (MultiLine = true)) + FText Text; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Dialogue") + ECharacterSpeaking DialogueCharacterSpeaking = ECharacterSpeaking::Character1; + +#if WITH_EDITOR + virtual FText GetNodeTitle() const override; + virtual void SetNodeTitle(const FText& NewTitle) override; + virtual FLinearColor GetBackgroundColor() const override; +#endif +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp new file mode 100644 index 00000000..a74404f2 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.cpp @@ -0,0 +1,27 @@ +#include "DialogueTree.h" +#include "DialogueTextNode.h" +#include "DialogueEdge.h" + +#define LOCTEXT_NAMESPACE "DialogueSession" + +UDialogueTree::UDialogueTree() +{ + NodeType = UGenericGraphNode::StaticClass(); + EdgeType = UDialogueEdge::StaticClass(); + + // bCanBeCyclical = true; + + Character1.CharacterName = "Character 1"; + Character2.CharacterName = "Character 2"; + Character3.CharacterName = "None"; + Character4.CharacterName = "None"; + + Character1.DialogueNodeBgColor = FLinearColor::Black; + Character2.DialogueNodeBgColor = FLinearColor(0.93f, 0.93f, 0.93f, 1.f); + Character3.DialogueNodeBgColor = FLinearColor::Yellow; + Character4.DialogueNodeBgColor = FLinearColor::Blue; + + Name = "Dialogue Tree"; +} + +#undef LOCTEXT_NAMESPACE diff --git a/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h new file mode 100644 index 00000000..92f3f1bd --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/DialogueSystem/DialogueTree.h @@ -0,0 +1,36 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GenericGraph.h" +#include "DialogueTree.generated.h" + +USTRUCT(BlueprintType) +struct FDialogueCharacter +{ + GENERATED_BODY() + + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + FName CharacterName; + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Dialogue") + UTexture2D* DialogueCharacterPortrait; + UPROPERTY(BlueprintReadOnly, EditDefaultsOnly, Category = "Node") + FLinearColor DialogueNodeBgColor; +}; + +UCLASS(Blueprintable) +class ENDLESSVENDETTA_API UDialogueTree : public UGenericGraph +{ + GENERATED_BODY() + +public: + UDialogueTree(); + + UPROPERTY(EditDefaultsOnly, Category = "Dialogue") + FDialogueCharacter Character1; + UPROPERTY(EditDefaultsOnly, Category = "Dialogue") + FDialogueCharacter Character2; + UPROPERTY(EditDefaultsOnly, Category = "Dialogue") + FDialogueCharacter Character3; + UPROPERTY(EditDefaultsOnly, Category = "Dialogue") + FDialogueCharacter Character4; +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp index bdaaddab..05044761 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.cpp @@ -3,6 +3,30 @@ #include "EVGameInstance.h" +#include "Kismet/GameplayStatics.h" + +void UEVGameInstance::CreateNewSaveGameInstance() +{ + if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) UGameplayStatics::DeleteGameInSlot("MainSave", 0); + + MainSaveGameInstanceRef = Cast(UGameplayStatics::CreateSaveGameObject(UMainSaveGameClass::StaticClass())); + MainSaveGameInstanceRef->CurrentMainBountyIndexSave = 0; + MainSaveGameInstanceRef->LastMainBountyIndexInOpenWorld = 0; + UGameplayStatics::SaveGameToSlot(MainSaveGameInstanceRef, "MainSave", 0); +} + +int UEVGameInstance::LoadSaveGameInstance() +{ + if (!UGameplayStatics::DoesSaveGameExist("MainSave", 0)) return 0; + MainSaveGameInstanceRef = Cast(UGameplayStatics::LoadGameFromSlot("MainSave", 0)); + return MainSaveGameInstanceRef->CurrentMainBountyIndexSave; +} + +void UEVGameInstance::DeleteSaveGameFiles() +{ + if (UGameplayStatics::DoesSaveGameExist("MainSave", 0)) UGameplayStatics::DeleteGameInSlot("MainSave", 0); +} + void UEVGameInstance::OnStart() { Super::OnStart(); diff --git a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h index ec749839..e568b835 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h +++ b/EndlessVendetta/Source/EndlessVendetta/EVGameInstance.h @@ -5,6 +5,7 @@ #include "CoreMinimal.h" #include "Engine/GameInstance.h" #include "Http.h" +#include "MainSaveGameClass.h" #include "EVGameInstance.generated.h" /** @@ -19,6 +20,18 @@ public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Telemetry") FString GlobalSessionID = "AAAAA"; + UPROPERTY() + UMainSaveGameClass* MainSaveGameInstanceRef; + + UFUNCTION(BlueprintCallable) + void CreateNewSaveGameInstance(); + + UFUNCTION(BlueprintCallable) + int LoadSaveGameInstance(); + + UFUNCTION(BlueprintCallable) + void DeleteSaveGameFiles(); + protected: virtual void OnStart() override; diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs b/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs index 1795e500..6d011573 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs @@ -14,5 +14,7 @@ public class EndlessVendetta : ModuleRules "GameplayTasks", "NavigationSystem", "UMG", "Slate", "SlateCore", "Niagara", "NiagaraCore", "NiagaraShader", "HTTP", "Json", "JsonUtilities", "VaultIt", "MotionWarping", "GameplayAbilities" }); + + PrivateDependencyModuleNames.AddRange(new string[] { "GenericGraphRuntime"}); } } \ No newline at end of file diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index 0e80ae88..4bf27204 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -14,6 +14,8 @@ #include "GameFramework/MovementComponent.h" #include "Inventory/InventoryComponent.h" #include "EndlessVendettaGameMode.h" +#include "EVGameInstance.h" +#include "DialogueSystem/AC_Dialogue.h" ////////////////////////////////////////////////////////////////////////// @@ -50,6 +52,13 @@ void AEndlessVendettaCharacter::BeginPlay() // Call the base class Super::BeginPlay(); + UEVGameInstance* GI = Cast(GetWorld()->GetGameInstance()); + if (IsValid(GI->MainSaveGameInstanceRef)) + { + PrimaryWeaponClass = GI->MainSaveGameInstanceRef->PrimaryWeaponClassSave; + SecondaryWeaponClass = GI->MainSaveGameInstanceRef->SecondaryWeaponClassSave; + } + // Set the fp skeletal mesh for the vault it plugin to use TArray MeshActComps = GetComponentsByClass(USkeletalMeshComponent::StaticClass()); for (auto MeshActorComponent : MeshActComps) @@ -98,12 +107,11 @@ void AEndlessVendettaCharacter::Tick(float DeltaTime) } else if (MoveGroundSpeed <= 0) { - this->GetFirstPersonCameraComponent()->SetFieldOfView(90); bIsPlayerMoving = false; } if (bPressedJump) { - if(CurrentStamina <= 0.0f) + if (CurrentStamina <= 0.0f) { CurrentStamina -= 20.0f; } @@ -117,7 +125,6 @@ void AEndlessVendettaCharacter::Tick(float DeltaTime) if (CurrentStamina <= 0.0f) { bIsPlayerSprinting = false; - this->GetFirstPersonCameraComponent()->SetFieldOfView(90); CurrentStamina = 0.0f; CharacterMovement->MaxWalkSpeed = OriginalWalkSpeed; } @@ -125,7 +132,7 @@ void AEndlessVendettaCharacter::Tick(float DeltaTime) } if (!bIsPlayerSprinting) { - if(CurrentStamina >= 100.0f) + if (CurrentStamina >= 100.0f) { CurrentStamina = 100.0f; return; @@ -176,7 +183,7 @@ void AEndlessVendettaCharacter::SetupPlayerInputComponent(class UInputComponent* //Jumping EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this, &ACharacter::Jump); EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping); - + //Moving EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::Move); EnhancedInputComponent->BindAction(SprintAction, ETriggerEvent::Started, this, &AEndlessVendettaCharacter::Sprint); @@ -213,6 +220,11 @@ void AEndlessVendettaCharacter::SetupPlayerInputComponent(class UInputComponent* void AEndlessVendettaCharacter::Interact() { + if (bIsInDialogue) + { + Cast(GetComponentByClass(UAC_PlayerDialogueInterpreter::StaticClass()))->NextDialogue(); + return; + } if (PlayerOnShip) { SpaceShip->PlayerInteracting(); @@ -236,6 +248,10 @@ void AEndlessVendettaCharacter::Interact() UE_LOG(LogTemp, Warning, TEXT("Hit actor: %s"), *HitActor->GetName()); IInteractionInterface* InteractableActor = Cast(HitActor); if (InteractableActor) InteractableActor->Interact(); + if (UAC_Dialogue* Dialogue = Cast(HitActor->GetComponentByClass(UAC_Dialogue::StaticClass()))) + { + Dialogue->Interact(); + } } @@ -334,6 +350,7 @@ void AEndlessVendettaCharacter::ToggleCombat() void AEndlessVendettaCharacter::EquipPrimary() { if (PlayerOnShip) return; + if (!IsValid(PrimaryWeaponClass)) return; FActorSpawnParameters spawnParams; spawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true); @@ -342,7 +359,7 @@ void AEndlessVendettaCharacter::EquipPrimary() if (IsValid(PrimaryWeapon)) { PrimaryWeapon->DetachFromActor(DetatchRules); - PrimaryWeapon->SetActorLocation(FVector(0,0,0), false, nullptr, ETeleportType::None); + PrimaryWeapon->SetActorLocation(FVector(0, 0, 0), false, nullptr, ETeleportType::None); PrimaryWeapon->SetActorHiddenInGame(true); this->GetFirstPersonCameraComponent()->SetFieldOfView(90); UE_LOG(LogTemp, Warning, TEXT("Primary Weapon Is Hidden: %hhd"), PrimaryWeapon->IsHidden()); @@ -352,7 +369,7 @@ void AEndlessVendettaCharacter::EquipPrimary() Cast(GetWorld()->GetAuthGameMode())->SendEvent("DeEquip", "Pri"); return; } - if(bIsWeaponPickedUp) + if (bIsWeaponPickedUp) { PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); bIsWeaponPickedUp = false; @@ -363,39 +380,58 @@ void AEndlessVendettaCharacter::EquipPrimary() if (GadgetManager->IsValidReconGadget() && GadgetManager->IsReconEquipped() && !GadgetManager->TryToUnequipRecon()) return; if (GadgetManager->IsValidCombatGadget() && GadgetManager->IsCombatEquipped() && !GadgetManager->TryToUnequipCombat()) return; - bHasRifle = true; - // if(!bIsPrimaryWeaponCreated) - // { - // //Creating a new actor object called PrimaryWeapon that is based off primaryweaponClass - // //Changing PrimaryWeaponActor to ABaseWeaponClass type instead of actor and storing it into PrimaryWeapon which is a ABaseClass Object - // //We do this because we need to check if PrimaryWeapon is equipped and we want primaryweapon to be ABaseWeapon type and not a generic AActor - // PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); - // PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); - // PrimaryWeapon = Cast(PrimaryWeaponActor); - // PrimaryWeapon->SetActorHiddenInGame(false); - // bIsPrimaryWeaponCreated = true; - // } + + if (!IsValid(PrimaryWeapon)) + { + bHasRifle = true; + if (!bIsPrimaryWeaponCreated) + { + PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); + PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); + PrimaryWeapon = Cast(PrimaryWeaponActor); + PrimaryWeapon->SetActorHiddenInGame(false); + bIsPrimaryWeaponCreated = true; + } + //UE_LOG(LogTemp, Warning, TEXT("Primary Weapon Is Hidden: %hhd"), SecondaryWeapon->IsHidden()); + GLog->Log("Primary Weapon Equipped"); + } + if (!IsValid(PrimaryWeaponActor)) return; Cast(GetWorld()->GetAuthGameMode())->SendEvent("Equip", "Pri"); PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); PrimaryWeapon = Cast(PrimaryWeaponActor); PrimaryWeapon->SetActorHiddenInGame(false); GetWorldTimerManager().ClearTimer(PrimaryWeapon->reloadTimerHandle); + + // bHasRifle = true; + // // if(!bIsPrimaryWeaponCreated) + // // { + // // //Creating a new actor object called PrimaryWeapon that is based off primaryweaponClass + // // //Changing PrimaryWeaponActor to ABaseWeaponClass type instead of actor and storing it into PrimaryWeapon which is a ABaseClass Object + // // //We do this because we need to check if PrimaryWeapon is equipped and we want primaryweapon to be ABaseWeapon type and not a generic AActor + // // PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); + // // PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); + // // PrimaryWeapon = Cast(PrimaryWeaponActor); + // // PrimaryWeapon->SetActorHiddenInGame(false); + // // bIsPrimaryWeaponCreated = true; + // // } + } void AEndlessVendettaCharacter::EquipSecondary() { + if (!IsValid(SecondaryWeaponClass)) return; if (PlayerOnShip) return; FActorSpawnParameters spawnParams; spawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true); FDetachmentTransformRules DetatchRules(EDetachmentRule::KeepWorld, false); - + if (bIsReloading) return; if (IsValid(SecondaryWeapon)) { SecondaryWeapon->DetachFromActor(DetatchRules); - SecondaryWeapon->SetActorLocation(FVector(0,0,0), false, nullptr, ETeleportType::None); + SecondaryWeapon->SetActorLocation(FVector(0, 0, 0), false, nullptr, ETeleportType::None); SecondaryWeapon->SetActorHiddenInGame(true); this->GetFirstPersonCameraComponent()->SetFieldOfView(90); UE_LOG(LogTemp, Warning, TEXT("Secondary Weapon Is Hidden: %hhd"), SecondaryWeapon->IsHidden()); @@ -404,8 +440,8 @@ void AEndlessVendettaCharacter::EquipSecondary() GLog->Log("Secondary Weapon Put Away"); return; } - - if(bIsWeaponPickedUp) + + if (bIsWeaponPickedUp) { PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams); bIsWeaponPickedUp = false; @@ -415,11 +451,11 @@ void AEndlessVendettaCharacter::EquipSecondary() if (GadgetManager->IsValidReconGadget() && GadgetManager->IsReconEquipped() && !GadgetManager->TryToUnequipRecon()) return; if (GadgetManager->IsValidCombatGadget() && GadgetManager->IsCombatEquipped() && !GadgetManager->TryToUnequipCombat()) return; - - if(!IsValid(SecondaryWeapon)) + + if (!IsValid(SecondaryWeapon)) { bHasRifle = true; - if(!bIsSecondaryWeaponCreated) + if (!bIsSecondaryWeaponCreated) { SecondaryWeaponActor = GetWorld()->SpawnActor(SecondaryWeaponClass, spawnParams); SecondaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); @@ -430,7 +466,7 @@ void AEndlessVendettaCharacter::EquipSecondary() //UE_LOG(LogTemp, Warning, TEXT("Secondary Weapon Is Hidden: %hhd"), SecondaryWeapon->IsHidden()); GLog->Log("Secondary Weapon Equipped"); } - SecondaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); + SecondaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("PistolGripPoint")); SecondaryWeapon = Cast(SecondaryWeaponActor); SecondaryWeapon->SetActorHiddenInGame(false); GetWorldTimerManager().ClearTimer(SecondaryWeapon->reloadTimerHandle); @@ -438,7 +474,7 @@ void AEndlessVendettaCharacter::EquipSecondary() void AEndlessVendettaCharacter::WeaponSwitcher(AActor* Outhit) { - if(Outhit->ActorHasTag("PrimaryWeapon")) + if (Outhit->ActorHasTag("PrimaryWeapon")) { if (IsValid(PrimaryWeapon)) { @@ -446,10 +482,19 @@ void AEndlessVendettaCharacter::WeaponSwitcher(AActor* Outhit) } bIsWeaponPickedUp = true; PrimaryWeaponClass = Outhit->GetClass(); + + UEVGameInstance* GI = Cast(GetGameInstance()); + if (IsValid(GI->MainSaveGameInstanceRef)) + { + GI->MainSaveGameInstanceRef->PrimaryWeaponClassSave = Outhit->GetClass(); + UGameplayStatics::SaveGameToSlot(GI->MainSaveGameInstanceRef, "MainSave", 0); + } + + Outhit->Destroy(); EquipPrimary(); } - if(Outhit->ActorHasTag("SecondaryWeapon")) + if (Outhit->ActorHasTag("SecondaryWeapon")) { if (IsValid(SecondaryWeapon)) { @@ -457,6 +502,14 @@ void AEndlessVendettaCharacter::WeaponSwitcher(AActor* Outhit) } bIsWeaponPickedUp = true; SecondaryWeaponClass = Outhit->GetClass(); + + UEVGameInstance* GI = Cast(GetGameInstance()); + if (IsValid(GI->MainSaveGameInstanceRef)) + { + GI->MainSaveGameInstanceRef->SecondaryWeaponClassSave = Outhit->GetClass(); + UGameplayStatics::SaveGameToSlot(GI->MainSaveGameInstanceRef, "MainSave", 0); + } + Outhit->Destroy(); EquipSecondary(); } @@ -491,28 +544,16 @@ void AEndlessVendettaCharacter::GunRightClick() { if (IsValid(PrimaryWeapon) && !bIsScoped) { - for (UActorComponent* actorComp : this->GetComponentsByTag(UArrowComponent::StaticClass(), FName("ScopedLocationArrow"))) - { - ScopedLocationArrow = Cast(actorComp); - break; - } - if (!IsValid(ScopedLocationArrow)) return; - PrimaryWeapon->SetActorLocation(ScopedLocationArrow->GetComponentLocation()); bIsScoped = true; PrimaryWeapon->WeaponScopedFire(); + StartPrimaryWeaponADS(); this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually } if (IsValid(SecondaryWeapon) && !bIsScoped) { - for (UActorComponent* actorComp : this->GetComponentsByTag(UArrowComponent::StaticClass(), FName("ScopedLocationArrow"))) - { - ScopedLocationArrow = Cast(actorComp); - break; - } - if (!IsValid(ScopedLocationArrow)) return; bIsScoped = true; SecondaryWeapon->WeaponScopedFire(); - SecondaryWeapon->SetActorLocation(ScopedLocationArrow->GetComponentLocation()); + StartSecondaryWeaponADS(); this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually } } @@ -523,14 +564,14 @@ void AEndlessVendettaCharacter::StopGunRightClick() { bIsScoped = false; PrimaryWeapon->WeaponScopedFire(); - PrimaryWeapon->SetActorRelativeLocation(FVector(0, 0, 0)); + StopPrimaryWeaponADS(); this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } if (IsValid(SecondaryWeapon)) { bIsScoped = false; SecondaryWeapon->WeaponScopedFire(); - SecondaryWeapon->SetActorRelativeLocation(FVector(0, 0, 0)); + StopSecondaryWeaponADS(); this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } } @@ -565,7 +606,7 @@ void AEndlessVendettaCharacter::Move(const FInputActionValue& Value) SpaceShip->MoveShip(MovementVector); return; } - + if (Controller != nullptr) { // add movement @@ -582,7 +623,6 @@ void AEndlessVendettaCharacter::Sprint() if (MoveGroundSpeed > 0) { CharacterMovement->MaxWalkSpeed = SprintSpeed; - this->GetFirstPersonCameraComponent()->SetFieldOfView(100); } } } @@ -594,7 +634,6 @@ void AEndlessVendettaCharacter::StopSprint() { UE_LOG(LogTemp, Display, TEXT("Player stopped sprinting")); CharacterMovement->MaxWalkSpeed = OriginalWalkSpeed; - this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } } @@ -618,7 +657,6 @@ void AEndlessVendettaCharacter::Jumping() void AEndlessVendettaCharacter::StopJump() { Super::StopJumping(); - UE_LOG(LogTemp, Display, TEXT("Player has stopped jumping")); bHasPlayerJumped = false; } @@ -636,8 +674,8 @@ void AEndlessVendettaCharacter::Look(const FInputActionValue& Value) if (Controller != nullptr) { // add yaw and pitch input to controller - AddControllerYawInput(LookAxisVector.X); - AddControllerPitchInput(LookAxisVector.Y); + AddControllerYawInput(LookAxisVector.X * MouseSens); + AddControllerPitchInput(LookAxisVector.Y * MouseSens); } } @@ -672,7 +710,7 @@ void AEndlessVendettaCharacter::UpdateInventorySize(int Cols, int Rows) { Inventory->UpdateInventorySize(Cols, Rows); } - else + else { UE_LOG(LogTemp, Warning, TEXT("No Vaild Inventory")); } @@ -693,6 +731,5 @@ void AEndlessVendettaCharacter::ExitShip(FTransform ExitLoc) SetActorLocation(ExitLoc.GetLocation()); GetController()->SetControlRotation(ExitLoc.Rotator()); SpaceShip->Destroy(); - PlayerOnShip = false; + PlayerOnShip = false; } - diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h index 3b1c9641..a01cbd6c 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h @@ -26,12 +26,12 @@ UCLASS(config=Game) class AEndlessVendettaCharacter : public ACharacter { GENERATED_BODY() - + protected: /** Pawn mesh: 1st person view (arms; seen only by self) */ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category=Mesh) USkeletalMeshComponent* Mesh1P; - + private: /** First person camera */ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true")) @@ -80,6 +80,9 @@ private: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) UInputAction* SprintAction; + UPROPERTY(EditAnywhere, Category = "Sensitivity") + float MouseSens = 1; + public: AEndlessVendettaCharacter(); @@ -92,7 +95,7 @@ public: //STAMINA AND SPRINT SPEED UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") - float MaxStamina = 100; + float MaxStamina = 100; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") float CurrentStamina; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") @@ -107,12 +110,25 @@ public: float WalkSpeed; float OriginalWalkSpeed; + UPROPERTY(BlueprintReadWrite) AActor* PrimaryWeaponActor; + UPROPERTY(BlueprintReadWrite) AActor* SecondaryWeaponActor; bool bIsPrimaryWeaponCreated = false; bool bIsSecondaryWeaponCreated = false; bool bIsWeaponPickedUp = false; + UFUNCTION(BlueprintImplementableEvent) + void StartPrimaryWeaponADS(); + UFUNCTION(BlueprintImplementableEvent) + void StopPrimaryWeaponADS(); + UFUNCTION(BlueprintImplementableEvent) + void StartSecondaryWeaponADS(); + UFUNCTION(BlueprintImplementableEvent) + void StopSecondaryWeaponADS(); + UPROPERTY(BlueprintReadWrite) + bool bIsInDialogue = false; + protected: virtual void BeginPlay() override; virtual void Tick(float DeltaTime) override; @@ -122,6 +138,7 @@ protected: void RegenHealth(); FTimerHandle RegenHealthTimerHandle; + UFUNCTION(BlueprintCallable) void Heal(const float Amount); UFUNCTION(BlueprintImplementableEvent) @@ -134,7 +151,7 @@ public: bool bIsPlayerMoving = false; - UPROPERTY(VisibleAnywhere) + UPROPERTY(VisibleAnywhere, BlueprintReadWrite) bool bIsPlayerSprinting = false; double MoveGroundSpeed; @@ -155,13 +172,15 @@ public: UFUNCTION(BlueprintCallable, Category = Weapon) bool GetHasRifle(); - UPROPERTY(EditAnywhere, Category = "Weapons") + UPROPERTY(EditAnywhere, Category = "Weapons", BlueprintReadWrite) TSubclassOf PrimaryWeaponClass; - UPROPERTY(EditAnywhere, Category = "Weapons") + UPROPERTY(EditAnywhere, Category = "Weapons", BlueprintReadWrite) TSubclassOf SecondaryWeaponClass; + UPROPERTY(BlueprintReadWrite) ABaseWeaponClass* PrimaryWeapon; + UPROPERTY(BlueprintReadWrite) ABaseWeaponClass* SecondaryWeapon; UFUNCTION(BlueprintCallable, Category = "Weapons") @@ -184,6 +203,7 @@ public: void Jumping(); void StopJump(); + UPROPERTY(BlueprintReadWrite) bool bHasPlayerJumped = false; UArrowComponent* ScopedLocationArrow; @@ -209,7 +229,6 @@ protected: void Interact(); protected: - // Used by vault it plugin to run vaulting animations USkeletalMeshComponent* FP_SkeletalMesh = nullptr; @@ -218,8 +237,6 @@ protected: // End of APawn interface public: - - UFUNCTION(BlueprintCallable, Category = "Stealth") void SetCrouch(); UFUNCTION(BlueprintCallable, Category = "Stealth") @@ -256,7 +273,8 @@ private: UPROPERTY(EditDefaultsOnly, Category = "Space Ship") TSubclassOf SpaceShipClass; ASpaceShip* SpaceShip; -public: + +public: void ExitShip(FTransform ExitLoc); void EnterShip(FTransform TakeoffLoc); }; diff --git a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.cpp b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.cpp new file mode 100644 index 00000000..dc698695 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "MainSaveGameClass.h" + diff --git a/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h new file mode 100644 index 00000000..3d7937da --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/MainSaveGameClass.h @@ -0,0 +1,31 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/SaveGame.h" +#include "WeaponSystem/BaseWeaponClass.h" +#include "MainSaveGameClass.generated.h" + +/** + * + */ +UCLASS() +class ENDLESSVENDETTA_API UMainSaveGameClass : public USaveGame +{ + GENERATED_BODY() + +public: + UPROPERTY() + int CurrentMainBountyIndexSave; + + UPROPERTY() + int LastMainBountyIndexInOpenWorld; + + UPROPERTY() + TSubclassOf PrimaryWeaponClassSave; + + UPROPERTY() + TSubclassOf SecondaryWeaponClassSave; + +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.cpp b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.cpp index c8cfc038..879041f9 100644 --- a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.cpp @@ -14,6 +14,44 @@ ALandingZone::ALandingZone() } +void ALandingZone::BeginPlay() +{ + WaypointWidgetComponent = Cast(GetComponentByClass(UWidgetComponent::StaticClass())); + PlayersPawn = GetWorld()->GetFirstPlayerController()->GetPawn(); + + // Tick updates the waypoints transform base on players location + if (!IsValid(WaypointWidgetComponent) || !IsValid(PlayersPawn)) SetActorTickEnabled(false); + + Super::BeginPlay(); +} + +void ALandingZone::Tick(float DeltaSeconds) +{ + Super::Tick(DeltaSeconds); + if (!IsWaypointVisible) return; + UpdateWaypointTransform(); +} + +void ALandingZone::UpdateWaypointTransform() +{ + FVector WaypointLoc = WaypointWidgetComponent->GetComponentLocation(); + FVector PlayerLoc = PlayersPawn->GetActorLocation(); + + // Update rotation + FVector LocationDiffVector = PlayerLoc - WaypointLoc; + FRotator LookAtPlayerRotator = LocationDiffVector.Rotation(); + WaypointWidgetComponent->SetWorldRotation(LookAtPlayerRotator); + + // Update scale + double DistanceFromPlayer = LocationDiffVector.Length(); + double ScaleMagnitude = (12.f - 0.15f) / (48000.f - 900.f); + double ScaleIntercept = 12.f - (48000.f * ScaleMagnitude); + double ResultingScale = (DistanceFromPlayer * ScaleMagnitude) + ScaleIntercept; + FVector WaypointScale = FVector(1, ResultingScale, ResultingScale); + WaypointWidgetComponent->SetWorldScale3D(WaypointScale); +} + + void ALandingZone::UpdateAllLandingZones(bool Landing) { TArray AllLandingZones; @@ -22,6 +60,7 @@ void ALandingZone::UpdateAllLandingZones(bool Landing) { ALandingZone* LZ = Cast(LZ_Actor); Landing ? LZ->HideWaypoint() : LZ->ShowWaypoint(); + LZ->IsWaypointVisible = !Landing; } } diff --git a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.h b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.h index 94314505..8ff2cbbf 100644 --- a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.h +++ b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/LandingZone.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "Components/WidgetComponent.h" #include "EndlessVendetta/InteractionInterface.h" #include "GameFramework/Actor.h" #include "LandingZone.generated.h" @@ -11,29 +12,45 @@ UCLASS() class ENDLESSVENDETTA_API ALandingZone : public AActor, public IInteractionInterface { GENERATED_BODY() - + +// ------------------------------ Attributes ------------------------------------------------- UPROPERTY(EditAnywhere, Category = "Landing Zone") FTransform LZ_ExitTransform; + UPROPERTY(EditAnywhere, Category = "Landing Zone") FTransform LZ_TakeoffTransform; + + UWidgetComponent* WaypointWidgetComponent; + APawn* PlayersPawn; + +public: + bool IsWaypointVisible = false; +// ------------------------------ Methods ------------------------------------------------- +private: + // Runs when game starts or this actor spawns + virtual void BeginPlay() override; + + // Runs once per frame + virtual void Tick(float DeltaSeconds) override; + // Hides or shows key aesthetic features of LZ's based on if the player is landing or not void UpdateAllLandingZones(bool Landing); - - -protected: - UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Landing Zone") - bool IsHomeBase_LZ = false; + // Updates waypoints rotation and scale based on players location, only if visible + void UpdateWaypointTransform(); +protected: // Allows player to enter their ship through a LZ void Interact() override; + + // Used to implement a pop up for interaction void InteractPrompt() override; public: // Sets default values for this actor's properties ALandingZone(); - + // Waypoint will display something along the lines of Press F to Land UFUNCTION(BlueprintImplementableEvent) void SuggestLandingWidget(); @@ -41,12 +58,14 @@ public: // Ran when a player takes off from any LZ in the world UFUNCTION(BlueprintImplementableEvent) void ShowWaypoint(); + // Ran when player lands at any LZ in the world UFUNCTION(BlueprintImplementableEvent) void HideWaypoint(); // Updates all LZ's, then runs exit ship func on player and passes the exit transform void Land(); + // Updates all LZ's, then runs enter ship func on player passing the correct takeoff transform void Takeoff(); }; diff --git a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp index 5eb4610a..35dbc267 100644 --- a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.cpp @@ -4,6 +4,9 @@ #include "SpaceShip.h" #include "Components/ArrowComponent.h" +#include "GameFramework/CharacterMovementComponent.h" +#include "Kismet/GameplayStatics.h" +#include "Kismet/KismetMathLibrary.h" // Sets default values ASpaceShip::ASpaceShip() @@ -18,10 +21,14 @@ void ASpaceShip::SightCheck() FCollisionObjectQueryParams ObjectQueryParams; ObjectQueryParams.AddObjectTypesToQuery(ECollisionChannel::ECC_GameTraceChannel2); FVector LT_Start = SeatComponent->GetComponentLocation(); - FVector LT_End = LT_Start + (SeatComponent->GetForwardVector() * 50000); + FVector LT_End = LT_Start + (SeatComponent->GetForwardVector() * 500000); GetWorld()->LineTraceSingleByObjectType(OutHit, LT_Start, LT_End, ObjectQueryParams); ALandingZone* LZ = Cast(OutHit.GetActor()); - if (!IsValid(LZ)) return; + if (!IsValid(LZ)) + { + Potential_LZ = nullptr; + return; + } Potential_LZ = LZ; LZ->SuggestLandingWidget(); } @@ -32,12 +39,32 @@ void ASpaceShip::BeginPlay() { Super::BeginPlay(); + BikeParentComp = Cast(GetComponentByClass(USpringArmComponent::StaticClass())); + PlayersCharacter = GetWorld()->GetFirstPlayerController()->GetCharacter(); PlayersController = PlayersCharacter->GetController(); TArray SeatComps = GetComponentsByTag(UArrowComponent::StaticClass(), FName("Seat")); SeatComponent = Cast(SeatComps[0]); } +void ASpaceShip::BikeSwayBasedOnAcc(float DeltaTime) +{ + float LeanSpeed = 90.f; + float ForwardLeanIncrement = LeanSpeed * DeltaTime * MovementVec.Y; + float RightLeanIncrement = LeanSpeed * DeltaTime * MovementVec.X; + + FRotator BikeRelativeRot = BikeParentComp->GetRelativeRotation(); + float BikePitch = BikeRelativeRot.Pitch; + float BikeRoll = BikeRelativeRot.Roll; + BikeRelativeRot.Pitch = FMath::Clamp(BikePitch + ForwardLeanIncrement, -5.f, 5.f); + BikeRelativeRot.Roll = FMath::Clamp(BikeRoll + RightLeanIncrement, -30.f, 30.f); + + if (MovementVec.Y == 0) BikeRelativeRot.Pitch = BikePitch > 0 ? FMath::Clamp(BikePitch - ((LeanSpeed / 2.f) * DeltaTime), 0.f, 99.f) : FMath::Clamp(BikePitch + ((LeanSpeed / 2.f) * DeltaTime), -99, 0.f); + if (MovementVec.X == 0) BikeRelativeRot.Roll = BikeRoll > 0 ? FMath::Clamp(BikeRoll - ((LeanSpeed / 2.f) * DeltaTime), 0.f, 99.f) : FMath::Clamp(BikeRoll + ((LeanSpeed / 2.f) * DeltaTime), -99, 0.f); + + BikeParentComp->SetRelativeRotation(BikeRelativeRot); +} + // Called every frame void ASpaceShip::Tick(float DeltaTime) { @@ -45,7 +72,8 @@ void ASpaceShip::Tick(float DeltaTime) PlayersCharacter->SetActorLocation(SeatComponent->GetComponentLocation()); PlayersController->SetControlRotation(GetActorRotation()); - + BikeSwayBasedOnAcc(DeltaTime); + SightCheck(); } @@ -64,6 +92,8 @@ void ASpaceShip::PlayerInteracting() void ASpaceShip::MoveShip(FVector2D MovementVector) { + MovementVec = MovementVector; + GetWorld()->GetTimerManager().SetTimer(BikeLeanResetTimer, this, &ASpaceShip::ResetBikeLean, 0.2f); // Get ships direction vectors, and ignore their pitch FVector ForwardVector = GetActorForwardVector(); ForwardVector.Z = 0; diff --git a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h index 78f0ed03..87ee3d63 100644 --- a/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h +++ b/EndlessVendetta/Source/EndlessVendetta/SpaceShip/SpaceShip.h @@ -5,6 +5,7 @@ #include "CoreMinimal.h" #include "LandingZone.h" #include "GameFramework/Character.h" +#include "GameFramework/SpringArmComponent.h" #include "SpaceShip.generated.h" @@ -21,10 +22,21 @@ class ENDLESSVENDETTA_API ASpaceShip : public ACharacter void SightCheck(); + void BikeSwayBasedOnAcc(float DeltaTime); + + FVector2D MovementVec; + USpringArmComponent* BikeParentComp; + FTimerHandle BikeLeanResetTimer; + void ResetBikeLean() + { + MovementVec.X = 0; + MovementVec.Y = 0; + } protected: // Called when the game starts or when spawned virtual void BeginPlay() override; + public: // Sets default values for this pawn's properties ASpaceShip(); diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp index 9d14975d..a3d1b18b 100644 --- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp @@ -13,6 +13,7 @@ #include #include "EndlessVendetta/BountySystem/ControlsTraining/TargetDummy.h" +#include "EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.h" // Sets default values @@ -100,6 +101,7 @@ void ABaseWeaponClass::GenerateRecoilVector() void ABaseWeaponClass::ApplyRecoil(float DeltaTime) { + if (!endlessVendettaChar->bHasRifle) return; if (recoilTime < 0.3) { float amplitude = RecoilCurve->GetFloatValue(recoilTime); //get current value of curve in time @@ -254,20 +256,35 @@ void ABaseWeaponClass::InteractPrompt() WeaponStatsPopUp(); } -// void ABaseWeaponClass::GetOutHit(FHitResult OutHit) -// { -// if(IsValid(this)) -// { -// endlessVendettaChar->PrimaryWeapon->Destroy(); -// } -// if (OutHit.GetActor()->ActorHasTag(FName("AssaultRifle"))) -// { -// endlessVendettaChar->EquipPrimary(); -// } -// AActor* HitActor = Cast(endlessVendettaChar->PrimaryWeaponClass); -// endlessVendettaChar->PrimaryWeapon = Cast(HitActor); -// } +void ABaseWeaponClass::SetupSilencerAttachment(UStaticMesh* SilencerMesh) +{ + GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red, TEXT("SETTING UP SILENCER ATTACHMENTS")); + FTransform EmptyTransform; + + USceneComponent* SilencerAttachmentClass = Cast(AddComponentByClass(USilencerAttachmentClass::StaticClass(), false, EmptyTransform, false)); + SilencerAttachmentClass->ComponentTags.Add(FName("AttachmentType")); + USkeletalMeshComponent* WeaponSkeletonMesh = FindComponentByClass(); + if (IsValid(SilencerAttachmentClass)) + { + if (IsValid(WeaponSkeletonMesh)) + { + SilencerAttachmentClass->AttachToComponent(WeaponSkeletonMesh, FAttachmentTransformRules::SnapToTargetIncludingScale, FName(TEXT("SilencerMeshSocket"))); + UE_LOG(LogTemp, Display, TEXT("All Attachment is valid")); + //this makes it showup in editor for better debugging + SilencerAttachmentClass->CreationMethod = EComponentCreationMethod::Instance; + SilencerAttachmentClass->RegisterComponent(); + UStaticMeshComponent* StaticMeshComp = NewObject(SilencerAttachmentClass, UStaticMeshComponent::StaticClass()); + if (IsValid(StaticMeshComp)) + { + StaticMeshComp->AttachToComponent(SilencerAttachmentClass, FAttachmentTransformRules::SnapToTargetIncludingScale); + StaticMeshComp->SetStaticMesh(SilencerMesh); + StaticMeshComp->SetRelativeRotation(FRotator(0,90,0)); + StaticMeshComp->SetCollisionEnabled(ECollisionEnabled::NoCollision); + //Making it show in editor for debugging + StaticMeshComp->CreationMethod = EComponentCreationMethod::Instance; + StaticMeshComp->RegisterComponent(); + } + } + } +} - - - diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h index 2637e31f..455752b0 100644 --- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h @@ -176,6 +176,9 @@ public: //void GetOutHit(FHitResult OutHit); + UFUNCTION(BlueprintCallable) + void SetupSilencerAttachment(UStaticMesh* SilencerMesh); + protected: UArrowComponent* GunStartArrow; bool bStopShooting = false; diff --git a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.cpp b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.cpp new file mode 100644 index 00000000..50b63063 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.cpp @@ -0,0 +1,33 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "SilencerAttachmentClass.h" + + +// Sets default values for this component's properties +USilencerAttachmentClass::USilencerAttachmentClass() +{ + // 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; + + // ... +} + + +// Called when the game starts +void USilencerAttachmentClass::BeginPlay() +{ + Super::BeginPlay(); + + // ADD THE LOGIC HERE LATER AFTER DEMO TO ACTUALLY MAKE THE GUN "SILENT" EVEN THO WE HAVE NO AUDIO IN THE GAME. + +} + + +// Called every frame +void USilencerAttachmentClass::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); +} + diff --git a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.h b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.h new file mode 100644 index 00000000..c84b624f --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/SilencerAttachmentClass.h @@ -0,0 +1,29 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/SceneComponent.h" +#include "SilencerAttachmentClass.generated.h" + + +UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent)) +class ENDLESSVENDETTA_API USilencerAttachmentClass : public USceneComponent +{ + GENERATED_BODY() + +public: + // Sets default values for this component's properties + USilencerAttachmentClass(); + +protected: + // Called when the game starts + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; + + UPROPERTY(EditAnywhere) + UStaticMeshComponent* SilencerMesh; +}; diff --git a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/WeaponWorkbenchClass.cpp b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/WeaponWorkbenchClass.cpp new file mode 100644 index 00000000..5fbb7457 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/WeaponWorkbenchClass.cpp @@ -0,0 +1,38 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "WeaponWorkbenchClass.h" + + +// Sets default values +AWeaponWorkbenchClass::AWeaponWorkbenchClass() +{ + // 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; +} + +// Called when the game starts or when spawned +void AWeaponWorkbenchClass::BeginPlay() +{ + Super::BeginPlay(); + PlayerCharacterRef = Cast(GetWorld()->GetFirstPlayerController()->GetCharacter()); +} + +// Called every frame +void AWeaponWorkbenchClass::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); +} + +void AWeaponWorkbenchClass::Interact() +{ + if (!PlayerCharacterRef->bHasRifle) return; + UE_LOG(LogTemp, Display, TEXT("Opening Workbench")); + WorkbenchUI(); +} + +void AWeaponWorkbenchClass::InteractPrompt() +{ + //THIS IS PROMPT WHERE WILL BE PRESS F TO INTERACT OR WHATEVER +} + diff --git a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/WeaponWorkbenchClass.h b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/WeaponWorkbenchClass.h new file mode 100644 index 00000000..c1e54793 --- /dev/null +++ b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/WeaponWorkbenchClass.h @@ -0,0 +1,35 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "EndlessVendetta/EndlessVendettaCharacter.h" +#include "EndlessVendetta/InteractionInterface.h" +#include "GameFramework/Actor.h" +#include "WeaponWorkbenchClass.generated.h" + +UCLASS() +class ENDLESSVENDETTA_API AWeaponWorkbenchClass : public AActor, public IInteractionInterface +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AWeaponWorkbenchClass(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + void Interact() override; + void InteractPrompt() override; + + UFUNCTION(BlueprintImplementableEvent) + void WorkbenchUI(); + + AEndlessVendettaCharacter* PlayerCharacterRef; +}; diff --git a/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs b/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs index 2dc48be0..f57382d6 100644 --- a/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs +++ b/EndlessVendetta/Source/EndlessVendettaEditor.Target.cs @@ -11,5 +11,11 @@ public class EndlessVendettaEditorTarget : TargetRules DefaultBuildSettings = BuildSettingsVersion.V2; IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1; ExtraModuleNames.Add("EndlessVendetta"); + RegisterModulesCreatedByRider(); + } + + private void RegisterModulesCreatedByRider() + { + ExtraModuleNames.AddRange(new string[] { "DialogueSystemEditor" }); } } diff --git a/External Assets/Fonts/conthrax/Typodermic Desktop EULA 2023.pdf b/External Assets/Fonts/conthrax/Typodermic Desktop EULA 2023.pdf new file mode 100644 index 00000000..cefa23b5 --- /dev/null +++ b/External Assets/Fonts/conthrax/Typodermic Desktop EULA 2023.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bb2b43ff7702f56eda9db0e18890bcf65de62ab93ddbbe58107fcdd62949b68 +size 145707 diff --git a/External Assets/Fonts/conthrax/conthrax-sb.otf b/External Assets/Fonts/conthrax/conthrax-sb.otf new file mode 100644 index 00000000..163e9d96 --- /dev/null +++ b/External Assets/Fonts/conthrax/conthrax-sb.otf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09df8d015fbbe7e5e2cc2d0f1b1fba6b14d0ae318ce087621c868b2856ed7756 +size 152848 diff --git a/External Assets/Fonts/conthrax/read-this.html b/External Assets/Fonts/conthrax/read-this.html new file mode 100644 index 00000000..b5fca4eb --- /dev/null +++ b/External Assets/Fonts/conthrax/read-this.html @@ -0,0 +1,1699 @@ + + +Typodermic Fonts Inc. Free Font Instructions 2023 + + + + + +
+ +

+Deutsch +Español +Français +العربية +中国简体 +簡體字 +Čeština +Ελληνικά +עִבְרִית +हिन्दी +Magyar +Íslenska +Indonesia +Italiano +한국말 +日本語 +Norsk +Język Polski +Português +ਪੰਜਾਬੀ +Română +Русский +Svenska +தமிழ் +ภาษาไทย +Türkçe +Українська мова +Tiếng Việt +

+ +

Thank you

+ +

Thanks for downloading a free font from Typodermic Fonts Inc. These fonts included in this ZIP include a free desktop license agreement which permits commercial use. Read the included license agreement for details.

+ + +

Installation

+
  • Windows: Get the font out of the ZIP. Right-click on the font and Install
  • Mac OS X 10.3 or above: Double-click the font file and Install font
+ +

Allowed

+ +
    +
  • art
  • +
  • sign
  • +
  • poster
  • +
  • banner
  • +
  • book
  • +
  • business card
  • +
  • album
  • +
  • movie
  • +
  • television
  • +
  • video/streaming/channels
  • +
  • logo
  • +
  • trademarked logo
  • +
  • clothing
  • +
  • sticker
  • +
  • stamp
  • +
  • product label
  • +
  • web page (not embedded)
  • +
  • app (not embedded)
  • +
  • PDF
  • +
  • eBook cover or images (not embedded)
  • +
+ +

Not allowed

+ +
    +
  • app (embedded)
  • +
  • web page (embedded)
  • +
  • eBook (embedded)
  • +
  • product creation platform
  • +
  • alphabet stamps
  • +
  • advertisment server
  • +
  • web template
  • +
  • OEM
  • +
  • device embedding
  • +
+ +

It’s easy to get a different license agreement. Read the this page for details.

+ +

Other styles

+ +

Many of Typodermic's free fonts have other styles available. Please visit Typodermic Fonts and search for the name of this font in the search bar.

+ +
+ +

Danke dir

+ +

Vielen Dank, dass Sie eine kostenlose Schriftart von heruntergeladen haben Typodermic Fonts Inc. Diese in diesem ZIP enthaltenen Schriftarten beinhalten eine kostenlose Desktop-Lizenzvereinbarung, die eine kommerzielle Nutzung erlaubt. Lesen Sie die beigefügte Lizenzvereinbarung für Details.

+ + +

Installation

+
  • Windows: Holen Sie sich die Schriftart aus dem ZIP. Klicken Sie mit der rechten Maustaste auf die Schriftart und installieren Sie si
  • Mac OS X 10.3 oder höher: Doppelklicken Sie auf die Schriftartdatei und Schriftart installieren
+ +

Erlaubt

+ +
    +
  • Kunst
  • +
  • Zeichen
  • +
  • Poster
  • +
  • Banner
  • +
  • Buchen
  • +
  • Visitenkarte
  • +
  • Album
  • +
  • Film
  • +
  • Fernsehen
  • +
  • Video/Streaming/Kanäle
  • +
  • Logo
  • +
  • markenrechtlich geschütztes Logo
  • +
  • Kleidung
  • +
  • Aufkleber
  • +
  • Briefmarke
  • +
  • Produktetikett
  • +
  • Webseite (nicht eingebettet)
  • +
  • App (nicht eingebettet)
  • +
  • PDF
  • +
  • eBook-Cover oder Bilder (nicht eingebettet)
  • +
+ +

Nicht erlaubt

+ +
    +
  • App (eingebettet)
  • +
  • Webseite (eingebettet)
  • +
  • eBook (eingebettet)
  • +
  • Produkterstellungsplattform
  • +
  • Alphabet-Briefmarken
  • +
  • Werbeserver
  • +
  • Web-Vorlage
  • +
  • Erstausrüster
  • +
  • Geräteeinbettung
  • +
+ +

Es ist einfach, eine andere Lizenzvereinbarung zu erhalten. Lesen Sie diese Seite für Details.

+ +

Andere Stile

+ +

Für viele der kostenlosen Schriftarten von Typodermic sind andere Stile verfügbar. Bitte besuchen Sie Typodermic Fonts und suchen Sie in der Suchleiste nach dem Namen dieser Schriftart.

+ + +
+ +

Gracias

+ +

Gracias por descargar una fuente gratuita de Typodermic Fonts Inc. Estas fuentes incluidas en este ZIP incluyen un acuerdo de licencia de escritorio gratuito que permite el uso comercial. Lea el acuerdo de licencia incluido para más detalles.

+ + +

Instalación

+
  • Windows: Saque la fuente del ZIP. Haga clic derecho en la fuente e instalar
  • Mac OS X 10.3 o superior: haga doble clic en el archivo de fuente e instale la fuente
+ +

Permitido

+ +
    +
  • Arte
  • +
  • signo
  • +
  • póster
  • +
  • bandera
  • +
  • libro
  • +
  • tarjeta de visita
  • +
  • álbum
  • +
  • película
  • +
  • televisión
  • +
  • video/transmisión/canales
  • +
  • logo
  • +
  • logotipo de marca registrada
  • +
  • ropa
  • +
  • pegatina
  • +
  • estampilla
  • +
  • etiqueta del producto
  • +
  • página web (no incrustada)
  • +
  • aplicación (no incrustada)
  • +
  • PDF
  • +
  • Portada del libro electrónico o imágenes (no incrustadas)
  • +
+ + +

No permitido

+ +
    +
  • aplicación (incrustada)
  • +
  • página web (incrustada)
  • +
  • eBook (incrustado)
  • +
  • plataforma de creación de productos
  • +
  • sellos del alfabeto
  • +
  • servidor de anuncios
  • +
  • plantilla web
  • +
  • OEM
  • +
  • incrustación de dispositivo
  • +
+ +

Es fácil obtener un acuerdo de licencia diferente. Lea esta página para más detalles.

+ +

Otros estilos

+ +

Muchas de las fuentes gratuitas de Typodermic tienen otros estilos disponibles. Visite Typodermic Fonts y busque el nombre de esta fuente en la barra de búsqueda.

+ + +
+ +

Merci

+ +

Merci d'avoir téléchargé une police gratuite sur Typodermic Fonts Inc. Ces polices incluses dans ce ZIP incluent un accord de licence de bureau gratuit qui permet une utilisation commerciale. Lisez le contrat de licence inclus pour plus de détails.

+ + +

Installation

+
  • Windows : extrayez la police du ZIP. Faites un clic droit sur la police et installez
  • Mac OS X 10.3 ou supérieur : double-cliquez sur le fichier de police et installez la police
+ + + + +

Autorisé

+ +
    +
  • de l'art
  • +
  • pancarte
  • +
  • affiche
  • +
  • bannière
  • +
  • livre
  • +
  • carte de visite
  • +
  • album
  • +
  • film
  • +
  • télévision
  • +
  • vidéo/streaming/chaînes
  • +
  • logo
  • +
  • logo de marque
  • +
  • Vêtements
  • +
  • autocollant
  • +
  • timbre
  • +
  • étiquette du produit
  • +
  • page Web (non intégrée)
  • +
  • application (non intégrée)
  • +
  • PDF
  • +
  • Couverture ou images d'eBook (non intégrées)
  • +
+ + + +

Interdit

+ +
    +
  • application (intégrée)
  • +
  • page Web (intégrée)
  • +
  • eBook (intégré)
  • +
  • plateforme de création de produits
  • +
  • timbres alphabétiques
  • +
  • serveur de publicité
  • +
  • modèle web
  • +
  • FEO
  • +
  • intégration de l'appareil
  • +
+ +

Il est facile d'obtenir un autre contrat de licence. Lisez cette page pour plus de détails.

+ +

Autres modèles

+ +

De nombreuses polices gratuites de Typodermic proposent d'autres styles. Veuillez visiter Typodermic Fonts et rechercher le nom de cette police dans la barre de recherche.

+ + +
+ +

شكرًا لك

+ +

+ +شكرا لتحميل الخط المجاني من Typodermic Fonts Inc. تتضمن هذه الخطوط المضمنة في ملف ZIP هذا اتفاقية ترخيص سطح مكتب مجانية تسمح بالاستخدام التجاري. اقرأ اتفاقية الترخيص المضمنة للحصول على التفاصيل.

+ + +

التركيب

+
  • Windows: أخرج الخط من ملف ZIP. انقر بزر الماوس الأيمن فوق الخط وتثبيت + نظام التشغيل
  • Mac OS X 10.3 أو إصدار أحدث: انقر نقرًا مزدوجًا فوق ملف الخط وقم بتثبيت الخط
+ +

مسموح

+ +
    +
  • فن
  • +
  • لافتة
  • +
  • ملصق
  • +
  • لافتة
  • +
  • كتاب
  • +
  • بطاقة العمل
  • +
  • الألبوم
  • +
  • فيلم
  • +
  • التلفاز
  • +
  • فيديو / تدفق / قنوات
  • +
  • شعار
  • +
  • شعار مسجّل كعلامة تجارية
  • +
  • ملابس
  • +
  • ملصق
  • +
  • ختم
  • +
  • ملصق المنتج
  • +
  • صفحة ويب (غير مضمنة)
  • +
  • التطبيق (غير مضمن)
  • +
  • بي دي إف
  • +
  • غلاف الكتاب الإلكتروني أو الصور (غير مضمنة)
  • +
+ +

غير مسموح

+ +
    +
  • التطبيق (مضمن)
  • +
  • صفحة الويب (مضمنة)
  • +
  • كتاب إلكتروني (مضمن)
  • +
  • منصة إنشاء المنتجات
  • +
  • طوابع الأبجدية
  • +
  • خادم الإعلان
  • +
  • قالب الويب
  • +
  • OEM
  • +
  • تضمين الجهاز
  • +
+ +

من السهل للحصول على هذه الصفحة اقرأ هذه الصفحة للحصول على التفاصي

+ + +

أنماط أخرى

+ +

العديد من الخطوط المجانية في Typodermic لها أنماط أخرى متاحة. يرجى زيارة TTypodermic Fonts والبحث عن اسم هذا الخط في شريط البحث.

+ + +
+ +

谢谢

+ +

感谢您从以下位置下载免费字体Typodermic Fonts Inc.此 ZIP 中包含的这些字体包括允许商业使用的免费桌面许可协议。阅读随附的许可协议了解详细信息。

+ + +

安装

+
  • Windows:从 ZIP 中获取字体。右键单击字体并安装
  • Mac OS X 10.3 或更高版本:双击字体文件并安装字体
+ +

允许

+ + + + + +
    +
  • 艺术
  • +
  • 符号
  • +
  • 海报
  • +
  • 横幅
  • +
  • +
  • 名片
  • +
  • 专辑
  • +
  • 电影
  • +
  • 电视
  • +
  • 视频/流媒体/频道
  • +
  • 商标
  • +
  • 商标标志
  • +
  • 服装
  • +
  • 贴纸
  • +
  • 邮票
  • +
  • 产品标签
  • +
  • 网页(未嵌入)
  • +
  • 应用程序(未嵌入)
  • +
  • PDF
  • +
  • 电子书封面或图像(未嵌入)
  • +
+ +

不允许

+ +
    +
  • 应用程序(嵌入式)
  • +
  • 网页(嵌入式)
  • +
  • 电子书(嵌入式)
  • +
  • 产品创造平台
  • +
  • 字母邮票
  • +
  • 广告服务器
  • +
  • 网页模板
  • +
  • 贴牌生产
  • +
  • 设备嵌入
  • +
+ +

很容易获得不同的许可协议。阅读此页面了解详情。

+ +

其他款式

+ +

Typodermic 的许多免费字体都有其他可用的样式。请访问Typodermic Fonts并在搜索栏中搜索此字体的名称。

+ + +
+ +

謝謝

+ +

感謝您從以下位置下載免費字體Typodermic Fonts Inc。 此 ZIP 中包含的這些字體包括允許商業使用的免費桌面許可協議。閱讀隨附的許可協議了解詳細信息。

+ + +

安裝

+
  • Windows:從 ZIP 中獲取字體。右鍵單擊字體並安裝
  • Mac OS X 10.3 或更高版本:雙擊字體文件並安裝字體
+ +

允許

+ +
    +
  • 藝術
  • +
  • 符號
  • +
  • 海報
  • +
  • 橫幅
  • +
  • +
  • 名片
  • +
  • 專輯
  • +
  • 電影
  • +
  • 電視
  • +
  • 視頻/流媒體/頻道
  • +
  • 商標
  • +
  • 商標標誌
  • +
  • 服裝
  • +
  • 貼紙
  • +
  • 郵票
  • +
  • 產品標籤
  • +
  • 網頁(未嵌入)
  • +
  • 應用程序(未嵌入)
  • +
  • PDF
  • +
  • 電子書封面或圖像(未嵌入)
  • + + +
+ +

不允許

+ +
    +
  • 應用程序(嵌入式)
  • +
  • 網頁(嵌入式)
  • +
  • 電子書(嵌入式)
  • +
  • 產品創造平台
  • +
  • 字母郵票
  • +
  • 廣告服務器
  • +
  • 網頁模板
  • +
  • 貼牌生產
  • +
  • 設備嵌入
  • +
+ +

很容易獲得不同的許可協議。閱讀此頁面了解詳情。

+ +

其他款式

+ +

Typodermic 的許多免費字體都有其他可用的樣式。請訪問Typodermic Fonts並在搜索欄中搜索此字體的名稱。

+ + +
+ +

Děkuju

+ +

Děkujeme, že jste si zdarma stáhli písmo z Typodermic Fonts Inc. Tato písma obsažená v tomto ZIP zahrnují bezplatnou licenční smlouvu pro stolní počítače, která umožňuje komerční použití. Podrobnosti naleznete v přiložené licenční smlouvě.

+ + +

Instalace

+
  • Windows: Získejte písmo ze ZIP. Klepněte pravým tlačítkem myši na písmo a nainstalujte
  • Mac OS X 10.3 nebo vyšší: Poklepejte na soubor s písmem a vyberte Instalovat písmo
+ +

Povoleno

+ +
    +
  • umění
  • +
  • podepsat
  • +
  • plakát
  • +
  • prapor
  • +
  • rezervovat
  • +
  • vizitka
  • +
  • album
  • +
  • film
  • +
  • televize
  • +
  • video/streaming/kanály
  • +
  • logo
  • +
  • logo s ochrannou známkou
  • +
  • oblečení
  • +
  • nálepka
  • +
  • razítko
  • +
  • štítek produktu
  • +
  • webová stránka (není vložená)
  • +
  • aplikace (není vložená)
  • +
  • PDF
  • +
  • Obálka nebo obrázky elektronické knihy (nevložené)
  • +
+ +

Nepovoleno

+ +
    +
  • aplikace (vložená)
  • +
  • webová stránka (vložená)
  • +
  • e-kniha (vložená)
  • +
  • platforma pro tvorbu produktů
  • +
  • abecední razítka
  • +
  • reklamní server
  • +
  • webová šablona
  • +
  • OEM
  • +
  • zabudování zařízení
  • +
+ +

Je snadné získat jinou licenční smlouvu. Podrobnosti si přečtěte na této stránce. + +

Jiné styly

+ +

Mnoho bezplatných písem Typodermic má k dispozici další styly. Navštivte prosím Typodermic Fonts a vyhledejte název tohoto písma ve vyhledávací liště.

+ +
+ +

Σας ευχαριστώ

+ +

Ευχαριστούμε για τη λήψη μιας δωρεάν γραμματοσειράς από Typodermic Fonts Inc. Αυτές οι γραμματοσειρές που περιλαμβάνονται σε αυτό το ZIP περιλαμβάνουν μια δωρεάν άδεια χρήσης επιτραπέζιου υπολογιστή που επιτρέπει την εμπορική χρήση. Διαβάστε τη συμφωνία άδειας χρήσης που περιλαμβάνεται για λεπτομέρειες.

+ + +

Εγκατάσταση

+
  • Windows: Βγάλτε τη γραμματοσειρά από το ZIP. Κάντε δεξί κλικ στη γραμματοσειρά και Εγκαταστήστε
  • Mac OS X 10.3 ή νεότερη έκδοση: Κάντε διπλό κλικ στο αρχείο γραμματοσειράς και Εγκατάσταση γραμματοσειράς
+ +

Επιτρέπεται

+ +
    +
  • τέχνη
  • +
  • σημάδι
  • +
  • αφίσα
  • +
  • πανό
  • +
  • Βιβλίο
  • +
  • επαγγελματική κάρτα
  • +
  • άλμπουμ
  • +
  • ταινία
  • +
  • τηλεόραση
  • +
  • βίντεο/ροή/κανάλια
  • +
  • λογότυπο
  • +
  • λογότυπο με εμπορικό σήμα
  • +
  • είδη ένδυσης
  • +
  • αυτοκόλλητη ετικέτα
  • +
  • σφραγίδα
  • +
  • ετικέτα προϊόντος
  • +
  • ιστοσελίδα (μη ενσωματωμένη)
  • +
  • εφαρμογή (μη ενσωματωμένη)
  • +
  • PDF
  • +
  • Εξώφυλλο ή εικόνες ebook (όχι ενσωματωμένα)
  • +
+ +

Δεν επιτρέπεται

+ +
    +
  • εφαρμογή (ενσωματωμένη)
  • +
  • ιστοσελίδα (ενσωματωμένη)
  • +
  • eBook (ενσωματωμένο)
  • +
  • πλατφόρμα δημιουργίας προϊόντων
  • +
  • γραμματόσημα αλφαβήτου
  • +
  • διακομιστής διαφήμισης
  • +
  • πρότυπο ιστού
  • +
  • OEM
  • +
  • ενσωμάτωση συσκευής
  • +
+ +

Είναι εύκολο να αποκτήσετε μια διαφορετική συμφωνία άδειας χρήσης. Διαβάστε αυτήν τη σελίδα για λεπτομέρειες.

+ +

Άλλα στυλ

+ +

Πολλές από τις δωρεάν γραμματοσειρές του Typodermic έχουν άλλα στυλ διαθέσιμα. Επισκεφτείτε το Typodermic Fonts και αναζητήστε το όνομα αυτής της γραμματοσειράς στη γραμμή αναζήτησης.

+ + +
+ +

תודה

+ +

תודה שהורדת פונט בחינם מTypodermic Fonts Inc.גופנים אלה הכלולים ב-ZIP זה כוללים הסכם רישיון חינם לשולחן העבודה המאפשר שימוש מסחרי. קרא את הסכם הרישיון הכלול לפרטים.

+ + +

הַתקָנָה

+
  • Windows: הוצא את הגופן מה-ZIP. לחץ לחיצה ימנית על הגופן והתקן
  • Mac OS X 10.3 ומעלה: לחץ פעמיים על קובץ הגופן והתקן גופן
+ + +

מוּתָר

+ +
    +
  • אומנות
  • +
  • סִימָן
  • +
  • פּוֹסטֵר
  • +
  • דֶגֶל
  • +
  • סֵפֶר
  • +
  • כרטיס עסקים
  • +
  • אַלבּוֹם
  • +
  • סרט
  • +
  • טֵלֶוִיזִיָה
  • +
  • וידאו/סטרימינג/ערוצים
  • +
  • סֵמֶל
  • +
  • לוגו סימן מסחרי
  • +
  • הַלבָּשָׁה
  • +
  • מַדבֵּקָה
  • +
  • חותמת
  • +
  • תווית המוצר
  • +
  • דף אינטרנט (לא מוטבע)
  • +
  • אפליקציה (לא משובצת)
  • +
  • PDF
  • +
  • כריכה או תמונות של ספר אלקטרוני (לא משובצים)
  • +
+ +

לא מורשה

+ +
    +
  • אפליקציה (מוטבעת)
  • +
  • דף אינטרנט (מוטבע)
  • +
  • ספר אלקטרוני (מוטבע)
  • +
  • פלטפורמת יצירת מוצר
  • +
  • חותמות אלפבית
  • +
  • שרת פרסומות
  • +
  • תבנית אינטרנט
  • +
  • OEM
  • +
  • הטמעת מכשיר
  • +
+ +

קל להשיג הסכם רישיון אחר. קרא את הדף הזה לפרטים.

+ +

סגנונות אחרים

+ +

לרבים מהגופנים החינמיים של Typodermic יש סגנונות אחרים זמינים. אנא בקר בגופנים מסוג Typodermic וחפש את השם של גופן זה בשורת החיפוש.

+ +
+ +

शुक्रिया

+ +

से निःशुल्क फ़ॉन्ट डाउनलोड करने के लिए धन्यवादTypodermic Fonts Inc.इस जिप में शामिल इन फोंट में एक मुफ्त डेस्कटॉप लाइसेंस समझौता शामिल है जो व्यावसायिक उपयोग की अनुमति देता है। विवरण के लिए शामिल लाइसेंस समझौते को पढ़ें।

+ + +

इंस्टालेशन

+
  • Windows: जिप से फॉन्ट निकालें। फ़ॉन्ट पर राइट-क्लिक करें और इंस्टॉल करें
  • Mac OS X 10.3 या इसके बाद के संस्करण: फ़ॉन्ट फ़ाइल पर डबल-क्लिक करें और फ़ॉन्ट इंस्टॉल करें
+ +

अनुमत

+ +
    +
  • कला
  • +
  • संकेत
  • +
  • पोस्टर
  • +
  • बैनर
  • +
  • किताब
  • +
  • बिज़नेस कार्ड
  • +
  • एल्बम
  • +
  • चलचित्र
  • +
  • टेलीविजन
  • +
  • वीडियो/स्ट्रीमिंग/चैनल
  • +
  • प्रतीक चिन्ह
  • +
  • ट्रेडमार्क लोगो
  • +
  • कपड़े
  • +
  • कँटिया
  • +
  • टिकट
  • +
  • उत्पाद लेबल
  • +
  • वेब पेज (एम्बेडेड नहीं)
  • +
  • ऐप (एम्बेडेड नहीं)
  • +
  • पीडीएफ
  • +
  • ईबुक कवर या छवियां (एम्बेडेड नहीं)
  • +
+ +

अनुमति नहीं

+ +
    +
  • ऐप (एम्बेडेड)
  • +
  • वेब पेज (एम्बेडेड)
  • +
  • ईबुक (एम्बेडेड)
  • +
  • उत्पाद निर्माण मंच
  • +
  • वर्णमाला टिकटें
  • +
  • विज्ञापन सर्वर
  • +
  • वेब टेम्पलेट
  • +
  • ओईएम
  • +
  • डिवाइस एम्बेडिंग
  • +
+ +

एक अलग लाइसेंस अनुबंध प्राप्त करना आसान है। विवरण के लिए इस पेज को पढ़ें ।

+ +

अन्य शैलियाँ

+ +

टाइपोडर्मिक के कई मुफ्त फोंट में अन्य शैलियाँ उपलब्ध हैं। कृपया टाइपोडर्मिक फ़ॉन्ट्स पर जाएं और सर्च बार में इस फ़ॉन्ट का नाम खोजें।

+ + +
+ +

Köszönöm

+ +

Köszönjük, hogy letöltött egy ingyenes betűtípust innen Typodermic Fonts Inc. A ZIP-ben található betűtípusok ingyenes asztali licencszerződést tartalmaznak, amely lehetővé teszi a kereskedelmi felhasználást. A részletekért olvassa el a mellékelt licencszerződést.

+ + +

Telepítés

+
  • Windows: Vegye ki a fontot a ZIP-ből. Kattintson a jobb gombbal a betűtípusra, és telepítse
  • Mac OS X 10.3 vagy újabb: Kattintson duplán a betűtípusfájlra, és kattintson a betűtípus telepítésére
+ +

Engedélyezett

+ +
    +
  • Művészet
  • +
  • jel
  • +
  • poszter
  • +
  • transzparens
  • +
  • könyv
  • +
  • névjegykártya
  • +
  • album
  • +
  • film
  • +
  • televízió
  • +
  • videó/streaming/csatornák
  • +
  • logó
  • +
  • védjegyes logó
  • +
  • ruházat
  • +
  • matrica
  • +
  • bélyeg
  • +
  • termékcímkét
  • +
  • weboldal (nem beágyazott)
  • +
  • alkalmazás (nem beágyazott)
  • +
  • PDF
  • +
  • e-könyv borítója vagy képek (nem beágyazva)
  • +
+ +

Nem megengedett

+ +
    +
  • alkalmazás (beágyazott)
  • +
  • weboldal (beágyazott)
  • +
  • e-könyv (beágyazott)
  • +
  • termékkészítő platform
  • +
  • ábécé bélyegek
  • +
  • hirdetési szerver
  • +
  • web sablon
  • +
  • OEM
  • +
  • eszközbeágyazás
  • +
+ +

Könnyű más licencszerződést kötni. Olvassa el ezt az oldalt a részletekért.

+ +

Egyéb stílusok

+ +

A Typodermic ingyenes betűtípusai közül sok más stílus is elérhető. Kérjük, látogasson el a Typodermic Fonts oldalra , és keresse meg ennek a betűtípusnak a nevét a keresősávban.

+ + +
+ +

Þakka þér fyrir

+ +

Takk fyrir að hlaða niður ókeypis leturgerð frá Typodermic Fonts Inc. Þessar leturgerðir sem fylgja með í þessari ZIP innihalda ókeypis leyfissamning fyrir skrifborð sem leyfir notkun í atvinnuskyni. Lestu meðfylgjandi leyfissamning fyrir frekari upplýsingar.

+ +

Uppsetning

+
  • Windows: Fáðu leturgerðina úr ZIP. Hægrismelltu á leturgerðina og Settu upp
  • Mac OS X 10.3 eða nýrri: Tvísmelltu á leturgerðina og Settu upp leturgerð
+ +

Leyfilegt

+ +
    +
  • list
  • +
  • merki
  • +
  • plakat
  • +
  • borði
  • +
  • bók
  • +
  • nafnspjald
  • +
  • albúm
  • +
  • kvikmynd
  • +
  • sjónvarp
  • +
  • myndband/straumspilun/rásir
  • +
  • lógó
  • +
  • vörumerki
  • +
  • fatnað
  • +
  • límmiða
  • +
  • Stimpill
  • +
  • vörumerki
  • +
  • vefsíðu (ekki innbyggð)
  • +
  • app (ekki innbyggt)
  • +
  • PDF
  • +
  • Rafbókarkápa eða myndir (ekki innfelldar)
  • +
+ +

Ekki leyft

+ +
    +
  • app (innfellt)
  • +
  • vefsíða (innfelld)
  • +
  • Rafbók (innfelld)
  • +
  • vettvangur fyrir vörusköpun
  • +
  • stafrófsfrímerki
  • +
  • auglýsingaþjónn
  • +
  • vefsniðmát
  • +
  • OEM
  • +
  • innfelling tækis
  • +
+ +

Það er auðvelt að fá annan leyfissamning. Lestu þessa síðu fyrir nánari upplýsingar.

+ +

Aðrir stílar

+ +

Margar af ókeypis leturgerðum Typodermic eru með aðra stíla í boði. Vinsamlegast farðu á Typodermic Fonts og leitaðu að nafni þessarar leturgerðar í leitarstikunni.

+ + +
+ +

Terima kasih

+ +

Terima kasih telah mengunduh font gratis dari Typodermic Fonts Inc. Font-font yang disertakan dalam ZIP ini menyertakan perjanjian lisensi desktop gratis yang mengizinkan penggunaan komersial. Baca perjanjian lisensi yang disertakan untuk detailnya.

+ + +

Instalasi

+
  • Windows: Keluarkan font dari ZIP. Klik kanan pada font dan Instal
  • Mac OS X 10.3 atau lebih tinggi: Klik dua kali file font dan Instal font
+ +

Diizinkan

+ +
    +
  • seni
  • +
  • tanda
  • +
  • poster
  • +
  • spanduk
  • +
  • buku
  • +
  • kartu bisnis
  • +
  • album
  • +
  • film
  • +
  • televisi
  • +
  • video/streaming/saluran
  • +
  • logo
  • +
  • logo bermerek dagang
  • +
  • pakaian
  • +
  • stiker
  • +
  • stempel
  • +
  • label produk
  • +
  • halaman web (tidak disematkan)
  • +
  • aplikasi (tidak disematkan)
  • +
  • PDF
  • +
  • Sampul eBook atau gambar (tidak disematkan)
  • +
+ +

Tidak diizinkan

+ +
    +
  • aplikasi (tertanam)
  • +
  • halaman web (tertanam)
  • +
  • eBuku (tertanam)
  • +
  • platform pembuatan produk
  • +
  • perangko alfabet
  • +
  • server iklan
  • +
  • templat web
  • +
  • OEM
  • +
  • penyematan perangkat
  • +
+ +

Sangat mudah untuk mendapatkan perjanjian lisensi yang berbeda. Baca halaman ini untuk detailnya.

+ +

Gaya lain

+ +

Banyak font gratis Typodermic memiliki gaya lain yang tersedia. Silakan kunjungi Typodermic Fonts dan cari nama font ini di bilah pencarian.

+ + +
+ +

Grazie

+ +

Grazie per aver scaricato un font gratuito daTypodermic Fonts Inc.Questi font inclusi in questo ZIP includono un accordo di licenza desktop gratuito che ne consente l'uso commerciale. Leggere il contratto di licenza incluso per i dettagli.

+ + +

Installazione

+
  • Windows: estrai il carattere dallo ZIP. Fare clic con il tasto destro sul carattere e Installa
  • Mac OS X 10.3 o superiore: fare doppio clic sul file del font e Installa font
+ +

Permesso

+ +
    +
  • arte
  • +
  • cartello
  • +
  • manifesto
  • +
  • bandiera
  • +
  • prenotare
  • +
  • biglietto da visita
  • +
  • album
  • +
  • film
  • +
  • televisione
  • +
  • video/streaming/canali
  • +
  • logo
  • +
  • marchio registrato
  • +
  • capi di abbigliamento
  • +
  • etichetta
  • +
  • francobollo
  • +
  • etichetta del prodotto
  • +
  • pagina web (non incorporata)
  • +
  • app (non incorporata)
  • +
  • PDF
  • +
  • Copertina o immagini dell'eBook (non incorporate)
  • +
+ +

Non autorizzato

+ +
    +
  • app (incorporata)
  • +
  • pagina web (incorporata)
  • +
  • eBook (incorporato)
  • +
  • piattaforma di creazione del prodotto
  • +
  • francobolli alfabetici
  • +
  • server pubblicitario
  • +
  • modello web
  • +
  • OEM
  • +
  • incorporamento del dispositivo
  • +
+ +

È facile ottenere un contratto di licenza diverso. Leggi questa pagina per i dettagli.

+ +

Altri stili

+ +

Molti dei font gratuiti di Typodermic hanno altri stili disponibili. Si prega di visitare Typodermic Fonts e cercare il nome di questo font nella barra di ricerca.

+ + +
+ +

고맙습니다

+ +

에서 무료 글꼴을 다운로드해 주셔서 감사합니다 Typodermic Fonts Inc. 이 ZIP에 포함된 이러한 글꼴에는 상업적 사용을 허용하는 무료 데스크톱 라이선스 계약이 포함되어 있습니다. 자세한 내용은 포함된 라이센스 계약을 읽으십시오.

+ + +

설치

+
  • Windows: ZIP에서 글꼴을 가져옵니다. 글꼴을 마우스 오른쪽 버튼으로 클릭하고 설치
  • Mac OS X 10.3 이상: 글꼴 파일을 두 번 클릭하고 글꼴 설치
+ +

허용된

+ +
    +
  • 미술
  • +
  • 징후
  • +
  • 포스터
  • +
  • 배너
  • +
  • 도서
  • +
  • 명함
  • +
  • 앨범
  • +
  • 영화
  • +
  • 텔레비전
  • +
  • 비디오/스트리밍/채널
  • +
  • 심벌 마크
  • +
  • 상표 로고
  • +
  • 의류
  • +
  • 상표
  • +
  • 우표
  • +
  • 제품 라벨
  • +
  • 웹페이지(삽입되지 않음)
  • +
  • 앱(삽입되지 않음)
  • +
  • PDF
  • +
  • eBook 표지 또는 이미지(삽입되지 않음)
  • +
+ +

허용되지 않음

+ +
    +
  • 앱(임베디드)
  • +
  • 웹페이지(임베디드)
  • +
  • 전자책(임베디드)
  • +
  • 제품 제작 플랫폼
  • +
  • 알파벳 우표
  • +
  • 광고 서버
  • +
  • 웹 템플릿
  • +
  • OEM
  • +
  • 장치 임베딩
  • +
+ +

+다른 라이센스 계약을 얻는 것은 쉽습니다. 자세한 내용은 이 페이지 를 읽으십시오.

+ +

다른 스타일

+ +

많은 Typodermic의 무료 글꼴에는 다른 스타일을 사용할 수 있습니다. Typodermic Fonts 를 방문 하여 검색창에서 이 글꼴의 이름을 검색하십시오.

+ + +
+ +

ありがとうございます

+ +

から無料フォントをダウンロードしていただきありがとうございますTypodermic Fonts 株式会社。 この ZIP に含まれるこれらのフォントには、商用利用を許可する無料のデスクトップ ライセンス契約が含まれています。詳細については、同梱のライセンス契約をお読みください。

+ + +

インストール

+
  • Windows: ZIP からフォントを取得します。フォントを右クリックしてインストール
  • Mac OS X 10.3 以降: フォント ファイルをダブルクリックし、フォントをインストールします。
+ +

許可

+ +
    +
  • 美術
  • +
  • サイン
  • +
  • ポスター
  • +
  • バナー
  • +
  • +
  • 名刺
  • +
  • アルバム
  • +
  • 映画
  • +
  • テレビ
  • +
  • ビデオ/ストリーミング/チャンネル
  • +
  • ロゴ
  • +
  • 商標登録されたロゴ
  • +
  • 衣類
  • +
  • ステッカー
  • +
  • 切手
  • +
  • 製品ラベル
  • +
  • Web ページ (埋め込まれていません)
  • +
  • アプリ (埋め込まれていません)
  • +
  • PDF
  • +
  • eBook の表紙または画像 (埋め込まれていないもの)
  • +
+ +

禁止

+ +
    +
  • アプリ (組み込み)
  • +
  • Web ページ (埋め込み)
  • +
  • eBook (埋め込み)
  • +
  • プロダクトクリエーションプラットフォーム
  • +
  • アルファベットスタンプ
  • +
  • 広告サーバー
  • +
  • ウェブ テンプレート
  • +
  • OEM
  • +
  • デバイス埋め込み
  • +
+ +

別のライセンス契約を取得するのは簡単です。詳しくはこちらのページをお読みください。

+ +

その他のスタイル

+ +

Typodermic のフリー フォントの多くには、他のスタイルが用意されています。Typodermic Fontsにアクセスし、検索バーでこのフォントの名前を検索してください。 弊社は日本の会社ですので、お問い合わせフォームに日本語で入力してください。

+ + +
+ +

Takk skal du ha

+ +

Takk for at du lastet ned en gratis font fra Typodermic Fonts Inc. Disse skriftene som er inkludert i denne ZIP-filen inkluderer en gratis lisensavtale for skrivebord som tillater kommersiell bruk. Les den medfølgende lisensavtalen for detaljer.

+ + +

Installasjon

+
  • Windows: Få skriften ut av ZIP. Høyreklikk på skriften og installer
  • Mac OS X 10.3 eller nyere: Dobbeltklikk på skriftfilen og Installer skrift
+ +

Tillatt

+ +
    +
  • Kunst
  • +
  • skilt
  • +
  • plakat
  • +
  • banner
  • +
  • bok
  • +
  • visittkort
  • +
  • album
  • +
  • film
  • +
  • fjernsyn
  • +
  • video/streaming/kanaler
  • +
  • logo
  • +
  • varemerkebeskyttet logo
  • +
  • klær
  • +
  • klistremerke
  • +
  • stemple
  • +
  • produktetikett
  • +
  • nettside (ikke innebygd)
  • +
  • app (ikke innebygd)
  • +
  • PDF
  • +
  • e-bokomslag eller bilder (ikke innebygd)
  • +
+ +

Ikke tillatt

+ +
    +
  • app (innebygd)
  • +
  • nettside (innebygd)
  • +
  • e-bok (innebygd)
  • +
  • plattform for produktskaping
  • +
  • alfabetstempler
  • +
  • annonseserver
  • +
  • nettmal
  • +
  • OEM
  • +
  • innbygging av enheten
  • + +
+ +

Det er enkelt å få en annen lisensavtale. Les denne siden for detaljer.

+ +

Andre stiler

+ +

Mange av Typodermics gratis fonter har andre stiler tilgjengelig. Gå til Typodermic Fonts og søk etter navnet på denne fonten i søkefeltet.

+ + +
+ +

Dziękuję Ci

+ +

Dziękujemy za pobranie darmowej czcionki z Typodermic Fonts Inc. Czcionki zawarte w tym pliku ZIP zawierają umowę licencyjną dotyczącą bezpłatnego komputera stacjonarnego, która zezwala na wykorzystanie komercyjne. Przeczytaj dołączoną umowę licencyjną, aby poznać szczegóły.

+ + +

Dozwolony

+
  • Windows: Pobierz czcionkę z ZIP-a. Kliknij czcionkę prawym przyciskiem myszy i zainstaluj
  • Mac OS X 10.3 lub nowszy: Kliknij dwukrotnie plik czcionki i Zainstaluj czcionkę
+ +

Allowed

+ +
    +
  • sztuka
  • +
  • podpisać
  • +
  • plakat
  • +
  • transparent
  • +
  • książka
  • +
  • wizytówka
  • +
  • album
  • +
  • film
  • +
  • telewizja
  • +
  • wideo/transmisja strumieniowa/kanały
  • +
  • logo
  • +
  • znak firmowy
  • +
  • odzież
  • +
  • naklejka
  • +
  • znaczek
  • +
  • Etykieta produktu
  • +
  • strona internetowa (nie osadzona)
  • +
  • aplikacja (nie osadzona)
  • +
  • PDF
  • +
  • Okładka eBooka lub obrazy (nie osadzone)
  • +
+ +

Nie dozwolony

+ +
    +
  • aplikacja (wbudowana)
  • +
  • strona internetowa (wbudowana)
  • +
  • eBook (wbudowany)
  • +
  • platforma do tworzenia produktów
  • +
  • znaczki alfabetu
  • +
  • serwer reklam
  • +
  • szablon sieciowy
  • +
  • OEM
  • +
  • osadzanie urządzenia
  • +
+ +

Uzyskanie innej umowy licencyjnej jest łatwe. Przeczytaj tę stronę, aby uzyskać szczegółowe informacje.

+ +

Inne style

+ +

Wiele darmowych czcionek Typodermic ma dostępne inne style. Odwiedź stronę Typodermic Fonts i wyszukaj nazwę tej czcionki w pasku wyszukiwania.

+ + +
+ +

Obrigada

+ +

Obrigado por baixar uma fonte gratuita de Typodermic Fonts Inc. Essas fontes incluídas neste ZIP incluem um contrato de licença de desktop gratuito que permite o uso comercial. Leia o contrato de licença incluído para obter detalhes.

+ + +

Instalação

+
  • Windows: Obtenha a fonte do ZIP. Clique com o botão direito na fonte e instale
  • Mac OS X 10.3 ou superior: clique duas vezes no arquivo de fonte e instale a fonte
+ +

Permitido

+ +
    +
  • arte
  • +
  • o sinal
  • +
  • poster
  • +
  • bandeira
  • +
  • livro
  • +
  • cartão de visitas
  • +
  • álbum
  • +
  • filme
  • +
  • televisão
  • +
  • vídeo/streaming/canais
  • +
  • logotipo
  • +
  • logotipo de marca registrada
  • +
  • roupas
  • +
  • adesivo
  • +
  • carimbo
  • +
  • Rótulo do produto
  • +
  • página da web (não incorporada)
  • +
  • aplicativo (não incorporado)
  • +
  • PDF
  • +
  • Capa ou imagens do eBook (não incorporadas)
  • +
+ +

Não permitido

+ +
    +
  • aplicativo (incorporado)
  • +
  • página web (incorporada)
  • +
  • e-book (incorporado)
  • +
  • plataforma de criação de produtos
  • +
  • carimbos do alfabeto
  • +
  • servidor de anúncios
  • +
  • modelo da web
  • +
  • OEM
  • +
  • incorporação de dispositivo
  • +
+ +

É fácil obter um contrato de licença diferente. Leia esta página para obter detalhes.

+ +

Outros estilos

+ +

Muitas das fontes gratuitas do Typodermic têm outros estilos disponíveis. Por favor, visite Typodermic Fonts e procure o nome desta fonte na barra de pesquisa.

+ + +
+ +

ਤੁਹਾਡਾ ਧੰਨਵਾਦ

+ +

ਤੋਂ ਇੱਕ ਮੁਫਤ ਫੌਂਟ ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਧੰਨਵਾਦ Typodermic Fonts Inc. ਇਸ ਜ਼ਿਪ ਵਿੱਚ ਸ਼ਾਮਲ ਇਹਨਾਂ ਫੌਂਟਾਂ ਵਿੱਚ ਇੱਕ ਮੁਫਤ ਡੈਸਕਟੌਪ ਲਾਇਸੈਂਸ ਸਮਝੌਤਾ ਸ਼ਾਮਲ ਹੈ ਜੋ ਵਪਾਰਕ ਵਰਤੋਂ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਸ਼ਾਮਲ ਲਾਇਸੰਸ ਸਮਝੌਤੇ ਨੂੰ ਪੜ੍ਹੋ।

+ + +

ਇੰਸਟਾਲੇਸ਼ਨ

+
  • Windows ਜ਼ਿਪ ਤੋਂ ਫੌਂਟ ਪ੍ਰਾਪਤ ਕਰੋ। ਫੌਂਟ 'ਤੇ ਸੱਜਾ-ਕਲਿਕ ਕਰੋ ਅਤੇ ਇੰਸਟਾਲ ਕਰੋ
  • Mac OS X 10.3 ਜਾਂ ਇਸ ਤੋਂ ਉੱਪਰ: ਫੌਂਟ ਫਾਈਲ 'ਤੇ ਡਬਲ-ਕਲਿਕ ਕਰੋ ਅਤੇ ਫੌਂਟ ਸਥਾਪਿਤ ਕਰੋ
+ +

ਦੀ ਇਜਾਜ਼ਤ ਹੈ

+ +
    +
  • ਕਲਾ
  • +
  • ਚਿੰਨ੍ਹ
  • +
  • ਪੋਸਟਰ
  • +
  • ਬੈਨਰ
  • +
  • ਕਿਤਾਬ
  • +
  • ਕਾਰੋਬਾਰੀ ਕਾਰਡ
  • +
  • ਐਲਬਮ
  • +
  • ਫਿਲਮ
  • +
  • ਟੈਲੀਵਿਜ਼ਨ
  • +
  • ਵੀਡੀਓ/ਸਟ੍ਰੀਮਿੰਗ/ਚੈਨਲ
  • +
  • ਲੋਗੋ
  • +
  • ਟ੍ਰੇਡਮਾਰਕ ਲੋਗੋ
  • +
  • ਕੱਪੜੇ
  • +
  • ਸਟਿੱਕਰ
  • +
  • ਮੋਹਰ
  • +
  • ਉਤਪਾਦ ਲੇਬਲ
  • +
  • ਵੈਬ ਪੇਜ (ਏਮਬੈਡਡ ਨਹੀਂ)
  • +
  • ਐਪ (ਏਮਬੈਡਡ ਨਹੀਂ)
  • +
  • PDF
  • +
  • ਈਬੁੱਕ ਕਵਰ ਜਾਂ ਚਿੱਤਰ (ਏਮਬੈਡਡ ਨਹੀਂ)
  • +
+ +

ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ

+ +
    +
  • ਐਪ (ਏਮਬੈਡਡ)
  • +
  • ਵੈੱਬ ਪੇਜ (ਏਮਬੈਡਡ)
  • +
  • ਈ-ਕਿਤਾਬ (ਏਮਬੈਡਡ)
  • +
  • ਉਤਪਾਦ ਬਣਾਉਣ ਪਲੇਟਫਾਰਮ
  • +
  • ਵਰਣਮਾਲਾ ਸਟਪਸ
  • +
  • ਵਿਗਿਆਪਨ ਸਰਵਰ
  • +
  • ਵੈੱਬ ਟੈਮਪਲੇਟ
  • +
  • OEM
  • +
  • ਡਿਵਾਈਸ ਏਮਬੈਡਿੰਗ
  • +
+ +

ਇੱਕ ਵੱਖਰਾ ਲਾਇਸੰਸ ਸਮਝੌਤਾ ਪ੍ਰਾਪਤ ਕਰਨਾ ਆਸਾਨ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਇਸ ਪੰਨੇ ਨੂੰ ਪੜ੍ਹੋ ।

+ +

ਹੋਰ ਸਟਾਈਲ

+ +

ਟਾਈਪੋਡਰਮਿਕ ਦੇ ਬਹੁਤ ਸਾਰੇ ਮੁਫਤ ਫੌਂਟਾਂ ਦੀਆਂ ਹੋਰ ਸ਼ੈਲੀਆਂ ਉਪਲਬਧ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ Typodermic Fonts 'ਤੇ ਜਾਓ ਅਤੇ ਖੋਜ ਪੱਟੀ ਵਿੱਚ ਇਸ ਫੌਂਟ ਦੇ ਨਾਮ ਦੀ ਖੋਜ ਕਰੋ।

+ + +
+ +

Mulțumesc

+ +

Vă mulțumim pentru descărcarea unui font gratuit de la Typodermic Fonts Inc. Aceste fonturi incluse în acest ZIP includ un acord de licență gratuit pentru desktop, care permite utilizarea comercială. Citiți acordul de licență inclus pentru detalii.

+ + +

Instalare

+
  • Windows: scoateți fontul din ZIP. Faceți clic dreapta pe font și Instalați
  • Mac OS X 10.3 sau o versiune ulterioară: Faceți dublu clic pe fișierul fontului și Instalați fontul
+ +

Permis

+ +
    +
  • artă
  • +
  • semn
  • +
  • poster
  • +
  • banner
  • +
  • carte
  • +
  • carte de vizită
  • +
  • album
  • +
  • film
  • +
  • televiziune
  • +
  • video/streaming/canale
  • +
  • siglă
  • +
  • logo-ul mărcii comerciale
  • +
  • îmbrăcăminte
  • +
  • autocolant
  • +
  • timbru
  • +
  • eticheta produsului
  • +
  • pagină web (neîncorporată)
  • +
  • aplicație (nu încorporată)
  • +
  • PDF
  • +
  • Copertă sau imagini de cărți electronice (nu încorporate)
  • +
+ +

Nepermis

+ +
    +
  • aplicație (încorporată)
  • +
  • pagină web (încorporată)
  • +
  • carte electronică (încorporată)
  • +
  • platforma de creare a produselor
  • +
  • timbre cu alfabet
  • +
  • server de publicitate
  • +
  • șablon web
  • +
  • OEM
  • +
  • încorporarea dispozitivului
  • +
+ +

Este ușor să obțineți un alt acord de licență. Citiți această pagină pentru detalii.

+ +

Alte stiluri

+ +

Multe dintre fonturile gratuite ale Typodermic au alte stiluri disponibile. Vă rugăm să vizitați Typodermic Fonts și să căutați numele acestui font în bara de căutare.

+ + +
+ +

Спасибо

+ +

Спасибо за загрузку бесплатного шрифта с Typodermic Fonts Inc. Эти шрифты, включенные в этот ZIP-файл, включают бесплатное лицензионное соглашение для настольных компьютеров, которое разрешает коммерческое использование. Подробнее читайте в прилагаемом лицензионном соглашении.

+ + +

Установка

+
  • Windows: достаньте шрифт из ZIP. Щелкните правой кнопкой мыши шрифт и установите
  • Mac OS X 10.3 или более поздней версии: дважды щелкните файл шрифта и выберите « Установить шрифт» .
+ +

Допустимый

+ +
    +
  • Изобразительное искусство
  • +
  • подписать
  • +
  • плакат
  • +
  • баннер
  • +
  • книга
  • +
  • визитная карточка
  • +
  • альбом
  • +
  • кино
  • +
  • телевидение
  • +
  • видео/стриминг/каналы
  • +
  • логотип
  • +
  • логотип торговой марки
  • +
  • одежда
  • +
  • наклейка
  • +
  • печать
  • +
  • этикетка продукта
  • +
  • веб-страница (не встроенная)
  • +
  • приложение (не встроенное)
  • +
  • PDF
  • +
  • Обложка или изображения электронной книги (не встроенные)
  • +
+ +

Не положено

+ +
    +
  • приложение (встроенное)
  • +
  • веб-страница (встроенная)
  • +
  • электронная книга (встроенная)
  • +
  • платформа для создания продукта
  • +
  • алфавит марки
  • +
  • рекламный сервер
  • +
  • веб-шаблон
  • +
  • ОЕМ
  • +
  • встраивание устройства
  • +
+ +

Легко получить другое лицензионное соглашение. Подробности читайте на этой странице .

+ +

Другие стили

+ +

Для многих бесплатных шрифтов Typodermic доступны другие стили. Пожалуйста, посетите Typodermic Fonts и найдите название этого шрифта в строке поиска.

+ + +
+ +

Tack

+ +

Tack för att du laddar ner ett gratis typsnitt från Typodermic Fonts Inc. Dessa typsnitt som ingår i denna ZIP inkluderar ett gratis licensavtal för skrivbordet som tillåter kommersiell användning. Läs det medföljande licensavtalet för detaljer.

+ + +

Installation

+
  • Windows: Ta bort teckensnittet från ZIP. Högerklicka på typsnittet och installera
  • Mac OS X 10.3 eller senare: Dubbelklicka på teckensnittsfilen och Installera teckensnitt
+ +

Tillåten

+ +
    +
  • konst
  • +
  • skylt
  • +
  • affisch
  • +
  • baner
  • +
  • bok
  • +
  • visitkort
  • +
  • album
  • +
  • film
  • +
  • tv
  • +
  • video/streaming/kanaler
  • +
  • logotyp
  • +
  • varumärkesskyddad logotyp
  • +
  • Kläder
  • +
  • klistermärke
  • +
  • stämpel
  • +
  • produktetikett
  • +
  • webbsida (ej inbäddad)
  • +
  • app (ej inbäddad)
  • +
  • PDF
  • +
  • e-bokomslag eller bilder (ej inbäddade)
  • +
+ +

Inte tillåtet

+ +
    +
  • app (inbäddad)
  • +
  • webbsida (inbäddad)
  • +
  • e-bok (inbäddad)
  • +
  • plattform för att skapa produkter
  • +
  • alfabetet stämplar
  • +
  • annonsserver
  • +
  • webbmall
  • +
  • OEM
  • +
  • enhetsinbäddning
  • +
+ +

Det är lätt att få ett annat licensavtal. Läs den här sidan för detaljer.

+ +

Andra stilar

+ +

Många av Typodermics gratis typsnitt har andra stilar tillgängliga. Besök Typodermic Fonts och sök efter namnet på detta teckensnitt i sökfältet.

+ + +
+ +

நன்றி

+ +

இதிலிருந்து இலவச எழுத்துருவைப் பதிவிறக்கியதற்கு நன்றி Typodermic Fonts Inc. இந்த ஜிப்பில் சேர்க்கப்பட்டுள்ள இந்த எழுத்துருக்கள் வணிகரீதியான பயன்பாட்டை அனுமதிக்கும் இலவச டெஸ்க்டாப் உரிம ஒப்பந்தத்தை உள்ளடக்கியது. விவரங்களுக்கு சேர்க்கப்பட்ட உரிம ஒப்பந்தத்தைப் படிக்கவும்.

+ + +

நிறுவல்

+
  • Windows: ZIP இலிருந்து எழுத்துருவைப் பெறவும். எழுத்துரு மீது வலது கிளிக் செய்து நிறுவவும்
  • அல்லது அதற்கு மேல்: எழுத்துருக் கோப்பை இருமுறை கிளிக் செய்து, எழுத்துருவை நிறுவவும்
+ +

அனுமதிக்கப்பட்டது

+ +
    +
  • கலை
  • +
  • அடையாளம்
  • +
  • சுவரொட்டி
  • +
  • பதாகை
  • +
  • நூல்
  • +
  • வணிக அட்டை
  • +
  • ஆல்பம்
  • +
  • திரைப்படம்
  • +
  • தொலைக்காட்சி
  • +
  • வீடியோ/ஸ்ட்ரீமிங்/சேனல்கள்
  • +
  • சின்னம்
  • +
  • வர்த்தக முத்திரை லோகோ
  • +
  • ஆடை
  • +
  • ஓட்டி
  • +
  • முத்திரை
  • +
  • தயாரிப்பு லேபிள்
  • +
  • வலைப்பக்கம் (உட்பொதிக்கப்படவில்லை)
  • +
  • பயன்பாடு (உட்பொதிக்கப்படவில்லை)
  • +
  • PDF
  • +
  • மின்புத்தக அட்டை அல்லது படங்கள் (உட்பொதிக்கப்படவில்லை)
  • +
+ +

அனுமதி இல்லை

+ +
    +
  • பயன்பாடு (உட்பொதிக்கப்பட்டது)
  • +
  • வலைப்பக்கம் (உட்பொதிக்கப்பட்டது)
  • +
  • மின்புத்தகம் (உட்பொதிக்கப்பட்டது)
  • +
  • தயாரிப்பு உருவாக்கும் தளம்
  • +
  • எழுத்துக்கள் முத்திரைகள்
  • +
  • விளம்பர சர்வர்
  • +
  • வலை டெம்ப்ளேட்
  • +
  • OEM
  • +
  • சாதனம் உட்பொதித்தல்
  • +
+ +

வேறுபட்ட உரிம ஒப்பந்தத்தைப் பெறுவது எளிது. விவரங்களுக்கு இந்தப் பக்கத்தைப் படிக்கவும் .

+ +

பிற பாணிகள்

+ +

Typodermic இன் இலவச எழுத்துருக்கள் பல மற்ற பாணிகளைக் கொண்டுள்ளன. தயவு செய்து Typodermic எழுத்துருக்களைப் பார்வையிடவும் மற்றும் தேடல் பட்டியில் இந்த எழுத்துருவின் பெயரைத் தேடவும்.

+ + +
+ +

ขอขอบคุณ

+ +

Tขอขอบคุณที่ดาวน์โหลดฟอนต์ฟรีจากTypodermic Fonts Inc. แบบอักษรเหล่านี้ที่รวมอยู่ใน ZIP นี้รวมถึงข้อตกลงสิทธิ์การใช้งานเดสก์ท็อปฟรีซึ่งอนุญาตให้ใช้ในเชิงพาณิชย์ อ่านข้อตกลงใบอนุญาตรวมสำหรับรายละเอียด

+ + +

การติดตั้ง

+
  • Windows: รับแบบอักษรจาก ZIP คลิกขวาที่ฟอนต์และติดตั้ง
  • Mac OS X 10.3 ขึ้นไป: ดับเบิลคลิกไฟล์ฟอนต์และติดตั้งฟอนต์
+ +

อนุญาต

+ +
    +
  • ศิลปะ
  • +
  • เข้าสู่ระบบ
  • +
  • โปสเตอร์
  • +
  • แบนเนอร์
  • +
  • หนังสือ
  • +
  • นามบัตร
  • +
  • อัลบั้ม
  • +
  • ภาพยนตร์
  • +
  • โทรทัศน์
  • +
  • วิดีโอ/สตรีมมิ่ง/ช่อง
  • +
  • โลโก้
  • +
  • โลโก้เครื่องหมายการค้า
  • +
  • เสื้อผ้า
  • +
  • สติ๊กเกอร์
  • +
  • ประทับ
  • +
  • ฉลากสินค้า
  • +
  • หน้าเว็บ (ไม่ฝังตัว)
  • +
  • แอพ (ไม่ฝังตัว)
  • +
  • ไฟล์ PDF
  • +
  • หน้าปก eBook หรือรูปภาพ (ไม่ฝัง)
  • +
+ +

ไม่ได้รับอนุญาต

+ +
    +
  • แอพ (ฝังตัว)
  • +
  • หน้าเว็บ (แบบฝัง)
  • +
  • eBook (แบบฝัง)
  • +
  • แพลตฟอร์มการสร้างผลิตภัณฑ์
  • +
  • แสตมป์ตัวอักษร
  • +
  • เซิร์ฟเวอร์โฆษณา
  • +
  • แม่แบบเว็บ
  • +
  • OEM
  • +
  • การฝังอุปกรณ์
  • +
+ +

ง่ายที่จะได้รับข้อตกลงสิทธิ์การใช้งานอื่น อ่านหน้านี้เพื่อดูรายละเอียด

+ +

สไตล์อื่นๆ

+ +

ฟอนต์ฟรีมากมายของ Typodermic มีสไตล์อื่นๆ ให้เลือกใช้ โปรดไปที่ Typodermic Fontsและค้นหาชื่อของแบบอักษรนี้ในแถบค้นหา.

+ + +
+ +

Teşekkür ederim

+ +

Typodermic Fonts Inc.'den ücretsiz bir yazı tipi indirdiğiniz için teşekkür ederiz. Bu ZIP'te bulunan bu yazı tipleri, ticari kullanıma izin veren ücretsiz bir masaüstü lisans sözleşmesi içerir. Ayrıntılar için verilen lisans sözleşmesini okuyun.

+ + +

Kurulum

+
  • Windows: Yazı tipini ZIP dosyasından çıkarın. Yazı tipine sağ tıklayın ve Yükleyin
  • Mac OS X 10.3 veya üstü: Yazı tipi dosyasına çift tıklayın ve Yazı tipini yükle
+ +

İzin verilmiş

+ +
    +
  • sanat
  • +
  • imza
  • +
  • afiş
  • +
  • afiş
  • +
  • kitap
  • +
  • kartvizit
  • +
  • albüm
  • +
  • film
  • +
  • televizyon
  • +
  • video/akış/kanallar
  • +
  • logo
  • +
  • ticari marka logosu
  • +
  • Giyim
  • +
  • etiket
  • +
  • pul
  • +
  • ürün etiketi
  • +
  • web sayfası (gömülü değil)
  • +
  • uygulama (gömülü değil)
  • +
  • PDF
  • +
  • eKitap kapağı veya resimleri (gömülü değil)
  • +
+ +

İzin verilmedi

+ +
    +
  • uygulama (gömülü)
  • +
  • web sayfası (gömülü)
  • +
  • eKitap (gömülü)
  • +
  • ürün oluşturma platformu
  • +
  • alfabe pulları
  • +
  • reklam sunucusu
  • +
  • web şablonu
  • +
  • OEM
  • +
  • cihaz gömme
  • +
+ +

Farklı bir lisans sözleşmesi almak kolaydır. Ayrıntılar için bu sayfayı okuyun .

+ +

Diğer stiller

+ +

Typodermic'in ücretsiz yazı tiplerinin birçoğunda başka stiller mevcuttur. Lütfen Typodermic Fonts'u ziyaret edin ve arama çubuğunda bu fontun adını arayın.

+ +
+ +

Дуже дякую

+ +

Дякуємо за завантаження безкоштовного шрифту з Typodermic Fonts Inc. Ці шрифти, включені в цей ZIP, включають безкоштовну ліцензійну угоду для комп’ютера, яка дозволяє комерційне використання. Прочитайте включену ліцензійну угоду, щоб дізнатися більше.

+ + +

монтаж

+
  • Windows: дістаньте шрифт із ZIP. Клацніть правою кнопкою миші на шрифті та встановіть
  • Mac OS X 10.3 або вище: двічі клацніть файл шрифту та виберіть Установити шрифт
+ +

Дозволено

+ +
    +
  • ст
  • +
  • знак
  • +
  • плакат
  • +
  • банер
  • +
  • книга
  • +
  • бізнес картка
  • +
  • альбом
  • +
  • фільм
  • +
  • телебачення
  • +
  • відео/потокове передавання/канали
  • +
  • логотип
  • +
  • логотип торгової марки
  • +
  • одяг
  • +
  • наклейка
  • +
  • штамп
  • +
  • етикетка продукту
  • +
  • веб-сторінка (не вбудована)
  • +
  • додаток (не вбудований)
  • +
  • PDF
  • +
  • Обкладинка електронної книги або зображення (не вбудовані)
  • +
+ +

Не дозволено

+ +
    +
  • додаток (вбудований)
  • +
  • веб-сторінка (вбудована)
  • +
  • електронна книга (вбудована)
  • +
  • платформа створення продукту
  • +
  • алфавітні марки
  • +
  • сервер реклами
  • +
  • веб-шаблон
  • +
  • OEM
  • +
  • вбудовування пристрою
  • +
+ +

Отримати іншу ліцензійну угоду легко. Прочитайте цю сторінку для отримання деталей.

+ +

Інші стилі

+ +

Багато безкоштовних шрифтів Typodermic мають інші доступні стилі. Відвідайте Typodermic Fonts і знайдіть назву цього шрифту в рядку пошуку.

+ + +
+ + +

Cảm ơn bạn

+ +

Cảm ơn bạn đã tải xuống một phông chữ miễn phí từ Typodermic Fonts Inc. Những phông chữ có trong ZIP này bao gồm thỏa thuận cấp phép máy tính để bàn miễn phí cho phép sử dụng thương mại. Đọc thỏa thuận cấp phép đi kèm để biết chi tiết.

+ + +

Cài đặt

+
  • Windows: Lấy phông chữ ra khỏi ZIP. Nhấp chuột phải vào phông chữ và Cài đặt
  • Mac OS X 10.3 trở lên: Nhấp đúp vào tệp phông chữ và Cài đặt phông chữ
+ + + +
    +
  • Mỹ thuật
  • +
  • bảng hiệu
  • +
  • poster
  • +
  • Ảnh bìa
  • +
  • sách
  • +
  • danh thiếp
  • +
  • album
  • +
  • bộ phim
  • +
  • Tivi
  • +
  • video/phát trực tuyến/kênh
  • +
  • Logo
  • +
  • logo đã đăng ký nhãn hiệu
  • +
  • quần áo
  • +
  • nhãn dán
  • +
  • con tem
  • +
  • nhãn sản phẩm
  • +
  • trang web (không được nhúng)
  • +
  • ứng dụng (không được nhúng)
  • +
  • PDF
  • +
  • Bìa sách điện tử hoặc hình ảnh (không được nhúng)
  • +
+ +

Không cho phép

+ +
    +
  • ứng dụng (nhúng)
  • +
  • trang web (được nhúng)
  • +
  • Sách điện tử (nhúng)
  • +
  • nền tảng tạo sản phẩm
  • +
  • tem bảng chữ cái
  • +
  • máy chủ quảng cáo
  • +
  • mẫu web
  • +
  • OEM
  • +
  • nhúng thiết bị
  • +
+ +

Thật dễ dàng để có được một thỏa thuận cấp phép khác. Đọc trang này để biết chi tiết.

+ +

phong cách khác

+ +

Nhiều phông chữ miễn phí của Typodermic có sẵn các kiểu khác. Vui lòng truy cập Typodermic Fonts và tìm kiếm tên của phông chữ này trong thanh tìm kiếm.

+ +
+ + \ No newline at end of file diff --git a/External Assets/Fonts/oxanium/FONTLOG.txt b/External Assets/Fonts/oxanium/FONTLOG.txt new file mode 100644 index 00000000..61767d65 --- /dev/null +++ b/External Assets/Fonts/oxanium/FONTLOG.txt @@ -0,0 +1,53 @@ +Oxanium font family +https://sev.dev/fonts/oxanium + + +Weights +------- + +200 ExtraLight +300 Light +400 Regular +500 Medium +600 SemiBold +700 Bold +800 ExtraBold + + +OpenType features +----------------- + +kern Provides kerning. +mark Positions combining diacritics relative to base characters. +pnum Replaces monospaced digits with proportional versions. +zero Replaces digit zero with a dotted version. + + +Characters +---------- + +Adobe Latin 3 + +U+0300 Combining grave +U+0301 Combining acute +U+0302 Combining circumflex +U+0303 Combining tilde +U+0304 Combining macron +U+0306 Combining breve +U+0307 Combining dot above +U+0308 Combining diaeresis +U+030A Combining ring above +U+030B Combining double acute +U+030C Combining caron +U+0326 Combining comma below +U+0327 Combining cedilla +U+0328 Combining ogonek +U+1E9E Capital Eszett +U+F000 TrueType hinting marker (up=on, down=off) + + +Changelog +--------- + +Oxanium 1.000 2019-03-20 Severin Meyer hello@sev.dev + Initial release diff --git a/External Assets/Fonts/oxanium/LICENSE.txt b/External Assets/Fonts/oxanium/LICENSE.txt new file mode 100644 index 00000000..1bca71a3 --- /dev/null +++ b/External Assets/Fonts/oxanium/LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2019 Severin Meyer, with Reserved Font Name Oxanium + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/External Assets/Fonts/oxanium/Oxanium-Bold.ttf b/External Assets/Fonts/oxanium/Oxanium-Bold.ttf new file mode 100644 index 00000000..65fc5e5a --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Bold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6690376ac20ddf9ca4e2f01f0769c1ee2b275c05512c69a5de6f92b95d7be679 +size 55512 diff --git a/External Assets/Fonts/oxanium/Oxanium-ExtraBold.ttf b/External Assets/Fonts/oxanium/Oxanium-ExtraBold.ttf new file mode 100644 index 00000000..42ab9c88 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-ExtraBold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41b86751635d6a969641b69e3de3f9a520a4a780d50b787d524ca71da1f46f34 +size 55604 diff --git a/External Assets/Fonts/oxanium/Oxanium-ExtraLight.ttf b/External Assets/Fonts/oxanium/Oxanium-ExtraLight.ttf new file mode 100644 index 00000000..74adbc3c --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-ExtraLight.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43fd82eaaa4b99e4c58683b20e768f3f7ed9c033be8dc3e45af6f5fc77a3ad3e +size 55728 diff --git a/External Assets/Fonts/oxanium/Oxanium-Light.ttf b/External Assets/Fonts/oxanium/Oxanium-Light.ttf new file mode 100644 index 00000000..0d61c9a0 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Light.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:435564a4556f789348b4cdcef25ff3c61c59dc1efa300823c3fd3eac6d3808ad +size 55644 diff --git a/External Assets/Fonts/oxanium/Oxanium-Medium.ttf b/External Assets/Fonts/oxanium/Oxanium-Medium.ttf new file mode 100644 index 00000000..9ddaf5bb --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Medium.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4099edb1e05797c995fff37e0770e23f74c4f8f88b3294842784efcc7bbaac9 +size 55620 diff --git a/External Assets/Fonts/oxanium/Oxanium-Regular.ttf b/External Assets/Fonts/oxanium/Oxanium-Regular.ttf new file mode 100644 index 00000000..5f09dfa4 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-Regular.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66a9688339f6d3fcde312660fa193659e6ed13a39aa929308dd17c550352e71d +size 55552 diff --git a/External Assets/Fonts/oxanium/Oxanium-SemiBold.ttf b/External Assets/Fonts/oxanium/Oxanium-SemiBold.ttf new file mode 100644 index 00000000..e64d0349 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium-SemiBold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b11e06346cdba8718fd20ea31f780612c11c2a1a5f31d35713367bd5ff6b2974 +size 55624 diff --git a/External Assets/Fonts/oxanium/Oxanium.png b/External Assets/Fonts/oxanium/Oxanium.png new file mode 100644 index 00000000..2df0ff01 --- /dev/null +++ b/External Assets/Fonts/oxanium/Oxanium.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4426bdcc85524087105e70456de3fc6c2ce5378c5dce92e68d3c3cd0674a5a1f +size 16928