diff --git a/EndlessVendetta/Config/DefaultEngine.ini b/EndlessVendetta/Config/DefaultEngine.ini
index 8f502a71..eca8171f 100644
--- a/EndlessVendetta/Config/DefaultEngine.ini
+++ b/EndlessVendetta/Config/DefaultEngine.ini
@@ -62,7 +62,7 @@
+CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn")
[/Script/EngineSettings.GameMapsSettings]
-EditorStartupMap=/Game/Levels/MovementTest.MovementTest
+EditorStartupMap=/Game/Levels/TempLevels/NewTutorialMap.NewTutorialMap
LocalMapOptions=
TransitionMap=None
bUseSplitscreen=True
diff --git a/EndlessVendetta/Config/DefaultGame.ini b/EndlessVendetta/Config/DefaultGame.ini
index 8744e92f..a9ef3f61 100644
--- a/EndlessVendetta/Config/DefaultGame.ini
+++ b/EndlessVendetta/Config/DefaultGame.ini
@@ -107,6 +107,7 @@ bSkipMovies=False
+MapsToCook=(FilePath="/Game/Levels/OpenWorldRework")
+MapsToCook=(FilePath="/Game/BountySystem/ApartmentBounty/LevelInstances/MarketAreaEnemies")
+MapsToCook=(FilePath="/Game/BountySystem/ApartmentBounty/LevelInstances/PachinkoEnemies")
++MapsToCook=(FilePath="/Game/Levels/TempLevels/NewTutorialMap")
+DirectoriesToAlwaysCook=(Path="/Interchange/Functions")
+DirectoriesToAlwaysCook=(Path="/Interchange/gltf")
+DirectoriesToAlwaysCook=(Path="/Interchange/Materials")
@@ -116,3 +117,13 @@ PerPlatformBuildConfig=()
PerPlatformTargetFlavorName=()
PerPlatformBuildTarget=()
+[/Script/AsyncLoadingScreen.LoadingScreenSettings]
+bPreloadBackgroundImages=False
+StartupLoadingScreen=(MinimumLoadingScreenDisplayTime=-1.000000,bAutoCompleteWhenLoadingCompletes=True,bMoviesAreSkippable=True,bWaitForManualStop=False,bAllowInEarlyStartup=False,bAllowEngineTick=False,PlaybackType=MT_Normal,MoviePaths=,bShuffle=False,bSetDisplayMovieIndexManually=False,bShowWidgetOverlay=False,bShowLoadingCompleteText=False,LoadingCompleteTextSettings=(LoadingCompleteText="",Appearance=(ColorAndOpacity=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),Font=(FontObject=/Script/Engine.Font'"/Engine/EngineFonts/Roboto.Roboto"',FontMaterial=None,OutlineSettings=(OutlineSize=0,bSeparateFillAlpha=False,bApplyOutlineToDropShadows=False,OutlineMaterial=None,OutlineColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)),TypefaceFontName="Normal",Size=24,LetterSpacing=0,SkewAmount=0.000000),ShadowOffset=(X=0.000000,Y=0.000000),ShadowColorAndOpacity=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),Justification=Left),Alignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),Padding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),bFadeInOutAnim=True,AnimationSpeed=1.000000),Background=(Images=,ImageStretch=ScaleToFit,Padding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),BackgroundColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000),bSetDisplayBackgroundManually=False),TipWidget=(TipText=,Appearance=(ColorAndOpacity=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),Font=(FontObject=/Script/Engine.Font'"/Engine/EngineFonts/Roboto.Roboto"',FontMaterial=None,OutlineSettings=(OutlineSize=0,bSeparateFillAlpha=False,bApplyOutlineToDropShadows=False,OutlineMaterial=None,OutlineColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)),TypefaceFontName="Normal",Size=20,LetterSpacing=0,SkewAmount=0.000000),ShadowOffset=(X=0.000000,Y=0.000000),ShadowColorAndOpacity=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),Justification=Left),TipWrapAt=1000.000000,bSetDisplayTipTextManually=False),LoadingWidget=(LoadingIconType=LIT_CircularThrobber,LoadingWidgetType=LWT_Horizontal,TransformTranslation=(X=0.000000,Y=0.000000),TransformScale=(X=1.000000,Y=1.000000),TransformPivot=(X=0.500000,Y=0.500000),LoadingText=NSLOCTEXT("AsyncLoadingScreen", "Loading", "LOADING"),bLoadingTextRightPosition=True,bLoadingTextTopPosition=True,Appearance=(ColorAndOpacity=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),Font=(FontObject=/Script/Engine.Font'"/Engine/EngineFonts/Roboto.Roboto"',FontMaterial=None,OutlineSettings=(OutlineSize=0,bSeparateFillAlpha=False,bApplyOutlineToDropShadows=False,OutlineMaterial=None,OutlineColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)),TypefaceFontName="Bold",Size=32,LetterSpacing=0,SkewAmount=0.000000),ShadowOffset=(X=0.000000,Y=0.000000),ShadowColorAndOpacity=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),Justification=Left),ThrobberSettings=(NumberOfPieces=3,bAnimateHorizontally=True,bAnimateVertically=True,bAnimateOpacity=True,Image=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0))),CircularThrobberSettings=(NumberOfPieces=6,Period=0.750000,Radius=64.000000,Image=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0))),ImageSequenceSettings=(Images=,Scale=(X=1.000000,Y=1.000000),Interval=0.050000,bPlayReverse=False),TextAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),LoadingIconAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),Space=1.000000,bHideLoadingWidgetWhenCompletes=False),Layout=ALSL_Classic)
+DefaultLoadingScreen=(MinimumLoadingScreenDisplayTime=-1.000000,bAutoCompleteWhenLoadingCompletes=True,bMoviesAreSkippable=True,bWaitForManualStop=False,bAllowInEarlyStartup=False,bAllowEngineTick=False,PlaybackType=MT_Normal,MoviePaths=,bShuffle=False,bSetDisplayMovieIndexManually=False,bShowWidgetOverlay=True,bShowLoadingCompleteText=False,LoadingCompleteTextSettings=(LoadingCompleteText="",Appearance=(ColorAndOpacity=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),Font=(FontObject=/Script/Engine.Font'"/Engine/EngineFonts/Roboto.Roboto"',FontMaterial=None,OutlineSettings=(OutlineSize=0,bSeparateFillAlpha=False,bApplyOutlineToDropShadows=False,OutlineMaterial=None,OutlineColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)),TypefaceFontName="Normal",Size=24,LetterSpacing=0,SkewAmount=0.000000),ShadowOffset=(X=0.000000,Y=0.000000),ShadowColorAndOpacity=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),Justification=Left),Alignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),Padding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),bFadeInOutAnim=True,AnimationSpeed=1.000000),Background=(Images=("/Game/BountySystem/LoadingScreen/BruhMoment.BruhMoment"),ImageStretch=Fill,Padding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),BackgroundColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000),bSetDisplayBackgroundManually=False),TipWidget=(TipText=,Appearance=(ColorAndOpacity=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),Font=(FontObject=/Script/Engine.Font'"/Engine/EngineFonts/Roboto.Roboto"',FontMaterial=None,OutlineSettings=(OutlineSize=0,bSeparateFillAlpha=False,bApplyOutlineToDropShadows=False,OutlineMaterial=None,OutlineColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)),TypefaceFontName="Normal",Size=20,LetterSpacing=0,SkewAmount=0.000000),ShadowOffset=(X=0.000000,Y=0.000000),ShadowColorAndOpacity=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),Justification=Left),TipWrapAt=1000.000000,bSetDisplayTipTextManually=False),LoadingWidget=(LoadingIconType=LIT_Throbber,LoadingWidgetType=LWT_Horizontal,TransformTranslation=(X=0.000000,Y=0.000000),TransformScale=(X=1.000000,Y=1.000000),TransformPivot=(X=0.500000,Y=0.500000),LoadingText="",bLoadingTextRightPosition=False,bLoadingTextTopPosition=True,Appearance=(ColorAndOpacity=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),Font=(FontObject=/Script/Engine.Font'"/Engine/EngineFonts/Roboto.Roboto"',FontMaterial=None,OutlineSettings=(OutlineSize=0,bSeparateFillAlpha=False,bApplyOutlineToDropShadows=False,OutlineMaterial=None,OutlineColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)),TypefaceFontName="Bold",Size=32,LetterSpacing=0,SkewAmount=0.000000),ShadowOffset=(X=0.000000,Y=0.000000),ShadowColorAndOpacity=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),Justification=Left),ThrobberSettings=(NumberOfPieces=5,bAnimateHorizontally=True,bAnimateVertically=True,bAnimateOpacity=True,Image=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=64.000000,Y=64.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=/Script/Engine.Texture2D'"/Game/BountySystem/LoadingScreen/Logo.Logo"',ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0))),CircularThrobberSettings=(NumberOfPieces=6,Period=0.750000,Radius=64.000000,Image=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=/Script/Engine.Texture2D'"/Game/BountySystem/LoadingScreen/Logo.Logo"',ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0))),ImageSequenceSettings=(Images=,Scale=(X=1.000000,Y=1.000000),Interval=0.050000,bPlayReverse=False),TextAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),LoadingIconAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),Space=1.000000,bHideLoadingWidgetWhenCompletes=False),Layout=ALSL_Classic)
+Classic=(bIsWidgetAtBottom=True,bIsLoadingWidgetAtLeft=False,Space=1.000000,TipAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),BorderHorizontalAlignment=HAlign_Fill,BorderPadding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),BorderBackground=(bIsDynamicallyLoaded=False,DrawAs=NoDrawType,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=50000.000000,Y=50000.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0)))
+Center=(bIsTipAtBottom=True,TipAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),BorderHorizontalAlignment=HAlign_Fill,BorderVerticalOffset=0.000000,BorderPadding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),BorderBackground=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0)))
+Letterbox=(bIsLoadingWidgetAtTop=True,TipAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),LoadingWidgetAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),TopBorderHorizontalAlignment=HAlign_Fill,BottomBorderHorizontalAlignment=HAlign_Fill,TopBorderPadding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),BottomBorderPadding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TopBorderBackground=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0)),BottomBorderBackground=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0)))
+Sidebar=(bIsWidgetAtRight=True,bIsLoadingWidgetAtTop=True,Space=1.000000,VerticalAlignment=VAlign_Center,LoadingWidgetAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),TipAlignment=(HorizontalAlignment=HAlign_Center,VerticalAlignment=VAlign_Center),BorderVerticalAlignment=VAlign_Fill,BorderHorizontalOffset=0.000000,BorderPadding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),BorderBackground=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0)))
+DualSidebar=(bIsLoadingWidgetAtRight=True,LeftVerticalAlignment=VAlign_Center,RightVerticalAlignment=VAlign_Center,LeftBorderVerticalAlignment=VAlign_Fill,RightBorderVerticalAlignment=VAlign_Fill,LeftBorderPadding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),RightBorderPadding=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),LeftBorderBackground=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0)),RightBorderBackground=(bIsDynamicallyLoaded=False,DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0)))
+
diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/StripLight/Light_emissive.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/StripLight/Light_emissive.uasset
index c749699a..d8cbe654 100644
--- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/StripLight/Light_emissive.uasset
+++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/StripLight/Light_emissive.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:92fc74ebe2921339c57113554d03d25eed3d6ef3e1c2004640d41264e54d9f92
-size 7816
+oid sha256:d5edfcae803425ff4e0c13583b5e04eccadef6af7689da2b871a78ec8486b45d
+size 8174
diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/StripLight/Light_emissive_colour.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/StripLight/Light_emissive_colour.uasset
new file mode 100644
index 00000000..957f0107
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/StripLight/Light_emissive_colour.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d464fb073376aa7c42d6ff25eaaa3de7f7b90c0ba9b7dc88a564a43052bb3e6c
+size 8928
diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Doors/M_Door.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Doors/M_Door.uasset
index 4b489b9f..92f4303d 100644
--- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Doors/M_Door.uasset
+++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/Doors/M_Door.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a1b4e57a312a2bef79b66c25e466b53548417c5713244b656c20f0d3727585df
-size 16971
+oid sha256:ccf10c7f6299407a9b1e91ed81f970e7da8304a332068f7cec52250bb39fb3e0
+size 17355
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
index d534808b..a6a4f463 100644
--- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset
+++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/Textures/posters/fame_glass.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d0b2fcc8046d34fc876a7714109c2e598fdb8b0be7d35dfada954b2a906c430e
-size 10872
+oid sha256:88c4e131311d882010d11462a80cc8c059306f2de98256252152b2339e8d87e4
+size 11554
diff --git a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/fishtank/fishtank_glass.uasset b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/fishtank/fishtank_glass.uasset
index 82000e77..e7ba0fa0 100644
--- a/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/fishtank/fishtank_glass.uasset
+++ b/EndlessVendetta/Content/Assets/Objects/Tutorial-Level/fishtank/fishtank_glass.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:db3be5248cf56f7c7a6e4bc8717c6a93d67beb7978c92d44329d784a6354e063
-size 9971
+oid sha256:269e86b2f1c6ca6ccff1a6a7fd428590f0614c35b2789331c74050736a81d388
+size 12304
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_BaseColor.uasset
new file mode 100644
index 00000000..eddb128a
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1a5d2cfb536298aedc2d1ac183c410d1c2a60fb5f4f9fa75801758db556fae5
+size 1490351
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_Normal.uasset
new file mode 100644
index 00000000..3db344e6
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e376f82b1e3ec808850ed87e00805da4997639734281343316f274013381244
+size 418921
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..44e883fc
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1e07d9098f9b9915e19d38843cedef2911321ec5ce6c3b8349f1d8a05c5633c8
+size 1103152
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_tileable.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_tileable.uasset
new file mode 100644
index 00000000..ebb4f321
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/concrete_tileable.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba82f4053f2ce1db852a9f6e4ffe995fbc86f8e3a21973f0e74119852dfde87c
+size 11310
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_BaseColor.uasset
new file mode 100644
index 00000000..944d82bc
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38ba99a9eefc7ca53b2e2a195b6d47d38c9ded81bd0e2b994bbdf9cbd47d560f
+size 759312
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_Normal.uasset
new file mode 100644
index 00000000..8f22b45e
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dcdb342cb6fe35e1acf5fb7d07c77e6d4c4763ff14eedf5ae10f52929c346e48
+size 23745
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..8b86a2c8
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:67e8f0ee6e8cc0501abd6a3f37e16fb63540be10bfef119da1858df3bfc1fe24
+size 870168
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_tileable.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_tileable.uasset
new file mode 100644
index 00000000..e2765c7e
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Buildings/tileable_building_textures/metal_tileable.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6c49eaf6d82f89ad73b250c013ea9056cfbc036e369e962c6a70c1a1033678cf
+size 10428
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/arcade_cabinet.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/arcade_cabinet.uasset
new file mode 100644
index 00000000..ffbe02fd
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/arcade_cabinet.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:303744a9d0c8679bb068a2cca0d17760a369088bb0e61f9198d0d592c7096330
+size 99361
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/basket.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/basket.uasset
new file mode 100644
index 00000000..6045eb55
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/basket.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18cf89a781b76d0c2bf9911aae01d003d09adc1a8b50ef7c7724b35be3ce5ef1
+size 71711
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/basket_mat.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/basket_mat.uasset
new file mode 100644
index 00000000..9eab370c
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/basket_mat.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:594dd2bbc8c4713bd24819a919aaa6adc72460e84a4a220020a77f22c35cf93a
+size 9423
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench.uasset
new file mode 100644
index 00000000..2d363aa8
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da9844e887e70b5598dedda91f02d97e7cd269d1b86aea5ecaf3a4bf462da767
+size 46640
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_BaseColor.uasset
new file mode 100644
index 00000000..12c9a05d
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb4a0991d5a1a390e8dfef51e873f4f4fa2e218695acc4cd9125b20bbad11497
+size 1152700
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_Normal.uasset
new file mode 100644
index 00000000..fda85be4
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12116ff21ef42d0bfad7c50440185d108eaeb2b3fe6c669012966f6435b1166d
+size 4336803
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..dd70d0d9
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_lambert2_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc898322946a07b4d4447ebae0b65943e076cb7d4ba5af767f7e0d77ce439c15
+size 2879909
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_mat.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_mat.uasset
new file mode 100644
index 00000000..dd2b199a
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/bench_mat.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b415d0c3fc7264a20cc6cc0ce05fa04085e9b58970c6816377efdee6ea8366d
+size 11724
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_ambientocclusion.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_ambientocclusion.uasset
new file mode 100644
index 00000000..d6338a6d
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_ambientocclusion.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:994e0b2117f250a4d88f7977e785b9046241400e160b780f413e9ec1b1fbe377
+size 5694884
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_basecolor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_basecolor.uasset
new file mode 100644
index 00000000..0ddf48f4
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_basecolor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f1fa2851fc9f72e254ccf49837183837181eb486ebef9c3bf134ff0313a16acb
+size 2769221
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_normal.uasset
new file mode 100644
index 00000000..4c5453ad
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_arcade_carpet_normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:147689aa6f916f3e416054e7fea7a1af368ad195d1c4963d58f5298c3a1e83cf
+size 14340343
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_ambientocclusion.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_ambientocclusion.uasset
new file mode 100644
index 00000000..0a52d4c9
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_ambientocclusion.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:58fe384bcae34a0217532655548a1e82d0b033a3755a07f9ac4423e80d342e6f
+size 7624300
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_basecolor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_basecolor.uasset
new file mode 100644
index 00000000..eeed1d60
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_basecolor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9fa3cdef93ac03cb18847f84a479b9dedaa6fd34cf0d40f3bacdd67a779d3052
+size 25671716
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_height.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_height.uasset
new file mode 100644
index 00000000..20a675b9
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_height.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aaee205174b64b7a5c141fc6f20fd7e452ac046b0ab882bd5835c6f18548ce6b
+size 7624070
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_normal.uasset
new file mode 100644
index 00000000..83f7f26d
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41ba32c1154621cc490261c4567e2bf8dace405695900249b5b1ba5b6753c18c
+size 26748627
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_roughness.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_roughness.uasset
new file mode 100644
index 00000000..179909ad
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/EV_floor_tiles_roughness.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:799f0204a884735df7b348358a0191eae6e1a4fc6a78a493c9f7713ebcdd7520
+size 7840270
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/arcade_carpet.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/arcade_carpet.uasset
new file mode 100644
index 00000000..44681d52
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/arcade_carpet.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b98c6dcc95694acc7f4ce02fde9ce7cf3b52c852c8f172d7d3bf038378a5336
+size 21880
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/floor_tile.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/floor_tile.uasset
new file mode 100644
index 00000000..f311bcce
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Parlour/tileable_textures/floor_tile.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e87c50fe56a5131d16965ca3488f43931876a76f159bc63180ed3b498e313fc
+size 15530
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/BusStop.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/BusStop.uasset
new file mode 100644
index 00000000..71c6e68e
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/BusStop.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:167fadeb89d158f23e46b4a59c64e55fe92add68d5f3845e0b12cf4dfdc93232
+size 48315
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/FireHydrant01.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/FireHydrant01.uasset
new file mode 100644
index 00000000..b71d8393
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/FireHydrant01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd57e18ef7603531d724e130a6a4136ed5e378370241fd4ac1b70a3ef27f3ce6
+size 109042
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/MetalBarrier01.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/MetalBarrier01.uasset
new file mode 100644
index 00000000..25a7a180
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/MetalBarrier01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6057645706d44379aee1ec268509e3110cd032c5e0ff7304c0ad468d09edd923
+size 38188
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe04.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe04.uasset
new file mode 100644
index 00000000..300142dc
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe04.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ae9894ea2189a12c33bf54b947a8c6dc6dc6a1e7bdd6b56779f643fed4dfb0bd
+size 26066
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe05.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe05.uasset
new file mode 100644
index 00000000..1858a249
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe05.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24f6aeaa429c9b9d6503c8942c3e65482c33f2497435a96dec8f4262cbf348a9
+size 33837
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe06.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe06.uasset
new file mode 100644
index 00000000..543ca3ee
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe06.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:75e04ec38428148a095fc61c85eab9caaafa05e2be85468ee21b9479c5258b87
+size 34215
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe07.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe07.uasset
new file mode 100644
index 00000000..aad2e377
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Pipe07.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7d46bb0da728ed33d0d01e0e1c49bec13518d32a91d597607f60c2c57d45ac9
+size 40177
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/StreetSign01.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/StreetSign01.uasset
new file mode 100644
index 00000000..38792b4c
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/StreetSign01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:365e912bd78100a7dd750cabd789f55f5371e7e32f4fc665166434216ba9f3b5
+size 18238
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/StreetSign_Blueprint.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/StreetSign_Blueprint.uasset
new file mode 100644
index 00000000..22d2627f
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/StreetSign_Blueprint.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12fbf458991af3654cd32252ae5d05b30d706cc70482d1ea8bd3ce0f0ff9a580
+size 30298
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_BaseColor.uasset
new file mode 100644
index 00000000..d6710daf
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d10ee66305c449d14b96c81ba269a6d0d4706d7202ee198ec9f3af2013ec960b
+size 851584
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_Normal.uasset
new file mode 100644
index 00000000..6863712f
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2c90cae31c4e30eb3d3acfb31d13ca11662f00b38cfc0c6812ac79c76cd6e11
+size 1591990
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..8a24bd7f
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/BusStop_BusStop01_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9682858a452c4f9d65860050c6fe19c0bd24df0980ed60d97dc1e0833c3cf25f
+size 851570
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/M_BusStop.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/M_BusStop.uasset
new file mode 100644
index 00000000..17b96e59
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/BusStop/M_BusStop.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:223bdd6a80d5371075fa0ce0725e152162b4cac4460dab47cf13b74ccff2c41d
+size 12639
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_BaseColor.uasset
new file mode 100644
index 00000000..381142d0
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19333cdd040937b201831748006950a0078b2b34f13ba770d8ee9bc024aae989
+size 1193610
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_Normal.uasset
new file mode 100644
index 00000000..17946891
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dddd4aeccc507e71a3f98603853b5af5817188c55cd8e04600a2d763cfececab
+size 1937185
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..24867839
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/Hydrant_low_FireHydrant_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03e939e0e9235b17905eb6fe4cb5524ecfbee37e371fde74b0710bb59b18e32e
+size 1090917
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/M_Hydrant.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/M_Hydrant.uasset
new file mode 100644
index 00000000..282e88fe
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/Hydrant/M_Hydrant.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:99aa471e75d5a5950cdbc7a167a7e861a696c80bca982f6bddee619c14aaf68d
+size 14005
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/M_MetalBarrier01.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/M_MetalBarrier01.uasset
new file mode 100644
index 00000000..933ee52b
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/M_MetalBarrier01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:73348b7120033cb4a1fc58cdc0e5467618822696b881187726a6a4263aa7ae73
+size 11990
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_BaseColor.uasset
new file mode 100644
index 00000000..de7bca79
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f7acde85e7b9da6d86f13027d90b89d635460638e0a6dfc12e6916754921fb1f
+size 116308
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_Normal.uasset
new file mode 100644
index 00000000..b5a02525
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b47230f3fae5dd25ab61c054ae2415e4dfc3a98957a494f7c0a0943f7144aedc
+size 263973
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..ada91f34
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/MetalBarrier/MetalBarrier_low_Barrier_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d8d56c2ed403b04fafea925512fb4a492119421d34ca4adc6ea183e0e067fd8
+size 137880
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/M_Pipes02.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/M_Pipes02.uasset
new file mode 100644
index 00000000..69942f3d
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/M_Pipes02.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97bd3e9f7ff2980446490f61c59cd10c56c805f99c77fd442410e01293af17c0
+size 15060
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_BaseColor.uasset
new file mode 100644
index 00000000..eefdc3e4
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57522d879afa62c240c766c1ac08103c0f27ff2a0418722aaab568de2f6543f0
+size 1124758
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_Normal.uasset
new file mode 100644
index 00000000..257289d7
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c78d14e5159ea7628f97a47e72010e81cfb04afa20136583ddb7ab65662c14b
+size 1497280
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..53114948
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/PipeKit01/Pipes2_low_PipeKit02_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ccba260e5920d8bf7203ed53ce43b4a5a426b4bddefdbdff4bc06c6361566ce6
+size 864368
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns01.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns01.uasset
new file mode 100644
index 00000000..731473bf
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba4bf680806ab6ce430a08a5d29547071667b081917d8b673bd646bb0305cfa0
+size 16532
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns02.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns02.uasset
new file mode 100644
index 00000000..d84a261e
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns02.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:735e4abf998682c1618e1aa58edee9185a476b640ff1f6d85ed89863483db667
+size 12765
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns03.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns03.uasset
new file mode 100644
index 00000000..bdde9ac2
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/M_StreetSigns03.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d37db4341b24ceddf9a24ebf76d5e77f8481d47ad2ff35c2da22da7e00d36db
+size 12828
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_BaseColor.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_BaseColor.uasset
new file mode 100644
index 00000000..6274e08e
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac44014cd3b57ab480d8a51e45af3602dc7a6def86f6e0f3772c2da5bec94e41
+size 375833
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_Normal.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_Normal.uasset
new file mode 100644
index 00000000..f42e1c71
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50a04ea6eff00d2d6814b76e1bcc2311741837888da7e4b9d2a53b26cc6e11dc
+size 931204
diff --git a/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..e632ef4f
--- /dev/null
+++ b/EndlessVendetta/Content/Assets/OpenWorld/Props/Textures_parts/StreetSigns01/Signs_StreetSigns01_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5eefee0601b211acfb9f8ec1c9f11c9be45ca93c301040968ab425a88a96aeaf
+size 192275
diff --git a/EndlessVendetta/Content/BigStarStation/Materials/MI_LightEmissiveRed.uasset b/EndlessVendetta/Content/BigStarStation/Materials/MI_LightEmissiveRed.uasset
new file mode 100644
index 00000000..dd16c8be
--- /dev/null
+++ b/EndlessVendetta/Content/BigStarStation/Materials/MI_LightEmissiveRed.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5811719d8b54dc4869871a79c2e92b43c1660912b976aa3d3c17114d16f7169
+size 8747
diff --git a/EndlessVendetta/Content/BigStarStation/StaticMesh/Building/BP_SpaceShipDoor01.uasset b/EndlessVendetta/Content/BigStarStation/StaticMesh/Building/BP_SpaceShipDoor01.uasset
index 2d124fe1..799d9c66 100644
--- a/EndlessVendetta/Content/BigStarStation/StaticMesh/Building/BP_SpaceShipDoor01.uasset
+++ b/EndlessVendetta/Content/BigStarStation/StaticMesh/Building/BP_SpaceShipDoor01.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:68bb5768ad7714b0155f5452821fcaff8a7796a596847b7c70d6dc413003def2
-size 66325
+oid sha256:9ba74d8527e165435b180e3720d55d55d279103fd35d9e6e16467eff994fc7c1
+size 54420
diff --git a/EndlessVendetta/Content/BigStarStation/StaticMesh/Building/SM_CorridorRedLight.uasset b/EndlessVendetta/Content/BigStarStation/StaticMesh/Building/SM_CorridorRedLight.uasset
new file mode 100644
index 00000000..f7eaecdd
--- /dev/null
+++ b/EndlessVendetta/Content/BigStarStation/StaticMesh/Building/SM_CorridorRedLight.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:70d1cd41f3df247563d3a147144a07d13e948be7aef135ebf987c1a00c1d91c5
+size 47989
diff --git a/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorLeft.uasset b/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorLeft.uasset
index 8596f341..c3c9a729 100644
--- a/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorLeft.uasset
+++ b/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorLeft.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dd8f87ce4387e57cab3c6c0ea7b5744834cc082df3464c84f5c6b21fc6a2d992
-size 71562
+oid sha256:06b26b627e96b7f6c083b4a7c9af94860cfa546ff05c4fa227b4ae70d54a8dcc
+size 56850
diff --git a/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorRight.uasset b/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorRight.uasset
index 5e79ad9b..723cbd36 100644
--- a/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorRight.uasset
+++ b/EndlessVendetta/Content/BigStarStation/StaticMesh/Props/BP_CorridorDoorRight.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c8f182b8534ebfc58cd10e775732ebcf56c88468497b4e44d68c46c20ec66e04
-size 70783
+oid sha256:75752fdc3772312eb5c49d80fb2dff84e8512a8f78c26d5dabe69867266a6cc5
+size 56114
diff --git a/EndlessVendetta/Content/BountySystem/ApartmentBounty/BountySpecificActors/BP_Vent.uasset b/EndlessVendetta/Content/BountySystem/ApartmentBounty/BountySpecificActors/BP_Vent.uasset
index 3cc9c1bf..8f7d4ada 100644
--- a/EndlessVendetta/Content/BountySystem/ApartmentBounty/BountySpecificActors/BP_Vent.uasset
+++ b/EndlessVendetta/Content/BountySystem/ApartmentBounty/BountySpecificActors/BP_Vent.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f8c804c93792444c1ad9e9629324dc3d3c5f1a548779a5c52eb565ca8b1d0185
-size 50989
+oid sha256:0d45931a357f8acaa3fbb116a10829d5f7d16ce591434f8b22f6a2a834fee70b
+size 49341
diff --git a/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset b/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset
index f0e0e00e..b310d603 100644
--- a/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset
+++ b/EndlessVendetta/Content/BountySystem/CP_FinalCheckpoint.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:70abac4209a9dac27a485c62c0b9a6d3b8b217d47e8e2e2b6bc38eed806e566e
-size 39880
+oid sha256:22751ef9ea986edb12ee293a3650e2a26030d691c91b5675b479cfe3cb6c840a
+size 41878
diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/BD_ControlsTutorial.uasset
index efcbde67..08083321 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:2a9f8a712306da06c1d52eca49f38b700757456c7de80e65a955f34b4d30ae5d
-size 21612
+oid sha256:ec11d62fd73e8a8481fbf8fcceb2dd693fba4effeb6ff1ffc0d3c610f0e13c21
+size 21599
diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset
deleted file mode 100644
index 4b140f0d..00000000
--- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/MB_Training.uasset
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d94d72c1af278dc419f29483623353fb9ebbd253716e4d70fdeeeeb3baa493c6
-size 28746
diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset
deleted file mode 100644
index f508afbb..00000000
--- a/EndlessVendetta/Content/BountySystem/ControlsTutorial/Bounty/OWCP_Training.uasset
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e28c4bc3d5d467caa5aa0b7e94b8eaec1de28951d233ff6987caa754fef83d3b
-size 24233
diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_CombatWorkbench.uasset
index 46ae70f1..c0ffe314 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:341c67fe6335ccdccbb068a7fd809dad5671551cb8db36b2182c44bd79170c14
-size 35763
+oid sha256:40e56ee569134abf6296799cd957731a09ab27f904707972a5b2ec12235f651b
+size 2695
diff --git a/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/ControlsTutorial/GunRangeMechanics/GadgetRoom/BP_ReconWorkbench.uasset
index f1f5cbd9..951aa1ec 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:0e43901c00f1aeefd6b7c89f8c4165dcb9551ea25a663246d0e923cbf8a48350
-size 39173
+oid sha256:4f94342442db8727b86ca5501515520920aae9d76f302d5e692420eeb3f7c0cc
+size 2675
diff --git a/EndlessVendetta/Content/BountySystem/LoadingScreen/BruhMoment.uasset b/EndlessVendetta/Content/BountySystem/LoadingScreen/BruhMoment.uasset
new file mode 100644
index 00000000..b5dd0b16
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/LoadingScreen/BruhMoment.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e98980baf18bdc1fe4870c7fdae2e99ac590bf6a6a823659465e53c867680717
+size 28449507
diff --git a/EndlessVendetta/Content/BountySystem/LoadingScreen/Logo.uasset b/EndlessVendetta/Content/BountySystem/LoadingScreen/Logo.uasset
new file mode 100644
index 00000000..d716d7bc
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/LoadingScreen/Logo.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7bb8f0744c8302cd9bf2d358c3e3676fcec69b214b9f8184d97f73aa92a966f7
+size 109414
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/AI_Speach_Congrats.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/AI_Speach_Congrats.uasset
new file mode 100644
index 00000000..813761b2
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/AI_Speach_Congrats.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2bb9a0cd421c406a8055ce94987a14ace955968db3bc7bf76a11095387cc2713
+size 552716
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/AI_Speach_Congrats.wav b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/AI_Speach_Congrats.wav
new file mode 100644
index 00000000..59260b12
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/AI_Speach_Congrats.wav
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2634267961fda3c26598f5a03ec27a24c5dbaf2ef0ac9a58fe91f752a617d56
+size 624684
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunDeposit.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunDeposit.uasset
new file mode 100644
index 00000000..c84efcb5
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunDeposit.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c39c3ffc8681f28efcecf958ec93ce03ddfd330e250e488a0b05739b58d746d6
+size 23588
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunRangeDoor.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunRangeDoor.uasset
new file mode 100644
index 00000000..58b9be84
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunRangeDoor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7efb3b71f4beb59f72f8d6ab21ab034b0d69641a8738c0357ff8357eb42bfb6f
+size 43945
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunRangeShutters_Maybe.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunRangeShutters_Maybe.uasset
new file mode 100644
index 00000000..5a40fe86
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_GunRangeShutters_Maybe.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0829e45461eec8e587ce6b95f9b7e7d43d7aecae8ae42d1f701218fee64c4f7
+size 122645
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_Ind_Elevator.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_Ind_Elevator.uasset
new file mode 100644
index 00000000..a04deda9
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_Ind_Elevator.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:452c859dc48f334abf2784624c1b3a0b2461b62cbe6eddb9fc038da0d10701e2
+size 2678
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_IndustrialElevator.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_IndustrialElevator.uasset
new file mode 100644
index 00000000..63ae3477
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_IndustrialElevator.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af07bc1cf40c40cbbd90b1a4bc6b28cd1f8c70699ff78bf2854ae4c6fe121f37
+size 945
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_Mars.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_Mars.uasset
new file mode 100644
index 00000000..75916872
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/BP_Mars.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:201d92203e64b0a0daa5bf777951293a927fd722894912110feef05e6024062b
+size 44925
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/CS_IndustrialElevator.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/CS_IndustrialElevator.uasset
new file mode 100644
index 00000000..38173bab
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/CS_IndustrialElevator.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5bef9a3acd6f2e485872c1b4191523c892e6a50c37e3d57d79452a7e81da098b
+size 7238
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/CS_IndustrialElevator_End.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/CS_IndustrialElevator_End.uasset
new file mode 100644
index 00000000..17c77d8d
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/CS_IndustrialElevator_End.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7aee6b552eca5aa903712dc333548ed1b79b4237d92ac8dab1b5953e3d2529b
+size 6731
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/ContractImage.jpg b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/ContractImage.jpg
new file mode 100644
index 00000000..639907f6
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/ContractImage.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d39268673c8e6626085f144e409b39f1a8e909abd2bf47cdbce47df54600b169
+size 15801
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/ContractImage.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/ContractImage.uasset
new file mode 100644
index 00000000..7fabe2a1
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/ContractImage.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f3ea151552edb1a153442b34bafe84602d24bd4c2a5313d4fde38779f1b810a7
+size 23992
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/Item_Contract.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/Item_Contract.uasset
new file mode 100644
index 00000000..151ebc2a
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/Item_Contract.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56fd16eed46bbdb4c9e3a234da22048a2c4f7842ea2e82b6f8bbc9a10bd322fc
+size 6617
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/M_ContractPic.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/M_ContractPic.uasset
new file mode 100644
index 00000000..660c2ed7
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/M_ContractPic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe4d6da15d0a7ef57a1e5594b30a17237dabb855ce3b1e696b32273897eec6d3
+size 9395
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/M_ContractPic_Rot.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/M_ContractPic_Rot.uasset
new file mode 100644
index 00000000..43e6803f
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Contract/M_ContractPic_Rot.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:176c727b782192b4b8422659ea947d34ef829bb1c17106023a9676f7ba341960
+size 9443
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/AI_Speach_Elevator.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/AI_Speach_Elevator.uasset
new file mode 100644
index 00000000..d92db80f
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/AI_Speach_Elevator.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:51a783c479265c883dcccba022a99636cd9b7c5925c5229d5c59d1cd84bde494
+size 1677020
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/AI_Speach_Elevator.wav b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/AI_Speach_Elevator.wav
new file mode 100644
index 00000000..e64e1aa7
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/AI_Speach_Elevator.wav
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dfbc215c47a229062f89ed5b75ca270ce4c5b0998f9af1dd9978050b6c732868
+size 1871916
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/BP_ElevatorDoor_Ind.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/BP_ElevatorDoor_Ind.uasset
new file mode 100644
index 00000000..0f4f6c80
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/BP_ElevatorDoor_Ind.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dea20e5d6a3f6ed66cc512864b20a61c091586977344ba851102819accd67af3
+size 44085
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/BP_Ind_Elevator.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/BP_Ind_Elevator.uasset
new file mode 100644
index 00000000..a36c1e16
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Elevator/BP_Ind_Elevator.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd4ac8c1ceda8aacaf312104e54ced6bc9575fc6525f157dfb8d5484040c8151
+size 123778
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/BP_Mayor.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/BP_Mayor.uasset
new file mode 100644
index 00000000..cf489252
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/BP_Mayor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:901c1749f7f8fc8d2e9626d51c1d9a81cd7b66d61848e9e07d896648edfcb915
+size 54720
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/MayorImage.png b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/MayorImage.png
new file mode 100644
index 00000000..d15f5e8d
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/MayorImage.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2ae4457ce7a0790d74ef7c9b8a8bd318806cb1968469a9b9803de4f05e7d9f3
+size 1296487
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/MayorImage.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/MayorImage.uasset
new file mode 100644
index 00000000..dd0b21d9
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/MayorImage.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7f59f50ad0a8969415f303c146050a073546cd006eb0c56277277343a13f2b9
+size 1030354
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/WBP_MayorsFace.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/WBP_MayorsFace.uasset
new file mode 100644
index 00000000..b726cdcd
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/BountySpecificActors/Mayor/WBP_MayorsFace.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5cd44ab920c788eb1368750eca585f194cea12f39b0263aebd85709fbfb5de52
+size 27002
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ContinueThroughFacility.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ContinueThroughFacility.uasset
new file mode 100644
index 00000000..47b14233
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ContinueThroughFacility.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b60223379c2ef6eab084cfc7cbc36495e98903541cd2706f2e2bd1ce3b3f775
+size 36902
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_DepositGun.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_DepositGun.uasset
new file mode 100644
index 00000000..b3543c42
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_DepositGun.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bbbd98bf3691755654cb904710901bbd9932099a968f9598fd762d4e508a0a6c
+size 26478
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_Empty.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_Empty.uasset
new file mode 100644
index 00000000..55a86d07
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_Empty.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d6d7d15242cb223e91311a243310c61cd501c52a52d96415b7a1dfc9e012db8
+size 35189
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_EnterTheElevator.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_EnterTheElevator.uasset
new file mode 100644
index 00000000..a5baaeb1
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_EnterTheElevator.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c931230fefec4bb9b8b2291f4475511420afccec0bbe8dc013e5a51f5147a38e
+size 42586
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GadgetTrainingCinematic.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GadgetTrainingCinematic.uasset
new file mode 100644
index 00000000..94b1578b
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GadgetTrainingCinematic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47d5998f8b8eb42f63c66a5c950cd3923042113fbab7c1307ec3ca7f51d0ebd7
+size 39464
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GoThroughMaintenenceArea.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GoThroughMaintenenceArea.uasset
new file mode 100644
index 00000000..6632da62
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GoThroughMaintenenceArea.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31e4e7f217419e49be908d4aad1ac4ca09b915012bb1f58564703131374bc37f
+size 43085
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GrabPistol.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GrabPistol.uasset
new file mode 100644
index 00000000..53f02b12
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_GrabPistol.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e7cfcc71221400aae07bc91805b493778f031883a0376b08409eecddf151c55
+size 59675
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_HeadDownTheCorridor.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_HeadDownTheCorridor.uasset
new file mode 100644
index 00000000..8e555d6f
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_HeadDownTheCorridor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6cf61c5d18fe24c58d9d6db06595a1f0ff29fbc48f1bfe8584cef1f5081bfda
+size 48124
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_LeaveTheGadgetTrainingFacility.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_LeaveTheGadgetTrainingFacility.uasset
new file mode 100644
index 00000000..93dbf0eb
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_LeaveTheGadgetTrainingFacility.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d259a334d0ea048dfef93d8b8eda98d297d0d54b62a3c767f259f87f0f541d5
+size 43124
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_LeaveTheOffice.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_LeaveTheOffice.uasset
new file mode 100644
index 00000000..77ee682a
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_LeaveTheOffice.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b94b929b26153b86830cbcd40218b261b644f6dad8be27409b22a9dba194506
+size 30937
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ProtectTheHoloSupplies.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ProtectTheHoloSupplies.uasset
new file mode 100644
index 00000000..7b8118c8
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ProtectTheHoloSupplies.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16ad484fecc7bfa11ff70ed7cde51d7ced395fcab41d73c3d238d7237fb62c0a
+size 50113
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_SelectCombat.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_SelectCombat.uasset
new file mode 100644
index 00000000..27ee9484
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_SelectCombat.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:94fdccabfe717d535068965238dbfe093bc84d7f5506cd9ed4e0132a73baa4ec
+size 49517
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_SelectRecon.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_SelectRecon.uasset
new file mode 100644
index 00000000..9c6d4282
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_SelectRecon.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bdc62a74409dc494b6739127c7155d7e94c80a235c649327b00d954d1bcfb548
+size 49445
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ShootTheTargets.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ShootTheTargets.uasset
new file mode 100644
index 00000000..9cca82ee
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_ShootTheTargets.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:944b94ec41547f02e04760ba1ccdf5b903e66f70674fc9bf222e8ada5f4bc57d
+size 82333
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TalkWithTheMayor.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TalkWithTheMayor.uasset
new file mode 100644
index 00000000..a4971bfe
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TalkWithTheMayor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d562d16ef743fa1acca0bfc36df78c4360e7fb5a58237cea180803cff2044c5a
+size 60146
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TempEmpty.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TempEmpty.uasset
new file mode 100644
index 00000000..67a1176a
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TempEmpty.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fedfe3a6f7917c088a125c6acc634a9d3a1dc49c7d400be7a30eaafd139c8ba9
+size 32826
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TutIntroLvlSequence.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TutIntroLvlSequence.uasset
new file mode 100644
index 00000000..8382394d
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/Checkpoints/CP_TutIntroLvlSequence.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:615115308fc690043d93808432bb577f8dad5274cf155e006bf62f3f45dd0d74
+size 63125
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/AI_Speach_GadgetTraining.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/AI_Speach_GadgetTraining.uasset
new file mode 100644
index 00000000..caca41d7
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/AI_Speach_GadgetTraining.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8e94aefb5f37aa582f2fabd57c1951586b73e6c4f064241a82f710dd46670b1b
+size 2751136
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/AI_Speach_GadgetTraining.wav b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/AI_Speach_GadgetTraining.wav
new file mode 100644
index 00000000..d6ca0404
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/AI_Speach_GadgetTraining.wav
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2796ba39c87d905dea7d8ee4bddd249f1e1463038440652c3019b9f0fabb733
+size 3084332
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/GadgetTrainingSequence.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/GadgetTrainingSequence.uasset
new file mode 100644
index 00000000..7e4dddc6
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/GadgetTraining/GadgetTrainingSequence.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:255940270ee954b498e570d5fef586d0d8b0da3e0938f3e655a0c72aee62ecbb
+size 25179
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/MarsShake.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/MarsShake.uasset
new file mode 100644
index 00000000..ec405f4b
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/MarsShake.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c536f8e7072f41ec92ee832dc8bc63378b69b29470f5bc099cb5458d6577992
+size 6692
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/TutorialIntro.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/TutorialIntro.uasset
new file mode 100644
index 00000000..58ce97fc
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/TutorialIntro.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2009d287ba0982ae6da4f45012b79964789b194262b1c8a723eaea260527dbb1
+size 24608
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/WBP_TutIntro.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/WBP_TutIntro.uasset
new file mode 100644
index 00000000..c54e9f3c
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/CinematicSequences/Intro/WBP_TutIntro.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dcabed2638e76cad50e0522e85b6b7f5f73381559735dff667630a559b832c53
+size 45297
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_BrainSpawner.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_BrainSpawner.uasset
new file mode 100644
index 00000000..1012bfea
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_BrainSpawner.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9b7c0e77d2bb16956dd86c4baf504b4c92a8bbb47e34b4b7df29c089bfaf619
+size 25129
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_BrainVirus.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_BrainVirus.uasset
new file mode 100644
index 00000000..da3fb2af
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_BrainVirus.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91fb3906d61d5334db02ff09cbe970f1519866e1a74528c71fbadd9e870f9164
+size 2601
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_CombatWorkbench.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_CombatWorkbench.uasset
new file mode 100644
index 00000000..295a6fb1
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_CombatWorkbench.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b25506368616f3fba1b737a300d725eb95eb9f45ce24bb23b5e25da660548492
+size 35160
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_HoloSupply.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_HoloSupply.uasset
new file mode 100644
index 00000000..48a39d13
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_HoloSupply.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb78ee0afec2377b24c328a67bbf3cb6bf7a69b9c1df945920352a0b4709e1aa
+size 71164
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_HoloSupplyStation.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_HoloSupplyStation.uasset
new file mode 100644
index 00000000..dbcb1a7b
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_HoloSupplyStation.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b36a8b3e24e5c483152fe36917eb853924092d63e61263fe1b0c6191a3f85a7
+size 143564
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_ReconWorkbench.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_ReconWorkbench.uasset
new file mode 100644
index 00000000..addd9736
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_ReconWorkbench.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8201cc8190a7337168cbf73b3571a0bab1af436ecb7ac41ed818d93d17f990d3
+size 38684
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_WaveComputer.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_WaveComputer.uasset
new file mode 100644
index 00000000..eccc8f8e
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/BP_WaveComputer.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e9dda08a025f74281c7608d7d8f3e986494a763c981c1aef936088da1ab4fc8
+size 182824
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/AI_BrainVirus.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/AI_BrainVirus.uasset
new file mode 100644
index 00000000..864a181d
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/AI_BrainVirus.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2fa3122f14d1219cbed0932c2cfc09518bfa3332e3fd1cd44f44c3dfd3b0245
+size 36026
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BB_BrainVirus.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BB_BrainVirus.uasset
new file mode 100644
index 00000000..605f7d79
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BB_BrainVirus.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4fe8d2f63f7d1078813931531e1044b8de2b393161fcf0475be48ef49ef912eb
+size 2645
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BP_BrainVirus.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BP_BrainVirus.uasset
new file mode 100644
index 00000000..0830d400
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BP_BrainVirus.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a67e26ab7951f88e483c4b2cb88c158a27baea23129e5432c36b5add70a3b0b8
+size 98869
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BT_BrainVirus.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BT_BrainVirus.uasset
new file mode 100644
index 00000000..2d96481a
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Character/BT_BrainVirus.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:537fe9e5a3f7dc871538684b4fc2340749b194b99e2f3c73c3f12c3a9d2ff812
+size 6561
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/PixelBrainImage.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/PixelBrainImage.uasset
new file mode 100644
index 00000000..8d00b05b
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/PixelBrainImage.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b840fefb42b6c29dc640fcaba5f1d515ede35577f47b715677b708988d3b660
+size 55344
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Congrats.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Congrats.uasset
new file mode 100644
index 00000000..b06bc52e
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Congrats.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60706521b25cdb2536715b58313a05ac460021f590ac32327aba52656836c2d0
+size 50622
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Prepare.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Prepare.uasset
new file mode 100644
index 00000000..743a7aac
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Prepare.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f9d2e11f823dd09d2d628bc1931bf8d5956cac62206ac890794eddb1a827af8f
+size 50920
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Wave.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Wave.uasset
new file mode 100644
index 00000000..1267e31b
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/GadgetGamemode/Widgets/WBP_WaveComputer_Wave.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c51b63d168f3ae553383ec5026c0c7cb6da3ad38f44be15f769fe0616822dd4b
+size 104519
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/MB_Training.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/MB_Training.uasset
new file mode 100644
index 00000000..04866db2
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/MB_Training.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88530c75feaa3a5ae973962f72a1ca7b2c34be7a552a61db18a74b0c739c4a3f
+size 27114
diff --git a/EndlessVendetta/Content/BountySystem/Tutorial/OWCP_Training.uasset b/EndlessVendetta/Content/BountySystem/Tutorial/OWCP_Training.uasset
new file mode 100644
index 00000000..42886567
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/Tutorial/OWCP_Training.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d672ba94fe098df08c8ffa322f7d2c18d3d7c92873c00748693fd8c5be592ce5
+size 24253
diff --git a/EndlessVendetta/Content/Cyberpunk_Gigapack/Materials/Material_Instance/MI_Screen03.uasset b/EndlessVendetta/Content/Cyberpunk_Gigapack/Materials/Material_Instance/MI_Screen03.uasset
index e1ffe8a4..264c4f20 100644
--- a/EndlessVendetta/Content/Cyberpunk_Gigapack/Materials/Material_Instance/MI_Screen03.uasset
+++ b/EndlessVendetta/Content/Cyberpunk_Gigapack/Materials/Material_Instance/MI_Screen03.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8d8c9d8e964cece091b914e5623fbb0c8f1a438847110c6f1e93ca0feed4c2ad
-size 149558
+oid sha256:70688929705cb16bd00783b1f8249981f507ad0bf1a72e6a8e1d4ec5591f99c0
+size 17183
diff --git a/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset
index 54f764d4..ec3889de 100644
--- a/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset
+++ b/EndlessVendetta/Content/Dialogue/D_Mayor_Tutorial.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3ccdde9c17154641bb8dd5fb42141b19633b6c6884e2cf9ab001b129d1dfefdc
-size 87725
+oid sha256:060781c3eda905eb75e12ff506412383129429dbf664aff0c903e8a2965dfa82
+size 90113
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
index c4359207..6bae58d3 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:912019cc471438ac77a82caaef9433cfd32d2e753c57f9c97f6439467c657710
-size 836778
+oid sha256:54526257745d9349bd1084059a5bcd24f806b231615e2cf4fe2eae322f8c67e3
+size 838737
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset
index a5f91cbf..e342d016 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_MainCharacter.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ab4753229730fe18a116f5ee60b9d4b9bd7ac23ec74915605f65d2251b608a16
-size 1517136
+oid sha256:01937275d357d150dd60025d75995693380a7c15be686b59f302e3cf4923e6f5
+size 1522015
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset
index f570bf8e..52326d2d 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:c17011787947edd0492999385adc17e76b12aa4fe03ef946ae96b2ad435f4eda
+oid sha256:8a37e791ac9a009d944c1237857829b57281f5950cc05d88d7a1cb6ec7723333
size 9114
diff --git a/EndlessVendetta/Content/FirstPerson/DeathScreen/WBP_DeathScreen.uasset b/EndlessVendetta/Content/FirstPerson/DeathScreen/WBP_DeathScreen.uasset
index 070e5705..5011b378 100644
--- a/EndlessVendetta/Content/FirstPerson/DeathScreen/WBP_DeathScreen.uasset
+++ b/EndlessVendetta/Content/FirstPerson/DeathScreen/WBP_DeathScreen.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b77b11914da5dcdb1f42abf888520393f1f422830f6b1e1f7b1d77e255890969
-size 170667
+oid sha256:9d386e1f8d908c0154418bd31ab3836eadbaee3a47d66e49b1b006be4a64138b
+size 169692
diff --git a/EndlessVendetta/Content/Gadgets/CombatGadgets/HeatBlast/CG_HeatBlast.uasset b/EndlessVendetta/Content/Gadgets/CombatGadgets/HeatBlast/CG_HeatBlast.uasset
index 754b8e55..450378cb 100644
--- a/EndlessVendetta/Content/Gadgets/CombatGadgets/HeatBlast/CG_HeatBlast.uasset
+++ b/EndlessVendetta/Content/Gadgets/CombatGadgets/HeatBlast/CG_HeatBlast.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b2bff27a79e4ff08a6bf9f9e02924759dd94dda95a15f354df15bcffffa325d1
-size 148104
+oid sha256:0f466658ba3bb71eb0451daa52516c652a433aaa26000999d9ba781b229a2796
+size 150264
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionPulse/RG_VisionPulse.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionPulse/RG_VisionPulse.uasset
index 1372ae02..54224dff 100644
--- a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionPulse/RG_VisionPulse.uasset
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionPulse/RG_VisionPulse.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0180f4b5282d8fa61d749ba06d8b3d3c9509774b0aad5ac0e2e0d1878ede15bc
-size 129149
+oid sha256:3a3a1cd55d3cf0eeec5fd4a664af57b3a30284dfd006842f1e42a6c6c2dcd982
+size 164831
diff --git a/EndlessVendetta/Content/Levels/OpenWorldRework.umap b/EndlessVendetta/Content/Levels/OpenWorldRework.umap
index f45209fa..fe23e8b5 100644
--- a/EndlessVendetta/Content/Levels/OpenWorldRework.umap
+++ b/EndlessVendetta/Content/Levels/OpenWorldRework.umap
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9df64d83cf384c9198e1459959ae0f2d3db8615fc5be5eac6c24a2b1ce5a139b
-size 42163787
+oid sha256:4b5aca324202ca2d7253837225405962850e0fc11f41e879eaa6f28415cf0686
+size 43375649
diff --git a/EndlessVendetta/Content/Levels/TempLevels/FinalAreatTut.umap b/EndlessVendetta/Content/Levels/TempLevels/FinalAreatTut.umap
new file mode 100644
index 00000000..054e970e
--- /dev/null
+++ b/EndlessVendetta/Content/Levels/TempLevels/FinalAreatTut.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01aaa35f5d935250b82960ba8e145710a66311a97d0d0ac2e4880ea83458584b
+size 1962225
diff --git a/EndlessVendetta/Content/Levels/TempLevels/NewTutorialMap.umap b/EndlessVendetta/Content/Levels/TempLevels/NewTutorialMap.umap
index 0c27d011..a4f2334f 100644
--- a/EndlessVendetta/Content/Levels/TempLevels/NewTutorialMap.umap
+++ b/EndlessVendetta/Content/Levels/TempLevels/NewTutorialMap.umap
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:20a917df3ba3e1f96a8c6d47965ac0d9c29c5107c04fb1808ea7727eb2e7248d
-size 825820
+oid sha256:28aa3037a50146e7d1f19a4bc75fbefd8bf1a6d14ae8ffed7a5034615e7caf38
+size 1962279
diff --git a/EndlessVendetta/Content/Levels/TempLevels/StealthAreaTut.umap b/EndlessVendetta/Content/Levels/TempLevels/StealthAreaTut.umap
new file mode 100644
index 00000000..7a562ca3
--- /dev/null
+++ b/EndlessVendetta/Content/Levels/TempLevels/StealthAreaTut.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cad9a28cae864f0e2250ad928337c578a34b455acbfe342492a117add290a35c
+size 1028540
diff --git a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset
index 8f48eb8e..e135e070 100644
--- a/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset
+++ b/EndlessVendetta/Content/MainMenu/Gameplay/MainMenuPlayerController.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0a8dd4c43cd8f01a39547f8516fc1fe1881b5e86b7fe86ba9c1b3bdc33a33343
-size 152321
+oid sha256:fbf4f9c59578ece16435d986b0cc370c6e0823c0f88b31b59e87880bdc07cb3c
+size 151714
diff --git a/EndlessVendetta/Content/PauseMenu/Tabs/BountyTabs/WBP_InProgressTab.uasset b/EndlessVendetta/Content/PauseMenu/Tabs/BountyTabs/WBP_InProgressTab.uasset
index 1bf161ee..d24785e4 100644
--- a/EndlessVendetta/Content/PauseMenu/Tabs/BountyTabs/WBP_InProgressTab.uasset
+++ b/EndlessVendetta/Content/PauseMenu/Tabs/BountyTabs/WBP_InProgressTab.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b8b10921f77c18ab101bdda2a41b3c3a70e1aece2e97f62f7f08d69ac72b157c
-size 41422
+oid sha256:a8530deeeb94f23a15f06c789fe09d01ca619a99a44f7a4fb27f1e1047896829
+size 40584
diff --git a/EndlessVendetta/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset b/EndlessVendetta/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset
index 2ad200bc..42b388de 100644
--- a/EndlessVendetta/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset
+++ b/EndlessVendetta/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0a52abfd15683ab8939244110a784ec84de7c1a5ee9c00e68fb95a8c4e7d72d8
+oid sha256:d3994b73f3dcdab6375efa88548f12b3c83925276c0ccaa3c8e285a21b844659
size 43745
diff --git a/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/EndlessVendetta/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset
index 0f990580..66e70bee 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:bc35eb2d43a47427d30aba0196f9eac90d089dd3abca319528c5d25c83510d0d
-size 72364642
+oid sha256:cf346fd8b7743632f043299ab2f2cfd012f0834e3f741a978b5aeffa7adeb3f2
+size 66790690
diff --git a/EndlessVendetta/EndlessVendetta.sln.DotSettings.user b/EndlessVendetta/EndlessVendetta.sln.DotSettings.user
deleted file mode 100644
index 2b08f3a1..00000000
--- a/EndlessVendetta/EndlessVendetta.sln.DotSettings.user
+++ /dev/null
@@ -1,2 +0,0 @@
-
- C:\Users\Rafal\AppData\Local\JetBrains\Rider2023.3\resharper-host\temp\Rider\vAny\CoverageData\_EndlessVendetta.-1253833435\Snapshot\snapshot.utdcvr
\ No newline at end of file
diff --git a/EndlessVendetta/EndlessVendetta.uproject b/EndlessVendetta/EndlessVendetta.uproject
index 77153aad..3db11051 100644
--- a/EndlessVendetta/EndlessVendetta.uproject
+++ b/EndlessVendetta/EndlessVendetta.uproject
@@ -63,6 +63,11 @@
"Name": "MixamoAnimationRetargeting",
"Enabled": true,
"MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/c684998124da4e2583b314dc95403a80"
+ },
+ {
+ "Name": "AsyncLoadingScreen",
+ "Enabled": true,
+ "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/01f39767dc6b4290877f38365787cbf8"
}
]
}
\ No newline at end of file
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/.gitignore b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/.gitignore
new file mode 100644
index 00000000..6582eaf9
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/.gitignore
@@ -0,0 +1,74 @@
+# Visual Studio 2015 user specific files
+.vs/
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+*.ipa
+
+# These project files can be generated by the engine
+*.xcodeproj
+*.xcworkspace
+*.sln
+*.suo
+*.opensdf
+*.sdf
+*.VC.db
+*.VC.opendb
+
+# Precompiled Assets
+SourceArt/**/*.png
+SourceArt/**/*.tga
+
+# Binary Files
+Binaries/*
+Plugins/*/Binaries/*
+
+# Builds
+Build/*
+
+# Whitelist PakBlacklist-.txt files
+!Build/*/
+Build/*/**
+!Build/*/PakBlacklist*.txt
+
+# Don't ignore icon files in Build
+!Build/**/*.ico
+
+# Built data for maps
+*_BuiltData.uasset
+
+# Configuration files generated by the Editor
+Saved/*
+
+# Compiled source files for the engine to use
+Intermediate/*
+Plugins/*/Intermediate/*
+
+# Cache files for the editor to use
+DerivedDataCache/*
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/AsyncLoadingScreen.uplugin b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/AsyncLoadingScreen.uplugin
new file mode 100644
index 00000000..5cea2025
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/AsyncLoadingScreen.uplugin
@@ -0,0 +1,26 @@
+{
+ "FileVersion": 3,
+ "Version": 8,
+ "VersionName": "1.5.0",
+ "EngineVersion": "5.1.0",
+ "FriendlyName": "Async Loading Screen",
+ "Description": "Allows you to configure a Loading Screen system in the project settings easily and automatically add a Loading Screen in your game whenever you open a new level.",
+ "Category": "Loading Screen",
+ "CreatedBy": "Truong Bui",
+ "CreatedByURL": "https://github.com/truong-bui/AsyncLoadingScreen",
+ "DocsURL": "https://github.com/truong-bui/AsyncLoadingScreen",
+ "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/01f39767dc6b4290877f38365787cbf8",
+ "SupportURL": "https://github.com/truong-bui/AsyncLoadingScreen/issues",
+ "CanContainContent": true,
+ "Installed": true,
+ "Modules": [
+ {
+ "Name": "AsyncLoadingScreen",
+ "Type": "Runtime",
+ "LoadingPhase": "PreLoadingScreen",
+ "TargetDenyList": [
+ "Server"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Config/FilterPlugin.ini b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Config/FilterPlugin.ini
new file mode 100644
index 00000000..c5c8f817
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Config/FilterPlugin.ini
@@ -0,0 +1,10 @@
+[FilterPlugin]
+; This section lists additional files which will be packaged along with your plugin. Paths should be listed relative to the root plugin directory, and
+; may include "...", "*", and "?" wildcards to match directories, files, and individual characters respectively.
+;
+; Examples:
+; /README.txt
+; /Extras/...
+; /Binaries/ThirdParty/*.dll
+ /README.md
+ /LICENSE
\ No newline at end of file
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-5-point-star.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-5-point-star.uasset
new file mode 100644
index 00000000..48314cd1
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-5-point-star.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:699d63e3321cc22bd5fd3f8303b8e86b10cfb3fcae7283e3ad46b5d5c4373817
+size 4254
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-8-point-star.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-8-point-star.uasset
new file mode 100644
index 00000000..04c79722
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-8-point-star.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57856b7fbec743ff9930c3fed93c919746b1c4aa8890624bc4500eb3e0dc27d2
+size 3869
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-cat-print.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-cat-print.uasset
new file mode 100644
index 00000000..99103128
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-cat-print.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f97b6f0bbb336b6e5284ddaecf184a266e8e9c6b7a8c2ff0445f2df5002f534
+size 4798
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-circle.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-circle.uasset
new file mode 100644
index 00000000..92e782e9
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-circle.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a1fc7499d98dc49cbe72c4f162874f3010cb55f23946b16b4a16a1c178c7038
+size 4102
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-01.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-01.uasset
new file mode 100644
index 00000000..b8b6e12f
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dfac616dd48dfc7040e5ff1ea2d1565a4a316bbb7723063261be1cd9af0bfca4
+size 5038
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-02.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-02.uasset
new file mode 100644
index 00000000..afd0f429
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-02.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e4cc1afd16b09b5ae3615e117b16dfef700b2f60e5fa23f0413403b7501874d
+size 4989
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-03.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-03.uasset
new file mode 100644
index 00000000..40f36604
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-03.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8fe7324b28194c6800f3e8a6c70a7b9fafe9f1fb7649bdb8f81924de53ecb01c
+size 4648
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-04.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-04.uasset
new file mode 100644
index 00000000..b18d805a
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-flower-04.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d21afd324e016e7fbbc96ab374c5df115669c5afde832652b878381c53d14bf6
+size 5344
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-heart-card.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-heart-card.uasset
new file mode 100644
index 00000000..c9933885
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-heart-card.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dcd0996404018154f427a167484d5e0bacb0f711a333be2eb11a21f20ade8e9c
+size 4241
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-seal.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-seal.uasset
new file mode 100644
index 00000000..0d91bdf9
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-seal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee84aaa6478ea2fbab3ca685969df09d520e5d09af24393f81c4b6dc31377d24
+size 4340
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-sheriffs-badge.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-sheriffs-badge.uasset
new file mode 100644
index 00000000..8f27a54a
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Icon/icon-sheriffs-badge.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:77568ae3f909f3cc8d9004435edb13c9b9b8f6b3442b41cd2923686daad72972
+size 4366
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_1.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_1.uasset
new file mode 100644
index 00000000..14fc6533
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32d3de361d4280591d761507446f792822c882928b058f7e3ebd8d3ae1358b3c
+size 62041
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_2.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_2.uasset
new file mode 100644
index 00000000..44b3ecb2
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b01e5e18f2fa5fc895899620098003fada66199b29fe28b607041692da5d70d1
+size 55746
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_3.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_3.uasset
new file mode 100644
index 00000000..b11b4473
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2520fc18cc19a0ac84251b125ac8844d7ccf5263f6dcc039b3d48c9e19429fbe
+size 61505
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_4.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_4.uasset
new file mode 100644
index 00000000..792f9484
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d82a1aa67c27abe3285333a046fe11886a2721572c1dc9c19c6e0178def26fc
+size 56113
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_5.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_5.uasset
new file mode 100644
index 00000000..f1315fc6
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce474fafafeacf1bad83d80d49f732c2921f3a4678b571ecf00e930e9cd6afc1
+size 62325
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_6.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_6.uasset
new file mode 100644
index 00000000..885e0212
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9a8e66e33b937ec6ae26310818b4f84903730da354c2e7907cd635aa1493a45
+size 55716
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_7.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_7.uasset
new file mode 100644
index 00000000..60956ad5
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4add8b0cb1613e991df42e3023ffdb0db6787918bb5725396f00351971b77a3b
+size 63190
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_8.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_8.uasset
new file mode 100644
index 00000000..c3b2b09b
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon01_8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f534633111530fc2ee8d3ba538a077f39d47f17212e2ad1e75fd8597fb999eb7
+size 50644
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_1.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_1.uasset
new file mode 100644
index 00000000..cc98c52c
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8ac23d59439b9281d09183b199553fe6105a1b6517bc0bfd717a74e3a569743
+size 25158
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_10.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_10.uasset
new file mode 100644
index 00000000..a7c79f96
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_10.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e0fb70e39df7db4912defc23102394e12bbb6ad6db718ce35c00f1867e72b74
+size 28216
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_11.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_11.uasset
new file mode 100644
index 00000000..66486991
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_11.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc7fc44357c7f4d86da289b65b93ff76c055bdd3dc476a256883f3ebdfbfad59
+size 28727
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_12.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_12.uasset
new file mode 100644
index 00000000..94c7a4b4
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_12.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95263fb359540019b5b3b06947abcd754964ca5369d446c78fd3c886ab33533c
+size 25350
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_2.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_2.uasset
new file mode 100644
index 00000000..f64c1900
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2f955da2430f3716d222689e033d3df5e71ffd079b53e33b4e9e852b775cc845
+size 28780
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_3.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_3.uasset
new file mode 100644
index 00000000..f88e3f06
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a21dae6b42578984e1ba757bb33e1e5b33ce197687185823f8afbbac624f93fb
+size 26781
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_4.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_4.uasset
new file mode 100644
index 00000000..b59ed32e
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:58f1d965dcbe5784845c5b7897e4e382b02f8ffe8e1ab3573711ebd0de7c286f
+size 26021
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_5.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_5.uasset
new file mode 100644
index 00000000..cf25c964
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a62f7052e1c4418d51d73e0befa7b21def6441d3bcd007195e5080bb40a1ad8
+size 30160
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_6.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_6.uasset
new file mode 100644
index 00000000..9fe2d5ad
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50e0b3f9aff6961677d4a9cda3b234f3ceb85018c09e7600d72be44afe89fbfc
+size 26341
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_7.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_7.uasset
new file mode 100644
index 00000000..06706bfd
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3006a7c004f3534a21a359744525bdddc2154b4aa18e70039838bfe8222cae81
+size 26976
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_8.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_8.uasset
new file mode 100644
index 00000000..f9ea556f
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cec59c226bac867c23abb06cb59f48111c57f6b8fb0cba5dcbffad64392d6568
+size 29113
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_9.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_9.uasset
new file mode 100644
index 00000000..445a4506
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon02_9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1aa156780ece697cd1c2eb85145fc96032ad5214b740e0a6d8c2f657dd3d7541
+size 25821
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_1.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_1.uasset
new file mode 100644
index 00000000..959eeb69
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42fe04ea8055b492ea8db96d9a3de28e1e91b0072c942f5ec37d21aba165d886
+size 12940
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_10.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_10.uasset
new file mode 100644
index 00000000..cd1b3f8f
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_10.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:007d7618330bf3e2d5565edac4521aa4eaa6b3132636112765d9c2edfafaa5bb
+size 13253
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_11.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_11.uasset
new file mode 100644
index 00000000..7c9b2db6
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_11.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85246ca5b0fa4a7e6532c04d05cbb932b8e1929d5e1f9bfec6ffcdd54edf3b0c
+size 13258
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_12.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_12.uasset
new file mode 100644
index 00000000..04e8a7b1
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_12.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08a65955c8dfa5b59d0f5bece7aa63e9cda7bc45e986065ac39ff3125d961684
+size 12989
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_2.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_2.uasset
new file mode 100644
index 00000000..2a6c87ae
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d75cce0954ca47e69d05b78a69c66daa91d0365db051683a6274ddb953fb6eac
+size 12899
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_3.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_3.uasset
new file mode 100644
index 00000000..8a10c6cc
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9e62141422f4927754874057fb784615143880d2246d2294f4cbeca2b9f7bd0
+size 12928
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_4.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_4.uasset
new file mode 100644
index 00000000..e42f5ffa
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b09f8b2a4fc85070b8251e22727120eae174c16f99ae16eafa6d26edd4d5d649
+size 12799
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_5.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_5.uasset
new file mode 100644
index 00000000..252fd1e5
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2509b1de420887ca3c09b0bfce98f9c0e67412598d2a4678fed02614704e9b94
+size 12752
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_6.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_6.uasset
new file mode 100644
index 00000000..8316cc52
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b8793c074e58394ddc114cfb110d2a5ef92a7339a135289976e30a190f569fc2
+size 12688
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_7.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_7.uasset
new file mode 100644
index 00000000..de8e1197
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ac21de8177abff40fea6419dded508a7f181f51eeab8d911f68ed0b83d37805
+size 12801
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_8.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_8.uasset
new file mode 100644
index 00000000..d07f9a66
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64f9a8c35ea3d0af70d8734e798ecbbf1edc6fbc1517b4479d8ac75854f852fe
+size 12950
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_9.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_9.uasset
new file mode 100644
index 00000000..a2a16eb7
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/LoadingImages/LoadingIcon03_9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50b074144410fb0ee16f940dc621268476de51fb6a83dd68b74a54b5dd8cf763
+size 13118
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-0.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-0.uasset
new file mode 100644
index 00000000..89180553
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce4a0fee1ee199cb03ce928391cc99b79b3ed072422d6c46949cb07de7ec6752
+size 61425
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-1.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-1.uasset
new file mode 100644
index 00000000..98b204df
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:63b65b20e888d210ae3265e55f6f348d9e14113738a019532af79b41dd5226aa
+size 61530
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-2.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-2.uasset
new file mode 100644
index 00000000..65565d01
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b53ce6f227e9bdf37f3a5e7eedcc96ec8b66a07fd82f67d74c79f2f438831e6
+size 62475
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-3.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-3.uasset
new file mode 100644
index 00000000..99f7465d
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad02481f5d3efd09a5892c0d2a2f3af4ee55bb14d574e7691c3eea898cdc5527
+size 62525
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-4.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-4.uasset
new file mode 100644
index 00000000..85b0315b
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90602d443a436586d5d023b4d8666edcbacdf7ac11c150374a69e3ed6186777c
+size 64478
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-5.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-5.uasset
new file mode 100644
index 00000000..2779f4cf
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:604e9e631030e5d810e722cf79f99f95c999b5b9501e4cd74b1a91caa4bdcea6
+size 64507
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-6.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-6.uasset
new file mode 100644
index 00000000..651ebbde
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98b94dd448743dbe5e1a52817ae70d26012d3c695591b53f0febd0df4a068abf
+size 64506
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-7.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-7.uasset
new file mode 100644
index 00000000..f7fd078b
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/IdleImages/Mannequin_Idle-7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a217268f318d135f12b166ee52e93db69b542962cc4fc0e84697bcd84829b4c5
+size 63954
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-0.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-0.uasset
new file mode 100644
index 00000000..0d1b0516
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:70c6caec8bfc1cb32b4aa54ad899eed9a811480f345c11796e93900f32c86eac
+size 63779
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-1.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-1.uasset
new file mode 100644
index 00000000..97ee2a26
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:361525bcb3dfaed1dc15f02b381cd4f84818239c66eea61757d4b0154713a1bd
+size 60947
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-10.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-10.uasset
new file mode 100644
index 00000000..ffca4db6
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-10.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0a1bed6fa27c342af83b3d6a7097acae1427f71722492e218f8291f687b0215
+size 69329
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-11.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-11.uasset
new file mode 100644
index 00000000..f1d0337c
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-11.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e2ef7e35a604e1a3fc6edc897c626516fd2133d4b2fad0d0da6977d320d7ba2b
+size 72867
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-12.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-12.uasset
new file mode 100644
index 00000000..482c5502
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-12.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a452c46a4c35d99b2cb86f900dd446bfc9b898495806a61436f73f992725c65
+size 71154
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-13.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-13.uasset
new file mode 100644
index 00000000..9ab8ba61
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-13.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8af29097a9f3a1c9ed0b75b4c0c6c53248a89fc8c28516b502930d85b42cf6ff
+size 70395
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-14.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-14.uasset
new file mode 100644
index 00000000..bd44b90b
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-14.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f4c095b114502b9376466f96d84fbf6457354674b8f7ea73e9fd1bb86fecb1ac
+size 68674
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-15.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-15.uasset
new file mode 100644
index 00000000..a4346705
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-15.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81c32c0af3f6d310a8c1739e45e696cbaf998bac3418ab4500a755b84d35edba
+size 67596
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-2.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-2.uasset
new file mode 100644
index 00000000..d629a8eb
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5d426b8f7f81bd7437eb9666b5572956dbdb66d588af4fdc10516125134ed69
+size 69850
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-3.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-3.uasset
new file mode 100644
index 00000000..50351d6a
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d8ba3745cc65fab5ee1e6c5896e09591dfae2db7457af51b19a4b97c6a97bf1
+size 72228
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-4.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-4.uasset
new file mode 100644
index 00000000..94e11b4d
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:056f939d399d053d36e5d2157a62af0378f8b00a8e527c02fb53b680db998a42
+size 71201
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-5.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-5.uasset
new file mode 100644
index 00000000..e0880f80
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36babcc868cdfddc5bb9b70924c70f103b8d6601e3d92e3b0e49745f116c323e
+size 70784
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-6.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-6.uasset
new file mode 100644
index 00000000..3b998e0c
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4225c2f27c1d52c6609492bd1a6e40b3911c4aa1c7a55f043492b12411caf278
+size 68241
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-7.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-7.uasset
new file mode 100644
index 00000000..ece446df
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:754482ef9009bef6cf89eba8e864c0986a5b57bf4ab5333b6f26d58306719c4b
+size 64454
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-8.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-8.uasset
new file mode 100644
index 00000000..c85d04b2
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb35c5e847db324050978710be1f4803ef5a606cfb6c34a76219bb60aabeaa8c
+size 61527
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-9.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-9.uasset
new file mode 100644
index 00000000..2f618395
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/Mannequin/RunImages/Mannequin_Run-9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0ee749d90962fbc1f521369f9a17b7a413b11bca74b857ef1f03aa89309c6d9
+size 61662
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-0.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-0.uasset
new file mode 100644
index 00000000..b6294b43
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c8b8a9614a381a0fd325ea518daa5e027f2af4fdc80a3d4da0d8dda8f7d8d6f7
+size 31861
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-1.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-1.uasset
new file mode 100644
index 00000000..65543a14
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a7a151d55acf8ffe283e0a0490daf68abee15cb6475b59b13a1d3b4b4e75819
+size 31352
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-10.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-10.uasset
new file mode 100644
index 00000000..b5164db5
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-10.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68e4dbd528b9841104ff01c37a8f6d2fa1fc774ef6c90a1a34ae61df5dfe0585
+size 27869
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-11.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-11.uasset
new file mode 100644
index 00000000..1fa50439
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-11.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bd7978d7328ef0d892ffaf19a9c64ebf82341b36b1f6f5d998dacc20cee60b76
+size 28027
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-12.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-12.uasset
new file mode 100644
index 00000000..9ee5b232
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-12.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1045b678c6c882a1c2c21b7695682ceca6b6121dacf3a1ff829be98d4f31e46
+size 27150
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-13.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-13.uasset
new file mode 100644
index 00000000..c26bd26a
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-13.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50ad65d1680047ee76ff32e2e78587a125023e16897b77ecefc09b7a1e78715c
+size 27372
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-14.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-14.uasset
new file mode 100644
index 00000000..75c0691e
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-14.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a89b564dca20fb81b9b93635cd5e2a41e4e67c92bc8002188805fd4e75997aa
+size 26981
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-15.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-15.uasset
new file mode 100644
index 00000000..6a24addd
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-15.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:406227b4021fc3f8cf0a4d3e9b6fd8e4e74ca8a3bf612a720293a0319858e00c
+size 28108
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-2.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-2.uasset
new file mode 100644
index 00000000..cd467be0
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12204c5f2a0635b771c9a265844d26104b5a5fd7492f6d4be754b7d81106dbb9
+size 30478
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-3.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-3.uasset
new file mode 100644
index 00000000..5d223981
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43820354c912b7ac1e629e2458d875188fd786f60a458c5384a561d6afd51f2d
+size 30810
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-4.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-4.uasset
new file mode 100644
index 00000000..8611272e
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bed2e0b41d21d2dcb2865fc12e8f4451002fcbfbf66c0feb2641746d1b9ddc9a
+size 31598
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-5.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-5.uasset
new file mode 100644
index 00000000..7b22beb7
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b66e932e0d4da19542466d9f9f3c472fe2b26f628720e85c8726bbce7441467
+size 31518
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-6.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-6.uasset
new file mode 100644
index 00000000..6a7f172d
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35d48fd860bddbaf08f341f47460cc8ac79313f8ae6a8c4e8f2a143067a3c213
+size 32537
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-7.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-7.uasset
new file mode 100644
index 00000000..f434ab2e
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:082058f44a1e9861e334fa38a5ab36670f3a5d65db9ca965bc183f5e2f64528b
+size 32395
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-8.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-8.uasset
new file mode 100644
index 00000000..df784cab
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:270450091000953196546a0d0c9cc76f0db7ee43a70c37bc9f0d8cfe3c9effcd
+size 28690
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-9.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-9.uasset
new file mode 100644
index 00000000..985eb1d8
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/IdleImages/StickFigure_Idle-9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1dc1974126dafa8bede347ae3ad504cea35cc25f758cedc0f638d0b9ed9bfc00
+size 29406
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-0.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-0.uasset
new file mode 100644
index 00000000..186fb23e
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a3a679e1060b21329c259637631368d9bdd37f9145de3836e95caf85a0297ec
+size 28520
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-1.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-1.uasset
new file mode 100644
index 00000000..95f2f118
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9cd5e2919dfa93d40fe8a19ffc783c8cb545ea58817994a2257f0e266c1c39f9
+size 29351
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-10.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-10.uasset
new file mode 100644
index 00000000..165cea05
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-10.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c73d26d57ed5b599c5422a5338c5548e33971cf7e971a6b361e717190da94419
+size 32965
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-11.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-11.uasset
new file mode 100644
index 00000000..e4a99338
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-11.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8ea290d69c89135ae8b870e068ec75eb9cb36d46553ad86de94d9bdede5700b
+size 32357
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-12.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-12.uasset
new file mode 100644
index 00000000..e10cff2a
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-12.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03651d346d53ac4557fdadab646ebf777e7da1d283db35ada4152fd16da21316
+size 29804
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-13.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-13.uasset
new file mode 100644
index 00000000..8801eac5
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-13.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bebcbc10f40964c8864c6cb3c5f1b9b06c6bf3dc4aaddac78459441e5dc7f7d4
+size 30124
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-14.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-14.uasset
new file mode 100644
index 00000000..818aeaf0
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-14.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:66841da032f5f29209542e901bdcd5bacefc2a3e2545145d5424bfb885cdbbf6
+size 30635
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-15.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-15.uasset
new file mode 100644
index 00000000..7db521ee
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-15.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89bc9d8cdcad1affacfa307459c2a878576946fd70a636a3ff3f7c5ec135bf23
+size 32309
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-2.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-2.uasset
new file mode 100644
index 00000000..ccbb4752
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0c5ff9fda8ab9d8aec9cb6441ca65656a658d9403802d89bb0fe556258b818e
+size 31402
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-3.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-3.uasset
new file mode 100644
index 00000000..628ffbb3
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8de4d2bd772a173aa2e1757d74975f9207d9d379cb770ce2107c0227d09bbeb3
+size 31467
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-4.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-4.uasset
new file mode 100644
index 00000000..d1a6c1ac
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bde729f805b14ce5ac4f9eabce0774c2dab7a8b917db8b17e94556f435713946
+size 30842
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-5.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-5.uasset
new file mode 100644
index 00000000..6d2a03a6
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e57d3e6d821776298474efe851866051680435a24721327fb70e57f85ffe829a
+size 30803
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-6.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-6.uasset
new file mode 100644
index 00000000..e3707693
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b1b20ecb9ea49d36789ac52b2a0aee80f4086ddf2f7fb480f07d930bc791bff
+size 29802
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-7.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-7.uasset
new file mode 100644
index 00000000..16603c6f
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a0d551d1191b19bbc840e9d8206cce8d10b1409cefa66a39b438a2994c5246c
+size 29376
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-8.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-8.uasset
new file mode 100644
index 00000000..b062837a
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:564f74e7187608c7f3e94771ea2aef3dd324ff9caced23a0b702ce2a953fe17e
+size 35221
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-9.uasset b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-9.uasset
new file mode 100644
index 00000000..0fd86180
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Content/Default/StickFigure/RunImages/StickFigure_Run-9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:147b473ab3489d967a66d8e09e73836778bd8c930d2d6252c155e7f60f09facf
+size 30483
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/LICENSE b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/LICENSE
new file mode 100644
index 00000000..f28b7edd
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Truong Bui
+
+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.
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/README.md b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/README.md
new file mode 100644
index 00000000..63d8fde0
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/README.md
@@ -0,0 +1,447 @@
+
+
+
+
+
+
+# Contents
+- [Trailer](#trailer)
+- [About](#about)
+- [How it works](#how-it-works)
+- [Features](#features)
+- [Changelog](#changelog)
+- [Requirements](#requirements)
+- [Installation](#installation)
+ - [Clone from Github](#clone-from-github)
+ - [Download from Marketplace](#download-from-marketplace)
+ - [Setup](#setup)
+- [Architecture](#architecture)
+- [Tutorial](#tutorial)
+ - [1) Create Testing Levels and Blueprints](#1-create-testing-levels-and-blueprints)
+ - [2) Gathering images and movies](#2-gathering-images-and-movies)
+ - [3) Setup Startup Movies](#3-setup-startup-movies)
+ - [4) Configure Default Loading Screen setting](#4-configure-default-loading-screen-setting)
+ - [4.1) Default Loading Screen - Background setting](#41-default-loading-screen---background-setting)
+ - [4.2) Default Loading Screen - Tip Widget setting](#42-default-loading-screen---tip-widget-setting)
+ - [4.3) Default Loading Screen - Loading Widget setting](#43-default-loading-screen---loading-widget-setting)
+ - [5) Configure Classic Layout setting](#5-configure-classic-layout-setting)
+ - [6) Image Sequence Settings](#6-image-sequence-settings)
+ - [7) Set proper background and tip for each level](#7-set-proper-background-and-tip-for-each-level)
+- [Showcases](#showcases)
+- [Donate](#donate)
+- [License](#license)
+- [Acknowledgment](#acknowledgment)
+
+
+# Trailer
+
+[![Unreal Engine Async Loading Screen Plugin](http://i3.ytimg.com/vi/3rwsNYPUr0I/hqdefault.jpg)](https://youtu.be/3rwsNYPUr0I "Unreal Engine Async Loading Screen Plugin")
+
+# About
+
+Loading screens aren't trivial in general, especially in Unreal Engine. And this makes a lot of UE newcomers are confused at first. Due to User Widget is destroyed at level transition, and level loading runs on the main thread, it blocks any other game activities until it's completed. That's why you need to use Level Streaming for loading screens otherwise your widget blueprint will not work. You have to manually control which object is loaded/unloaded, you can't use different Game Mode, Player Controller for each level, and sometimes there's still occasional freezing.
+
+That said, you may need to change your game logic to fit with Level Streaming mechanic and it requires a lot of works to achieve a simple thing: Add a Loading Screen. To create a custom loading screen without Level Streaming, you have to do it in Unreal C++. However, this is a hard task for artists and designers, even for developers who are not familiar with the Slate framework and engine module code. Async Loading Screen plug-in comes to a savior.
+
+Async Loading Screen allows you to easily configure a Loading Screen System in the project settings, and automatically add a Loading Screen whenever you open a new level. Async Loading Screen also comes with pre-design UI layouts and default icons that make it easy to custom your loading screen in a few minutes (less than 5 minutes I swear).
+
+# How it works
+
+Async Loading Screen uses MoviePlayer to play a movie at level transition, on a different thread than game thread. MoviePlayer is not only playing movie files but also can display a Slate widget on top of the movie. We use this widget for the loading screen.
+
+MoviePlayer is registered to PreLoadMap and PostLoadMapWithWorld delegates so it will be called and shut down automatically by the engine whenever you open a new level.
+
+# Features
+
+- Easy to set up, easy to use.
+- Customizable pre-make responsive layouts.
+- Customizable loading icons.
+- Pre-make default loading icons.
+- Supported animating images sequence.
+- Supported on all major platforms.
+- Easily play movies, audio files.
+- No need for coding.
+- No temporary maps, no level streaming.
+- Automatically handles all level transitions.
+- Integrates seamlessly with an existing project.
+
+# Changelog
+
+### Version 1.5.0 (6/4/2023)
+- Add "PreloadBackgroundImages" option
+- Add Blueprint functions "PreloadBackgroundImages" and "RemovePreloadedBackgroundImages" to load and remove all the background images.
+
+![image](https://user-images.githubusercontent.com/1840964/230429985-6d353486-0389-448c-8e37-d4f9dd3505ae.png)
+![image](https://user-images.githubusercontent.com/1840964/230430019-fb5ab524-7f59-4201-b263-00cbc17672f0.png)
+
+### Version 1.4.0 (25/1/2023)
+- Fixed unintialized errors
+- Add Blueprint function "SetEnableLoadingScreen" to show/hide Loading Screen. Call this function before call the "OpenLevel" node
+
+![ALS-ShowHideLoadingScreen](https://user-images.githubusercontent.com/1840964/214602739-ebcdd994-08a4-4837-96b5-c5596efbdcb1.png)
+
+### Version 1.3.0 (29/08.2021)
+- Supports Unreal Engine 4.27 (Select other branches for other UE versions)
+- Added option for hiding Loading Widget when level loading completes
+![image](https://user-images.githubusercontent.com/1840964/131251300-dbf13ed7-26ae-4965-a119-7b51b29dfe52.png)
+- Moved animating Image Sequence into OnPaint function
+---
+### Version 1.2 (11/01.2021)
+- Added new blueprint library function **Stop Loading Screen**. To use this function, you must enable the **Allow Engine Tick** option. Call this function in **BeginPlay** event to stop the Loading Screen (works with Delay node):
+
+![async-loading-screen-01](https://user-images.githubusercontent.com/1840964/104131830-a3f22300-53ab-11eb-8543-3e8ba6ef2609.png)
+
+- Added **Show Loading Complete Text** option and **Loading Complete Text Settings** section, which show a text when level loading is complete. Note that you need to set **Wait For Manual Stop** = true, and **Minimum Loading Screen Display Time** = -1, this also allows players press any key to stop the Loading Screen by themself.
+
+Show Loading Complete Text Settings:
+![async-loading-screen-02](https://user-images.githubusercontent.com/1840964/104131945-896c7980-53ac-11eb-870a-b7987364f00c.png)
+
+Example:
+![async-loading-screen-03](https://user-images.githubusercontent.com/1840964/104131958-ad2fbf80-53ac-11eb-92a7-8951cbe2061e.png)
+
+---
+
+### Version 1.1 (14/09/2020):
+- Added Shuffle option in the movie setting.
+- Implemented set specific background/tip/movie for each level.
+- Added SetDisplayBackgroundManually, SetDisplayTipTextManually, SetDisplayMovieManually options.
+- Changed TipWidgetVerticalPadding to BorderVerticalOffset in Center Layout settings.
+- Changed WidgetHorizontalPadding to BorderHorizontalOffset in Sidebar Layout settings.
+- Add Async Loading Screen Function Library with 3 Blueprint functions:
+![function-library-01](https://user-images.githubusercontent.com/1840964/93088595-577c2c80-f6c4-11ea-8f23-ec9d065277dc.png)
+
+# Requirements
+
+~~Async Loading Screen plug-in requires Visual Studio and a C++ code project. If your project is blueprint based then you will need to convert it to C++ project otherwise you cannot package your game with code plug-in.~~ It doesn't require c++ project anymore.
+
+# Installation
+
+> :warning: **After installed Async Loading Screen plugin, the "Project/Movies" setting won't work anymore. You need to set up your startup movies in the 'Startup Loading Screen' section of the plugin's setting.**
+
+- ## Clone from Github
+Clone this repository into your project's /Plugins folder, make one if it doesn’t exist, then compile your game in Visual Studio. If your project is blueprint based you’ll need to convert it to a c++ project by adding any c++ class. Supports Engine version from 4.23 and above.
+
+- ## Download from Marketplace
+Download Async Loading Screen from [Marketplace](https://www.unrealengine.com/marketplace/en-US/product/async-loading-screen) and enable the plugin in Plugins.
+
+- ## Setup
+You can disable/enable the plugin in **Edit→Plugins→Project/Loading Screen**. You configure the plug-in settings in project settings **Project Settings/Game/Async Loading Screen**.
+
+![async-loading-screen-screenshot-01](https://user-images.githubusercontent.com/1840964/91760594-d02bb500-ebfd-11ea-85fc-08c5a556a903.png)
+
+# Architecture
+Async Loading Screen has four main components: Background, Loading Widget, Tip Widget, and Layout.
+
+## Background
+The background is a static image, you can add many images as you want, it will be displayed randomly (unless **Set Display Background Manually** option is enabled). Leave it empty if you just want to show a movie instead of a static image.
+
+- Background Setting:
+
+![background-settings](https://user-images.githubusercontent.com/1840964/93088749-8397ad80-f6c4-11ea-9a85-5399efea3ddd.png)
+
+## Tip Widget
+Just some useful texts that will be shown randomly (unless **Set Display Tip Text Manually** option is enabled) for players to have something to look at while waiting for a new level loaded.
+
+- Tip Widget Setting:
+
+![tip-widget-settings](https://user-images.githubusercontent.com/1840964/93089000-df623680-f6c4-11ea-82fb-e2a44f9a524f.png)
+
+## Loading Widget
+This is the most important component of the plug-in, Loading Widget lets players know that the game is still running and not freezing.
+
+Loading Widget has two parts: Loading Icon and Loading Text. The Loading Text is just a text shown beside the Loading Icon, we mostly care about the Loading Icon. Async Loading Screen supports 3 types of Loading Icon: Throbber, Circular Throbber, and Image Sequence.
+
+- Loading Widget Setting:
+
+![loading-widget-settings](https://user-images.githubusercontent.com/1840964/92412275-7edb7280-f175-11ea-9ef7-c02f183f5c88.png)
+
+### Loading Icon
+
+- Throbber Setting:
+
+![throbber-settings](https://user-images.githubusercontent.com/1840964/92412332-b9dda600-f175-11ea-986c-852cc93cf61c.png)
+
+- Throbber loading icon example:
+
+![throbber-loading-01](https://user-images.githubusercontent.com/1840964/92412429-10e37b00-f176-11ea-999b-bdeab20cf922.gif) ![throbber-loading-02](https://user-images.githubusercontent.com/1840964/92412452-1fca2d80-f176-11ea-838e-a5ccb55ea72d.gif)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+- Circular Throbber Setting:
+
+![circular-throbber-settings](https://user-images.githubusercontent.com/1840964/92413277-8735ac80-f179-11ea-8e16-ab5e08be1595.png)
+
+- Circular Throbber loading icon example:
+
+![circular-throbber-loading-01](https://user-images.githubusercontent.com/1840964/92412600-a2eb8380-f176-11ea-9a6f-ab162490a9e3.gif) ![circular-throbber-loading-02](https://user-images.githubusercontent.com/1840964/92412750-450b6b80-f177-11ea-8af8-9eb68cea0155.gif)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+- Image Sequence Setting:
+
+![image-sequence-settings](https://user-images.githubusercontent.com/1840964/92413824-0e841f80-f17c-11ea-896a-3e16e8291967.png)
+
+- Image Sequence loading icon examples:
+
+![image-sequence-loading-03](https://user-images.githubusercontent.com/1840964/92539810-c98be600-f26c-11ea-832c-770af9438050.gif)
+![image-sequence-loading-01](https://user-images.githubusercontent.com/1840964/92413859-2fe50b80-f17c-11ea-9254-74ebd073a0eb.gif)
+![image-sequence-loading-02](https://user-images.githubusercontent.com/1840964/92413848-26f43a00-f17c-11ea-8f72-c658e3f904a0.gif)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+## Layout
+This is the way Async Loading Screen widgets are arranged on the screen. In version 1.0 Async Loading Screen supports 5 different Layouts: Classic, Center, Letterbox, Sidebar, and Dual Sidebar.
+
+- Layout Settings:
+
+![layout-settings](https://user-images.githubusercontent.com/1840964/92414921-af74d980-f180-11ea-9957-7032f171e843.png)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+- Classic layout example:
+
+![classic-layout-01](https://user-images.githubusercontent.com/1840964/92415877-14cac980-f185-11ea-870a-dc8a7e7d68ea.jpg)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+- Center layout example:
+
+![center-layout-01](https://user-images.githubusercontent.com/1840964/92416035-c833be00-f185-11ea-8d7d-625b4166ca26.jpg)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+- Letterbox layout example:
+
+![letterbox-layout-01](https://user-images.githubusercontent.com/1840964/92416029-c2d67380-f185-11ea-92f9-f7f9021b825f.jpg)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+- Sidebar layout example:
+
+![sidebar-layout-01](https://user-images.githubusercontent.com/1840964/92416031-c4a03700-f185-11ea-9938-b63f1a2971fa.jpg)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+- Dual Sidebar layout example:
+
+![dual-sidebar-layout-01](https://user-images.githubusercontent.com/1840964/92416037-c964eb00-f185-11ea-8ed4-086bb49fc52a.jpg)
+
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+# Tutorial
+In this tutorial, I will use a blank C++ project with UE version 4.25. But you can freely integrate Async Loading Screen plugin into your existing projects without problems. You should install the plugin following [Installation](#installation) steps above.
+
+## 1) Create Testing Levels and Blueprints
+- First, we create two empty levels named **Level_1** and **Level_2** for testing purposes:
+
+![tutorial-02](https://user-images.githubusercontent.com/1840964/92516241-1c4ea900-f23f-11ea-9e32-76b67f2c96a9.png)
+
+- Create BP_GameMode, BP_PlayerController, and an UMG blueprint WBP_OpenLevelButton:
+
+![tutorial-03](https://user-images.githubusercontent.com/1840964/92516572-95e69700-f23f-11ea-9a81-c9e4fb9fa0e4.png)
+
+- In WBP_OpenLevelButton, create a button at the center of the screen:
+
+![tutorial-04](https://user-images.githubusercontent.com/1840964/92516863-fece0f00-f23f-11ea-81f4-6dabd9c05d66.png)
+
+- In WBP_OpenLevelButton graph, add the following nodes in the button's OnClick event:
+
+![tutorial-05](https://user-images.githubusercontent.com/1840964/92517440-dd215780-f240-11ea-855c-0f41e8f66046.png)
+
+- In BP_PlayerController, create that widget and add to the viewport:
+
+![tutorial-06](https://user-images.githubusercontent.com/1840964/92517611-1eb20280-f241-11ea-9bc1-f84521432e41.png)
+
+- Also enable "Show Mouse Cursor" option in BP_PlayerController:
+
+![tutorial-07](https://user-images.githubusercontent.com/1840964/92517958-cb8c7f80-f241-11ea-83fc-2a74ecdbc4db.png)
+
+- Change default GameMode to our BP_GameMode and BP_PlayerController in "Project/Maps & Modes" setting:
+
+![tutorial-08](https://user-images.githubusercontent.com/1840964/92518004-dfd07c80-f241-11ea-900d-dd89e4163325.png)
+
+- Add two maps to the included list in "Projects/Packaging" setting so you don't have to see annoying warnings when Launch:
+
+![tutorial-09](https://user-images.githubusercontent.com/1840964/92518328-5cfbf180-f242-11ea-9b8b-e7452dff4454.png)
+
+- Note that to see the plugin is actually working, you need to play as Standalone Game or Launch button. Play in Editor will not work due to different level managing of Play in Editor and packaged game:
+
+![tutorial-10](https://user-images.githubusercontent.com/1840964/92521633-c3cfd980-f247-11ea-984b-98f17d604387.png)
+
+If you play Standalone Game or Launch the game you will see a black screen with a white panel shows up very quickly. We'll need a little setting up to make the loading screen looks better.
+
+---
+
+## 2) Gathering images and movies
+You can use your own assets instead but for this tutorial, I'll use Unreal Engine 5 Wallpapers Desktop from this [post](https://forums.unrealengine.com/unreal-engine/announcements-and-releases/1760020-share-your-excitement-for-unreal-engine-5-with-free-wallpapers-gifs-and-more) and UE4 Startup Video Files from this [page](https://www.unrealengine.com/en-US/branding). Here are links download for you:
+- [UE5 Wallpapers - Desktop](https://epicgames.ent.box.com/s/zuorr34ojf3010k71tiv2c79s266v12b/folder/112871747507)
+- [UE4 Startup Video Files](https://epicgames.ent.box.com/s/t94yqy3lxb3mlytmqf5znrr2pobus3fm)
+
+- Create a "Movies" folder in the "Content" folder and copy your movie files into the "Content/Movies" folder (don't import movies into the project just copy the original movie files):
+
+![tutorial-11](https://user-images.githubusercontent.com/1840964/92527405-24afdf80-f251-11ea-97f0-ebe893e27986.png)
+
+- Import your background images into the project:
+
+![tutorial-12](https://user-images.githubusercontent.com/1840964/92527677-96882900-f251-11ea-8cb3-b99c41925337.png)
+
+---
+
+## 3) Setup Startup Movies
+
+Now go to "Game/Async Loading Screen" setting in the Project Settings and open "Startup Loading Screen" section. This Startup Loading Screen only shows once when the player first opens the game so usually, you don't want to show a loading screen here. Instead, you'll want to show a UE4 logo intro movie, your studio logo movie, your sponsor 1 logo movie, your sponsor 2 logo movie, or some weird shit movies, depending on you.
+
+- Uncheck "Auto Complete when Loading Completes" option so we can see the movies play till end
+- Add your movie path without extension in "Movie Paths" array
+
+Here is the Startup Loading Screen setting:
+
+![tutorial-13](https://user-images.githubusercontent.com/1840964/92529902-8eca8380-f255-11ea-92a4-a1c3ed376d62.png)
+
+Click play Standalone Game or Launch button, you will see UE4 logo movie show up here.
+
+---
+
+## 4) Configure Default Loading Screen setting
+
+Open "Default Loading Screen" setting, here we actually set up a loading screen for our game. You can leave most of options default but for testing purpose, we'll change some options.
+
+- Set "Minimum Loading Screen Display Time" value to 10 (I recommend setting it to -1 in packaged games)
+- Set "Layout" to Classic for this tutorial.
+
+Here is Default Loading Screen setting:
+
+![tutorial-14](https://user-images.githubusercontent.com/1840964/92531295-33e65b80-f258-11ea-98d7-489521a93a87.png)
+
+### 4.1) Default Loading Screen - Background setting
+
+Open "Background" setting in the Default Loading Screen section. Add your background images to the Images array. You can leave other options default:
+
+![tutorial-15](https://user-images.githubusercontent.com/1840964/92533170-13b89b80-f25c-11ea-9542-3947df9a0079.png)
+
+### 4.2) Default Loading Screen - Tip Widget setting
+
+Open "Tip Widget" setting in the Default Loading Screen. Add some useful texts, you can change text's appearance like color, font, shadow effect here:
+
+![tutorial-16](https://user-images.githubusercontent.com/1840964/92533302-5b3f2780-f25c-11ea-9975-24f0c09c6e03.png)
+
+### 4.3) Default Loading Screen - Loading Widget setting
+Open "Loading Widget" setting in the Default Loading Screen, here we will custom our loading icon. If you open AsyncLoadingScreen Content folder, you can see there are a lot of default loading images I had made. We'll use those default images in this tutorial.
+
+![tutorial-17](https://user-images.githubusercontent.com/1840964/92533833-81b19280-f25d-11ea-91b5-239bea77ba1a.png)
+
+- Set "Loading Icon Type" to "Throbber"
+- Set "Loading Widget Type" to "Horizontal"
+- Open "Throbber Settings" and select icon-cat-print in "Image" option
+- Set "Space" value to 20
+
+You can leave other options default.
+
+![tutorial-18](https://user-images.githubusercontent.com/1840964/92534376-ce499d80-f25e-11ea-8a13-98ef026b34bf.png)
+
+---
+## 5) Configure Classic Layout setting
+Because we already chose the Classic layout in previous step so we will configure the Classic layout and ignore other layouts. Open "Classic" setting in Layout category and change following options:
+
+- Set "Border Padding" to 20
+- Open "Border Background" option and set Tint color (R:0.1, G:0.1, B:0.1, A:0.8)
+
+You can leave other options default.
+
+![tutorial-19](https://user-images.githubusercontent.com/1840964/92535368-4749f480-f261-11ea-9fe5-76ff2e5dd215.png)
+
+---
+
+Alright! Now you can click play Standalone Game or Launch button to see your loading screen.
+
+![tutorial-20](https://user-images.githubusercontent.com/1840964/92536073-f6d39680-f262-11ea-8c42-8f540aea6217.jpg)
+
+
+## 6) Image Sequence Settings
+Async Loading Screen also supports custom loading icon using Image Sequence. Open "Loading Widget" and change following options:
+
+- Set "Loading Icon Type" to "Image Sequence"
+- Open "Image Sequence Settings" and add all images in folder "Default/Mannequin/RunImages" to Images array
+
+You can leave other options default.
+
+![tutorial-21](https://user-images.githubusercontent.com/1840964/92536598-48c8ec00-f264-11ea-8e35-73b14364e3bb.png)
+
+Click play or Launch button and you'll see the Mannequin is running as a loading icon:
+
+![tutorial-22](https://user-images.githubusercontent.com/1840964/92536933-0eac1a00-f265-11ea-8d62-c173e632b55a.jpg)
+
+---
+## 7) Set proper background and tip for each level:
+In updated version 1.1, Async Loading Screen supports display specific background/tip/movie for each level as you want. In this tutorial we'll show proper background and tip for **Level_1** and **Level_2**:
+
+- Open **Background** setting and enable **Set Display Background Manually**.
+![tutorial-23](https://user-images.githubusercontent.com/1840964/93087118-534f0f80-f6c2-11ea-94e3-4d3c0fc27c55.png)
+
+- Open **Tip Widget** setting, enable **Set Display Tip Text Manually** and add 2 more following texts in **TipText** array:
+![tutorial-24](https://user-images.githubusercontent.com/1840964/93087270-842f4480-f6c2-11ea-9e8f-d79ff58dd35b.png)
+
+- Open **WBP_OpenLevelButton** blueprint, in On Clicked event, set **Background Index=4, Tip Text Index=2** before **Open Level=Level_2** and **Background Index=2, Tip Text Index=1** before **Open Level=Level_1**:
+![tutorial-25](https://user-images.githubusercontent.com/1840964/93087474-ceb0c100-f6c2-11ea-8502-5a5615fd15eb.png)
+
+- Now click play Standalone Game or Launch button, you'll see Async Loading Screen always show Background index 4, TipText index 2 when loading Level_2, and Background index 2, TipText index 1 when loading Level_1.
+
+---
+
+Congratulation! We have finished the tutorial. You should try other layouts and settings to see which is fit for your game.
+
+
+# Showcases
+
+- [Colors:Zero](http://www.colors-zero.com/)
+
+![Colors:Zero](https://user-images.githubusercontent.com/1840964/233838182-2c8cd8fa-dc49-41ed-b536-27a8650fe98a.jpg)
+
+---
+
+- [Elven Warmaiden](https://store.steampowered.com/app/1878000/Elven_Warmaiden/)
+
+![Elven Warmaiden](https://cdn.akamai.steamstatic.com/steam/apps/1878000/header.jpg?t=1644526061)
+
+---
+- [Logic - Keypad](https://store.steampowered.com/app/2265160/Logic__Keypad/)
+
+![logic-keypad](https://user-images.githubusercontent.com/1840964/215274878-c6dd3aa1-6b9c-4f4a-af41-de083943c8ef.jpg)
+
+---
+- [Witchtastic](https://store.steampowered.com/app/1080010/Witchtastic/)
+
+![witchtastic](https://user-images.githubusercontent.com/1840964/198943299-529b153a-322d-4431-bec9-9046147ced43.jpg)
+
+---
+- [Cursed Spire](https://www.youtube.com/watch?v=ZZlxmdRDRMI)
+
+![cursed-spire-async-loading-screen](https://user-images.githubusercontent.com/1840964/93096502-ac24a500-f6ce-11ea-9f6a-613c7a6bb926.gif)
+
+---
+
+- [Pumpkin Jack](https://www.pumpkin-jack.com/)
+
+![pumpkin-jack](https://user-images.githubusercontent.com/1840964/99428459-41475280-2939-11eb-86a5-b27f39b73037.png)
+
+---
+- [Cions of Vega](https://tongucbodur.com/vega)
+
+![cions-of-vega](https://user-images.githubusercontent.com/1840964/120698381-2d300080-c4d9-11eb-96bd-9c0fe71f6813.jpg)
+
+---
+- [BrightSeeker](https://store.steampowered.com/app/1491950/BrightSeeker/)
+
+![BrightSeeker_Scr_(4)](https://user-images.githubusercontent.com/1840964/133012031-f5e91478-5e32-470d-9c8c-df6f13fcf630.png)
+
+---
+If you're using Async Loading Screen plugin in your game and would like to showcase here, shoot me an email about your game's info, including screenshots(gif/png/jpeg/video) of your in-game loading screen.
+
+# Donate
+If Async Loading Screen is useful for you or your team, you can [buy me a coffee](https://www.buymeacoffee.com/truongbui) to support this project.
+
+# License
+Async Loading Screen plug-in is licensed under the [MIT](LICENSE) License.
+
+# Acknowledgment
+
+Async Loading Screen plug-in is inspired from [Loading Screen](https://github.com/ue4plugins/LoadingScreen) plug-in by Nick Darnell.
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon128.png b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon128.png
new file mode 100644
index 00000000..10abbead
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon128.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5daa8165f3e6c0a48de505ae8bd70e33cb566bfe1ab77cfa902b6753db23acbe
+size 8066
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon256.png b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon256.png
new file mode 100644
index 00000000..ed44ccc9
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon256.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4db9b7bdd26aa06a077bb1ec21ff90ae470ec6acf9aa978c892c9ff30865cc0
+size 14928
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon512.png b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon512.png
new file mode 100644
index 00000000..4e3f28dd
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon512.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09714dbee5f8580c94570c466ed42d085781bcf40a8cab751a5eab57307fb9ae
+size 26047
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon64.png b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon64.png
new file mode 100644
index 00000000..07e854c0
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Resources/Icon64.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fb6fc3591ef767b5ea67afbdf87cb4bd393c4fa51b5afb379b52212bd349205
+size 4122
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/AsyncLoadingScreen.Build.cs b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/AsyncLoadingScreen.Build.cs
new file mode 100644
index 00000000..274303b0
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/AsyncLoadingScreen.Build.cs
@@ -0,0 +1,55 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+using UnrealBuildTool;
+
+public class AsyncLoadingScreen : ModuleRules
+{
+ public AsyncLoadingScreen(ReadOnlyTargetRules Target) : base(Target)
+ {
+ PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
+
+ PublicIncludePaths.AddRange(
+ new string[] {
+ // ... add public include paths required here ...
+ }
+ );
+
+
+ PrivateIncludePaths.AddRange(
+ new string[] {
+ // ... add other private include paths required here ...
+ }
+ );
+
+
+ PublicDependencyModuleNames.AddRange(
+ new string[]
+ {
+ "Core"
+ // ... add other public dependencies that you statically link with here ...
+ }
+ );
+
+
+ PrivateDependencyModuleNames.AddRange(
+ new string[]
+ {
+ "CoreUObject",
+ "Engine",
+ "Slate",
+ "SlateCore",
+ "MoviePlayer",
+ "DeveloperSettings"
+ // ... 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/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/AsyncLoadingScreen.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/AsyncLoadingScreen.cpp
new file mode 100644
index 00000000..27f51c5b
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/AsyncLoadingScreen.cpp
@@ -0,0 +1,201 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "AsyncLoadingScreen.h"
+#include "MoviePlayer.h"
+#include "LoadingScreenSettings.h"
+#include "SCenterLayout.h"
+#include "SClassicLayout.h"
+#include "SLetterboxLayout.h"
+#include "SSidebarLayout.h"
+#include "SDualSidebarLayout.h"
+#include "Framework/Application/SlateApplication.h"
+#include "AsyncLoadingScreenLibrary.h"
+#include "Engine/Texture2D.h"
+
+#define LOCTEXT_NAMESPACE "FAsyncLoadingScreenModule"
+
+void FAsyncLoadingScreenModule::StartupModule()
+{
+ // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
+ if (!IsRunningDedicatedServer() && FSlateApplication::IsInitialized())
+ {
+ const ULoadingScreenSettings* Settings = GetDefault();
+
+ if (IsMoviePlayerEnabled())
+ {
+ GetMoviePlayer()->OnPrepareLoadingScreen().AddRaw(this, &FAsyncLoadingScreenModule::PreSetupLoadingScreen);
+ }
+
+ // If PreloadBackgroundImages option is check, load all background images into memory
+ if (Settings->bPreloadBackgroundImages)
+ {
+ LoadBackgroundImages();
+ }
+
+ // Prepare the startup screen, the PreSetupLoadingScreen callback won't be called
+ // if we've already explicitly setup the loading screen
+ bIsStartupLoadingScreen = true;
+ SetupLoadingScreen(Settings->StartupLoadingScreen);
+ }
+}
+
+void FAsyncLoadingScreenModule::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.
+ if (!IsRunningDedicatedServer())
+ {
+ // TODO: Unregister later
+ GetMoviePlayer()->OnPrepareLoadingScreen().RemoveAll(this);
+ }
+}
+
+bool FAsyncLoadingScreenModule::IsGameModule() const
+{
+ return true;
+}
+
+TArray FAsyncLoadingScreenModule::GetBackgroundImages()
+{
+ return bIsStartupLoadingScreen ? StartupBackgroundImages : DefaultBackgroundImages;
+}
+
+void FAsyncLoadingScreenModule::PreSetupLoadingScreen()
+{
+ UE_LOG(LogTemp, Warning, TEXT("PreSetupLoadingScreen"));
+ const bool bIsEnableLoadingScreen = UAsyncLoadingScreenLibrary::GetIsEnableLoadingScreen();
+ if (bIsEnableLoadingScreen)
+ {
+ const ULoadingScreenSettings* Settings = GetDefault();
+ bIsStartupLoadingScreen = false;
+ SetupLoadingScreen(Settings->DefaultLoadingScreen);
+ }
+}
+
+void FAsyncLoadingScreenModule::SetupLoadingScreen(const FALoadingScreenSettings& LoadingScreenSettings)
+{
+ TArray MoviesList = LoadingScreenSettings.MoviePaths;
+
+ // Shuffle the movies list
+ if (LoadingScreenSettings.bShuffle == true)
+ {
+ ShuffleMovies(MoviesList);
+ }
+
+ if (LoadingScreenSettings.bSetDisplayMovieIndexManually == true)
+ {
+ MoviesList.Empty();
+
+ // Show specific movie if valid otherwise show original movies list
+ if (LoadingScreenSettings.MoviePaths.IsValidIndex(UAsyncLoadingScreenLibrary::GetDisplayMovieIndex()))
+ {
+ MoviesList.Add(LoadingScreenSettings.MoviePaths[UAsyncLoadingScreenLibrary::GetDisplayMovieIndex()]);
+ }
+ else
+ {
+ MoviesList = LoadingScreenSettings.MoviePaths;
+ }
+ }
+
+ FLoadingScreenAttributes LoadingScreen;
+ LoadingScreen.MinimumLoadingScreenDisplayTime = LoadingScreenSettings.MinimumLoadingScreenDisplayTime;
+ LoadingScreen.bAutoCompleteWhenLoadingCompletes = LoadingScreenSettings.bAutoCompleteWhenLoadingCompletes;
+ LoadingScreen.bMoviesAreSkippable = LoadingScreenSettings.bMoviesAreSkippable;
+ LoadingScreen.bWaitForManualStop = LoadingScreenSettings.bWaitForManualStop;
+ LoadingScreen.bAllowInEarlyStartup = LoadingScreenSettings.bAllowInEarlyStartup;
+ LoadingScreen.bAllowEngineTick = LoadingScreenSettings.bAllowEngineTick;
+ LoadingScreen.MoviePaths = MoviesList;
+ LoadingScreen.PlaybackType = LoadingScreenSettings.PlaybackType;
+
+ if (LoadingScreenSettings.bShowWidgetOverlay)
+ {
+ const ULoadingScreenSettings* Settings = GetDefault();
+
+ switch (LoadingScreenSettings.Layout)
+ {
+ case EAsyncLoadingScreenLayout::ALSL_Classic:
+ LoadingScreen.WidgetLoadingScreen = SNew(SClassicLayout, LoadingScreenSettings, Settings->Classic);
+ break;
+ case EAsyncLoadingScreenLayout::ALSL_Center:
+ LoadingScreen.WidgetLoadingScreen = SNew(SCenterLayout, LoadingScreenSettings, Settings->Center);
+ break;
+ case EAsyncLoadingScreenLayout::ALSL_Letterbox:
+ LoadingScreen.WidgetLoadingScreen = SNew(SLetterboxLayout, LoadingScreenSettings, Settings->Letterbox);
+ break;
+ case EAsyncLoadingScreenLayout::ALSL_Sidebar:
+ LoadingScreen.WidgetLoadingScreen = SNew(SSidebarLayout, LoadingScreenSettings, Settings->Sidebar);
+ break;
+ case EAsyncLoadingScreenLayout::ALSL_DualSidebar:
+ LoadingScreen.WidgetLoadingScreen = SNew(SDualSidebarLayout, LoadingScreenSettings, Settings->DualSidebar);
+ break;
+ }
+
+ }
+
+ GetMoviePlayer()->SetupLoadingScreen(LoadingScreen);
+}
+
+void FAsyncLoadingScreenModule::ShuffleMovies(TArray& MoviesList)
+{
+ if (MoviesList.Num() > 0)
+ {
+ int32 LastIndex = MoviesList.Num() - 1;
+ for (int32 i = 0; i <= LastIndex; ++i)
+ {
+ int32 Index = FMath::RandRange(i, LastIndex);
+ if (i != Index)
+ {
+ MoviesList.Swap(i, Index);
+ }
+ }
+ }
+}
+
+void FAsyncLoadingScreenModule::LoadBackgroundImages()
+{
+ // Empty all background images array
+ RemoveAllBackgroundImages();
+
+ const ULoadingScreenSettings* Settings = GetDefault();
+
+ // Preload startup background images
+ for (auto& Image : Settings->StartupLoadingScreen.Background.Images)
+ {
+ UTexture2D* LoadedImage = Cast(Image.TryLoad());
+ if (LoadedImage)
+ {
+ StartupBackgroundImages.Add(LoadedImage);
+ }
+ }
+
+ // Preload default background images
+ for (auto& Image : Settings->DefaultLoadingScreen.Background.Images)
+ {
+ UTexture2D* LoadedImage = Cast (Image.TryLoad());
+ if (LoadedImage)
+ {
+ DefaultBackgroundImages.Add(LoadedImage);
+ }
+ }
+}
+
+void FAsyncLoadingScreenModule::RemoveAllBackgroundImages()
+{
+ StartupBackgroundImages.Empty();
+ DefaultBackgroundImages.Empty();
+}
+
+bool FAsyncLoadingScreenModule::IsPreloadBackgroundImagesEnabled()
+{
+ return GetDefault()->bPreloadBackgroundImages;
+}
+
+#undef LOCTEXT_NAMESPACE
+
+IMPLEMENT_MODULE(FAsyncLoadingScreenModule, AsyncLoadingScreen)
\ No newline at end of file
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/AsyncLoadingScreenLibrary.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/AsyncLoadingScreenLibrary.cpp
new file mode 100644
index 00000000..24831d70
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/AsyncLoadingScreenLibrary.cpp
@@ -0,0 +1,61 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+
+#include "AsyncLoadingScreenLibrary.h"
+#include "MoviePlayer.h"
+#include "AsyncLoadingScreen.h"
+
+int32 UAsyncLoadingScreenLibrary::DisplayBackgroundIndex = -1;
+int32 UAsyncLoadingScreenLibrary::DisplayTipTextIndex = -1;
+int32 UAsyncLoadingScreenLibrary::DisplayMovieIndex = -1;
+bool UAsyncLoadingScreenLibrary::bShowLoadingScreen = true;
+
+void UAsyncLoadingScreenLibrary::SetDisplayBackgroundIndex(int32 BackgroundIndex)
+{
+ UAsyncLoadingScreenLibrary::DisplayBackgroundIndex = BackgroundIndex;
+}
+
+void UAsyncLoadingScreenLibrary::SetDisplayTipTextIndex(int32 TipTextIndex)
+{
+ UAsyncLoadingScreenLibrary::DisplayTipTextIndex = TipTextIndex;
+}
+
+void UAsyncLoadingScreenLibrary::SetDisplayMovieIndex(int32 MovieIndex)
+{
+ UAsyncLoadingScreenLibrary::DisplayMovieIndex = MovieIndex;
+}
+
+void UAsyncLoadingScreenLibrary::SetEnableLoadingScreen(bool bIsEnableLoadingScreen)
+{
+ bShowLoadingScreen = bIsEnableLoadingScreen;
+}
+
+void UAsyncLoadingScreenLibrary::StopLoadingScreen()
+{
+ GetMoviePlayer()->StopMovie();
+}
+
+void UAsyncLoadingScreenLibrary::PreloadBackgroundImages()
+{
+ if (FAsyncLoadingScreenModule::IsAvailable())
+ {
+ FAsyncLoadingScreenModule& LoadingScreenModule = FAsyncLoadingScreenModule::Get();
+ LoadingScreenModule.LoadBackgroundImages();
+ }
+}
+
+void UAsyncLoadingScreenLibrary::RemovePreloadedBackgroundImages()
+{
+ if (FAsyncLoadingScreenModule::IsAvailable())
+ {
+ FAsyncLoadingScreenModule& LoadingScreenModule = FAsyncLoadingScreenModule::Get();
+ LoadingScreenModule.RemoveAllBackgroundImages();
+ }
+}
+
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/LoadingScreenSettings.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/LoadingScreenSettings.cpp
new file mode 100644
index 00000000..7a83f31d
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/LoadingScreenSettings.cpp
@@ -0,0 +1,39 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "LoadingScreenSettings.h"
+#include "UObject/ConstructorHelpers.h"
+#include "Engine/Font.h"
+
+#define LOCTEXT_NAMESPACE "AsyncLoadingScreen"
+
+FLoadingWidgetSettings::FLoadingWidgetSettings() : LoadingText(LOCTEXT("Loading", "LOADING")) {}
+//FLoadingCompleteTextSettings::FLoadingCompleteTextSettings() : LoadingCompleteText(LOCTEXT("Loading Complete", "Loading is complete! Press any key to continue...")) {}
+
+
+ULoadingScreenSettings::ULoadingScreenSettings(const FObjectInitializer& Initializer) : Super(Initializer)
+{
+ StartupLoadingScreen.TipWidget.TipWrapAt = 1000.0f;
+ StartupLoadingScreen.bShowWidgetOverlay = false;
+ DefaultLoadingScreen.TipWidget.TipWrapAt = 1000.0f;
+ // Set default font
+ if (!IsRunningDedicatedServer())
+ {
+ static ConstructorHelpers::FObjectFinder RobotoFontObj(TEXT("/Engine/EngineFonts/Roboto"));
+ StartupLoadingScreen.TipWidget.Appearance.Font = FSlateFontInfo(RobotoFontObj.Object, 20, FName("Normal"));
+ DefaultLoadingScreen.TipWidget.Appearance.Font = FSlateFontInfo(RobotoFontObj.Object, 20, FName("Normal"));
+ StartupLoadingScreen.LoadingWidget.Appearance.Font = FSlateFontInfo(RobotoFontObj.Object, 32, FName("Bold"));
+ DefaultLoadingScreen.LoadingWidget.Appearance.Font = FSlateFontInfo(RobotoFontObj.Object, 32, FName("Bold"));
+ StartupLoadingScreen.LoadingCompleteTextSettings.Appearance.Font = FSlateFontInfo(RobotoFontObj.Object, 24, FName("Normal"));
+ DefaultLoadingScreen.LoadingCompleteTextSettings.Appearance.Font = FSlateFontInfo(RobotoFontObj.Object, 24, FName("Normal"));
+ }
+}
+
+#undef LOCTEXT_NAMESPACE
+
+
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SBackgroundWidget.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SBackgroundWidget.cpp
new file mode 100644
index 00000000..a7241353
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SBackgroundWidget.cpp
@@ -0,0 +1,72 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SBackgroundWidget.h"
+#include "LoadingScreenSettings.h"
+#include "Slate/DeferredCleanupSlateBrush.h"
+#include "Widgets/Images/SImage.h"
+#include "Widgets/Layout/SBorder.h"
+#include "Engine/Texture2D.h"
+#include "AsyncLoadingScreenLibrary.h"
+#include "AsyncLoadingScreen.h"
+
+void SBackgroundWidget::Construct(const FArguments& InArgs, const FBackgroundSettings& Settings)
+{
+ // If there's an image defined
+ if (Settings.Images.Num() > 0)
+ {
+ int32 ImageIndex = FMath::RandRange(0, Settings.Images.Num() - 1);
+
+ if (Settings.bSetDisplayBackgroundManually == true)
+ {
+ if (Settings.Images.IsValidIndex(UAsyncLoadingScreenLibrary::GetDisplayBackgroundIndex()))
+ {
+ ImageIndex = UAsyncLoadingScreenLibrary::GetDisplayBackgroundIndex();
+ }
+ }
+
+ // Load background from settings
+ UTexture2D* LoadingImage = nullptr;
+ const FSoftObjectPath& ImageAsset = Settings.Images[ImageIndex];
+ UObject* ImageObject = ImageAsset.TryLoad();
+ LoadingImage = Cast(ImageObject);
+
+ // If IsPreloadBackgroundImagesEnabled is enabled, load from images array
+ FAsyncLoadingScreenModule& LoadingScreenModule = FAsyncLoadingScreenModule::Get();
+ if (LoadingScreenModule.IsPreloadBackgroundImagesEnabled())
+ {
+ TArray BackgroundImages = LoadingScreenModule.GetBackgroundImages();
+ if (!BackgroundImages.IsEmpty() && BackgroundImages.IsValidIndex(ImageIndex))
+ {
+ LoadingImage = BackgroundImages[ImageIndex];
+ }
+ }
+
+ if (LoadingImage)
+ {
+ ImageBrush = FDeferredCleanupSlateBrush::CreateBrush(LoadingImage);
+ ChildSlot
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .Padding(Settings.Padding)
+ .BorderBackgroundColor(Settings.BackgroundColor)
+ .BorderImage(FCoreStyle::Get().GetBrush("WhiteBrush"))
+ [
+ SNew(SScaleBox)
+ .Stretch(Settings.ImageStretch)
+ [
+ SNew(SImage)
+ .Image(ImageBrush.IsValid() ? ImageBrush->GetSlateBrush() : nullptr)
+ ]
+ ]
+ ];
+ }
+ }
+}
\ No newline at end of file
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SCenterLayout.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SCenterLayout.cpp
new file mode 100644
index 00000000..53849669
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SCenterLayout.cpp
@@ -0,0 +1,129 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SCenterLayout.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Layout/SSafeZone.h"
+#include "Widgets/Layout/SDPIScaler.h"
+#include "SHorizontalLoadingWidget.h"
+#include "SVerticalLoadingWidget.h"
+#include "SBackgroundWidget.h"
+#include "STipWidget.h"
+#include "Widgets/SOverlay.h"
+#include "Widgets/Layout/SBorder.h"
+#include "SLoadingCompleteText.h"
+
+
+void SCenterLayout::Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FCenterLayoutSettings& LayoutSettings)
+{
+ // Root widget and background
+ TSharedRef Root = SNew(SOverlay)
+ + SOverlay::Slot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ [
+ SNew(SBackgroundWidget, Settings.Background)
+ ];
+
+ // Placeholder for loading widget
+ TSharedRef LoadingWidget = SNullWidget::NullWidget;
+ if (Settings.LoadingWidget.LoadingWidgetType == ELoadingWidgetType::LWT_Horizontal)
+ {
+ LoadingWidget = SNew(SHorizontalLoadingWidget, Settings.LoadingWidget);
+ }
+ else
+ {
+ LoadingWidget = SNew(SVerticalLoadingWidget, Settings.LoadingWidget);
+ }
+
+ // Add loading widget at center
+ Root->AddSlot()
+ .HAlign(HAlign_Center)
+ .VAlign(VAlign_Center)
+ [
+ LoadingWidget
+ ];
+
+
+ if (LayoutSettings.bIsTipAtBottom)
+ {
+ // Add tip widget at bottom
+ Root->AddSlot()
+ .HAlign(LayoutSettings.BorderHorizontalAlignment)
+ .VAlign(VAlign_Bottom)
+ .Padding(0, 0, 0, LayoutSettings.BorderVerticalOffset)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.BorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.BorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SCenterLayout::GetDPIScale)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ]
+ ]
+ ]
+ ];
+ }
+ else
+ {
+ // Add tip widget at top
+ Root->AddSlot()
+ .HAlign(LayoutSettings.BorderHorizontalAlignment)
+ .VAlign(VAlign_Top)
+ .Padding(0, LayoutSettings.BorderVerticalOffset, 0, 0)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.BorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.BorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SCenterLayout::GetDPIScale)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ]
+ ]
+ ]
+ ];
+ }
+
+ // Construct loading complete text if enable
+ if (Settings.bShowLoadingCompleteText)
+ {
+ Root->AddSlot()
+ .VAlign(Settings.LoadingCompleteTextSettings.Alignment.VerticalAlignment)
+ .HAlign(Settings.LoadingCompleteTextSettings.Alignment.HorizontalAlignment)
+ .Padding(Settings.LoadingCompleteTextSettings.Padding)
+ [
+ SNew(SLoadingCompleteText, Settings.LoadingCompleteTextSettings)
+ ];
+ }
+
+ // Add root to this widget
+ ChildSlot
+ [
+ Root
+ ];
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SClassicLayout.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SClassicLayout.cpp
new file mode 100644
index 00000000..410f9b43
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SClassicLayout.cpp
@@ -0,0 +1,162 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SClassicLayout.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Layout/SSafeZone.h"
+#include "Widgets/Layout/SDPIScaler.h"
+#include "Widgets/Layout/SSpacer.h"
+#include "Widgets/SBoxPanel.h"
+#include "SHorizontalLoadingWidget.h"
+#include "SVerticalLoadingWidget.h"
+#include "SBackgroundWidget.h"
+#include "STipWidget.h"
+#include "SLoadingCompleteText.h"
+
+void SClassicLayout::Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FClassicLayoutSettings& LayoutSettings)
+{
+ // Root widget and background
+ TSharedRef Root = SNew(SOverlay)
+ + SOverlay::Slot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ [
+ SNew(SBackgroundWidget, Settings.Background)
+ ];
+
+ // Placeholder for loading widget
+ TSharedRef LoadingWidget = SNullWidget::NullWidget;
+ if (Settings.LoadingWidget.LoadingWidgetType == ELoadingWidgetType::LWT_Horizontal)
+ {
+ LoadingWidget = SNew(SHorizontalLoadingWidget, Settings.LoadingWidget);
+ }
+ else
+ {
+ LoadingWidget = SNew(SVerticalLoadingWidget, Settings.LoadingWidget);
+ }
+
+ TSharedRef HorizontalBox = SNew(SHorizontalBox);
+
+ if (LayoutSettings.bIsLoadingWidgetAtLeft)
+ {
+ // Add Loading widget on left first
+ HorizontalBox.Get().AddSlot()
+ .VAlign(VAlign_Center)
+ .HAlign(HAlign_Center)
+ .AutoWidth()
+ [
+ LoadingWidget
+ ];
+
+ // Add spacer at midder
+ HorizontalBox.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoWidth()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(LayoutSettings.Space, 0.0f))
+ ];
+
+ // Tip Text on the right
+ HorizontalBox.Get().AddSlot()
+ .FillWidth(1.0f)
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ];
+ }
+ else
+ {
+ // Tip Text on the left
+ HorizontalBox.Get().AddSlot()
+ .FillWidth(1.0f)
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ [
+ // Add tip text
+ SNew(STipWidget, Settings.TipWidget)
+ ];
+
+ // Add spacer at midder
+ HorizontalBox.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoWidth()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(LayoutSettings.Space, 0.0f))
+ ];
+
+ // Add Loading widget on right
+ HorizontalBox.Get().AddSlot()
+ .VAlign(VAlign_Center)
+ .HAlign(HAlign_Center)
+ .AutoWidth()
+ [
+ LoadingWidget
+ ];
+ }
+
+
+ EVerticalAlignment VerticalAlignment;
+ // Set vertical alignment for widget
+ if (LayoutSettings.bIsWidgetAtBottom)
+ {
+ VerticalAlignment = EVerticalAlignment::VAlign_Bottom;
+ }
+ else
+ {
+ VerticalAlignment = EVerticalAlignment::VAlign_Top;
+ }
+
+ // Creating loading theme
+ Root->AddSlot()
+ .HAlign(LayoutSettings.BorderHorizontalAlignment)
+ .VAlign(VerticalAlignment)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.BorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.BorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SClassicLayout::GetDPIScale)
+ [
+ HorizontalBox
+ ]
+ ]
+ ]
+ ];
+
+ // Construct loading complete text if enable
+ if (Settings.bShowLoadingCompleteText)
+ {
+ Root->AddSlot()
+ .VAlign(Settings.LoadingCompleteTextSettings.Alignment.VerticalAlignment)
+ .HAlign(Settings.LoadingCompleteTextSettings.Alignment.HorizontalAlignment)
+ .Padding(Settings.LoadingCompleteTextSettings.Padding)
+ [
+ SNew(SLoadingCompleteText, Settings.LoadingCompleteTextSettings)
+ ];
+ }
+
+ // Add root to this widget
+ ChildSlot
+ [
+ Root
+ ];
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SDualSidebarLayout.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SDualSidebarLayout.cpp
new file mode 100644
index 00000000..e010d2f0
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SDualSidebarLayout.cpp
@@ -0,0 +1,172 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+
+#include "SDualSidebarLayout.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Layout/SSafeZone.h"
+#include "Widgets/Layout/SDPIScaler.h"
+#include "Widgets/Layout/SSpacer.h"
+#include "SHorizontalLoadingWidget.h"
+#include "SVerticalLoadingWidget.h"
+#include "SBackgroundWidget.h"
+#include "STipWidget.h"
+#include "SLoadingCompleteText.h"
+
+void SDualSidebarLayout::Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FDualSidebarLayoutSettings& LayoutSettings)
+{
+ // Root widget and background
+ TSharedRef Root = SNew(SOverlay)
+ + SOverlay::Slot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ [
+ SNew(SBackgroundWidget, Settings.Background)
+ ];
+
+ // Placeholder for loading widget
+ TSharedRef LoadingWidget = SNullWidget::NullWidget;
+ if (Settings.LoadingWidget.LoadingWidgetType == ELoadingWidgetType::LWT_Horizontal)
+ {
+ LoadingWidget = SNew(SHorizontalLoadingWidget, Settings.LoadingWidget);
+ }
+ else
+ {
+ LoadingWidget = SNew(SVerticalLoadingWidget, Settings.LoadingWidget);
+ }
+
+
+
+ if (LayoutSettings.bIsLoadingWidgetAtRight)
+ {
+ // Add loading widget at right
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Right)
+ .VAlign(LayoutSettings.RightBorderVerticalAlignment)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.RightBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(HAlign_Fill)
+ .VAlign(LayoutSettings.RightVerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.RightBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SDualSidebarLayout::GetDPIScale)
+ [
+ LoadingWidget
+ ]
+ ]
+ ]
+ ];
+
+ // Add tip widget at left
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Left)
+ .VAlign(LayoutSettings.LeftBorderVerticalAlignment)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.LeftBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(HAlign_Fill)
+ .VAlign(LayoutSettings.LeftVerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.LeftBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SDualSidebarLayout::GetDPIScale)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ]
+ ]
+ ]
+ ];
+ }
+
+ else
+ {
+ // Add Tip widget at right
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Right)
+ .VAlign(LayoutSettings.RightBorderVerticalAlignment)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.RightBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(HAlign_Fill)
+ .VAlign(LayoutSettings.RightVerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.RightBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SDualSidebarLayout::GetDPIScale)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ]
+ ]
+ ]
+ ];
+
+ // Add Loading widget at left
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Left)
+ .VAlign(LayoutSettings.LeftBorderVerticalAlignment)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.LeftBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(HAlign_Fill)
+ .VAlign(LayoutSettings.LeftVerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.LeftBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SDualSidebarLayout::GetDPIScale)
+ [
+ LoadingWidget
+ ]
+ ]
+ ]
+ ];
+ }
+
+ // Construct loading complete text if enable
+ if (Settings.bShowLoadingCompleteText)
+ {
+ Root->AddSlot()
+ .VAlign(Settings.LoadingCompleteTextSettings.Alignment.VerticalAlignment)
+ .HAlign(Settings.LoadingCompleteTextSettings.Alignment.HorizontalAlignment)
+ .Padding(Settings.LoadingCompleteTextSettings.Padding)
+ [
+ SNew(SLoadingCompleteText, Settings.LoadingCompleteTextSettings)
+ ];
+ }
+
+ // Add root to this widget
+ ChildSlot
+ [
+ Root
+ ];
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SHorizontalLoadingWidget.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SHorizontalLoadingWidget.cpp
new file mode 100644
index 00000000..7cd93589
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SHorizontalLoadingWidget.cpp
@@ -0,0 +1,122 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SHorizontalLoadingWidget.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Layout/SSpacer.h"
+#include "Widgets/Images/SImage.h"
+#include "Slate/DeferredCleanupSlateBrush.h"
+#include "Widgets/Text/STextBlock.h"
+#include "Widgets/SBoxPanel.h"
+
+void SHorizontalLoadingWidget::Construct(const FArguments& InArgs, const FLoadingWidgetSettings& Settings)
+{
+ bPlayReverse = Settings.ImageSequenceSettings.bPlayReverse;
+
+ // Root is a Horizontal Box of course
+ TSharedRef Root = SNew(SHorizontalBox);
+
+ // Construct Loading Icon Widget
+ ConstructLoadingIcon(Settings);
+
+ EVisibility LoadingTextVisibility;
+
+ if (Settings.LoadingText.IsEmpty())
+ {
+ LoadingTextVisibility = EVisibility::Collapsed;
+ }
+ else
+ {
+ LoadingTextVisibility = EVisibility::SelfHitTestInvisible;
+ }
+
+ // If loading text is on the right
+ if (Settings.bLoadingTextRightPosition)
+ {
+ // Add Loading Icon on the left first
+ Root.Get().AddSlot()
+ .HAlign(Settings.LoadingIconAlignment.HorizontalAlignment)
+ .VAlign(Settings.LoadingIconAlignment.VerticalAlignment)
+ .AutoWidth()
+ [
+ LoadingIcon
+ ];
+
+ // Add a Spacer in middle
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoWidth()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(Settings.Space, 0.0f))
+ ];
+
+ // Add Loading Text on the right
+ Root.Get().AddSlot()
+ .HAlign(Settings.TextAlignment.HorizontalAlignment)
+ .VAlign(Settings.TextAlignment.VerticalAlignment)
+ .AutoWidth()
+ [
+ SNew(STextBlock)
+ .Visibility(LoadingTextVisibility)
+ .ColorAndOpacity(Settings.Appearance.ColorAndOpacity)
+ .Font(Settings.Appearance.Font)
+ .ShadowOffset(Settings.Appearance.ShadowOffset)
+ .ShadowColorAndOpacity(Settings.Appearance.ShadowColorAndOpacity)
+ .Justification(Settings.Appearance.Justification)
+ .Text(Settings.LoadingText)
+ ];
+ }
+
+ // If loading text is on the left
+ else
+ {
+ // Add Loading Text on the left first
+ Root.Get().AddSlot()
+ .HAlign(Settings.TextAlignment.HorizontalAlignment)
+ .VAlign(Settings.TextAlignment.VerticalAlignment)
+ .AutoWidth()
+ [
+ SNew(STextBlock)
+ .Visibility(LoadingTextVisibility)
+ .ColorAndOpacity(Settings.Appearance.ColorAndOpacity)
+ .Font(Settings.Appearance.Font)
+ .ShadowOffset(Settings.Appearance.ShadowOffset)
+ .ShadowColorAndOpacity(Settings.Appearance.ShadowColorAndOpacity)
+ .Justification(Settings.Appearance.Justification)
+ .Text(Settings.LoadingText)
+ ];
+
+
+ // Add a Spacer in middle
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoWidth()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(Settings.Space, 0.0f))
+ ];
+
+ // Add Loading Icon on the right finally
+ Root.Get().AddSlot()
+ .HAlign(Settings.LoadingIconAlignment.HorizontalAlignment)
+ .VAlign(Settings.LoadingIconAlignment.VerticalAlignment)
+ .AutoWidth()
+ [
+ LoadingIcon
+ ];
+ }
+
+ // Add root to this widget
+ ChildSlot
+ [
+ Root
+ ];
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLetterboxLayout.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLetterboxLayout.cpp
new file mode 100644
index 00000000..0a99304c
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLetterboxLayout.cpp
@@ -0,0 +1,168 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SLetterboxLayout.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Layout/SSafeZone.h"
+#include "Widgets/Layout/SDPIScaler.h"
+#include "SHorizontalLoadingWidget.h"
+#include "SVerticalLoadingWidget.h"
+#include "SBackgroundWidget.h"
+#include "STipWidget.h"
+#include "SLoadingCompleteText.h"
+
+void SLetterboxLayout::Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FLetterboxLayoutSettings& LayoutSettings)
+{
+ // Root widget and background
+ TSharedRef Root = SNew(SOverlay)
+ + SOverlay::Slot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ [
+ SNew(SBackgroundWidget, Settings.Background)
+ ];
+
+ // Placeholder for loading widget
+ TSharedRef LoadingWidget = SNullWidget::NullWidget;
+ if (Settings.LoadingWidget.LoadingWidgetType == ELoadingWidgetType::LWT_Horizontal)
+ {
+ LoadingWidget = SNew(SHorizontalLoadingWidget, Settings.LoadingWidget);
+ }
+ else
+ {
+ LoadingWidget = SNew(SVerticalLoadingWidget, Settings.LoadingWidget);
+ }
+
+
+ if (LayoutSettings.bIsLoadingWidgetAtTop)
+ {
+ // Add a border widget at top, then add Loading widget
+ Root->AddSlot()
+ .HAlign(LayoutSettings.TopBorderHorizontalAlignment)
+ .VAlign(VAlign_Top)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.TopBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(LayoutSettings.LoadingWidgetAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.LoadingWidgetAlignment.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.TopBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SLetterboxLayout::GetDPIScale)
+ [
+ LoadingWidget
+ ]
+ ]
+ ]
+ ];
+
+ // Add a border widget at bottom, then add Tip widget
+ Root->AddSlot()
+ .HAlign(LayoutSettings.BottomBorderHorizontalAlignment)
+ .VAlign(VAlign_Bottom)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.BottomBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.BottomBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SLetterboxLayout::GetDPIScale)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ]
+ ]
+ ]
+ ];
+ }
+ else
+ {
+ // Add a border widget at top, then add Tip widget
+ Root->AddSlot()
+ .HAlign(LayoutSettings.TopBorderHorizontalAlignment)
+ .VAlign(VAlign_Top)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.TopBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.TopBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SLetterboxLayout::GetDPIScale)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ]
+ ]
+ ]
+ ];
+
+ // Add a border widget at bottom, then add Loading widget
+ Root->AddSlot()
+ .HAlign(LayoutSettings.BottomBorderHorizontalAlignment)
+ .VAlign(VAlign_Bottom)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.BottomBorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(LayoutSettings.LoadingWidgetAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.LoadingWidgetAlignment.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.BottomBorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SLetterboxLayout::GetDPIScale)
+ [
+ LoadingWidget
+ ]
+ ]
+ ]
+ ];
+ }
+
+ // Construct loading complete text if enable
+ if (Settings.bShowLoadingCompleteText)
+ {
+ Root->AddSlot()
+ .VAlign(Settings.LoadingCompleteTextSettings.Alignment.VerticalAlignment)
+ .HAlign(Settings.LoadingCompleteTextSettings.Alignment.HorizontalAlignment)
+ .Padding(Settings.LoadingCompleteTextSettings.Padding)
+ [
+ SNew(SLoadingCompleteText, Settings.LoadingCompleteTextSettings)
+ ];
+ }
+
+ // Add Root to this widget
+ ChildSlot
+ [
+ Root
+ ];
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingCompleteText.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingCompleteText.cpp
new file mode 100644
index 00000000..c6ec42da
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingCompleteText.cpp
@@ -0,0 +1,78 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+
+#include "SLoadingCompleteText.h"
+#include "LoadingScreenSettings.h"
+#include "MoviePlayer.h"
+#include "Widgets/Text/STextBlock.h"
+
+void SLoadingCompleteText::Construct(const FArguments& InArgs, const FLoadingCompleteTextSettings& CompleteTextSettings)
+{
+ CompleteTextColor = CompleteTextSettings.Appearance.ColorAndOpacity.GetSpecifiedColor();
+ CompleteTextAnimationSpeed = CompleteTextSettings.AnimationSpeed;
+
+ ChildSlot
+ [
+ SNew(STextBlock)
+ .Font(CompleteTextSettings.Appearance.Font)
+ .ShadowOffset(CompleteTextSettings.Appearance.ShadowOffset)
+ .ShadowColorAndOpacity(CompleteTextSettings.Appearance.ShadowColorAndOpacity)
+ .Justification(CompleteTextSettings.Appearance.Justification)
+ .Text(CompleteTextSettings.LoadingCompleteText)
+ .ColorAndOpacity(this, &SLoadingCompleteText::GetLoadingCompleteTextColor)
+ .Visibility(this, &SLoadingCompleteText::GetLoadingCompleteTextVisibility)
+ ];
+
+ // Register animated image sequence active timer event
+ if (CompleteTextSettings.bFadeInOutAnim && !bIsActiveTimerRegistered)
+ {
+ bIsActiveTimerRegistered = true;
+ RegisterActiveTimer(0.f, FWidgetActiveTimerDelegate::CreateSP(this, &SLoadingCompleteText::AnimateText));
+ }
+}
+
+EVisibility SLoadingCompleteText::GetLoadingCompleteTextVisibility() const
+{
+ return GetMoviePlayer()->IsLoadingFinished() ? EVisibility::Visible : EVisibility::Hidden;
+}
+
+FSlateColor SLoadingCompleteText::GetLoadingCompleteTextColor() const
+{
+ return CompleteTextColor;
+}
+
+EActiveTimerReturnType SLoadingCompleteText::AnimateText(double InCurrentTime, float InDeltaTime)
+{
+ const float MinAlpha = 0.1f;
+ const float MaxAlpha = 1.0f;
+
+ float TextAlpha = CompleteTextColor.A;
+
+ if (TextAlpha >= MaxAlpha)
+ {
+ bCompleteTextReverseAnim = true;
+ }
+ else if (TextAlpha <= MinAlpha)
+ {
+ bCompleteTextReverseAnim = false;
+ }
+
+ if (!bCompleteTextReverseAnim)
+ {
+ TextAlpha += InDeltaTime * CompleteTextAnimationSpeed;
+ }
+ else
+ {
+ TextAlpha -= InDeltaTime * CompleteTextAnimationSpeed;
+ }
+
+ CompleteTextColor.A = TextAlpha;
+
+ return EActiveTimerReturnType::Continue;
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingScreenLayout.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingScreenLayout.cpp
new file mode 100644
index 00000000..8adb76bc
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingScreenLayout.cpp
@@ -0,0 +1,27 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SLoadingScreenLayout.h"
+#include "Engine/UserInterfaceSettings.h"
+
+float SLoadingScreenLayout::PointSizeToSlateUnits(float PointSize)
+{
+ const float SlateFreeTypeHorizontalResolutionDPI = 96.0f;
+ const float FreeTypeNativeDPI = 72.0;
+ const float PixelSize = PointSize * (SlateFreeTypeHorizontalResolutionDPI / FreeTypeNativeDPI);
+ return PixelSize;
+}
+
+float SLoadingScreenLayout::GetDPIScale() const
+{
+ const FVector2D DrawSize = GetTickSpaceGeometry().ToPaintGeometry().GetLocalSize();
+ const FIntPoint Size((int32)DrawSize.X, (int32)DrawSize.Y);
+
+ return GetDefault()->GetDPIScaleBasedOnSize(Size);
+}
+
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingWidget.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingWidget.cpp
new file mode 100644
index 00000000..6584378e
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SLoadingWidget.cpp
@@ -0,0 +1,128 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SLoadingWidget.h"
+#include "Widgets/Images/SImage.h"
+#include "Slate/DeferredCleanupSlateBrush.h"
+#include "Widgets/Layout/SSpacer.h"
+#include "Engine/Texture2D.h"
+#include "MoviePlayer.h"
+#include "Widgets/SCompoundWidget.h"
+
+int32 SLoadingWidget::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const
+{
+ TotalDeltaTime += Args.GetDeltaTime();
+
+ if (TotalDeltaTime >= Interval)
+ {
+ if (CleanupBrushList.Num() > 1)
+ {
+ if (bPlayReverse)
+ {
+ ImageIndex--;
+ }
+ else
+ {
+ ImageIndex++;
+ }
+
+ if (ImageIndex >= CleanupBrushList.Num())
+ {
+ ImageIndex = 0;
+ }
+ else if (ImageIndex < 0)
+ {
+ ImageIndex = CleanupBrushList.Num() - 1;
+ }
+
+ StaticCastSharedRef(LoadingIcon)->SetImage(CleanupBrushList[ImageIndex].IsValid() ? CleanupBrushList[ImageIndex]->GetSlateBrush() : nullptr);
+ }
+
+ TotalDeltaTime = 0.0f;
+ }
+
+
+ return SCompoundWidget::OnPaint(Args, AllottedGeometry, MyCullingRect, OutDrawElements, LayerId, InWidgetStyle, bParentEnabled);
+}
+
+SThrobber::EAnimation SLoadingWidget::GetThrobberAnimation(const FThrobberSettings& ThrobberSettings) const
+{
+ const int32 AnimationParams = (ThrobberSettings.bAnimateVertically ? SThrobber::Vertical : 0) |
+ (ThrobberSettings.bAnimateHorizontally ? SThrobber::Horizontal : 0) |
+ (ThrobberSettings.bAnimateOpacity ? SThrobber::Opacity : 0);
+
+ return static_cast(AnimationParams);
+}
+
+void SLoadingWidget::ConstructLoadingIcon(const FLoadingWidgetSettings& Settings)
+{
+ if (Settings.LoadingIconType == ELoadingIconType::LIT_ImageSequence)
+ {
+ // Loading Widget is image sequence
+ if (Settings.ImageSequenceSettings.Images.Num() > 0)
+ {
+ CleanupBrushList.Empty();
+ ImageIndex = 0;
+
+ FVector2D Scale = Settings.ImageSequenceSettings.Scale;
+
+ for (auto Image: Settings.ImageSequenceSettings.Images)
+ {
+ if (Image)
+ {
+ CleanupBrushList.Add(FDeferredCleanupSlateBrush::CreateBrush(Image, FVector2D(Image->GetSurfaceWidth() * Scale.X, Image->GetSurfaceHeight() * Scale.Y)));
+ }
+ }
+
+ // Create Image slate widget
+ LoadingIcon = SNew(SImage)
+ .Image(CleanupBrushList[ImageIndex]->GetSlateBrush());
+
+ // Update play animation interval
+ Interval = Settings.ImageSequenceSettings.Interval;
+ }
+ else
+ {
+ // If there is no image in the array then create a spacer instead
+ LoadingIcon = SNew(SSpacer).Size(FVector2D::ZeroVector);
+ }
+
+ }
+ else if (Settings.LoadingIconType == ELoadingIconType::LIT_CircularThrobber)
+ {
+ // Loading Widget is SCircularThrobber
+ LoadingIcon = SNew(SCircularThrobber)
+ .NumPieces(Settings.CircularThrobberSettings.NumberOfPieces)
+ .Period(Settings.CircularThrobberSettings.Period)
+ .Radius(Settings.CircularThrobberSettings.Radius)
+ .PieceImage(&Settings.CircularThrobberSettings.Image);
+ }
+ else
+ {
+ // Loading Widget is SThrobber
+ LoadingIcon = SNew(SThrobber)
+ .NumPieces(Settings.ThrobberSettings.NumberOfPieces)
+ .Animate(GetThrobberAnimation(Settings.ThrobberSettings))
+ .PieceImage(&Settings.ThrobberSettings.Image);
+ }
+
+ // Set Loading Icon render transform
+ LoadingIcon.Get().SetRenderTransform(FSlateRenderTransform(FScale2D(Settings.TransformScale), Settings.TransformTranslation));
+ LoadingIcon.Get().SetRenderTransformPivot(Settings.TransformPivot);
+
+ // Hide loading widget when level loading is done if bHideLoadingWidgetWhenCompletes is true
+ if (Settings.bHideLoadingWidgetWhenCompletes)
+ {
+ SetVisibility(TAttribute::Create(TAttribute::FGetter::CreateRaw(this, &SLoadingWidget::GetLoadingWidgetVisibility)));
+ }
+}
+
+EVisibility SLoadingWidget::GetLoadingWidgetVisibility() const
+{
+ return GetMoviePlayer()->IsLoadingFinished() ? EVisibility::Hidden : EVisibility::Visible;
+}
\ No newline at end of file
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SSidebarLayout.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SSidebarLayout.cpp
new file mode 100644
index 00000000..9dd82de1
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SSidebarLayout.cpp
@@ -0,0 +1,184 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SSidebarLayout.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Layout/SSafeZone.h"
+#include "Widgets/Layout/SDPIScaler.h"
+#include "Widgets/Layout/SSpacer.h"
+#include "SHorizontalLoadingWidget.h"
+#include "SVerticalLoadingWidget.h"
+#include "SBackgroundWidget.h"
+#include "STipWidget.h"
+#include "SLoadingCompleteText.h"
+#include "Widgets/SBoxPanel.h"
+
+void SSidebarLayout::Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FSidebarLayoutSettings& LayoutSettings)
+{
+ // Root widget and background
+ TSharedRef Root = SNew(SOverlay)
+ + SOverlay::Slot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ [
+ SNew(SBackgroundWidget, Settings.Background)
+ ];
+
+ // Placeholder for loading widget
+ TSharedRef LoadingWidget = SNullWidget::NullWidget;
+ if (Settings.LoadingWidget.LoadingWidgetType == ELoadingWidgetType::LWT_Horizontal)
+ {
+ LoadingWidget = SNew(SHorizontalLoadingWidget, Settings.LoadingWidget);
+ }
+ else
+ {
+ LoadingWidget = SNew(SVerticalLoadingWidget, Settings.LoadingWidget);
+ }
+
+
+ TSharedRef VerticalBox = SNew(SVerticalBox);
+ if (LayoutSettings.bIsLoadingWidgetAtTop)
+ {
+ // Add loading widget at top
+ VerticalBox.Get().AddSlot()
+ .AutoHeight()
+ .HAlign(LayoutSettings.LoadingWidgetAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.LoadingWidgetAlignment.VerticalAlignment)
+ [
+ LoadingWidget
+ ];
+
+ // Add SSpacer at middle
+ VerticalBox.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoHeight()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(0.0f, LayoutSettings.Space))
+ ];
+
+ // Add tip widget at bottom
+ VerticalBox.Get().AddSlot()
+ .AutoHeight()
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ];
+ }
+ else
+ {
+ // Add tip widget at top
+ VerticalBox.Get().AddSlot()
+ .AutoHeight()
+ .HAlign(LayoutSettings.TipAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.TipAlignment.VerticalAlignment)
+ [
+ SNew(STipWidget, Settings.TipWidget)
+ ];
+
+ // Add SSpacer at middle
+ VerticalBox.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoHeight()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(0.0f, LayoutSettings.Space))
+ ];
+
+ // Add loading widget at bottom
+ VerticalBox.Get().AddSlot()
+ .AutoHeight()
+ .HAlign(LayoutSettings.LoadingWidgetAlignment.HorizontalAlignment)
+ .VAlign(LayoutSettings.LoadingWidgetAlignment.VerticalAlignment)
+ [
+ LoadingWidget
+ ];
+ }
+
+
+
+ if (LayoutSettings.bIsWidgetAtRight)
+ {
+ // Add widget at right
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Right)
+ .VAlign(LayoutSettings.BorderVerticalAlignment)
+ .Padding(0, 0, LayoutSettings.BorderHorizontalOffset, 0)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.BorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(HAlign_Fill)
+ .VAlign(LayoutSettings.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.BorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SSidebarLayout::GetDPIScale)
+ [
+ VerticalBox
+ ]
+ ]
+ ]
+ ];
+ }
+ else
+ {
+ // Add widget at left
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Left)
+ .VAlign(LayoutSettings.BorderVerticalAlignment)
+ .Padding(LayoutSettings.BorderHorizontalOffset, 0, 0, 0)
+ [
+ SNew(SBorder)
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .BorderImage(&LayoutSettings.BorderBackground)
+ .BorderBackgroundColor(FLinearColor::White)
+ [
+ SNew(SSafeZone)
+ .HAlign(HAlign_Fill)
+ .VAlign(LayoutSettings.VerticalAlignment)
+ .IsTitleSafe(true)
+ .Padding(LayoutSettings.BorderPadding)
+ [
+ SNew(SDPIScaler)
+ .DPIScale(this, &SSidebarLayout::GetDPIScale)
+ [
+ VerticalBox
+ ]
+ ]
+ ]
+ ];
+ }
+
+ // Construct loading complete text if enable
+ if (Settings.bShowLoadingCompleteText)
+ {
+ Root->AddSlot()
+ .VAlign(Settings.LoadingCompleteTextSettings.Alignment.VerticalAlignment)
+ .HAlign(Settings.LoadingCompleteTextSettings.Alignment.HorizontalAlignment)
+ .Padding(Settings.LoadingCompleteTextSettings.Padding)
+ [
+ SNew(SLoadingCompleteText, Settings.LoadingCompleteTextSettings)
+ ];
+ }
+
+ // Add root to this widget
+ ChildSlot
+ [
+ Root
+ ];
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/STipWidget.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/STipWidget.cpp
new file mode 100644
index 00000000..3f222394
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/STipWidget.cpp
@@ -0,0 +1,41 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "STipWidget.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Text/STextBlock.h"
+#include "AsyncLoadingScreenLibrary.h"
+
+void STipWidget::Construct(const FArguments& InArgs, const FTipSettings& Settings)
+{
+ if (Settings.TipText.Num() > 0)
+ {
+ int32 TipIndex = FMath::RandRange(0, Settings.TipText.Num() - 1);
+
+ if (Settings.bSetDisplayTipTextManually == true)
+ {
+ if (Settings.TipText.IsValidIndex(UAsyncLoadingScreenLibrary::GetDisplayTipTextIndex()))
+ {
+ TipIndex = UAsyncLoadingScreenLibrary::GetDisplayTipTextIndex();
+ }
+ }
+
+ ChildSlot
+ [
+ SNew(STextBlock)
+ .ColorAndOpacity(Settings.Appearance.ColorAndOpacity)
+ .Font(Settings.Appearance.Font)
+ .ShadowOffset(Settings.Appearance.ShadowOffset)
+ .ShadowColorAndOpacity(Settings.Appearance.ShadowColorAndOpacity)
+ .Justification(Settings.Appearance.Justification)
+ .WrapTextAt(Settings.TipWrapAt)
+ .Text(Settings.TipText[TipIndex])
+ ];
+
+ }
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SVerticalLoadingWidget.cpp b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SVerticalLoadingWidget.cpp
new file mode 100644
index 00000000..03faffdb
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Private/SVerticalLoadingWidget.cpp
@@ -0,0 +1,120 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#include "SVerticalLoadingWidget.h"
+#include "LoadingScreenSettings.h"
+#include "Widgets/Layout/SSpacer.h"
+#include "Widgets/Images/SImage.h"
+#include "Slate/DeferredCleanupSlateBrush.h"
+#include "Widgets/Text/STextBlock.h"
+
+void SVerticalLoadingWidget::Construct(const FArguments& InArgs, const FLoadingWidgetSettings& Settings)
+{
+ bPlayReverse = Settings.ImageSequenceSettings.bPlayReverse;
+
+ // Root is a Vertical Box
+ TSharedRef Root = SNew(SVerticalBox);
+
+ // Construct Loading Icon Widget
+ ConstructLoadingIcon(Settings);
+
+ EVisibility LoadingTextVisibility;
+
+ if (Settings.LoadingText.IsEmpty())
+ {
+ LoadingTextVisibility = EVisibility::Collapsed;
+ }
+ else
+ {
+ LoadingTextVisibility = EVisibility::SelfHitTestInvisible;
+ }
+
+ // If loading text is on the top
+ if (Settings.bLoadingTextTopPosition)
+ {
+ // Add Loading Text on the top first
+ Root.Get().AddSlot()
+ .HAlign(Settings.TextAlignment.HorizontalAlignment)
+ .VAlign(Settings.TextAlignment.VerticalAlignment)
+ .AutoHeight()
+ [
+ SNew(STextBlock)
+ .Visibility(LoadingTextVisibility)
+ .ColorAndOpacity(Settings.Appearance.ColorAndOpacity)
+ .Font(Settings.Appearance.Font)
+ .ShadowOffset(Settings.Appearance.ShadowOffset)
+ .ShadowColorAndOpacity(Settings.Appearance.ShadowColorAndOpacity)
+ .Justification(Settings.Appearance.Justification)
+ .Text(Settings.LoadingText)
+ ];
+
+ // Add a Spacer in middle
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoHeight()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(0.0f, Settings.Space))
+ ];
+
+ // Add Loading Icon at the bottom finally
+ Root.Get().AddSlot()
+ .HAlign(Settings.LoadingIconAlignment.HorizontalAlignment)
+ .VAlign(Settings.LoadingIconAlignment.VerticalAlignment)
+ .AutoHeight()
+ [
+ LoadingIcon
+ ];
+ }
+
+ // If loading text is at the bottom
+ else
+ {
+ // Add Loading Icon on the top
+ Root.Get().AddSlot()
+ .HAlign(Settings.LoadingIconAlignment.HorizontalAlignment)
+ .VAlign(Settings.LoadingIconAlignment.VerticalAlignment)
+ .AutoHeight()
+ [
+ LoadingIcon
+ ];
+
+ // Add a Spacer in middle
+ Root.Get().AddSlot()
+ .HAlign(HAlign_Fill)
+ .VAlign(VAlign_Fill)
+ .AutoHeight()
+ [
+ SNew(SSpacer)
+ .Size(FVector2D(0.0f, Settings.Space))
+ ];
+
+ // Add Loading Text at the bottom
+ Root.Get().AddSlot()
+ .HAlign(Settings.TextAlignment.HorizontalAlignment)
+ .VAlign(Settings.TextAlignment.VerticalAlignment)
+ .AutoHeight()
+ [
+ SNew(STextBlock)
+ .Visibility(LoadingTextVisibility)
+ .ColorAndOpacity(Settings.Appearance.ColorAndOpacity)
+ .Font(Settings.Appearance.Font)
+ .ShadowOffset(Settings.Appearance.ShadowOffset)
+ .ShadowColorAndOpacity(Settings.Appearance.ShadowColorAndOpacity)
+ .Justification(Settings.Appearance.Justification)
+ .Text(Settings.LoadingText)
+ ];
+ }
+
+ // Add root to this widget
+ ChildSlot
+ [
+ Root
+ ];
+}
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/AsyncLoadingScreen.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/AsyncLoadingScreen.h
new file mode 100644
index 00000000..d02e5790
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/AsyncLoadingScreen.h
@@ -0,0 +1,106 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "Modules/ModuleManager.h"
+
+struct FALoadingScreenSettings;
+
+class FAsyncLoadingScreenModule : public IModuleInterface
+{
+public:
+
+ /** IModuleInterface implementation */
+
+ /**
+ * Called right after the module DLL has been loaded and the module object has been created
+ */
+ virtual void StartupModule() override;
+
+ /**
+ * Called before the module is unloaded, right before the module object is destroyed.
+ */
+ virtual void ShutdownModule() override;
+
+ /**
+ * Returns true if this module hosts gameplay code
+ *
+ * @return True for "gameplay modules", or false for engine code modules, plugins, etc.
+ */
+ virtual bool IsGameModule() const override;
+
+ /**
+ * 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 inline FAsyncLoadingScreenModule& Get()
+ {
+ return FModuleManager::LoadModuleChecked("AsyncLoadingScreen");
+ }
+
+ /**
+ * 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 inline bool IsAvailable()
+ {
+ return FModuleManager::Get().IsModuleLoaded("AsyncLoadingScreen");
+ }
+
+ TArray GetBackgroundImages();
+
+ /**
+ * Check if "bPreloadBackgroundImages" option is enabled
+ */
+ bool IsPreloadBackgroundImagesEnabled();
+
+ /**
+ * Is showing Startup Loading Screen?
+ */
+ bool IsStartupLoadingScreen() { return bIsStartupLoadingScreen; }
+
+ /**
+ * Load all background images from settings into array
+ */
+ void LoadBackgroundImages();
+
+ /**
+ * Remove all background images from array
+ */
+ void RemoveAllBackgroundImages();
+
+private:
+ /**
+ * Loading screen callback, it won't be called if we've already explicitly setup the loading screen
+ */
+ void PreSetupLoadingScreen();
+
+ /**
+ * Setup loading screen settings
+ */
+ void SetupLoadingScreen(const FALoadingScreenSettings& LoadingScreenSettings);
+
+ /**
+ * Shuffle the movies list
+ */
+ void ShuffleMovies(TArray& MoviesList);
+private:
+ // Startup background images array
+ UPROPERTY()
+ TArray StartupBackgroundImages;
+
+ // Default background images array
+ UPROPERTY()
+ TArray DefaultBackgroundImages;
+
+ bool bIsStartupLoadingScreen = false;
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/AsyncLoadingScreenLibrary.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/AsyncLoadingScreenLibrary.h
new file mode 100644
index 00000000..15f1875c
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/AsyncLoadingScreenLibrary.h
@@ -0,0 +1,111 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Kismet/BlueprintFunctionLibrary.h"
+#include "AsyncLoadingScreenLibrary.generated.h"
+
+/**
+ * Async Loading Screen Function Library
+ */
+UCLASS()
+class ASYNCLOADINGSCREEN_API UAsyncLoadingScreenLibrary : public UBlueprintFunctionLibrary
+{
+ GENERATED_BODY()
+private:
+ static int32 DisplayBackgroundIndex;
+ static int32 DisplayTipTextIndex;
+ static int32 DisplayMovieIndex;
+ static bool bShowLoadingScreen;
+public:
+
+ /**
+ * Set which background will be displayed on the loading screen by index. The "SetDisplayBackgroundManually" option in Background setting needs to be "true" to use this function.
+ *
+ * @param BackgroundIndex Valid index of the Background in "Images" array in Background setting. If the index is not valid, then it will display random background instead.
+ **/
+ UFUNCTION(BlueprintCallable, Category = "Async Loading Screen")
+ static void SetDisplayBackgroundIndex(int32 BackgroundIndex);
+
+ /**
+ * Set which text will be displayed on the loading screen by index. The "SetDisplayTipTextManually" option in Tip Widget setting needs to be "true" to use this function.
+ *
+ * @param TipTextIndex Valid index of the text in "TipText" array in Tip Widget setting. If the index is not valid, then it will display random text instead.
+ **/
+ UFUNCTION(BlueprintCallable, Category = "Async Loading Screen")
+ static void SetDisplayTipTextIndex(int32 TipTextIndex);
+
+ /**
+ * Set which movie will be displayed on the loading screen by index. The "SetDisplayMovieIndexManually" option needs to be "true" to use this function.
+ *
+ * @param MovieIndex Valid index of the movie in "MoviePaths" array.
+ **/
+ UFUNCTION(BlueprintCallable, Category = "Async Loading Screen")
+ static void SetDisplayMovieIndex(int32 MovieIndex);
+
+
+ /**
+ * Set enable/disable the loading screen for next levels
+ *
+ * @param bIsEnableLoadingScreen Should we enable the loading screen for next level?
+ **/
+ UFUNCTION(BlueprintCallable, Category = "Async Loading Screen")
+ static void SetEnableLoadingScreen(bool bIsEnableLoadingScreen);
+
+
+ /**
+ * Get enable/disable the loading screen for next levels
+ *
+ **/
+ UFUNCTION(BlueprintPure, Category = "Async Loading Screen")
+ static inline bool GetIsEnableLoadingScreen() { return bShowLoadingScreen; }
+
+ /**
+ * Stop the loading screen. To use this function, you must enable the "bAllowEngineTick" option.
+ * Call this function in BeginPlay event to stop the Loading Screen (works with Delay node).
+ *
+ **/
+ UFUNCTION(BlueprintCallable, Category = "Async Loading Screen")
+ static void StopLoadingScreen();
+
+ static inline int32 GetDisplayBackgroundIndex() { return DisplayBackgroundIndex; }
+ static inline int32 GetDisplayTipTextIndex() { return DisplayTipTextIndex; }
+ static inline int32 GetDisplayMovieIndex() { return DisplayMovieIndex; }
+
+ /**
+ * Load all background images into memory
+ *
+ * Only use this function when:
+ * "bPreloadBackgroundImages" option is checked,
+ * and you called "RemovePreloadedBackgroundImages" before.
+ *
+ * You don't need to use this if you never call
+ * "RemovePreloadedBackgroundImages" function,
+ * since the background images are still in the memory
+ *
+ * Note: Call this function before calling "OpenLevel" node.
+ *
+ **/
+ UFUNCTION(BlueprintCallable, Category = "Async Loading Screen")
+ static void PreloadBackgroundImages();
+
+ /**
+ * Remove all preloaded background images
+ *
+ * Only need to use this function when
+ * "bPreloadBackgroundImages" is checked.
+ *
+ * You need to call "PreloadBackgroundImages"
+ * to manually load all background images again.
+ *
+ **/
+ UFUNCTION(BlueprintCallable, Category = "Async Loading Screen")
+ static void RemovePreloadedBackgroundImages();
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/LoadingScreenSettings.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/LoadingScreenSettings.h
new file mode 100644
index 00000000..3573bb31
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/LoadingScreenSettings.h
@@ -0,0 +1,750 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Engine/DeveloperSettings.h"
+#include "MoviePlayer.h"
+#include "Widgets/Layout/SScaleBox.h"
+#include "Styling/SlateBrush.h"
+#include "Framework/Text/TextLayout.h"
+#include "LoadingScreenSettings.generated.h"
+
+
+/**
+ * Asynce Loading Screen Layouts
+ */
+UENUM(BlueprintType)
+enum class EAsyncLoadingScreenLayout : uint8
+{
+ /**
+ * The Classic is a simple, generic layout and fits well with many designs.
+ * Loading and tip widgets can be at the bottom or top.
+ */
+ ALSL_Classic UMETA(DisplayName = "Classic"),
+ /**
+ * The loading widget is at the center of the screen, tip widget can be at the bottom or top.
+ * The Center layout is a good choice if your loading icon is the main design.
+ */
+ ALSL_Center UMETA(DisplayName = "Center"),
+ /**
+ * The Letterbox layout has two borders on top and bottom of the screen. Loading widget
+ * can be on the top and the tip is at the bottom of the screen, or vice versa.
+ */
+ ALSL_Letterbox UMETA(DisplayName = "Letterbox"),
+ /**
+ * The Sidebar layout has a vertical border on the left or right of the screen. The Sidebar
+ * is suitable for storytelling, long paragraphs due to the height of the tip widget.
+ */
+ ALSL_Sidebar UMETA(DisplayName = "Sidebar"),
+
+ /**
+ * Similar to Sidebar layout but Dual Sidebar layout has two vertical borders on both left and right of the screen.
+ * The Dual Sidebar layout is suitable for storytelling, long paragraphs due to the height of the tip widget.
+ */
+ ALSL_DualSidebar UMETA(DisplayName = "Dual Sidebar")
+};
+
+/** Loading Icon Type*/
+UENUM(BlueprintType)
+enum class ELoadingIconType : uint8
+{
+ /** SThrobber widget */
+ LIT_Throbber UMETA(DisplayName = "Throbber"),
+ /** SCircularThrobber widget */
+ LIT_CircularThrobber UMETA(DisplayName = "Circular Throbber"),
+ /** Animated images */
+ LIT_ImageSequence UMETA(DisplayName = "Image Sequence")
+};
+
+/** Loading Widget type */
+UENUM(BlueprintType)
+enum class ELoadingWidgetType : uint8
+{
+ /** Horizontal alignment */
+ LWT_Horizontal UMETA(DisplayName = "Horizontal"),
+ /** Vertical alignment */
+ LWT_Vertical UMETA(DisplayName = "Vertical"),
+};
+
+/** Alignment for widget*/
+USTRUCT(BlueprintType)
+struct FWidgetAlignment
+{
+ GENERATED_BODY()
+ /** The horizontal alignment of the widget.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Alignment Setting")
+ TEnumAsByte HorizontalAlignment = EHorizontalAlignment::HAlign_Center;
+
+ /** The vertical alignment of the widget.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Alignment Setting")
+ TEnumAsByte VerticalAlignment = EVerticalAlignment::VAlign_Center;
+};
+
+// Text appearance settings
+USTRUCT(BlueprintType)
+struct FTextAppearance
+{
+ GENERATED_BODY()
+
+ /** Text color and opacity */
+ UPROPERTY(BlueprintReadWrite, Config, EditAnywhere, Category = "Text Appearance")
+ FSlateColor ColorAndOpacity = FSlateColor(FLinearColor::White);
+
+ // The font to render the text with.
+ UPROPERTY(BlueprintReadWrite, Config, EditAnywhere, Category = "Text Appearance")
+ FSlateFontInfo Font;
+
+ /** Drop shadow offset in pixels */
+ UPROPERTY(BlueprintReadWrite, Config, EditAnywhere, Category = "Text Appearance")
+ FVector2D ShadowOffset = FVector2D::ZeroVector;
+
+ /** Shadow color and opacity */
+ UPROPERTY(BlueprintReadWrite, Config, EditAnywhere, Category = "Text Appearance")
+ FLinearColor ShadowColorAndOpacity = FLinearColor::White;
+
+ /** How the text should be aligned with the margin. */
+ UPROPERTY(BlueprintReadWrite, Config, EditAnywhere, Category = "Text Appearance")
+ TEnumAsByte Justification = ETextJustify::Left;
+};
+
+USTRUCT(BlueprintType)
+struct FThrobberSettings
+{
+ GENERATED_BODY()
+
+ /** How many pieces there are */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Appearance, meta = (ClampMin = "1", ClampMax = "25", UIMin = "1", UIMax = "25"))
+ int32 NumberOfPieces = 3;
+
+ /** Should the pieces animate horizontally? */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Appearance)
+ bool bAnimateHorizontally = true;
+
+ /** Should the pieces animate vertically? */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Appearance)
+ bool bAnimateVertically = true;
+
+ /** Should the pieces animate their opacity? */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Appearance)
+ bool bAnimateOpacity = true;
+
+ /** Image to use for each segment of the throbber */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Appearance)
+ FSlateBrush Image;
+};
+
+USTRUCT(BlueprintType)
+struct FCircularThrobberSettings
+{
+ GENERATED_BODY()
+
+ /** How many pieces there are */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Appearance, meta = (ClampMin = "1", ClampMax = "25", UIMin = "1", UIMax = "25"))
+ int32 NumberOfPieces = 6;
+
+ /** The amount of time for a full circle (in seconds) */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Appearance, meta = (ClampMin = "0", UIMin = "0"))
+ float Period = 0.75f;
+
+ /** The radius of the circle. If the throbber is a child of Canvas Panel, the 'Size to Content' option must be enabled in order to set Radius. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Appearance)
+ float Radius = 64.0f;
+
+ /** Image to use for each segment of the throbber */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Appearance)
+ FSlateBrush Image;
+};
+
+USTRUCT(BlueprintType)
+struct FImageSequenceSettings
+{
+ GENERATED_BODY()
+
+ /** An array of images for animating the loading icon.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting", meta = (AllowedClasses = "/Script/Engine.Texture2D"))
+ TArray Images;
+
+ /** Scale of the images.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FVector2D Scale = FVector2D(1.0f, 1.0f);
+
+ /**
+ * Time in second to update the images, the smaller value the faster of the animation. A zero value will update the images every frame.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting", meta = (UIMax = 1.00, UIMin = 0.00, ClampMin = "0", ClampMax = "1"))
+ float Interval = 0.05f;
+
+ /** Play the image sequence in reverse.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ bool bPlayReverse = false;
+};
+
+/**
+ * Background widget for the widget loading screen
+ */
+USTRUCT(BlueprintType)
+struct ASYNCLOADINGSCREEN_API FBackgroundSettings
+{
+ GENERATED_BODY()
+
+ // The images randomly display while in the loading screen on top of the movie
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Background", meta = (AllowedClasses = "/Script/Engine.Texture2D"))
+ TArray Images;
+
+ // The scaling type to apply to images.
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Background")
+ TEnumAsByte ImageStretch = EStretch::ScaleToFit;
+
+ /** The padding area between the border and the image it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Background")
+ FMargin Padding;
+
+ // The border's background color if there is any image defined. If padding = 0 you will not see the border color.
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Background")
+ FLinearColor BackgroundColor = FLinearColor::Black;
+
+ /**
+ * If true, you will have to manually set which background index you want to display on the loading screen by calling "SetDisplayBackgroundIndex" function
+ * in your Blueprint before opening a new level. If the index you set is not valid, then it will display random background in the "Images" array.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Background")
+ bool bSetDisplayBackgroundManually = false;
+};
+
+/**
+ * Loading widget settings
+ */
+USTRUCT(BlueprintType)
+struct ASYNCLOADINGSCREEN_API FLoadingWidgetSettings
+{
+ GENERATED_BODY()
+
+ FLoadingWidgetSettings();
+
+ /** Loading icon type*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ ELoadingIconType LoadingIconType = ELoadingIconType::LIT_CircularThrobber;
+
+ /** Loading Widget type*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ ELoadingWidgetType LoadingWidgetType = ELoadingWidgetType::LWT_Horizontal;
+
+ /** Render transform translation of the loading icon.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FVector2D TransformTranslation = FVector2D(0.0f, 0.0f);
+
+ /** Render transform scale of the loading icon, a negative value will flip the icon.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FVector2D TransformScale = FVector2D(1.0f, 1.0f);
+
+ /** Render transform pivot of the loading icon (in normalized local space).*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FVector2D TransformPivot = FVector2D(0.5f, 0.5f);
+
+ // Text displayed beside the animated icon
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FText LoadingText;
+
+ /** Is Loading Text on the right of the loading icon? Ignore this if you don't choose Loading Widget Type = Horizontal.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ bool bLoadingTextRightPosition = true;
+
+ /** Is Loading Text on the top of the loading icon? Ignore this if you don't choose Loading Widget Type = Vertical.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ bool bLoadingTextTopPosition = true;
+
+ // Loading text appearance settings
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Tip Settings")
+ FTextAppearance Appearance;
+
+ /** Throbber settings. Ignore this if you don't choose the 'Throbber' icon type*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FThrobberSettings ThrobberSettings;
+
+ /** Circular Throbber settings. Ignore this if you don't choose the 'Circular Throbber' icon type*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FCircularThrobberSettings CircularThrobberSettings;
+
+ /** Image Sequence settings. Ignore this if you don't choose the 'Image Sequence' icon type*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Widget Setting")
+ FImageSequenceSettings ImageSequenceSettings;
+
+ /** The alignment of the loading text.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Loading Widget Setting")
+ FWidgetAlignment TextAlignment;
+
+ /** The alignment of the loading icon. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Loading Widget Setting")
+ FWidgetAlignment LoadingIconAlignment;
+
+ /** Empty space between the loading text and the loading icon */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Loading Widget Setting")
+ float Space = 1.0f;
+
+ /** Hide the loading widget when the level loading is complete*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Loading Widget Setting")
+ bool bHideLoadingWidgetWhenCompletes = false;
+};
+
+
+/**
+ * Tips text settings
+ */
+USTRUCT(BlueprintType)
+struct ASYNCLOADINGSCREEN_API FTipSettings
+{
+ GENERATED_BODY()
+
+ // The tip text randomly display in the loading screen.
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Tip Settings", meta = (MultiLine = true))
+ TArray TipText;
+
+ // Tip text appearance settings
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Tip Settings")
+ FTextAppearance Appearance;
+
+ // The size of the tip before it's wrapped to the next line
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Tip Settings")
+ float TipWrapAt = 0.0f;
+
+ /**
+ * If true, you will have to manually set which TipText index you want to display on the loading screen by calling "SetDisplayTipTextIndex" function
+ * in your Blueprint before opening a new level. If the index you set is not valid, then it will display random Tip in the "TipText" array.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Background")
+ bool bSetDisplayTipTextManually = false;
+};
+
+/**
+ * The text that displayed when loading is complete. Ignore this if you don't set "bShowLoadingCompletedText" = true
+ */
+USTRUCT(BlueprintType)
+struct ASYNCLOADINGSCREEN_API FLoadingCompleteTextSettings
+{
+ GENERATED_BODY()
+
+// FLoadingCompleteTextSettings();
+
+ // The text that shows up when level loading is done.
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Complete Text Settings")
+ FText LoadingCompleteText;
+
+ // Text appearance settings
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Complete Text Settings")
+ FTextAppearance Appearance;
+
+ /** The alignment of the text.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Loading Widget Setting")
+ FWidgetAlignment Alignment;
+
+ /** Text padding. */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Complete Text Settings")
+ FMargin Padding;
+
+ // Animate the text?
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Complete Text Settings")
+ bool bFadeInOutAnim = true;
+
+ /**
+ * Animation speed
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Complete Text Settings", meta = (UIMax = 10.00, UIMin = 0.00, ClampMin = "0", ClampMax = "10"))
+ float AnimationSpeed = 1.0f;
+};
+
+/**
+ * Loading Screen Settings
+ */
+USTRUCT(BlueprintType)
+struct ASYNCLOADINGSCREEN_API FALoadingScreenSettings
+{
+ GENERATED_BODY()
+
+ // The minimum time that a loading screen should be opened for, -1 if there is no minimum time. I recommend set it to -1.
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ float MinimumLoadingScreenDisplayTime = -1;
+
+ // If true, the loading screen will disappear as soon as loading is done.
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ bool bAutoCompleteWhenLoadingCompletes = true;
+
+ // If true, movies can be skipped by clicking the loading screen as long as loading is done.
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ bool bMoviesAreSkippable = true;
+
+ /**
+ * If true, movie playback continue until Stop is called.
+ *
+ * NOTE: If set "Minimum Loading Screen Display Time" = -1, it will allow players to press any key to stop the loading screen.
+ * If "Minimum Loading Screen Display Time" >= 0, you will need to call "StopLoadingScreen" in BeginPlay event to stop the loading screen ("bAllowEngineTick" must be true)
+ **/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ bool bWaitForManualStop = false;
+
+ /** If true loading screens here cannot have any uobjects of any kind or use any engine features at all. This will start the movies very early as a result on platforms that support it */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ bool bAllowInEarlyStartup = false;
+
+ /** If true, this will call the engine tick while the game thread is stalled waiting for a loading movie to finish. This only works for post-startup load screens and is potentially unsafe */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ bool bAllowEngineTick = false;
+
+ /** Should we just play back, loop, etc. NOTE: if the playback type is MT_LoopLast, then bAutoCompleteWhenLoadingCompletes will be togged on when the last movie is hit*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ TEnumAsByte PlaybackType = EMoviePlaybackType::MT_Normal;
+
+ /**
+ * All movie files must be locate at Content/Movies/ directory. Suggested format: MPEG-4 Movie (mp4). Enter file path/name without the extension.
+ * E.g., if you have a movie name my_movie.mp4 in the 'Content/Movies' folder, then enter my_movie in the input field.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ TArray MoviePaths;
+
+ /**
+ * If true, shuffle the movies list before playing.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ bool bShuffle = false;
+
+ /**
+ * If true, the "Shuffle" option will be ignored, and you will have to manually set which Movie index you want to display on the loading screen
+ * by calling "SetDisplayMovieIndex" function in your Blueprint before opening a new level.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Movies Settings")
+ bool bSetDisplayMovieIndexManually = false;
+
+
+ /**
+ * Should we show the loading screen widgets (background/tips/loading widget)? Generally you'll want to set this to false if you just want to show a movie.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Screen Settings")
+ bool bShowWidgetOverlay = true;
+
+ /**
+ * If true show a text when level loading is completed. Ignore this if you choose "Show Widget Overlay" = false
+ *
+ * NOTE: To enable this option properly, you need to set "Wait For Manual Stop" = true, and "Minimum Loading Screen Display Time" = -1.
+ * This also allows players press any button to stop the Loading Screen.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Screen Settings")
+ bool bShowLoadingCompleteText = false;
+
+ /**
+ * The text that displayed when loading is complete. Ignore this if you set "Show Loading Complete Text" = false.
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Screen Settings")
+ FLoadingCompleteTextSettings LoadingCompleteTextSettings;
+
+ /** Background widget for the loading screen. Ignore this if you choose "Show Widget Overlay = false" */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Screen Settings")
+ FBackgroundSettings Background;
+
+ /** Tip widget for the loading screen. Ignore this if you choose "Show Widget Overlay = false" */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Screen Settings")
+ FTipSettings TipWidget;
+
+ /** Loading widget for the loading screen. Ignore this if you choose "Show Widget Overlay = false" */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Screen Settings")
+ FLoadingWidgetSettings LoadingWidget;
+
+ /**
+ * Select async loading screen Layout. Ignore this if you choose "Show Widget Overlay = false"
+ */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Loading Screen Settings")
+ EAsyncLoadingScreenLayout Layout = EAsyncLoadingScreenLayout::ALSL_Classic;
+};
+
+/** Classic Layout settings*/
+USTRUCT(BlueprintType)
+struct FClassicLayoutSettings
+{
+ GENERATED_BODY()
+
+ /** Is the border that contains loading and tip widget located at the bottom or top? */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Classic Layout")
+ bool bIsWidgetAtBottom = true;
+
+ /** Is loading widget on the left of the tip? */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Classic Layout")
+ bool bIsLoadingWidgetAtLeft = true;
+
+ /** The empty space between loading widget and the tip.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Classic Layout")
+ float Space = 1.0f;
+
+ /** The alignment of the tips. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Classic Layout")
+ FWidgetAlignment TipAlignment;
+
+ /** The horizontal alignment of the border background.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Center Layout")
+ TEnumAsByte BorderHorizontalAlignment = EHorizontalAlignment::HAlign_Fill;
+
+ /** The padding area between the border and the widget it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Classic Layout")
+ FMargin BorderPadding;
+
+ /** Background appearance settings for the border widget */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Classic Layout")
+ FSlateBrush BorderBackground;
+};
+
+/** Center Layout settings*/
+USTRUCT(BlueprintType)
+struct FCenterLayoutSettings
+{
+ GENERATED_BODY()
+
+ /** Is tip located at the bottom or top? */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Center Layout")
+ bool bIsTipAtBottom = true;
+
+ /** The alignment of the tips. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Center Layout")
+ FWidgetAlignment TipAlignment;
+
+ /** The horizontal alignment of the border.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Center Layout")
+ TEnumAsByte BorderHorizontalAlignment = EHorizontalAlignment::HAlign_Fill;
+
+ /** Offset to bottom or top of the screen depending on the tip located at the bottom or top position.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Center Layout")
+ float BorderVerticalOffset = 0.0f;
+
+ /** The padding area between the border and the tips it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Center Layout")
+ FMargin BorderPadding;
+
+ /** Background appearance settings for tip area */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Center Layout")
+ FSlateBrush BorderBackground;
+};
+
+/** Letterbox Layout settings*/
+USTRUCT(BlueprintType)
+struct FLetterboxLayoutSettings
+{
+ GENERATED_BODY()
+
+ /** Is loading widget located at the bottom or top? */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Letterbox Layout")
+ bool bIsLoadingWidgetAtTop = true;
+
+ /** The alignment of the tips. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Letterbox Layout")
+ FWidgetAlignment TipAlignment;
+
+ /** The alignment of the loading widget. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Letterbox Layout")
+ FWidgetAlignment LoadingWidgetAlignment;
+
+ /** The horizontal alignment of the top border.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Letterbox Layout")
+ TEnumAsByte TopBorderHorizontalAlignment = EHorizontalAlignment::HAlign_Fill;
+
+ /** The horizontal alignment of the bottom border.*/
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Letterbox Layout")
+ TEnumAsByte BottomBorderHorizontalAlignment = EHorizontalAlignment::HAlign_Fill;
+
+ /** The top padding area between the border and the widget it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Letterbox Layout")
+ FMargin TopBorderPadding;
+
+ /** The bottom padding area between the border and the widget it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Letterbox Layout")
+ FMargin BottomBorderPadding;
+
+ /** Background appearance settings for top border */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Letterbox Layout")
+ FSlateBrush TopBorderBackground;
+
+ /** Background appearance settings for bottom border */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Letterbox Layout")
+ FSlateBrush BottomBorderBackground;
+};
+
+/** Sidebar Layout settings*/
+USTRUCT(BlueprintType)
+struct FSidebarLayoutSettings
+{
+ GENERATED_BODY()
+
+ /** Is the border that contains loading and tip widgets located at the right or left? */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ bool bIsWidgetAtRight = true;
+
+ /** Is loading widget on the top of the tip? */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ bool bIsLoadingWidgetAtTop = true;
+
+ /** The empty space between loading widget and the tip.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ float Space = 1.0f;
+
+ /** The vertical alignment of the vertical box that contains loading/tip widgets. */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ TEnumAsByte VerticalAlignment = EVerticalAlignment::VAlign_Center;
+
+ /** The alignment of the loading widget. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Sidebar Layout")
+ FWidgetAlignment LoadingWidgetAlignment;
+
+ /** The alignment of the tips. */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Sidebar Layout")
+ FWidgetAlignment TipAlignment;
+
+ /** The vertical alignment of the border background that contains all widgets. */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ TEnumAsByte BorderVerticalAlignment = EVerticalAlignment::VAlign_Fill;
+
+ /** Offset to left or right of the screen depending on the border that contains loading and tip widgets located at the left or right position.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ float BorderHorizontalOffset = 0.0f;
+
+ /** The padding area between the border and the widget it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ FMargin BorderPadding;
+
+ /** Background appearance settings for the border widget */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Sidebar Layout")
+ FSlateBrush BorderBackground;
+};
+
+/** Dual Sidebar Layout settings*/
+USTRUCT(BlueprintType)
+struct FDualSidebarLayoutSettings
+{
+ GENERATED_BODY()
+
+ /** Is loading widget on the right or left border? */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ bool bIsLoadingWidgetAtRight = true;
+
+ /** The vertical alignment of the left widget. */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ TEnumAsByte LeftVerticalAlignment = EVerticalAlignment::VAlign_Center;
+
+ /** The vertical alignment of the right widget. */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ TEnumAsByte RightVerticalAlignment = EVerticalAlignment::VAlign_Center;
+
+ /** The vertical alignment of the left border background that contains all widgets. */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ TEnumAsByte LeftBorderVerticalAlignment = EVerticalAlignment::VAlign_Fill;
+
+ /** The vertical alignment of the right border background that contains all widgets. */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ TEnumAsByte RightBorderVerticalAlignment = EVerticalAlignment::VAlign_Fill;
+
+ /** The padding area between the left border and the widget it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ FMargin LeftBorderPadding;
+
+ /** The padding area between the right border and the widget it contains.*/
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ FMargin RightBorderPadding;
+
+ /** Background appearance settings for the left border widget */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ FSlateBrush LeftBorderBackground;
+
+ /** Background appearance settings for the right border widget */
+ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Dual Sidebar Layout")
+ FSlateBrush RightBorderBackground;
+};
+
+/**
+ * Async Loading Screen Settings
+ */
+UCLASS(Config = "Game", defaultconfig, meta = (DisplayName = "Async Loading Screen"))
+class ASYNCLOADINGSCREEN_API ULoadingScreenSettings : public UDeveloperSettings
+{
+ GENERATED_BODY()
+
+public:
+
+ ULoadingScreenSettings(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
+
+ /**
+ * If true, load all background images at the start of the game.
+ *
+ * This is a workaround for the issue when the background image
+ * is loaded too late with the wrong image scaling.
+ *
+ * If you don't encounter this issue, don't enable this option,
+ * since it will keep the background images in the memory
+ * all the time, therefore consumes memory resources.
+ *
+ * However, you can manually remove all the preloaded background
+ * images by calling the Blueprint function
+ * "RemovePreloadedBackgroundImages"
+ *
+ * You will need to re-load all background images by calling
+ * the Blueprint function "PreloadBackgroundImages"
+ *
+ * Note: Call "PreloadBackgroundImages" before the "OpenLevel"
+ *
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "General")
+ bool bPreloadBackgroundImages = false;
+
+ /**
+ * The startup loading screen when you first open the game. Setup any studio logo movies here.
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "General")
+ FALoadingScreenSettings StartupLoadingScreen;
+
+ /**
+ * The default loading screen that shows up whenever you open a new level.
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "General")
+ FALoadingScreenSettings DefaultLoadingScreen;
+
+ /**
+ * Classic Layout settings.
+ * The Classic is a simple, generic layout and fits well with many designs.
+ * A border that contains loading and tip widgets can be at the bottom or top.
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "Layout")
+ FClassicLayoutSettings Classic;
+
+ /**
+ * Center Layout settings.
+ * The loading widget is at the center of the screen, tip widget can be at the bottom or top.
+ * The Center layout is a good choice if your loading icon is the main design.
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "Layout")
+ FCenterLayoutSettings Center;
+
+ /**
+ * Letterbox Layout settings.
+ * The Letterbox layout has two borders on top and bottom of the screen. Loading widget
+ * can be on the top and the tip is at the bottom of the screen, or vice versa.
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "Layout")
+ FLetterboxLayoutSettings Letterbox;
+
+ /**
+ * Sidebar Layout settings.
+ * The Sidebar layout has a vertical border on the left or right of the screen. The Sidebar
+ * is suitable for storytelling, long paragraphs due to the height of the tip widget.
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "Layout")
+ FSidebarLayoutSettings Sidebar;
+
+ /**
+ * Dual Sidebar Layout settings
+ * Similar to Sidebar layout but Dual Sidebar layout has two vertical borders on both left and right of the screen.
+ * The Dual Sidebar layout is suitable for storytelling, long paragraphs due to the height of the tip widget.
+ */
+ UPROPERTY(Config, EditAnywhere, Category = "Layout")
+ FDualSidebarLayoutSettings DualSidebar;
+
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SBackgroundWidget.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SBackgroundWidget.h
new file mode 100644
index 00000000..551ab224
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SBackgroundWidget.h
@@ -0,0 +1,30 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "Widgets/SCompoundWidget.h"
+
+struct FBackgroundSettings;
+class FDeferredCleanupSlateBrush;
+
+/**
+ * Background widget
+ */
+class SBackgroundWidget : public SCompoundWidget
+{
+public:
+ SLATE_BEGIN_ARGS(SBackgroundWidget) {}
+
+ SLATE_END_ARGS()
+
+ void Construct(const FArguments& InArgs, const FBackgroundSettings& Settings);
+
+private:
+ TSharedPtr ImageBrush;
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SCenterLayout.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SCenterLayout.h
new file mode 100644
index 00000000..88542596
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SCenterLayout.h
@@ -0,0 +1,30 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "SLoadingScreenLayout.h"
+
+struct FALoadingScreenSettings;
+struct FCenterLayoutSettings;
+
+/**
+ * Center layout loading screen
+ */
+class SCenterLayout : public SLoadingScreenLayout
+{
+public:
+ SLATE_BEGIN_ARGS(SCenterLayout) {}
+
+ SLATE_END_ARGS()
+
+ /**
+ * Construct this widget
+ */
+ void Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FCenterLayoutSettings& LayoutSettings);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SClassicLayout.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SClassicLayout.h
new file mode 100644
index 00000000..91bb0a74
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SClassicLayout.h
@@ -0,0 +1,30 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "SLoadingScreenLayout.h"
+
+struct FALoadingScreenSettings;
+struct FClassicLayoutSettings;
+
+/**
+ * Classic layout loading screen
+ */
+class SClassicLayout : public SLoadingScreenLayout
+{
+public:
+ SLATE_BEGIN_ARGS(SClassicLayout) {}
+
+ SLATE_END_ARGS()
+
+ /**
+ * Construct this widget
+ */
+ void Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FClassicLayoutSettings& LayoutSettings);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SDualSidebarLayout.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SDualSidebarLayout.h
new file mode 100644
index 00000000..2e6bb710
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SDualSidebarLayout.h
@@ -0,0 +1,30 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "SLoadingScreenLayout.h"
+
+struct FALoadingScreenSettings;
+struct FDualSidebarLayoutSettings;
+
+/**
+ * Dual Sidebar Layout
+ */
+class SDualSidebarLayout : public SLoadingScreenLayout
+{
+public:
+ SLATE_BEGIN_ARGS(SDualSidebarLayout) {}
+
+ SLATE_END_ARGS()
+
+ /**
+ * Construct this widget
+ */
+ void Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FDualSidebarLayoutSettings& LayoutSettings);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SHorizontalLoadingWidget.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SHorizontalLoadingWidget.h
new file mode 100644
index 00000000..71d2cb8d
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SHorizontalLoadingWidget.h
@@ -0,0 +1,26 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "SLoadingWidget.h"
+
+struct FLoadingWidgetSettings;
+
+/**
+ *
+ */
+class SHorizontalLoadingWidget : public SLoadingWidget
+{
+public:
+ SLATE_BEGIN_ARGS(SHorizontalLoadingWidget) {}
+
+ SLATE_END_ARGS()
+
+ void Construct(const FArguments& InArgs, const FLoadingWidgetSettings& Settings);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLetterboxLayout.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLetterboxLayout.h
new file mode 100644
index 00000000..8ffeadf1
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLetterboxLayout.h
@@ -0,0 +1,30 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "SLoadingScreenLayout.h"
+
+struct FALoadingScreenSettings;
+struct FLetterboxLayoutSettings;
+
+/**
+ * Letterbox layout loading screen
+ */
+class SLetterboxLayout : public SLoadingScreenLayout
+{
+public:
+ SLATE_BEGIN_ARGS(SLetterboxLayout) {}
+
+ SLATE_END_ARGS()
+
+ /**
+ * Construct this widget
+ */
+ void Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FLetterboxLayoutSettings& LayoutSettings);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingCompleteText.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingCompleteText.h
new file mode 100644
index 00000000..2132ba71
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingCompleteText.h
@@ -0,0 +1,47 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "Widgets/SCompoundWidget.h"
+
+struct FLoadingCompleteTextSettings;
+/**
+ *
+ */
+class SLoadingCompleteText : public SCompoundWidget
+{
+private:
+ // Complete text color
+ FLinearColor CompleteTextColor = FLinearColor::White;
+
+ // Complete text fade in or fade out animation
+ bool bCompleteTextReverseAnim = false;
+
+ // Complete text animation speed
+ float CompleteTextAnimationSpeed = 1.0f;
+
+ // Active timer registered flag
+ bool bIsActiveTimerRegistered = false;
+
+public:
+ SLATE_BEGIN_ARGS(SLoadingCompleteText) {}
+
+ SLATE_END_ARGS()
+
+ void Construct(const FArguments& InArgs, const FLoadingCompleteTextSettings& CompleteTextSettings);
+
+ // Getter for text visibility
+ EVisibility GetLoadingCompleteTextVisibility() const;
+
+ // Getter for complete text color and opacity
+ FSlateColor GetLoadingCompleteTextColor() const;
+
+ /** Active timer event for animating the image sequence */
+ EActiveTimerReturnType AnimateText(double InCurrentTime, float InDeltaTime);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingScreenLayout.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingScreenLayout.h
new file mode 100644
index 00000000..5171e506
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingScreenLayout.h
@@ -0,0 +1,22 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "Widgets/SCompoundWidget.h"
+
+/**
+ * Loading screen base theme
+ */
+class SLoadingScreenLayout : public SCompoundWidget
+{
+public:
+ static float PointSizeToSlateUnits(float PointSize);
+protected:
+ float GetDPIScale() const;
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingWidget.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingWidget.h
new file mode 100644
index 00000000..7c340273
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SLoadingWidget.h
@@ -0,0 +1,54 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "Widgets/SCompoundWidget.h"
+#include "Widgets/Images/SThrobber.h"
+#include "LoadingScreenSettings.h"
+
+class FDeferredCleanupSlateBrush;
+struct FLoadingWidgetSettings;
+
+/**
+ * Loading Widget base class
+ */
+class SLoadingWidget : public SCompoundWidget
+{
+public:
+
+ // SWidgetOverrides
+ virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
+
+ /** Gets the combined value of the animation properties as a single SThrobber::EAnimation value. */
+ SThrobber::EAnimation GetThrobberAnimation(const FThrobberSettings& ThrobberSettings) const;
+
+ /** Construct loading icon*/
+ void ConstructLoadingIcon(const FLoadingWidgetSettings& Settings);
+
+protected:
+ // Placeholder widgets
+ TSharedRef LoadingIcon = SNullWidget::NullWidget;
+ // Image slate brush list
+ TArray> CleanupBrushList;
+
+ // Play image sequence in reverse
+ bool bPlayReverse = false;
+
+ // Current image sequence index
+ mutable int32 ImageIndex = 0;
+
+ // Current total delta time
+ mutable float TotalDeltaTime = 0.0f;
+
+ //Time in second to update the images, the smaller value the faster of the animation. A zero value will update the images every frame.
+ float Interval = 0.05f;
+
+ // Getter for text visibility
+ EVisibility GetLoadingWidgetVisibility() const;
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SSidebarLayout.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SSidebarLayout.h
new file mode 100644
index 00000000..882db2c3
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SSidebarLayout.h
@@ -0,0 +1,30 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "SLoadingScreenLayout.h"
+
+struct FALoadingScreenSettings;
+struct FSidebarLayoutSettings;
+
+/**
+ * Sidebar layout loading screen
+ */
+class SSidebarLayout : public SLoadingScreenLayout
+{
+public:
+ SLATE_BEGIN_ARGS(SSidebarLayout) {}
+
+ SLATE_END_ARGS()
+
+ /**
+ * Construct this widget
+ */
+ void Construct(const FArguments& InArgs, const FALoadingScreenSettings& Settings, const FSidebarLayoutSettings& LayoutSettings);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/STipWidget.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/STipWidget.h
new file mode 100644
index 00000000..cc03067a
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/STipWidget.h
@@ -0,0 +1,26 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "Widgets/SCompoundWidget.h"
+
+struct FTipSettings;
+
+/**
+ * Tip widget
+ */
+class STipWidget : public SCompoundWidget
+{
+public:
+ SLATE_BEGIN_ARGS(STipWidget) {}
+
+ SLATE_END_ARGS()
+
+ void Construct(const FArguments& InArgs, const FTipSettings& Settings);
+};
diff --git a/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SVerticalLoadingWidget.h b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SVerticalLoadingWidget.h
new file mode 100644
index 00000000..66295398
--- /dev/null
+++ b/EndlessVendetta/Plugins/AsyncLoadingScreen-5.1.0/Source/AsyncLoadingScreen/Public/SVerticalLoadingWidget.h
@@ -0,0 +1,24 @@
+/************************************************************************************
+ * *
+ * Copyright (C) 2020 Truong Bui. *
+ * Website: https://github.com/truong-bui/AsyncLoadingScreen *
+ * Licensed under the MIT License. See 'LICENSE' file for full license information. *
+ * *
+ ************************************************************************************/
+
+#pragma once
+
+#include "SLoadingWidget.h"
+
+/**
+ *
+ */
+class SVerticalLoadingWidget : public SLoadingWidget
+{
+public:
+ SLATE_BEGIN_ARGS(SVerticalLoadingWidget) {}
+
+ SLATE_END_ARGS()
+
+ void Construct(const FArguments& InArgs, const FLoadingWidgetSettings& Settings);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/WeaponDepositCheckpoint.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/WeaponDepositCheckpoint.cpp
new file mode 100644
index 00000000..2f6d999e
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/WeaponDepositCheckpoint.cpp
@@ -0,0 +1,18 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "WeaponDepositCheckpoint.h"
+
+#include "EndlessVendetta/EndlessVendettaCharacter.h"
+
+void AWeaponDepositCheckpoint::Interact()
+{
+ if (!Active) return;
+
+ UE_LOG(LogTemp,Warning, TEXT("Sooooo ermmmmmm"));
+ AEndlessVendettaCharacter* Player = Cast(GetWorld()->GetFirstPlayerController()->GetPawn());
+ if (Player->bHasRifle) Player->EquipSecondary();
+ Player->bLockSecondary = true;
+ OpenElevatorDoor();
+ BroadcastCompletion();
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/WeaponDepositCheckpoint.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/WeaponDepositCheckpoint.h
new file mode 100644
index 00000000..953f0b01
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckPoints/WeaponDepositCheckpoint.h
@@ -0,0 +1,24 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "EndlessVendetta/InteractionInterface.h"
+#include "EndlessVendetta/BountySystem/CheckpointClass.h"
+#include "WeaponDepositCheckpoint.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API AWeaponDepositCheckpoint : public ACheckpointClass, public IInteractionInterface
+{
+ GENERATED_BODY()
+
+protected:
+ void Interact() override;
+
+ UFUNCTION(BlueprintImplementableEvent)
+ void OpenElevatorDoor();
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp
index f1dda871..4a17f488 100644
--- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp
@@ -550,7 +550,7 @@ void AEndlessVendettaCharacter::EquipPrimary()
void AEndlessVendettaCharacter::EquipSecondary()
{
- if (bIsReloading) return;
+ if (bIsReloading || bLockSecondary) return;
if (!IsValid(SecondaryWeaponClass)) return;
if (PlayerOnShip || InPauseMenu) return;
FActorSpawnParameters spawnParams;
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h
index 0b0fced9..54b61e63 100644
--- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h
+++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h
@@ -239,6 +239,8 @@ public:
AGadgetManager* GadgetManager;
bool bIsReloading = false;
+ bool bLockSecondary = false;
+
bool bIsPlayerMoving = false;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.cpp
index a028af77..a647479b 100644
--- a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.cpp
@@ -51,8 +51,8 @@ bool AGadgetBase::Unequip()
UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer());
Subsystem->RemoveMappingContext(GadgetMappingContext);
- UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerController->InputComponent);
- EnhancedInputComponent->ClearActionBindings();
+ // UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerController->InputComponent);
+ // EnhancedInputComponent->ClearActionBindings();
return true;
}
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.h
index 44cd254b..bff5ddb6 100644
--- a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.h
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.h
@@ -72,7 +72,7 @@ protected:
bool GadgetCantBeUsed()
{
- return GadgetOnCooldown|| GadgetInUse;
+ return GadgetOnCooldown || GadgetInUse || !Equipped;
}
// Called when the game starts or when spawned
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
index d90949fc..69a8497a 100644
--- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
@@ -200,7 +200,7 @@ void ABaseWeaponClass::Fire()
GetWorld()->LineTraceSingleByObjectType(outHit, traceStart, traceEnd, ObjectQueryParams, collisionParams);
WeaponFired.Broadcast();
playerControllerRef->PlayerCameraManager->StartCameraShake(CameraShakeClass, 1);
- endlessVendettaChar->PawnNoiseEmitterComp->MakeNoise(endlessVendettaChar, 1, traceStart);
+ endlessVendettaChar->PawnNoiseEmitterComp->MakeNoise(endlessVendettaChar, 1, traceStart); //LITERALLY CHANGE THIS FOR SUPPRESSOR AND IT SHOULD WORK LOL
currentAmmoCount -= 1;
GenerateRecoilVector();
ClickDetectionTimer();
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
index 583bb67a..45d2f5bc 100644
--- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
@@ -202,15 +202,17 @@ public:
UPROPERTY(BlueprintAssignable, Category = "Weapons")
FWeaponFired WeaponFired;
+ float originalMinMultiplier;
+ float originalMagnitude;
+ float originalMaxAngleLeft;
+ float originalMaxAngleRight;
+
protected:
UArrowComponent* GunStartArrow;
bool bStopShooting = false;
UPROPERTY(VisibleAnywhere)
int tempWeaponDamage;
-
- float originalMagnitude;
- float originalMaxAngleLeft;
- float originalMaxAngleRight;
- float originalMinMultiplier;
+
+
};
diff --git a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.cpp b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.cpp
index cbced9f9..66415b6c 100644
--- a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.cpp
@@ -3,6 +3,8 @@
#include "GripAttachmentClass.h"
+#include "EndlessVendetta/WeaponSystem/BaseWeaponClass.h"
+
// Sets default values for this component's properties
UGripAttachmentClass::UGripAttachmentClass()
@@ -19,9 +21,17 @@ UGripAttachmentClass::UGripAttachmentClass()
void UGripAttachmentClass::BeginPlay()
{
Super::BeginPlay();
-
- // ...
-
+ BaseWeaponClassRef = Cast(this->GetAttachParentActor());
+ if(IsValid(BaseWeaponClassRef))
+ {
+ GEngine->AddOnScreenDebugMessage(-1, 15.f, FColor::Red, TEXT("GripAttachmentClass called"));
+ BaseWeaponClassRef->howMnyShotsTillRclStop = 2;
+ BaseWeaponClassRef->originalMinMultiplier /= 2;
+ BaseWeaponClassRef->originalMagnitude /= 2;
+ BaseWeaponClassRef->originalMaxAngleLeft /= 2;
+ BaseWeaponClassRef->originalMaxAngleRight /= 2;
+ BaseWeaponClassRef->WeaponScopedFire();
+ }
}
@@ -29,5 +39,6 @@ void UGripAttachmentClass::BeginPlay()
void UGripAttachmentClass::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
+
}
diff --git a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.h b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.h
index 89d795a2..a5e423e6 100644
--- a/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.h
+++ b/EndlessVendetta/Source/EndlessVendetta/Workbench&Attachments/GripAttachmentClass.h
@@ -23,4 +23,7 @@ protected:
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
+
+ UPROPERTY(VisibleAnywhere)
+ class ABaseWeaponClass* BaseWeaponClassRef;
};