commit 9ad658d268a2ba6294a5197083f1c3e570c2ddc3 Author: Stanley_233 Date: Wed Dec 3 22:01:44 2025 +0800 initial commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3e8f1d6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +Content/** filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..34d9a49 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +Binaries +DerivedDataCache +Intermediate +Saved +.vscode +.vs +*.VC.db +*.opensdf +*.opendb +*.sdf +*.sln +*.suo +*.xcodeproj +*.xcworkspace + +.idea +.vsconfig diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini new file mode 100644 index 0000000..58552fa --- /dev/null +++ b/Config/DefaultEditor.ini @@ -0,0 +1,8 @@ +[UnrealEd.SimpleMap] +SimpleMapName=/Game/FirstPerson/Maps/FirstPersonExampleMap + +[EditoronlyBP] +bAllowClassAndBlueprintPinMatching=true +bReplaceBlueprintWithClass= true +bDontLoadBlueprintOutsideEditor= true +bBlueprintIsNotBlueprintType= true \ No newline at end of file diff --git a/Config/DefaultEditorPerProjectUserSettings.ini b/Config/DefaultEditorPerProjectUserSettings.ini new file mode 100644 index 0000000..220a551 --- /dev/null +++ b/Config/DefaultEditorPerProjectUserSettings.ini @@ -0,0 +1,2 @@ +[ContentBrowser] +ContentBrowserTab1.SelectedPaths=/Game/FirstPerson \ No newline at end of file diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini new file mode 100644 index 0000000..237d1d6 --- /dev/null +++ b/Config/DefaultEngine.ini @@ -0,0 +1,116 @@ +[/Script/Engine.CollisionProfile] ++Profiles=(Name="Projectile",CollisionEnabled=QueryOnly,ObjectTypeName="Projectile",CustomResponses=,HelpMessage="Preset for projectiles",bCanModify=True) ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,Name="Projectile",DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False) ++EditProfiles=(Name="Trigger",CustomResponses=((Channel=Projectile, Response=ECR_Ignore))) + +[/Script/EngineSettings.GameMapsSettings] +EditorStartupMap=/Game/FirstPerson/Lvl_FirstPerson.Lvl_FirstPerson +LocalMapOptions= +TransitionMap= +bUseSplitscreen=True +TwoPlayerSplitscreenLayout=Horizontal +ThreePlayerSplitscreenLayout=FavorTop +GameInstanceClass=/Script/Engine.GameInstance +GameDefaultMap=/Game/FirstPerson/Lvl_FirstPerson.Lvl_FirstPerson +ServerDefaultMap=/Engine/Maps/Entry +GlobalDefaultGameMode=/Game/FirstPerson/Blueprints/BP_FirstPersonGameMode.BP_FirstPersonGameMode_C +GlobalDefaultServerGameMode=None + +[/Script/Engine.RendererSettings] +r.ReflectionMethod=1 +r.GenerateMeshDistanceFields=True +r.DynamicGlobalIlluminationMethod=1 +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=true +r.AllowStaticLighting=False + + +r.SkinCache.CompileShaders=True + +r.RayTracing=True + +r.RayTracing.RayTracingProxies.ProjectEnabled=True + +r.Substrate=True + +r.Substrate.ProjectGBufferFormat=0 + +r.Shadow.Virtual.Enable=1 + +r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8 + +r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8 + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +-D3D12TargetedShaderFormats=PCD3D_SM5 ++D3D12TargetedShaderFormats=PCD3D_SM6 +-D3D11TargetedShaderFormats=PCD3D_SM5 ++D3D11TargetedShaderFormats=PCD3D_SM5 +Compiler=Default +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +SoundCueCookQualityIndex=-1 + +[/Script/LinuxTargetPlatform.LinuxTargetSettings] +-TargetedRHIs=SF_VULKAN_SM5 ++TargetedRHIs=SF_VULKAN_SM6 + +[/Script/MacTargetPlatform.MacTargetSettings] +-TargetedRHIs=SF_METAL_SM5 ++TargetedRHIs=SF_METAL_SM6 + +[/Script/AIModule.AISystem] +bForgetStaleActors=True + +[/Script/Engine.Engine] +NearClipPlane=5.000000 + + ++ActiveGameNameRedirects=(OldGameName="TP_FirstPerson",NewGameName="/Script/FirstPersonDemo") ++ActiveGameNameRedirects=(OldGameName="/Script/TP_FirstPerson",NewGameName="/Script/FirstPersonDemo") + ++ActiveClassRedirects=(OldClassName="TP_FirstPersonPlayerController",NewClassName="FirstPersonDemoPlayerController") ++ActiveClassRedirects=(OldClassName="TP_FirstPersonGameMode",NewClassName="FirstPersonDemoGameMode") ++ActiveClassRedirects=(OldClassName="TP_FirstPersonCharacter",NewClassName="FirstPersonDemoCharacter") ++ActiveClassRedirects=(OldClassName="TP_FirstPersonCameraManager",NewClassName="FirstPersonDemoCameraManager") + +[/Script/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Desktop +AppliedTargetedHardwareClass=Desktop +DefaultGraphicsPerformance=Maximum +AppliedDefaultGraphicsPerformance=Maximum + +[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] +bEnablePlugin=True +bAllowNetworkConnection=True +SecurityToken=DEA2D04E4DD3B5BEEF029C9EF122569F +bIncludeInShipping=False +bAllowExternalStartInShipping=False +bCompileAFSProject=False +bUseCompression=False +bLogFiles=False +bReportStats=False +ConnectionType=USBOnly +bUseManualIPAddress=False +ManualIPAddress= + diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini new file mode 100644 index 0000000..3f161f6 --- /dev/null +++ b/Config/DefaultGame.ini @@ -0,0 +1,6 @@ +[ProjectSettings] +ProjectID=(A=1823396784,B=1298598689,C=1743498150,D=-2048051708) +ProjectName=First Person Template + +[/Script/EngineSettings.GeneralProjectSettings] +ProjectID=CD31059C4BA9CB538B509492FA2A5B38 diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini new file mode 100644 index 0000000..06dc496 --- /dev/null +++ b/Config/DefaultInput.ini @@ -0,0 +1,109 @@ +[/Script/Engine.InputSettings] +-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Touch",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_FaceButton1",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_FaceButton2",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_IndexPointing",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_ThumbUp",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_ThumbRest",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_FaceButton1",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_FaceButton2",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_IndexPointing",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_ThumbUp",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_ThumbRest",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_ThumbPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_IndexPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_MiddlePinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_RingPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_PinkPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_ThumbPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_IndexPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_MiddlePinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_RingPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_PinkPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +bAltEnterTogglesFullscreen=True +bF11TogglesFullscreen=True +bUseMouseForTouch=False +bEnableMouseSmoothing=True +bEnableFOVScaling=True +bCaptureMouseOnLaunch=True +bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bShouldFlushPressedKeysOnViewportFocusLost=True +bAlwaysShowTouchInterface=False +bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent +DefaultTouchInterface=None +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde + diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Back_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Back_01.uasset new file mode 100644 index 0000000..c85a68e --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Death/MM_Death_Back_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdee63c4a4dc23076dda04b32eb8505bcd41fb791e574a264026c43e700bf923 +size 308880 diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_01.uasset new file mode 100644 index 0000000..872ed0d --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9daa694dda4639b106a29401712b03376344b301b6161955a92ba64ea60ae6d +size 308516 diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_02.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_02.uasset new file mode 100644 index 0000000..4f2e86a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dda4f9d6a4c8fc3bf79458d4d2f490965ff01401256e90fdf98a938a58c61986 +size 314751 diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_03.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_03.uasset new file mode 100644 index 0000000..433faf3 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_03.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf3a411d465002756eb1a19cdb2bef63b75a57a9fab7ce121ee71941e010d2cc +size 277478 diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Left_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Left_01.uasset new file mode 100644 index 0000000..23913f5 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Death/MM_Death_Left_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:712a25024fe931bd518fff6c935b82bc0ee2070a77caef63edd0d6fc7ff66508 +size 283231 diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Right_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Right_01.uasset new file mode 100644 index 0000000..8522527 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Death/MM_Death_Right_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7968e7e1bc3d8e33c3f0d8479e6753d011ced0e05a831eb7f10e28ceb536b9a4 +size 302339 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/AO_Pistol.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/AO_Pistol.uasset new file mode 100644 index 0000000..09c6cb9 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Aim/AO_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4f2fca2458488be2d05cb2188bd641293d06bdcc4e598feee59ba1b23156c24 +size 8824 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS1.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS1.uasset new file mode 100644 index 0000000..de05dfe --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d7113f1799219db01d8394c2984d5afd2957de07d66cfa463c9c33822e11d89 +size 2056489 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CD.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CD.uasset new file mode 100644 index 0000000..d8bcd5e --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2898b38d8ef305d1d2e285f519be72cde7e2b0106bb85657fda47e35dc27b15d +size 170203 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CU.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CU.uasset new file mode 100644 index 0000000..87979a4 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5c5855b58743d51bf1abe11b470749f50ae6074fac734da446d1c4a9b076650 +size 173260 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd.uasset new file mode 100644 index 0000000..7c6b7a1 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f93aacabf40a36d906896e5c5998e4a63445749efa25c973092b9ae82ef1477f +size 365135 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Left.uasset new file mode 100644 index 0000000..0070124 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc8a45c6259a8a51808ff3de4688302a65ce4988a05a5b0f70fbced01001ea6b +size 255387 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Right.uasset new file mode 100644 index 0000000..83ee01f --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6f80eb946a12e3056a53d67b8134f5e9bd028eb66333a8a665c13d6cf14d1ee +size 255329 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd.uasset new file mode 100644 index 0000000..3df932a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caba32a2584600031bca7cec76875e50eb80e4c1d6fea3e249f2532388d4f221 +size 432796 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Left.uasset new file mode 100644 index 0000000..becca7d --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ed2295bbfbbe7800395b2fc2023e082f6c9b2b7127dd6ceb5c7ec055486c39b +size 309345 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Right.uasset new file mode 100644 index 0000000..8eae18b --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d80c0c9bb0a8fae52095506f7f83c42bdd11b4d62ebfe57b1d9c7f40e8a9478a +size 309527 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Left.uasset new file mode 100644 index 0000000..da2b6e2 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d8fcf3a8b6e581f4d06bc4fe2b307e1dcdcc7432cc114173c201a0115cad2c9 +size 310960 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Right.uasset new file mode 100644 index 0000000..af99ac7 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:017f902b0a80b4fff2115c5c39f640b7622ad562a0ec137d25aae61d511d0b53 +size 354844 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Fall_Loop.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Fall_Loop.uasset new file mode 100644 index 0000000..3fe2d39 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Fall_Loop.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b01836fa36515fcb523644e82f2f130289a69a14314b6b939d5a580b3c5950e +size 255338 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_RecoveryAdditive.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_RecoveryAdditive.uasset new file mode 100644 index 0000000..f91bd42 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_RecoveryAdditive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9935321b5ee3fe9445cfa2a6c9f0d0391d888fbb9db71b1eaf76b3bc5345d6d +size 268356 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Start.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Start.uasset new file mode 100644 index 0000000..dd5b3ba --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Start.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58c1e69b2690611740c465f92e3763fd9747b9a6e75fe6a7629b16c5fcc37e7a +size 144542 diff --git a/Content/Characters/Mannequins/Anims/Pistol/MF_Pistol_Idle_ADS.uasset b/Content/Characters/Mannequins/Anims/Pistol/MF_Pistol_Idle_ADS.uasset new file mode 100644 index 0000000..9c0c6c1 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/MF_Pistol_Idle_ADS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:766a02544f06604946d8c47c47c6bb877e14208904306188bc1f5b174fd7715b +size 2068319 diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_DryFire.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_DryFire.uasset new file mode 100644 index 0000000..5934d4a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_DryFire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64b3c6dc7357f8a1b380057ef76e1cbb984d69e7d0732eaefd70befe2be7b67f +size 250601 diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Equip.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Equip.uasset new file mode 100644 index 0000000..d587bf4 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Equip.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f5a1ed2c1b72a9bb27b417cb0d5315440af2b22b7b846254fbce50e2fbb3d17 +size 360966 diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire.uasset new file mode 100644 index 0000000..c91f713 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebd8467dbb3de5ba0e1b2eac0092352e270b37e616bc443872341cde2f5c22d8 +size 186765 diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire_Montage.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire_Montage.uasset new file mode 100644 index 0000000..7ed013a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire_Montage.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2eabacc1911be6c5b0dff7cf8a5c29c0506a25ffa6f3e7fa5946e76f992e38ee +size 10119 diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Reload.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Reload.uasset new file mode 100644 index 0000000..e0d89c5 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Reload.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a821a774302ce5121efff744620da09587752290e35e4413b8e40db8ad9c0391 +size 479562 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd.uasset new file mode 100644 index 0000000..02f7239 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:704dd7e116a755b086a8d685321f23e332bba6cb77dd6ae95542d38c462feb9b +size 545138 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Left.uasset new file mode 100644 index 0000000..9bf73a9 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fff084ed3ca270a8d926f810f078a69347507851744cf399f3142c97e36e2fa6 +size 450957 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Right.uasset new file mode 100644 index 0000000..3433b01 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26a82255db90c0dc4e8c01d52a55f73b5f5a532ef161812faf63be65869f3504 +size 451022 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd.uasset new file mode 100644 index 0000000..fd5ea12 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ac6171e3b841b09fff67dc4162b0c70f99f3107f549a20a213d5e05405dc69e +size 474209 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Left.uasset new file mode 100644 index 0000000..1b7772a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdd682c2a45cf6a73a34df6499f8bb4ccf8b68a42b8888c47b8532bfecb200d1 +size 374604 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Right.uasset new file mode 100644 index 0000000..7d4b7af --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9b42e230d6fdf9f4f836592507c3f8a17dfd76d7b054b78b633a11722f94100 +size 374748 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Left.uasset new file mode 100644 index 0000000..e9476dc --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc5f5b9f355e755023d1aa153070a073156f6d902b08e7cf78463f5e0bc8f629 +size 580040 diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Right.uasset new file mode 100644 index 0000000..64066c5 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e72f68c9a306ec44f7bc4f37e3533f2918ee19d99a1d8e60986036f2a4405d68 +size 498997 diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/AO_Rifle.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/AO_Rifle.uasset new file mode 100644 index 0000000..c1aa1e4 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/AIM/AO_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3cfb9e380d881fa8561df0515f4ff24d96af4d3e1430df829c7ede641a12b1d +size 10402 diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CC.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CC.uasset new file mode 100644 index 0000000..3ba8298 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9521c1941980dc784cedb3df736d7c1edf56afaa0201f28b41c5ae9923e88bbb +size 94995 diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CD.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CD.uasset new file mode 100644 index 0000000..f7924fd --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09b2c98aa7778b6a970b0d90882555cf920c03d761f1e50bb3feaf0e3c9a6fef +size 94882 diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CU.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CU.uasset new file mode 100644 index 0000000..87d829d --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60969c39ff3c1bd1e30e7c728a9dbe49c236857659b1ae8d20ae7605d8152324 +size 95154 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Back_Med_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Back_Med_01.uasset new file mode 100644 index 0000000..7b4194d --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Back_Med_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecb41ae9339d797408a7b9c0270dc1f917b680a21f1c189ac0e3890f41185e0b +size 252342 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Hvy_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Hvy_01.uasset new file mode 100644 index 0000000..483ec0b --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Hvy_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5caf5938c73d131c9254c1af09cb7fd4335516c9a406be77c17ad5e1f2cdebe +size 247961 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_01.uasset new file mode 100644 index 0000000..dbd7889 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae8728f698434dd1e63978d5d92c5984d086d7ee39ce618598122b6fa87dc820 +size 224756 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_02.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_02.uasset new file mode 100644 index 0000000..d318702 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcb6c068d81d5be1d84c88895805eb29c2f3f345668a10884836f00759b0647b +size 238345 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_03.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_03.uasset new file mode 100644 index 0000000..a09a2a2 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_03.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3949df1228e6c14047477538424f9440216915a0637da33cf6c7298400128073 +size 281622 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_04.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_04.uasset new file mode 100644 index 0000000..9899964 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_04.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0ed26de9c333968631cc040e82aebac289a2fd655a1f348a3b09ce3b40f1ef5 +size 318893 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_01.uasset new file mode 100644 index 0000000..465ace3 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cca3c893d68d8270a9eec9eb7572f7ed6bfcfdf6ce6345dc8b2860d6135dbe00 +size 225043 diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_02.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_02.uasset new file mode 100644 index 0000000..ce6866f --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3acb6956f9eb6512e386b575c4c3e390f7d0280b037ca52e0eef813fb1f729d6 +size 234402 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd.uasset new file mode 100644 index 0000000..de688c3 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fd489f5c8d4d63e84f8a25c2db46c3ae54eae828212b2a32622726e593b5d3c +size 582054 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Left.uasset new file mode 100644 index 0000000..79072a7 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3939c4aa298e6be0834256ef6f642cff0465a40d676ec7e464aaf504b44f729 +size 458365 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Right.uasset new file mode 100644 index 0000000..e42e504 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:907cb106c1c466aac0b38753b7551af73a09c082a652c82c43df5418eb33b089 +size 458272 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd.uasset new file mode 100644 index 0000000..35c75f8 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:287d39883a65ccf6f89d91c7ca13b23184f04ae6eb5cc3867dd7ef7cfb35ec1c +size 516328 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Left.uasset new file mode 100644 index 0000000..dd03faa --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4103ea6388d484e8f71cd30b955c3c954750d922a0c030bf3d902bdb3e02c13d +size 384314 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Right.uasset new file mode 100644 index 0000000..5848d2f --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ca8d8ec88d086d4cb6027a2eefdde258142587bca40e98dee021abe9c8824f8 +size 384322 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Left.uasset new file mode 100644 index 0000000..a905992 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4feaf1bd5b370e28f5dce611b28d955bbf84bbeb72b7e22972a0e143022621a7 +size 296415 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Right.uasset new file mode 100644 index 0000000..99700e1 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c5cae5448dbb8c4e3bda5406202a8e55b08247695082270e1fef3dbdd6e533 +size 420984 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Apex.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Apex.uasset new file mode 100644 index 0000000..abb9e3a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Apex.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39acbd6bcfc5ec2795ee2497bb353fbe954766bda545c3318c3cd6ee5f1ee008 +size 228355 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Land.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Land.uasset new file mode 100644 index 0000000..c222c84 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Land.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce74e83b9b88fa3722951c1c6b2cc36ae7159b8141f5347e5b47d760cee41c42 +size 179028 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Loop.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Loop.uasset new file mode 100644 index 0000000..8045d17 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Loop.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d17c0a4fe1d9bb970b3208909e1c35b7183568c7968a0d6d0de391cca216b472 +size 645680 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_RecoveryAdditive.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_RecoveryAdditive.uasset new file mode 100644 index 0000000..15cd154 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_RecoveryAdditive.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d663743ac0fd361303751c55688a34053fbed145aaa88a004abd7b02533d5e5 +size 294517 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start.uasset new file mode 100644 index 0000000..d0acb23 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:925f27182be45054a1bbb5d458cb53d38773b356dd61e18b82fa9a72880dc8e7 +size 146783 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start_Loop.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start_Loop.uasset new file mode 100644 index 0000000..12c60ea --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start_Loop.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2da3d291df2070e1aaa62a45e445a7979948489b9e811e0d17f94b3e627d14e +size 441727 diff --git a/Content/Characters/Mannequins/Anims/Rifle/MF_Rifle_Idle_ADS.uasset b/Content/Characters/Mannequins/Anims/Rifle/MF_Rifle_Idle_ADS.uasset new file mode 100644 index 0000000..faeb9dd --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/MF_Rifle_Idle_ADS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfa32b19207a25546bb5bc2dde8454dc633cc27c3de45747e941756e23da5d4d +size 1700234 diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_DryFire.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_DryFire.uasset new file mode 100644 index 0000000..730cf5f --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_DryFire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:131e01f0a31f999e7fd09ef190b314314c851f39101412161dabdb00d2dda801 +size 249623 diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Equip.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Equip.uasset new file mode 100644 index 0000000..5227639 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Equip.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:136b19498b8bac4119dde48236d22127e8463c0becff775069e0b6399b7939d6 +size 416648 diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Fire.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Fire.uasset new file mode 100644 index 0000000..e51bd26 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Fire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c5b983bd6c09431c83866f772ccf13871ad9626426c86cc08a0c87c150555f7 +size 184600 diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Reload.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Reload.uasset new file mode 100644 index 0000000..a182e4e --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Reload.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac1e17d2acb7e3cea6e4c9ca967400dc3052d5ec6514e155b33d8e4701e80784 +size 547351 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd.uasset new file mode 100644 index 0000000..23e2aa5 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1400dc7a7bfca224e0aa7796e5c230236ad634c808b2a1540cbad8903fa897b +size 449720 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Left.uasset new file mode 100644 index 0000000..03fdab7 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d535eb181e756f56974efae068f34da050747fd8836fe2bb5f0c693f51325c2 +size 332682 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Right.uasset new file mode 100644 index 0000000..414bc2a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e0bd9b3ba2e982ac9ffd60a643dab78cf886d194a26af518170a02dc4f3eac0 +size 332577 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd.uasset new file mode 100644 index 0000000..59307ae --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:540a6a77c48027e13be84d483c6afd18d82fb115b7532334597ebefe2249ecd0 +size 490267 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Left.uasset new file mode 100644 index 0000000..b9e3ebe --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7797a7841cb86c3dc9e68dcdf968e538c9a7335abb1b0d9db95e0983b2226d7 +size 384794 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Right.uasset new file mode 100644 index 0000000..fed704a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:787c7b69a054c6f2850503c016a2ef2fade7ad0941375c8e521c3534bf695d12 +size 384793 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Left.uasset new file mode 100644 index 0000000..368ebf1 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a99d18722e504801616e1c0c495711c43c2d82c4465f7f388cdae8a45502bd1e +size 453120 diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Right.uasset new file mode 100644 index 0000000..588e44d --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c2c12d6a959d69c96962ca340bdfe984942df621ee2ff7e7e955662ddaee52a +size 510650 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset b/Content/Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset new file mode 100644 index 0000000..25722d3 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60ae8c970189979d9e070beb0fd8675f4afb2b04d8aaa8d11a0f03c5b7ebf4b2 +size 385911 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_01.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_01.uasset new file mode 100644 index 0000000..34b5970 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f796113f17c91eca7e48ef57bbadc4fc36245a86b127e75a34ca4771500639ed +size 757637 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_02.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_02.uasset new file mode 100644 index 0000000..a816bd9 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb3c74b8e32fb5a88c6d659cae8717294af85d4eaa7f684b2a36c36d245559dc +size 661409 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_03.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_03.uasset new file mode 100644 index 0000000..21473da --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_03.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c66016fc3bd386453ac7fb1229a5f0644c6bd5f98ead29f6e6a1be80632ba1f +size 1036132 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_ChargedAttack.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_ChargedAttack.uasset new file mode 100644 index 0000000..0928916 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_ChargedAttack.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d9b0fc6892519095cb6930aba5c0dd063acf647612a06e0f2f7e19c463223ee +size 1057890 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/BS_Idle_Walk_Run.uasset b/Content/Characters/Mannequins/Anims/Unarmed/BS_Idle_Walk_Run.uasset new file mode 100644 index 0000000..0971bcd --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/BS_Idle_Walk_Run.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc71af8768b569695d4bcb69c79867f998e085693f5e8230854d228de359f5bb +size 52333 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd.uasset new file mode 100644 index 0000000..5f9af37 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f6e9448f0e0737f506d9e8f11b8d661d6d65c818f0e3160938f1e24082b16c3 +size 483265 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Left.uasset new file mode 100644 index 0000000..9b073a0 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6e68e6cf4175f85c0e16a60f80335a1fab3f8c76a014d02bc0cd18aabe3314a +size 417528 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Right.uasset new file mode 100644 index 0000000..0dbf181 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee3137ff2b7d2cb721c935e2de91d55479e20f030ff230e9f912f6b70658c399 +size 417530 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd.uasset new file mode 100644 index 0000000..ed8291b --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ccbe851f85a6d4cd7c6438c219cb6af8e281784107b5be8e9b052e4df3069cb +size 531789 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Left.uasset new file mode 100644 index 0000000..2ea4836 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12ee5a11f277af90429980f120026f430ae1e438f6eae42c10222e175f9dbe12 +size 466995 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Right.uasset new file mode 100644 index 0000000..88e8f2a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66a7561d60453794864edd7e0c55487817068b6b66e31e179c98b9f2bab4c76b +size 467310 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Left.uasset new file mode 100644 index 0000000..5537bd3 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7842445f0c2b2f8d3cd9d43b9f58bc3ea888adeb1e161398b492097358431bd +size 487864 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Right.uasset new file mode 100644 index 0000000..95bd4d8 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208f642310d9627d12a5125889b480e051a1f1fc5397a10b83975903a0c59aea +size 521907 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Dash.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Dash.uasset new file mode 100644 index 0000000..ccda01e --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Dash.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a1c964403b7b1d9d9f5e0dd8c20c1ae809606c5e8021b2983edfc65ac0a66f0 +size 663135 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Fall_Loop.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Fall_Loop.uasset new file mode 100644 index 0000000..818db5b --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Fall_Loop.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:408be742c63adffe8c6c1d22442e99ea34a7618cd33c6e78e0eed3d7db877433 +size 925351 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Jump.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Jump.uasset new file mode 100644 index 0000000..f394c85 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Jump.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:252cbf69b07b797d3c3c6177d3ae9df17e9873f4872c4fa040c0d441dc3b3cef +size 403730 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Land.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Land.uasset new file mode 100644 index 0000000..3f2cff7 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Land.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a00de25a6beca56ff6d8077081531e5cef238c92825b6c184351d0aa99ef3fcb +size 410017 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_WallJump.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_WallJump.uasset new file mode 100644 index 0000000..9a3e3b0 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_WallJump.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e29af6dc13219cb813097e596c143d964a18c118caca138015574009e50859c0 +size 409179 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/MM_Idle.uasset b/Content/Characters/Mannequins/Anims/Unarmed/MM_Idle.uasset new file mode 100644 index 0000000..01f327a --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/MM_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11ee7fdeb84db89c1a66785b43b9bfc1415782122b8ac229517f4c5125d9cb0d +size 1436554 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd.uasset new file mode 100644 index 0000000..7a756d9 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae0c2ee1c1178fd1b9493f6c327e52d10a3d6bbde29eae54dcb07c13a27dcf46 +size 606821 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Left.uasset new file mode 100644 index 0000000..7039ba5 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c25a8eebb9883085ac8f82de3c83fc34fd19b02567f17fafde9dd60c09cf3e5 +size 537758 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Right.uasset new file mode 100644 index 0000000..a7a37ee --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c71b9bbf7b15d75cacddbeb8827e22888cfa63a359ecbc0e017aec822d1a522 +size 537632 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd.uasset new file mode 100644 index 0000000..176830c --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c74b2fc0cb651c4924804b364e534856a1b44dee818127c408dc055e4bda5ed9 +size 475783 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Left.uasset new file mode 100644 index 0000000..81e677c --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7d8ff5a55eb0c445da2c74b2fd9460b6a3aff0db206be9e99aed319158d5770 +size 411535 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Right.uasset new file mode 100644 index 0000000..4bc55f7 --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67d3d4fed066023a14220277f5598db83f19efee97de908b1397b0ae998e5599 +size 411529 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Left.uasset new file mode 100644 index 0000000..af992ac --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81500e4fcdd9ae9aa6433e652e67dea8f9dd9fa7b9ef1714e29f6ab0a1bb9d97 +size 486552 diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Right.uasset new file mode 100644 index 0000000..0b6929c --- /dev/null +++ b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Right.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5922b4e632351353224b32f719af97e85512ab4f6553b15315cf14ad04f675f +size 491934 diff --git a/Content/Characters/Mannequins/Materials/M_Mannequin.uasset b/Content/Characters/Mannequins/Materials/M_Mannequin.uasset new file mode 100644 index 0000000..98e1cc3 --- /dev/null +++ b/Content/Characters/Mannequins/Materials/M_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7ffe412d906380bd5bd4462f464b2a1fe48fdb79b9077f29bd0f958a782035c +size 59292 diff --git a/Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset new file mode 100644 index 0000000..f3bc1ee --- /dev/null +++ b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f1e4ed382304d020b750c81505140fc1de4d339b0909430adb5380a6bb89b65 +size 17963 diff --git a/Content/Characters/Mannequins/Materials/Manny/MI_Manny_02_New.uasset b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_02_New.uasset new file mode 100644 index 0000000..00588a3 --- /dev/null +++ b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_02_New.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26389db06f0b7928b487494bef3320d6b0e6bccd58193bccedd67c2c89132a46 +size 18706 diff --git a/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_01.uasset b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_01.uasset new file mode 100644 index 0000000..57741cd --- /dev/null +++ b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62a3050ef24b823f9fe84ac5d9c477099494982d35dafcc3d8078f32b0d4a865 +size 11184 diff --git a/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_02.uasset b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_02.uasset new file mode 100644 index 0000000..55c2250 --- /dev/null +++ b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aec77489fdfab0e1ea299de60fbd4f332face4495bbbd20b97fb0308bb9c5b4 +size 10718 diff --git a/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset b/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset new file mode 100644 index 0000000..78ddac4 --- /dev/null +++ b/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be9f011191ee1887b97cd13bce09886a6066c2fd62c619991070ec142184e1bf +size 15825101 diff --git a/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset b/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset new file mode 100644 index 0000000..1640eee --- /dev/null +++ b/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ef45d92507a76d74a5e06737f94cad40eb7d5f5769dfbb63f7f74e784a178c6 +size 16252577 diff --git a/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset b/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset new file mode 100644 index 0000000..108bf57 --- /dev/null +++ b/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22029d47455f24471195b26a0e04a1e1389f27d6a924e88c9f46a0f600c9a530 +size 191198 diff --git a/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset new file mode 100644 index 0000000..bc7f74e --- /dev/null +++ b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57f84458a160c35b77f0442d2af41054e41e021ebbb496c2c76dea76d1d89580 +size 17057558 diff --git a/Content/Characters/Mannequins/Rigs/CR_Mannequin_FootIK.uasset b/Content/Characters/Mannequins/Rigs/CR_Mannequin_FootIK.uasset new file mode 100644 index 0000000..e525c8b --- /dev/null +++ b/Content/Characters/Mannequins/Rigs/CR_Mannequin_FootIK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa01be065d2efa2dfd3b258f60b94b09fcd5d351356d16bb52578ef5bcbfb5c5 +size 498698 diff --git a/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset new file mode 100644 index 0000000..9a40625 --- /dev/null +++ b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:057818dd3e0e16ff90c147e25a8fc5ab309c49c4c60360477cf4742e767d151e +size 2575944 diff --git a/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset b/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset new file mode 100644 index 0000000..d4e8895 --- /dev/null +++ b/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0ceaf003947088ff076555b81a46e5ccb11149c94025eb2a9e74263fbaa0d67 +size 301538 diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset new file mode 100644 index 0000000..669e158 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f623209571ecbd8185b5b463786be033c3284190b4fc7b249e8d1d2ed995fd8 +size 1422785 diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset new file mode 100644 index 0000000..f0f30b0 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ae0f4f9908c30ecc9aedf1ebb442e4983e526a7832ec791542064c7853f9999 +size 699555 diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MRA.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MRA.uasset new file mode 100644 index 0000000..3772d29 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MRA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e42e888aed8aefff68da7d7dda4f177c5647b19473e4e913f61375c1319abd8 +size 712594 diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset new file mode 100644 index 0000000..18c8e6c --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9575d21c9e2872b3358c0efb9e202535ce2efce94c338b9d3bd04cb9831e353 +size 20999487 diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset new file mode 100644 index 0000000..c1ce340 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:474728713232c6833f55c041548f555bc62c5c49e74082a5d16e68a5ce488cfe +size 1036712 diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MRA.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MRA.uasset new file mode 100644 index 0000000..464be58 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MRA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6697972eaf2dfe201923dba6a302f024b0ef4c4e46b4ecf578178717098e8277 +size 1059559 diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset new file mode 100644 index 0000000..e330d12 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61a9db73f72fe2d7d8821b33a79f57f3f11df9da9455822392b84b199c78e8df +size 1680197 diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_D.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_D.uasset new file mode 100644 index 0000000..dbb262e --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04e5ed207b7df0d2ad1bbc668916bcf170545fc2a72875e49ec99c6e2667002f +size 674768 diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_MRA.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_MRA.uasset new file mode 100644 index 0000000..6d87469 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_MRA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0988d4d9f25597224910e1043591cb2a089a8607a4fe4a63cbc68f3eb2ab473e +size 791597 diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_N.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_N.uasset new file mode 100644 index 0000000..6091030 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10fbe9ac3e18e0a890d19756d3470ca372a1aeaffefbe9a22d6b0e6182293551 +size 1263741 diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_D.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_D.uasset new file mode 100644 index 0000000..47a5414 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0ccb2f465894c6f9ff4dd142351ed33186c5f861283a75f3e08d1531a253c49 +size 943331 diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_MRA.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_MRA.uasset new file mode 100644 index 0000000..d7e4602 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_MRA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f7e495cbe0430aed7084b5508f87186f98346eb04f003734c9b378891da7887 +size 974099 diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_N.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_N.uasset new file mode 100644 index 0000000..8b00e73 --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bc26466e9fdc954cc276bb6ac1350e22c3dabbe1b54b6bf78ed5ae2e339d9fc +size 1524635 diff --git a/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset b/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset new file mode 100644 index 0000000..33f52cd --- /dev/null +++ b/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34e6fa3414c04a86b7a5287e5569ea9d6e53c319d6e7dbfc8b09dab5b70611a6 +size 59927 diff --git a/Content/FirstPerson/Anims/ABP_FP_Copy.uasset b/Content/FirstPerson/Anims/ABP_FP_Copy.uasset new file mode 100644 index 0000000..707085f --- /dev/null +++ b/Content/FirstPerson/Anims/ABP_FP_Copy.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9d36cac5bb30f5a5ecdb175dc4fcbd50d8ae74405ad57802436fbedbab02455 +size 57892 diff --git a/Content/FirstPerson/Anims/CtrlRig_FPWarp.uasset b/Content/FirstPerson/Anims/CtrlRig_FPWarp.uasset new file mode 100644 index 0000000..961601d --- /dev/null +++ b/Content/FirstPerson/Anims/CtrlRig_FPWarp.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cab27cf0fdec19da9dd6ec98c5c1e8308774c460dda518ca0753c276af85078 +size 248824 diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset new file mode 100644 index 0000000..2a19bc6 --- /dev/null +++ b/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2036349bc35b21fd4fb0264e57386ec39fb66186e3875cced338fd40dbb20e5f +size 56175 diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset new file mode 100644 index 0000000..7138bb6 --- /dev/null +++ b/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebaf0599860564cdfefb636ae6a782f3338e0b93b28431e5b7c57342e2b06ae8 +size 21794 diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonPlayerController.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonPlayerController.uasset new file mode 100644 index 0000000..51ea2a1 --- /dev/null +++ b/Content/FirstPerson/Blueprints/BP_FirstPersonPlayerController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e7292c7bea13e1dfe9306465643eb12bbaf805797b041fff74608f6af37a8ea +size 21713 diff --git a/Content/FirstPerson/Lvl_FirstPerson.umap b/Content/FirstPerson/Lvl_FirstPerson.umap new file mode 100644 index 0000000..63617c2 --- /dev/null +++ b/Content/FirstPerson/Lvl_FirstPerson.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0db1a737486001b5c2be6c6126d9cdbf42f6bbdf575d09f9311321cfecbedfaa +size 14249 diff --git a/Content/FirstPerson/MI_FirstPersonColorway.uasset b/Content/FirstPerson/MI_FirstPersonColorway.uasset new file mode 100644 index 0000000..8bc71f0 --- /dev/null +++ b/Content/FirstPerson/MI_FirstPersonColorway.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0821072d542c67e5eb8802456cf0f4744ea3eeb843fbf59baeae1771e939d23 +size 9419 diff --git a/Content/Input/Actions/IA_Jump.uasset b/Content/Input/Actions/IA_Jump.uasset new file mode 100644 index 0000000..ebc44ca --- /dev/null +++ b/Content/Input/Actions/IA_Jump.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73c14789fee45a6e1eff57f3304a0bafee23790cc8ea6a6a5bf0056e75d7b3e4 +size 1695 diff --git a/Content/Input/Actions/IA_Look.uasset b/Content/Input/Actions/IA_Look.uasset new file mode 100644 index 0000000..be55ec4 --- /dev/null +++ b/Content/Input/Actions/IA_Look.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d4a2cb59db11a0a080834e1b292207e530b8df217446afb46e382d9fa12f5a9 +size 1385 diff --git a/Content/Input/Actions/IA_MouseLook.uasset b/Content/Input/Actions/IA_MouseLook.uasset new file mode 100644 index 0000000..e3df2e1 --- /dev/null +++ b/Content/Input/Actions/IA_MouseLook.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2901132a04ceb384e2693107b8f5455de48b7c325d6cc5ce07556c6425c19f48 +size 1410 diff --git a/Content/Input/Actions/IA_Move.uasset b/Content/Input/Actions/IA_Move.uasset new file mode 100644 index 0000000..55c3d70 --- /dev/null +++ b/Content/Input/Actions/IA_Move.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85567b9d91ffd9f7106c3062557a6fa864a791233380353f63eb563470985add +size 1385 diff --git a/Content/Input/IMC_Default.uasset b/Content/Input/IMC_Default.uasset new file mode 100644 index 0000000..b63309a --- /dev/null +++ b/Content/Input/IMC_Default.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:133bda6567aaeea1aae05c03597345e4b1d9ef24d868a0275203b3203a7aae98 +size 7787 diff --git a/Content/Input/IMC_MouseLook.uasset b/Content/Input/IMC_MouseLook.uasset new file mode 100644 index 0000000..bb5126c --- /dev/null +++ b/Content/Input/IMC_MouseLook.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a00157cd520edcf0b037d7091bfe188fa6eb7c48465f695981f7cbe5fb4cc80 +size 2521 diff --git a/Content/Input/Touch/BPI_TouchInterface.uasset b/Content/Input/Touch/BPI_TouchInterface.uasset new file mode 100644 index 0000000..938c653 --- /dev/null +++ b/Content/Input/Touch/BPI_TouchInterface.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e778ae087305a34cd6957fcf9b29670f0a2a01be96bad89c79b83286496ec45f +size 16393 diff --git a/Content/Input/Touch/UI_Thumbstick.uasset b/Content/Input/Touch/UI_Thumbstick.uasset new file mode 100644 index 0000000..bdcaf58 --- /dev/null +++ b/Content/Input/Touch/UI_Thumbstick.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49c8c04b2e8c88beb55935b05d9af72c35d89512ea6435f20d5e3123be139f8b +size 223040 diff --git a/Content/Input/Touch/UI_TouchSimple.uasset b/Content/Input/Touch/UI_TouchSimple.uasset new file mode 100644 index 0000000..60a5dc0 --- /dev/null +++ b/Content/Input/Touch/UI_TouchSimple.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81f45f11e73180f0964ee3f59f77c8c55e61d355e5c69427e1de67e5aa5db77b +size 70301 diff --git a/Content/LevelPrototyping/Interactable/Door/BP_DoorFrame.uasset b/Content/LevelPrototyping/Interactable/Door/BP_DoorFrame.uasset new file mode 100644 index 0000000..038f9e8 --- /dev/null +++ b/Content/LevelPrototyping/Interactable/Door/BP_DoorFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4386d7d71b8d5241fd8150aa47900711eb0d8bd069c00de25fce07f011d698fa +size 448616 diff --git a/Content/LevelPrototyping/Interactable/Door/Meshes/SM_Door.uasset b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_Door.uasset new file mode 100644 index 0000000..244ff77 --- /dev/null +++ b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_Door.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa98c4fc5083393e085d7b44d0b67a7e830922e2601a439167916616bbc29993 +size 59267 diff --git a/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Corner.uasset b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Corner.uasset new file mode 100644 index 0000000..68fec6c --- /dev/null +++ b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Corner.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:383dea9555e76303d60d0011fae6651a4be07c24033c0aceeecd137c954ee3fc +size 86885 diff --git a/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Edge.uasset b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Edge.uasset new file mode 100644 index 0000000..e15c698 --- /dev/null +++ b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Edge.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26eb76a2ce36be334bf0770561475a9e06be928e9ca75b4a31f5df3debb36592 +size 69088 diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/MI_GlowNT.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/MI_GlowNT.uasset new file mode 100644 index 0000000..413555f --- /dev/null +++ b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/MI_GlowNT.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fd40bc38bfea9418fa54fe365732a1219e615169542a0a4d2e1d518318c864b +size 4145 diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_GradientGlow.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_GradientGlow.uasset new file mode 100644 index 0000000..ecf223d --- /dev/null +++ b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_GradientGlow.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1b29ad29c2eac3dba6dd6a90aed9de8c6147a13b6288a42bd73fe14b78970a8 +size 17587 diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_SimpleGlow.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_SimpleGlow.uasset new file mode 100644 index 0000000..203e88d --- /dev/null +++ b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_SimpleGlow.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6098242541b34be6aba19ea1fbfa35107f891e8f55d30d4061aa11b065b8bd8 +size 15213 diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularBand.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularBand.uasset new file mode 100644 index 0000000..76776ce --- /dev/null +++ b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularBand.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97fbe3da2d907279dcbfbbf285e1b111ceb8d5f4a1c9d6bd48fcb8defc86842b +size 70608 diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularGlow.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularGlow.uasset new file mode 100644 index 0000000..6cb18b2 --- /dev/null +++ b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularGlow.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ddb27bf7020f4980d3f8435cb0928fb48b32c1ab3ea24bac7e253435081bf6b +size 71705 diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/NS_JumpPad.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/NS_JumpPad.uasset new file mode 100644 index 0000000..7510742 --- /dev/null +++ b/Content/LevelPrototyping/Interactable/JumpPad/Assets/NS_JumpPad.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e76849cbb139160e5e73c226fe6aaa66a63fbf75cbd1213f871cca65e409817 +size 795908 diff --git a/Content/LevelPrototyping/Interactable/JumpPad/BP_JumpPad.uasset b/Content/LevelPrototyping/Interactable/JumpPad/BP_JumpPad.uasset new file mode 100644 index 0000000..ff56bc2 --- /dev/null +++ b/Content/LevelPrototyping/Interactable/JumpPad/BP_JumpPad.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42ba8262f07355cdf36e33977f3bb415810390cf210b75573d766bd819cf8401 +size 92487 diff --git a/Content/LevelPrototyping/Interactable/Target/Assets/SM_TargetBaseMesh.uasset b/Content/LevelPrototyping/Interactable/Target/Assets/SM_TargetBaseMesh.uasset new file mode 100644 index 0000000..a8140cd --- /dev/null +++ b/Content/LevelPrototyping/Interactable/Target/Assets/SM_TargetBaseMesh.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:378ace355b8f5e71a12e459d9f8cf4958626884142fec34be8630db6d8412cad +size 283425 diff --git a/Content/LevelPrototyping/Interactable/Target/BP_WobbleTarget.uasset b/Content/LevelPrototyping/Interactable/Target/BP_WobbleTarget.uasset new file mode 100644 index 0000000..8f7dc3b --- /dev/null +++ b/Content/LevelPrototyping/Interactable/Target/BP_WobbleTarget.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bd8784bf03cb945d63deb2c4c22261a9a9ea2af1f84766805ca92ec7b521ab3 +size 45551 diff --git a/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset b/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset new file mode 100644 index 0000000..d998cb3 --- /dev/null +++ b/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5ee13abdb241d9811f6c1bcc0a607d229fa7adc5f46bfd5a9d5fedbfa279683 +size 49820 diff --git a/Content/LevelPrototyping/Materials/MI_DefaultColorway.uasset b/Content/LevelPrototyping/Materials/MI_DefaultColorway.uasset new file mode 100644 index 0000000..cc18613 --- /dev/null +++ b/Content/LevelPrototyping/Materials/MI_DefaultColorway.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:786a4dfcaaa6f4daf459c77bda247c2c138140680a8246d521974d0cc4fc8a8e +size 9260 diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset new file mode 100644 index 0000000..d844901 --- /dev/null +++ b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:084681bf680dad66b8c8ca803d927053cf46756f2f2e62d18fcc439e07de7263 +size 13121 diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset new file mode 100644 index 0000000..d727d35 --- /dev/null +++ b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa0f2a06a7d937127d7d737c13bacb3f8fe88c8e0479f5e6b7cda81fd225d077 +size 11922 diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_Round.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_Round.uasset new file mode 100644 index 0000000..4778f66 --- /dev/null +++ b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_Round.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:901ec868e81e7a73c9f3ad4814e1205af27abc772949e5a30550a00f31ce4437 +size 11413 diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset new file mode 100644 index 0000000..1eae7f9 --- /dev/null +++ b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:838034e5afc7ab3a70bfff6de2e1237aa02337fb423e95c1b536b3e30c61c982 +size 11957 diff --git a/Content/LevelPrototyping/Materials/M_FlatCol.uasset b/Content/LevelPrototyping/Materials/M_FlatCol.uasset new file mode 100644 index 0000000..0be45d4 --- /dev/null +++ b/Content/LevelPrototyping/Materials/M_FlatCol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41dbbda4b463a224c29ee01765e1f52a8ae63f2f94f1440ee267fe7b1a481585 +size 11771 diff --git a/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset b/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset new file mode 100644 index 0000000..73c3bcf --- /dev/null +++ b/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf8625ad5917cee705867038d8a590b25465e6b5d5818a738a584e515d7cbdfc +size 79863 diff --git a/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset b/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset new file mode 100644 index 0000000..dcc10b1 --- /dev/null +++ b/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b20a3ae9668ec599db519af3f84b67952d0e31ac4427b80ee812232edde91f53 +size 128849 diff --git a/Content/LevelPrototyping/Meshes/SM_Cube.uasset b/Content/LevelPrototyping/Meshes/SM_Cube.uasset new file mode 100644 index 0000000..fcb2e03 --- /dev/null +++ b/Content/LevelPrototyping/Meshes/SM_Cube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4680317a8c87f983e077f6c0a6b93ffaa0ba4dbddbc810960d4553e6ad380a89 +size 18279 diff --git a/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset b/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset new file mode 100644 index 0000000..ffaea18 --- /dev/null +++ b/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76aaa3c2b812ff790fb57ae7736b748e4e1556afbb13466fd787d4bacd2c7dfe +size 193636 diff --git a/Content/LevelPrototyping/Meshes/SM_Plane.uasset b/Content/LevelPrototyping/Meshes/SM_Plane.uasset new file mode 100644 index 0000000..8a6e0cd --- /dev/null +++ b/Content/LevelPrototyping/Meshes/SM_Plane.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39ab83dc57a9a27a80476711610f72e81c0685a05d4aa95413b3e4e7f6c4a3f2 +size 15581 diff --git a/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset b/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset new file mode 100644 index 0000000..e3e30cc --- /dev/null +++ b/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4087b3f85753d9ccbced7d00d42208dad4d21185f24a97b0c86db31be867b733 +size 135087 diff --git a/Content/LevelPrototyping/Meshes/SM_QuarterCylinderOuter.uasset b/Content/LevelPrototyping/Meshes/SM_QuarterCylinderOuter.uasset new file mode 100644 index 0000000..108131a --- /dev/null +++ b/Content/LevelPrototyping/Meshes/SM_QuarterCylinderOuter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab58a5224da57452f367c9d55ea4976466138fc2cb8ec9e2fa92748c86a07f11 +size 79741 diff --git a/Content/LevelPrototyping/Meshes/SM_Ramp.uasset b/Content/LevelPrototyping/Meshes/SM_Ramp.uasset new file mode 100644 index 0000000..d176359 --- /dev/null +++ b/Content/LevelPrototyping/Meshes/SM_Ramp.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5b472deb37a9956b9112dccee3d09498a456baeacc574db8c5d725463b73597 +size 18690 diff --git a/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset b/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset new file mode 100644 index 0000000..37cf466 --- /dev/null +++ b/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8334767064b107ec4f4407ef1365e8b9e2dfeff5984e66d4a6232254ddd02a +size 9600 diff --git a/Content/Variant_Horror/Blueprints/BP_HorrorCharacter.uasset b/Content/Variant_Horror/Blueprints/BP_HorrorCharacter.uasset new file mode 100644 index 0000000..3943f6e --- /dev/null +++ b/Content/Variant_Horror/Blueprints/BP_HorrorCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db0c52665f0db348d15898cec4a7b9f136a729eca84947343e413dab47a771cd +size 57869 diff --git a/Content/Variant_Horror/Blueprints/BP_HorrorGameMode.uasset b/Content/Variant_Horror/Blueprints/BP_HorrorGameMode.uasset new file mode 100644 index 0000000..6801472 --- /dev/null +++ b/Content/Variant_Horror/Blueprints/BP_HorrorGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ec302263925f1b713652ea6f3747cc30238f4b9459df08004b82b9ca63b0272 +size 21615 diff --git a/Content/Variant_Horror/Blueprints/BP_HorrorPlayerController.uasset b/Content/Variant_Horror/Blueprints/BP_HorrorPlayerController.uasset new file mode 100644 index 0000000..e2e457f --- /dev/null +++ b/Content/Variant_Horror/Blueprints/BP_HorrorPlayerController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:339a0a3d692d9f8dfd70b9ab23fd2b885c4aba7e2c19478acfb30270b89a3e66 +size 21907 diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/LF_Flicker.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/LF_Flicker.uasset new file mode 100644 index 0000000..2afbf91 --- /dev/null +++ b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/LF_Flicker.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af8d070ad043c2e70115d005efe610810e5c4a8f980afca9040081785a8b0c19 +size 21662 diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MF_LightFlicker.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MF_LightFlicker.uasset new file mode 100644 index 0000000..f68097d --- /dev/null +++ b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MF_LightFlicker.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:437499a8eaba7effb9ae7a43c41fa5b43849e9bae29ee51cabfc32d774fba979 +size 17030 diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MI_FlickeringLight.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MI_FlickeringLight.uasset new file mode 100644 index 0000000..de60267 --- /dev/null +++ b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MI_FlickeringLight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e27049deb2852884a51cec5484ca0eb3a87012c8f463b5bec69e367083d61e9 +size 7855 diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_DustMote.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_DustMote.uasset new file mode 100644 index 0000000..1e11b7d --- /dev/null +++ b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_DustMote.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:738b039438f2af76b81c7eb8724ac433b116886d6f32412280208f752e79825a +size 17418 diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_Light.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_Light.uasset new file mode 100644 index 0000000..8b6fcf2 --- /dev/null +++ b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_Light.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef5582c134b273c069fd2921bc3fce869b4977aa9e0f88d83997738139a81111 +size 14986 diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/NS_DustMote.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/NS_DustMote.uasset new file mode 100644 index 0000000..68e2b72 --- /dev/null +++ b/Content/Variant_Horror/Blueprints/Light/Assets/NS_DustMote.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5c39696aab3ce979b4df4f0bd4160b8a1e403a8c76b67eaf9d064d128abc856 +size 147864 diff --git a/Content/Variant_Horror/Blueprints/Light/Light.uasset b/Content/Variant_Horror/Blueprints/Light/Light.uasset new file mode 100644 index 0000000..b35696c --- /dev/null +++ b/Content/Variant_Horror/Blueprints/Light/Light.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc885aa73a0128a5d611a6866a02d4e67b4946440761799486532fac65187897 +size 101747 diff --git a/Content/Variant_Horror/Input/IA_Sprint.uasset b/Content/Variant_Horror/Input/IA_Sprint.uasset new file mode 100644 index 0000000..560b3e0 --- /dev/null +++ b/Content/Variant_Horror/Input/IA_Sprint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af8d5d7708a374b58bb00068a15eb05e4eb73504c12d03ece67bffbef668f77f +size 1213 diff --git a/Content/Variant_Horror/Input/IMC_Horror.uasset b/Content/Variant_Horror/Input/IMC_Horror.uasset new file mode 100644 index 0000000..8fff7b5 --- /dev/null +++ b/Content/Variant_Horror/Input/IMC_Horror.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05265996e05371e685d36caa04d94761020d76f7d434a154cc7addf6a9530e51 +size 2919 diff --git a/Content/Variant_Horror/Lvl_Horror.umap b/Content/Variant_Horror/Lvl_Horror.umap new file mode 100644 index 0000000..903d564 --- /dev/null +++ b/Content/Variant_Horror/Lvl_Horror.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df75df2ab361e2381a78edbd7594eaff872f6fc1c2eba414163ee9c94394add3 +size 11849 diff --git a/Content/Variant_Horror/UI/M_FillBackground.uasset b/Content/Variant_Horror/UI/M_FillBackground.uasset new file mode 100644 index 0000000..8978dbc --- /dev/null +++ b/Content/Variant_Horror/UI/M_FillBackground.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3c50bd1be77589af348444a3d0dbb1cc30f77dab5df47163dcda259ddbb2009 +size 8094 diff --git a/Content/Variant_Horror/UI/UI_Horror.uasset b/Content/Variant_Horror/UI/UI_Horror.uasset new file mode 100644 index 0000000..acf403a --- /dev/null +++ b/Content/Variant_Horror/UI/UI_Horror.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16b15961f7ec30645bf8f2977bb67eee30bbafd008f9335247e49d50e0857904 +size 73992 diff --git a/Content/Variant_Shooter/Anims/ABP_FP_Pistol.uasset b/Content/Variant_Shooter/Anims/ABP_FP_Pistol.uasset new file mode 100644 index 0000000..3b1d432 --- /dev/null +++ b/Content/Variant_Shooter/Anims/ABP_FP_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d770a3e84db5e55891938d27bf8da1e60b96275e5ff8e4412c6a3244f435c246 +size 230631 diff --git a/Content/Variant_Shooter/Anims/ABP_FP_Weapon.uasset b/Content/Variant_Shooter/Anims/ABP_FP_Weapon.uasset new file mode 100644 index 0000000..3a066fb --- /dev/null +++ b/Content/Variant_Shooter/Anims/ABP_FP_Weapon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e339a89d16434921e048385b7adc07754cea76554d57c904498d8990ba20878 +size 230722 diff --git a/Content/Variant_Shooter/Anims/ABP_TP_Pistol.uasset b/Content/Variant_Shooter/Anims/ABP_TP_Pistol.uasset new file mode 100644 index 0000000..e1a8ee0 --- /dev/null +++ b/Content/Variant_Shooter/Anims/ABP_TP_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61b971649f25c99cb7d962e8805c36af7ed332be492d45e8d4a52f6336540a14 +size 410684 diff --git a/Content/Variant_Shooter/Anims/ABP_TP_Rifle.uasset b/Content/Variant_Shooter/Anims/ABP_TP_Rifle.uasset new file mode 100644 index 0000000..5f58437 --- /dev/null +++ b/Content/Variant_Shooter/Anims/ABP_TP_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecb0819ed236c8c7854539dc0f7f753ed13c4bca4531ed4e2d817ee31e2b431f +size 414195 diff --git a/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment.uasset b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment.uasset new file mode 100644 index 0000000..d411304 --- /dev/null +++ b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a7ba77935dc0e3b83a40788f9f7385655bbcfb95b0a85851b4ebe95b59238cc +size 513638 diff --git a/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment_Pistol.uasset b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment_Pistol.uasset new file mode 100644 index 0000000..77b76e7 --- /dev/null +++ b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51c33bad01c55bb9db49598c3154effb6f0900b14f53bd52adedf39c0afd516a +size 512901 diff --git a/Content/Variant_Shooter/Anims/FP_Rifle_Shoot_Montage.uasset b/Content/Variant_Shooter/Anims/FP_Rifle_Shoot_Montage.uasset new file mode 100644 index 0000000..abc8855 --- /dev/null +++ b/Content/Variant_Shooter/Anims/FP_Rifle_Shoot_Montage.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c6018e2e811754fc8d2083b239723f2ab2a51c132929a7468d3dbdfab5f314 +size 11155 diff --git a/Content/Variant_Shooter/Blueprints/AI/BP_ShooterAIController.uasset b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterAIController.uasset new file mode 100644 index 0000000..daca326 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterAIController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df3c7f6943c8782784405f3925d2a25e3c7c6d8ba8632cdd98d299af52e55167 +size 24612 diff --git a/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPC.uasset b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPC.uasset new file mode 100644 index 0000000..321dba6 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98e92216b7db2a7096c9b2a6276727e9b82751635154d5012067ca1162e25951 +size 36840 diff --git a/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPCSpawner.uasset b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPCSpawner.uasset new file mode 100644 index 0000000..275f76c --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPCSpawner.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7023525086742cb4be9ccb8b60019c2c1377684822206f0f915d2719f560c4cc +size 30447 diff --git a/Content/Variant_Shooter/Blueprints/AI/EQS_FindRoamLocation.uasset b/Content/Variant_Shooter/Blueprints/AI/EQS_FindRoamLocation.uasset new file mode 100644 index 0000000..aef1791 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/AI/EQS_FindRoamLocation.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ade821a22fe39e8d6420b691a2b2484947cd7d742cdce883d6777248246865f7 +size 6214 diff --git a/Content/Variant_Shooter/Blueprints/AI/EQS_FindSnipingLocation.uasset b/Content/Variant_Shooter/Blueprints/AI/EQS_FindSnipingLocation.uasset new file mode 100644 index 0000000..8531776 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/AI/EQS_FindSnipingLocation.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:416deb1f3e3abed346c525bf7c1586bb930e3ee8bbb375f3cc483e314e4dc892 +size 8914 diff --git a/Content/Variant_Shooter/Blueprints/AI/ST_Shooter.uasset b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter.uasset new file mode 100644 index 0000000..8175688 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d310f010730216191c9d5e97639a95206d9c1259d2f3355f098e9ed06de6820 +size 255951 diff --git a/Content/Variant_Shooter/Blueprints/AI/ST_Shooter_ShootAtTarget.uasset b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter_ShootAtTarget.uasset new file mode 100644 index 0000000..42b69c4 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter_ShootAtTarget.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7cc27825b286e833f3a1d8a54b747aa6277e18c3839b12b0d646668ece6e248 +size 105837 diff --git a/Content/Variant_Shooter/Blueprints/BP_ShooterCharacter.uasset b/Content/Variant_Shooter/Blueprints/BP_ShooterCharacter.uasset new file mode 100644 index 0000000..ff7ba1c --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/BP_ShooterCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8570d358d924042aa1aa1929a4f14445c5118c1e68b3867ac5fa83ddcbac895 +size 95634 diff --git a/Content/Variant_Shooter/Blueprints/BP_ShooterGameMode.uasset b/Content/Variant_Shooter/Blueprints/BP_ShooterGameMode.uasset new file mode 100644 index 0000000..f69c3ca --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/BP_ShooterGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dee2552c1436834ab7f6322358f6ac8f8fd919f129713206c81e184a28208a04 +size 22134 diff --git a/Content/Variant_Shooter/Blueprints/BP_ShooterPlayerController.uasset b/Content/Variant_Shooter/Blueprints/BP_ShooterPlayerController.uasset new file mode 100644 index 0000000..5e15a12 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/BP_ShooterPlayerController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2df085fc7de013d39fd4b999a5989ab13d48916debbef07d835770daa562cd2 +size 22395 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterPickup.uasset b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterPickup.uasset new file mode 100644 index 0000000..1cf76ef --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterPickup.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81ed478f7c927be3221e4d1e8f441d540f520765b340eaba8de452db1e2ca4fd +size 83318 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterWeaponBase.uasset b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterWeaponBase.uasset new file mode 100644 index 0000000..36eb8ee --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterWeaponBase.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbea4771fafc30f02f7e09236b5d8d8209ba68625d584dc8c27477e4b9ccda31 +size 32726 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/DT_WeaponData.uasset b/Content/Variant_Shooter/Blueprints/Pickups/DT_WeaponData.uasset new file mode 100644 index 0000000..48744f7 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/DT_WeaponData.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:197dd282ff35fb7e022f7c0785fd2aba2b9c06fe692ca010f3732517c1f964da +size 3350 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterGrenadeExplosion.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterGrenadeExplosion.uasset new file mode 100644 index 0000000..1608eec --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterGrenadeExplosion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d91050b1740f1b80e03815c8baa31bcaa72f363eb592afda28c8419ed1a134e0 +size 55649 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Bullet.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Bullet.uasset new file mode 100644 index 0000000..33a5c84 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Bullet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e82f5cf6d56978a2ed8e3574a9e5921a924aeccd973c8f4e5dbb82fc4afcedd +size 113619 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Grenade.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Grenade.uasset new file mode 100644 index 0000000..c6750a3 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Grenade.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54a0182f97957e1313b373a2716a7f832039833bcb76c41af56604f289e75ced +size 37241 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Materials/M_Explosion.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Materials/M_Explosion.uasset new file mode 100644 index 0000000..b00d4f9 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Materials/M_Explosion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cec6d2da28be464d0482467a42e40d3031098a4d0f2c5cee2b1d2e5d66fc6a0 +size 28066 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Meshes/SM_FoamBullet.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Meshes/SM_FoamBullet.uasset new file mode 100644 index 0000000..2a220b0 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Meshes/SM_FoamBullet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:636539dbac619ac17d8f15a4046fd36b62fa417e648e6f8f082109b1d4a2768d +size 81554 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_GrenadeLauncher.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_GrenadeLauncher.uasset new file mode 100644 index 0000000..74d2648 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_GrenadeLauncher.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d70606dcda9dad841e95a26ca3a914a46e82649315b064be1465b408da712f1 +size 36694 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Pistol.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Pistol.uasset new file mode 100644 index 0000000..1b1a33b --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:265c1e451f571f2e413dd29bd6c92a34fd3c579ef9baeca5222e567d3a3e5069 +size 37025 diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Rifle.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Rifle.uasset new file mode 100644 index 0000000..4b8e210 --- /dev/null +++ b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c5b81a4a251948313abc8c4177d4134be325b8de8b847c243c5eb146d058af6 +size 36256 diff --git a/Content/Variant_Shooter/Input/Actions/IA_Shoot.uasset b/Content/Variant_Shooter/Input/Actions/IA_Shoot.uasset new file mode 100644 index 0000000..33ad67c --- /dev/null +++ b/Content/Variant_Shooter/Input/Actions/IA_Shoot.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3a3ab965908d858bdb38d7c19c0f236eb338cedc099ea1e3ac32beeeb8e2ce1 +size 1740 diff --git a/Content/Variant_Shooter/Input/Actions/IA_SwapWeapon.uasset b/Content/Variant_Shooter/Input/Actions/IA_SwapWeapon.uasset new file mode 100644 index 0000000..94ae7cd --- /dev/null +++ b/Content/Variant_Shooter/Input/Actions/IA_SwapWeapon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16349b7b0547faa23641033d365e0bac1df2787d196ce8e357db26845be128bb +size 1555 diff --git a/Content/Variant_Shooter/Input/BPI_Touch_Shooter.uasset b/Content/Variant_Shooter/Input/BPI_Touch_Shooter.uasset new file mode 100644 index 0000000..c49ecb0 --- /dev/null +++ b/Content/Variant_Shooter/Input/BPI_Touch_Shooter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3d9e8021420f65f06e1813c11991c509a15b48d31390aa7dcc585e08fd30932 +size 13300 diff --git a/Content/Variant_Shooter/Input/IMC_Weapons.uasset b/Content/Variant_Shooter/Input/IMC_Weapons.uasset new file mode 100644 index 0000000..71b964d --- /dev/null +++ b/Content/Variant_Shooter/Input/IMC_Weapons.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02cc3371d6e3686008f850cdb743a625c3acaaadd51a0a6b4df4784f07eaf057 +size 3979 diff --git a/Content/Variant_Shooter/Input/UI_TouchInterface_Shooter.uasset b/Content/Variant_Shooter/Input/UI_TouchInterface_Shooter.uasset new file mode 100644 index 0000000..30cd8f7 --- /dev/null +++ b/Content/Variant_Shooter/Input/UI_TouchInterface_Shooter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a7fb6668dad0c8d1b876eaf08981552f2fa522f39fe1bed7cda3f6f1becbcad +size 94873 diff --git a/Content/Variant_Shooter/Lvl_Shooter.umap b/Content/Variant_Shooter/Lvl_Shooter.umap new file mode 100644 index 0000000..2d57e89 --- /dev/null +++ b/Content/Variant_Shooter/Lvl_Shooter.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33eadc70ea3cc9583498ab4760cfdc572148778be5b94ce824f7eaf85ac35f30 +size 21745 diff --git a/Content/Variant_Shooter/UI/M_BulletCounter.uasset b/Content/Variant_Shooter/UI/M_BulletCounter.uasset new file mode 100644 index 0000000..bc146f6 --- /dev/null +++ b/Content/Variant_Shooter/UI/M_BulletCounter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:341a8fa765e3cb156d63b57565f38fadceb3424cb92ad5ee129989881e031ef6 +size 37303 diff --git a/Content/Variant_Shooter/UI/UI_Shooter.uasset b/Content/Variant_Shooter/UI/UI_Shooter.uasset new file mode 100644 index 0000000..c502480 --- /dev/null +++ b/Content/Variant_Shooter/UI/UI_Shooter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3fb1aaf21b96e68146e5f89505b88f94419e783bf9618888f4f13649bbaa795 +size 51839 diff --git a/Content/Variant_Shooter/UI/UI_ShooterBulletCounter.uasset b/Content/Variant_Shooter/UI/UI_ShooterBulletCounter.uasset new file mode 100644 index 0000000..461083d --- /dev/null +++ b/Content/Variant_Shooter/UI/UI_ShooterBulletCounter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3859b8f3a2825e269d05236cf0512b273f471592712c24510eea7ed852fdf612 +size 160772 diff --git a/Content/Weapons/GrenadeLauncher/Audio/FirstPersonTemplateWeaponFire02.uasset b/Content/Weapons/GrenadeLauncher/Audio/FirstPersonTemplateWeaponFire02.uasset new file mode 100644 index 0000000..2571c5d --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Audio/FirstPersonTemplateWeaponFire02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89a195929a0ead34f4b3b3901270350b2d3854ad9a98df75f3b7c74a849b3ff8 +size 308458 diff --git a/Content/Weapons/GrenadeLauncher/Materials/M_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Materials/M_GrenadeLauncher.uasset new file mode 100644 index 0000000..9710e1b --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Materials/M_GrenadeLauncher.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0efea7f92b8d05461c4dbf6fdb23e5519d48795680658575138a4b097cb46b6c +size 27126 diff --git a/Content/Weapons/GrenadeLauncher/Materials/M_ProjectileBullet.uasset b/Content/Weapons/GrenadeLauncher/Materials/M_ProjectileBullet.uasset new file mode 100644 index 0000000..70e32cc --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Materials/M_ProjectileBullet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a632681a46fef4cc87f4a9933eb7e19d73a9efbd856b55335bd883309b92530a +size 14888 diff --git a/Content/Weapons/GrenadeLauncher/Meshes/FirstPersonProjectileMesh.uasset b/Content/Weapons/GrenadeLauncher/Meshes/FirstPersonProjectileMesh.uasset new file mode 100644 index 0000000..c4b6c41 --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Meshes/FirstPersonProjectileMesh.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ceea86d9723b80c01e88d55e4277cccbf6f71da3ce209562dd9c35743342a82 +size 33630 diff --git a/Content/Weapons/GrenadeLauncher/Meshes/PA_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/PA_GrenadeLauncher.uasset new file mode 100644 index 0000000..e91b892 --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Meshes/PA_GrenadeLauncher.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8917535392ac6df3f7f29c8a675a2357d02d2abf6034215106a4c34cba0b9f34 +size 10166 diff --git a/Content/Weapons/GrenadeLauncher/Meshes/SKM_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/SKM_GrenadeLauncher.uasset new file mode 100644 index 0000000..87a0a9a --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Meshes/SKM_GrenadeLauncher.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cad142505e8354c5db09683074624b7fe89dbc8a450dcfcf3476ce70d0e0941d +size 2698295 diff --git a/Content/Weapons/GrenadeLauncher/Meshes/SK_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/SK_GrenadeLauncher.uasset new file mode 100644 index 0000000..63b89b7 --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Meshes/SK_GrenadeLauncher.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13a244b07acf7288f3d1da0dcf954c53b4c29f0007cd00ce1b4d5f8fc531c15b +size 9165 diff --git a/Content/Weapons/GrenadeLauncher/Meshes/SM_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/SM_GrenadeLauncher.uasset new file mode 100644 index 0000000..79a3794 --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Meshes/SM_GrenadeLauncher.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d10839f109baf5e7424759d3e5f7d8c7588f080a28a4a1d93b0b4eefc73a378 +size 512976 diff --git a/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_M.uasset b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_M.uasset new file mode 100644 index 0000000..6d6c0f0 --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87b4ef72e628f6140ffe677d2b64082b10acbd0e03940fc5e0627ccccd091887 +size 156597 diff --git a/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_N.uasset b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_N.uasset new file mode 100644 index 0000000..8cadd22 --- /dev/null +++ b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:223e0f814cbd8bae88b719b654380cb60755c768217ab0ccdd83c462a913aa7d +size 1734086 diff --git a/Content/Weapons/Pistol/Materials/MI_Weapon_Pistol.uasset b/Content/Weapons/Pistol/Materials/MI_Weapon_Pistol.uasset new file mode 100644 index 0000000..273bb3c --- /dev/null +++ b/Content/Weapons/Pistol/Materials/MI_Weapon_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9213d13b5529f4c4fa84877099127d9dbc0a779a8afcca48ea1ceabb8bf07634 +size 17359 diff --git a/Content/Weapons/Pistol/Meshes/PA_Pistol.uasset b/Content/Weapons/Pistol/Meshes/PA_Pistol.uasset new file mode 100644 index 0000000..e9a85cc --- /dev/null +++ b/Content/Weapons/Pistol/Meshes/PA_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:312403ecb1c0f9c735345928619f366cb16027aa7ee22c9142f807a6511b2512 +size 8807 diff --git a/Content/Weapons/Pistol/Meshes/SKM_Pistol.uasset b/Content/Weapons/Pistol/Meshes/SKM_Pistol.uasset new file mode 100644 index 0000000..fda4700 --- /dev/null +++ b/Content/Weapons/Pistol/Meshes/SKM_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdfe37753e21c8c88c32caa1b7919918fb53c4adeda7c7fd472e9bc6730eb694 +size 999935 diff --git a/Content/Weapons/Pistol/Meshes/SK_Pistol.uasset b/Content/Weapons/Pistol/Meshes/SK_Pistol.uasset new file mode 100644 index 0000000..32d9141 --- /dev/null +++ b/Content/Weapons/Pistol/Meshes/SK_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6aeb605a2b969ab8a6d48a56c35bb44d96651727e9bfdd7f7fa38a71606e918 +size 9704 diff --git a/Content/Weapons/Pistol/Meshes/SM_Pistol.uasset b/Content/Weapons/Pistol/Meshes/SM_Pistol.uasset new file mode 100644 index 0000000..39056dd --- /dev/null +++ b/Content/Weapons/Pistol/Meshes/SM_Pistol.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07b6066bce4cafc04232614f1e24fd44ea0b5c6a3f314dbdfb102356e59c7f56 +size 183837 diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_AORM.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_AORM.uasset new file mode 100644 index 0000000..ecec1f5 --- /dev/null +++ b/Content/Weapons/Pistol/Textures/T_Pistol_AORM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65789a079408010ddc777e9291aecbcda28ea550832429b2c05c48f8dbe3c708 +size 1263989 diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_D.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_D.uasset new file mode 100644 index 0000000..fcacac4 --- /dev/null +++ b/Content/Weapons/Pistol/Textures/T_Pistol_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9014359ad0a79b762fccd472fa5dc5b1087a5407564952c0982d7c907dc9a588 +size 791319 diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_Masks.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_Masks.uasset new file mode 100644 index 0000000..29f52a1 --- /dev/null +++ b/Content/Weapons/Pistol/Textures/T_Pistol_Masks.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:506d1878e24b3dffb04e9df90d287117a0e12445e5e46d1732a093b96e2a43e3 +size 54818 diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_N.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_N.uasset new file mode 100644 index 0000000..660616b --- /dev/null +++ b/Content/Weapons/Pistol/Textures/T_Pistol_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a3cabf7783371d113c47b6fe82d2b5cc478c09f1155f54cf08e857e472f54f5 +size 1094269 diff --git a/Content/Weapons/Rifle/Materials/M_Rifle.uasset b/Content/Weapons/Rifle/Materials/M_Rifle.uasset new file mode 100644 index 0000000..1fa592b --- /dev/null +++ b/Content/Weapons/Rifle/Materials/M_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4825031b9d0c4607f541b778b6e29baf5d3da3aa0a8ae511742eb93ebc429a3 +size 12404 diff --git a/Content/Weapons/Rifle/Materials/M_Weapon.uasset b/Content/Weapons/Rifle/Materials/M_Weapon.uasset new file mode 100644 index 0000000..2157891 --- /dev/null +++ b/Content/Weapons/Rifle/Materials/M_Weapon.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:304ab2ae0a6ba53d20b4d45ce3761e39c7d28597027bcd0f17d67618bc13c175 +size 29581 diff --git a/Content/Weapons/Rifle/Meshes/PA_Rifle.uasset b/Content/Weapons/Rifle/Meshes/PA_Rifle.uasset new file mode 100644 index 0000000..9a1612b --- /dev/null +++ b/Content/Weapons/Rifle/Meshes/PA_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b33b03102c2ff60f6c6f4856a8293d3160293a1582219fdbd39ff0527ac16b75 +size 7677 diff --git a/Content/Weapons/Rifle/Meshes/SKM_Rifle.uasset b/Content/Weapons/Rifle/Meshes/SKM_Rifle.uasset new file mode 100644 index 0000000..e90a3e2 --- /dev/null +++ b/Content/Weapons/Rifle/Meshes/SKM_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:349e47d396d21d908cf4763dfc759e9fd49da776b09dc699799e1b19591c0506 +size 2584805 diff --git a/Content/Weapons/Rifle/Meshes/SK_Rifle.uasset b/Content/Weapons/Rifle/Meshes/SK_Rifle.uasset new file mode 100644 index 0000000..02e5c94 --- /dev/null +++ b/Content/Weapons/Rifle/Meshes/SK_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc21d41a9a220446bcb9b7d021bee25d8811cfc6a01b8b381000f22e586c8e17 +size 7939 diff --git a/Content/Weapons/Rifle/Meshes/SM_Rifle.uasset b/Content/Weapons/Rifle/Meshes/SM_Rifle.uasset new file mode 100644 index 0000000..4f2e05e --- /dev/null +++ b/Content/Weapons/Rifle/Meshes/SM_Rifle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f32e41a07638d165957caee2ba550aac591503b69b8c897e7bd3b284b8d775e2 +size 450116 diff --git a/Content/Weapons/Rifle/Textures/T_Rifle_BC.uasset b/Content/Weapons/Rifle/Textures/T_Rifle_BC.uasset new file mode 100644 index 0000000..a613c42 --- /dev/null +++ b/Content/Weapons/Rifle/Textures/T_Rifle_BC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a186121704cce5edc611c79a0476a935387c5d2c627a219dcdfe75205be8b979 +size 429100 diff --git a/Content/Weapons/Rifle/Textures/T_Rifle_N.uasset b/Content/Weapons/Rifle/Textures/T_Rifle_N.uasset new file mode 100644 index 0000000..5be981c --- /dev/null +++ b/Content/Weapons/Rifle/Textures/T_Rifle_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df596e6ab2c7c94bddf9eb71717896c6d2c1b7ccf14b804b59b5e54f29d39a16 +size 1115236 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/44/E30ITTGIQYU50RQY5Y9XCY.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/44/E30ITTGIQYU50RQY5Y9XCY.uasset new file mode 100644 index 0000000..846acb1 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/44/E30ITTGIQYU50RQY5Y9XCY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fd5d1e84d5dba0fbfba0d346f793948aebe92a7bac32966b8943a0115a7e745 +size 4201 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/56/I0F38RE5S8MZ8PNQ5GDDSS.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/56/I0F38RE5S8MZ8PNQ5GDDSS.uasset new file mode 100644 index 0000000..d9de99d --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/56/I0F38RE5S8MZ8PNQ5GDDSS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13ec26f31ffdc735b6c30c155ddb8f286ae4a01f227d086678a8e46cf91ec71b +size 4553 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/9C/F5Z2JNQMT747Y7QES5KOP7.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/9C/F5Z2JNQMT747Y7QES5KOP7.uasset new file mode 100644 index 0000000..e3a0392 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/9C/F5Z2JNQMT747Y7QES5KOP7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8a840194a739fe47a05aa99d7e72bdebc22fa16e45500fb4857dd04a3e25a4b +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/ER/GJUIXEEO8HUV9WZCSZR9GH.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/ER/GJUIXEEO8HUV9WZCSZR9GH.uasset new file mode 100644 index 0000000..deb0fae --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/ER/GJUIXEEO8HUV9WZCSZR9GH.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:929131003949426d3c93ffec16cd40962034b29716deb6c6c5dd81c5b57f8e70 +size 4084 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/GZ/TTBKQTM7H2HDLWB3T16ZLY.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/GZ/TTBKQTM7H2HDLWB3T16ZLY.uasset new file mode 100644 index 0000000..5db7232 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/GZ/TTBKQTM7H2HDLWB3T16ZLY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3024fffd6719421105f02f55f322bc7e973b22843e3c7950134e004661e8e8d +size 4675 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/QF/0MZRSMWGNM91UYLLVJ3D8E.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/QF/0MZRSMWGNM91UYLLVJ3D8E.uasset new file mode 100644 index 0000000..6a58c27 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/QF/0MZRSMWGNM91UYLLVJ3D8E.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3be3b8539ec1b2279eac98c567c144ee7faf2204f5dce21845110f59f0e73b4d +size 4255 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/2T/XLTJQ7V46UNMQF707MQDQK.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/2T/XLTJQ7V46UNMQF707MQDQK.uasset new file mode 100644 index 0000000..f85cb10 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/2T/XLTJQ7V46UNMQF707MQDQK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:552fb42078a2ca15bc24092adec7f3895447e739d2176a07acc179f37a803182 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/CC/0JTUNI8VQLSXUN7CSUXHGJ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/CC/0JTUNI8VQLSXUN7CSUXHGJ.uasset new file mode 100644 index 0000000..50fa2fa --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/CC/0JTUNI8VQLSXUN7CSUXHGJ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d69bf0aa7148d7920df9ef1d6a33cd8d05dcf8eff77f21f6004715e4c21fe1f0 +size 3832 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/IH/6AC5KKMX2JQTMBRMPI2QXX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/IH/6AC5KKMX2JQTMBRMPI2QXX.uasset new file mode 100644 index 0000000..048fe1e --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/IH/6AC5KKMX2JQTMBRMPI2QXX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1cdf3a42c200036482697fcdd78f82dc11522c228a1152d3b29dba5895069b3 +size 4531 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/TT/AN7EDCE3WNBXY7C6MLPGQH.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/TT/AN7EDCE3WNBXY7C6MLPGQH.uasset new file mode 100644 index 0000000..baf652c --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/TT/AN7EDCE3WNBXY7C6MLPGQH.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64c5d1d35f443bf17feccd9cf6c14c74543c16bffdbb297ae090c236d5308187 +size 4255 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/WL/M7MJFQ0T76JWU6F1Z7YH8J.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/WL/M7MJFQ0T76JWU6F1Z7YH8J.uasset new file mode 100644 index 0000000..3f938cd --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/WL/M7MJFQ0T76JWU6F1Z7YH8J.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aeabc4da5a0538607a1e45adf83176b436f6deec3f5b64edcd23177a1ccef17 +size 4531 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/1X/SN5R6LIXKDO3W51X1TVUTZ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/1X/SN5R6LIXKDO3W51X1TVUTZ.uasset new file mode 100644 index 0000000..fa0536e --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/1X/SN5R6LIXKDO3W51X1TVUTZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f2b2a66dff9e37af110421b745e00a610b1784ff3f228c566f4ea144a2b5a60 +size 4531 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/EG/CIZR6W2NYH4Y5P8G67XOU0.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/EG/CIZR6W2NYH4Y5P8G67XOU0.uasset new file mode 100644 index 0000000..e7e4a81 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/EG/CIZR6W2NYH4Y5P8G67XOU0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31aa797ea02a1624e53b1f0ee2d9b3bf0326f0c573c3d9c8d603d5e883d6451c +size 4286 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/NN/UPER9K07U6B78EE80PY058.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/NN/UPER9K07U6B78EE80PY058.uasset new file mode 100644 index 0000000..372426b --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/NN/UPER9K07U6B78EE80PY058.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:544976a287d472845bd47c068ae6913a5ae2febc1b15ea3e38f85d28b1ef2119 +size 2276 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/OC/XS0DUOELE7HJY3F9XZSBNV.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/OC/XS0DUOELE7HJY3F9XZSBNV.uasset new file mode 100644 index 0000000..9fa0430 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/OC/XS0DUOELE7HJY3F9XZSBNV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a53b2db8fa271e74b4c008591e37e57300dfd807811d0b00d818af17b844501c +size 4499 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/SP/2T0RTK13XAOOIQD0QTXDQ9.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/SP/2T0RTK13XAOOIQD0QTXDQ9.uasset new file mode 100644 index 0000000..bfcdec3 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/SP/2T0RTK13XAOOIQD0QTXDQ9.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ac7294a8c384aaf56acf7677eae0258690a8cb95e564853363883a8e7db70ed +size 4531 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/8B/S2VB6OCHYGRYWAD0QGDM9H.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/8B/S2VB6OCHYGRYWAD0QGDM9H.uasset new file mode 100644 index 0000000..ef731f2 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/8B/S2VB6OCHYGRYWAD0QGDM9H.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c44f043902614f573127fea9b9c7ba232d6d9c3cb01b4ca1383fee644a0e603 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/BN/PJBVMDVV9BICN8MLKJ849X.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/BN/PJBVMDVV9BICN8MLKJ849X.uasset new file mode 100644 index 0000000..f257eb4 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/BN/PJBVMDVV9BICN8MLKJ849X.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4097f145e34e5800d8327453129e035aa85615423ba349c5da34ca825fcad9d6 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/3X/YJ94LSV2G9NAIYZIK96QLE.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/3X/YJ94LSV2G9NAIYZIK96QLE.uasset new file mode 100644 index 0000000..0d195f2 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/3X/YJ94LSV2G9NAIYZIK96QLE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6059aaf6424a039eeb4c0a553d153053ee80dcb2e9a085ff1981f24ca906d158 +size 4531 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/6J/NUEDVP0K274K8FKJ6Y0WEX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/6J/NUEDVP0K274K8FKJ6Y0WEX.uasset new file mode 100644 index 0000000..e637e82 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/6J/NUEDVP0K274K8FKJ6Y0WEX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60b69c327673345e73b47e740de6a16acfa5f56c1f1c84968427c0ca400abaa8 +size 4496 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/8V/Q896X99E5DMTT521YEXM9A.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/8V/Q896X99E5DMTT521YEXM9A.uasset new file mode 100644 index 0000000..a74794a --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/8V/Q896X99E5DMTT521YEXM9A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b68adced8a0643e73bc23f5a4d2039638865581ba7ab7333be042de8db7d4f7 +size 4553 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/IJ/E7WQWO4MJ84GWAX8H4UR84.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/IJ/E7WQWO4MJ84GWAX8H4UR84.uasset new file mode 100644 index 0000000..fc8762e --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/IJ/E7WQWO4MJ84GWAX8H4UR84.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:249d8eeb2c18a123a57bb01818c7efa4413bdcd4af3562b872dec997e221bd19 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/N3/FQV2FW1I8D4Z06TF38UTCR.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/N3/FQV2FW1I8D4Z06TF38UTCR.uasset new file mode 100644 index 0000000..0ffe0be --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/N3/FQV2FW1I8D4Z06TF38UTCR.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97d2eb9039077e03883b932e8d37011937607fedf490a48e5f4e9057952b0ec0 +size 4201 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/QB/9YXJRQGLS33G0BEH37USBX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/QB/9YXJRQGLS33G0BEH37USBX.uasset new file mode 100644 index 0000000..21cab9f --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/QB/9YXJRQGLS33G0BEH37USBX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb3a51bfc0d3a883d6b4e6d4a96944b17381113a78ff9ef8d47c0c7436e8188e +size 4201 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/XL/U0BAKX7624EKY7QR8W4QDX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/XL/U0BAKX7624EKY7QR8W4QDX.uasset new file mode 100644 index 0000000..178493f --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/XL/U0BAKX7624EKY7QR8W4QDX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56b4c9e9eff4ee041deb0f85b48cfd34c91b9f8d83f75ca3cf817efc0c435357 +size 4087 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/TI/UOUH4EXJHIGJNF2D0Y7CPX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/TI/UOUH4EXJHIGJNF2D0Y7CPX.uasset new file mode 100644 index 0000000..8775355 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/TI/UOUH4EXJHIGJNF2D0Y7CPX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c0c264535040bd0f536db0f4dac7da4151e2eb3118b726e9c9979e526258fd1 +size 4559 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/UU/1ZY1QFVHRWZSP8YI4VZLMK.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/UU/1ZY1QFVHRWZSP8YI4VZLMK.uasset new file mode 100644 index 0000000..c2528a9 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/UU/1ZY1QFVHRWZSP8YI4VZLMK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:178bade818c10d835dbf50594649180565221e9a03243d78eac6ee87b3e53e87 +size 5414 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/V6/DING1S8EVR2AQW03U1ABGV.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/V6/DING1S8EVR2AQW03U1ABGV.uasset new file mode 100644 index 0000000..9740b78 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/V6/DING1S8EVR2AQW03U1ABGV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fd64f4ecfa1c08bcded5e52cf06d44a18abbf52ec3de1a1e20ed2daddf68743 +size 4559 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/6I/29E05UQXOAGP6TCP5CN0BQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/6I/29E05UQXOAGP6TCP5CN0BQ.uasset new file mode 100644 index 0000000..621b620 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/6I/29E05UQXOAGP6TCP5CN0BQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8984aa9512bd2430fa9fba4eae33e289966eb57641efa6369db4990102f57cac +size 4553 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/96/JEF6NHSL8XXSCQTOUZMFM6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/96/JEF6NHSL8XXSCQTOUZMFM6.uasset new file mode 100644 index 0000000..5e81e14 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/96/JEF6NHSL8XXSCQTOUZMFM6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca485f940cf796321bd9d7f2a8e6eb96c2ac2ed4eaa0bd4df3b409a7953c8ef2 +size 3714 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/I5/5U3R0J6P3EIOET939AGA6V.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/I5/5U3R0J6P3EIOET939AGA6V.uasset new file mode 100644 index 0000000..5e8f9ba --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/I5/5U3R0J6P3EIOET939AGA6V.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ebd9b1b2f271c6ee433de999d4bd60ad004fd99f3d31ea19bade704702a39de +size 4531 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/U8/LL0QNHFPYL403X5YW0FGG6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/U8/LL0QNHFPYL403X5YW0FGG6.uasset new file mode 100644 index 0000000..e39ea26 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/U8/LL0QNHFPYL403X5YW0FGG6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c57f36fd530bbc96c0be9dc179725fa3bafe08dafee3d5f4d3c773089b5dc25a +size 4417 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/HV/3VH3D4CLM38OC4F8ICXDVQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/HV/3VH3D4CLM38OC4F8ICXDVQ.uasset new file mode 100644 index 0000000..9a0cb71 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/HV/3VH3D4CLM38OC4F8ICXDVQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da7b7b99d9c27b7673eee56c4b07fbd7e1545065947d3d55078f726035103f68 +size 4201 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/NI/7Z9KFUHGDC33I0LYBUUYUQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/NI/7Z9KFUHGDC33I0LYBUUYUQ.uasset new file mode 100644 index 0000000..61d410a --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/NI/7Z9KFUHGDC33I0LYBUUYUQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:779e27d6444187d7ee82d69737af13dbefeb9434da79c25e51431e554e65d244 +size 2254 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/2H/HS4VI3UZJT1LNKM6HC7PL2.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/2H/HS4VI3UZJT1LNKM6HC7PL2.uasset new file mode 100644 index 0000000..895bff0 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/2H/HS4VI3UZJT1LNKM6HC7PL2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc16d8d1e4012e81c59bfe89809dcaa219a63080b39e5e9d6672edb153be4653 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/7M/FNN1ELJOC3KQT4JN0YDHT6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/7M/FNN1ELJOC3KQT4JN0YDHT6.uasset new file mode 100644 index 0000000..222620e --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/7M/FNN1ELJOC3KQT4JN0YDHT6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:009f67305e4e1c4beb32c561d61e23f940e0a37d60f3ba3bf377620866b5fc04 +size 4559 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/I3/0VVXG3S0B4RN6QSHFSGKGX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/I3/0VVXG3S0B4RN6QSHFSGKGX.uasset new file mode 100644 index 0000000..c2e7336 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/I3/0VVXG3S0B4RN6QSHFSGKGX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87d9cfd2362c089e9052cbd288900ac340785142864ed3e698886d3144d67dc6 +size 4087 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/KL/17EY7JSE7TF01OWV9LBSC1.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/KL/17EY7JSE7TF01OWV9LBSC1.uasset new file mode 100644 index 0000000..c33f2de --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/KL/17EY7JSE7TF01OWV9LBSC1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0da854f07ddc30cdb407b7b2b81a6cc6d1fde1aedfbe145363adcaeb28a8103 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/QY/FSMNL3KLM133J5VKZAU0BE.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/QY/FSMNL3KLM133J5VKZAU0BE.uasset new file mode 100644 index 0000000..d565daa --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/QY/FSMNL3KLM133J5VKZAU0BE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f1ab50543d0f9461964953ee9b87cd33605f122aae0fcc8549cfcfb635eddcd +size 4974 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/W2/920TYXDM12T8GKK1E0M892.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/W2/920TYXDM12T8GKK1E0M892.uasset new file mode 100644 index 0000000..5df2c41 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/W2/920TYXDM12T8GKK1E0M892.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72ef4aa93658f946e30264d284a8980f65a8be98cb323ba0a9d8bcfed6489f8b +size 4499 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/3M/CN6DASGRPPAPEICARMETU3.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/3M/CN6DASGRPPAPEICARMETU3.uasset new file mode 100644 index 0000000..92f288b --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/3M/CN6DASGRPPAPEICARMETU3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec161c68c11b622effb26332cfbf57922e9f828b43bf2043eda517db9e8686d +size 4199 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/8O/BVYOAIREBMOAK7193TKE2N.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/8O/BVYOAIREBMOAK7193TKE2N.uasset new file mode 100644 index 0000000..824f605 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/8O/BVYOAIREBMOAK7193TKE2N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7ec31c3222c631fc4d98f006c2154ed3d0fe6c719a62bbce1973307f95f94ec +size 4084 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/9S/AT66MUZW91DYUD6WM5FH0P.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/9S/AT66MUZW91DYUD6WM5FH0P.uasset new file mode 100644 index 0000000..7165d35 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/9S/AT66MUZW91DYUD6WM5FH0P.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:174fdd5afe25f12c51ca928f42315784e87352fb81cad79fa81743fdbe30ce45 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/AC/RFQ7INIHB1Q1JWY7DWYQ5Y.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/AC/RFQ7INIHB1Q1JWY7DWYQ5Y.uasset new file mode 100644 index 0000000..a4271c7 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/AC/RFQ7INIHB1Q1JWY7DWYQ5Y.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10a7aae6f5dfc918c9ee3b94a539f1842d5dc9667aae9d4c9f6f270a6be41234 +size 4376 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/D2/66RZ3E9MEBJPV125V7SWQ6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/D2/66RZ3E9MEBJPV125V7SWQ6.uasset new file mode 100644 index 0000000..667fccc --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/D2/66RZ3E9MEBJPV125V7SWQ6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc7be44ae999d1a1a536c42f9ef1cf5891ea7179f9a7dd1a0742ade12b3fdc9c +size 4199 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/LJ/OQX9YN9UJ9NNRX6ERJ3PPZ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/LJ/OQX9YN9UJ9NNRX6ERJ3PPZ.uasset new file mode 100644 index 0000000..185b953 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/LJ/OQX9YN9UJ9NNRX6ERJ3PPZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73c567328e9702dcc8a888e1df6b0f395b5b2c083e5d07d89a1f2667b84c73d2 +size 4499 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/2N/XWEBNOYZ7JA5DZOPBGZ71S.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/2N/XWEBNOYZ7JA5DZOPBGZ71S.uasset new file mode 100644 index 0000000..e588353 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/2N/XWEBNOYZ7JA5DZOPBGZ71S.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f13ba89531ba4183441e94be3c4fad5891dd6b0714f3ed62a2688af12ab593 +size 4255 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/HH/BIAWP2Z8HW32809JWMRLU3.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/HH/BIAWP2Z8HW32809JWMRLU3.uasset new file mode 100644 index 0000000..e6d7a22 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/HH/BIAWP2Z8HW32809JWMRLU3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc18de260705da3ec567fcb9a07eac7fffd562d4620856c8856aea97c3cf2bba +size 4087 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/J3/JQWZC33CXMXDX87CAIWJ94.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/J3/JQWZC33CXMXDX87CAIWJ94.uasset new file mode 100644 index 0000000..dd11980 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/J3/JQWZC33CXMXDX87CAIWJ94.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2ca78db0081ba307f8a47548ee775ce1706558fa03c6ae1219e6e1792f4a249 +size 4199 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/U0/N7D7PHGDI2A4EOLD58TA92.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/U0/N7D7PHGDI2A4EOLD58TA92.uasset new file mode 100644 index 0000000..eea8656 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/U0/N7D7PHGDI2A4EOLD58TA92.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f67a09a14fe4a886397ee19991d6658cc4bab9be0e87eccc3e20f7181e8896b4 +size 4201 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/TG/2MDU2GF02TMAKTSII7ZI7V.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/TG/2MDU2GF02TMAKTSII7ZI7V.uasset new file mode 100644 index 0000000..d9eb422 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/TG/2MDU2GF02TMAKTSII7ZI7V.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec8286de11eafa2f9ac839a4338c50465f22b78ecbb975b5f4a151e82a04d10d +size 4087 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/U9/AHG6736Q2Y3SGC1JQONLFJ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/U9/AHG6736Q2Y3SGC1JQONLFJ.uasset new file mode 100644 index 0000000..b7e2589 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/U9/AHG6736Q2Y3SGC1JQONLFJ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a40d0da0570a3b6090bedef8e0260fcec73f9c61ea5ca7858d9c3b55fa2eaed9 +size 4201 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/0I/0PXPLZ76IWADZO9D6J4VWA.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/0I/0PXPLZ76IWADZO9D6J4VWA.uasset new file mode 100644 index 0000000..0d04a3c --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/0I/0PXPLZ76IWADZO9D6J4VWA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24d62187d5b4b616e20d21d35fc154a2d3a9d1d72655c47fd939a6f5e944ebb2 +size 4383 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/GO/765U52T3ZSF8D2MPGLVRR0.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/GO/765U52T3ZSF8D2MPGLVRR0.uasset new file mode 100644 index 0000000..98451e5 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/GO/765U52T3ZSF8D2MPGLVRR0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72a049afd99066c8f30483ae265b853cd9b16b6320298e5098a1a6867bdc7b2a +size 4551 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/BL/WB7S47W2IE4F23EZ9SLQ1B.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/BL/WB7S47W2IE4F23EZ9SLQ1B.uasset new file mode 100644 index 0000000..2ec38cc --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/BL/WB7S47W2IE4F23EZ9SLQ1B.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1823ad6744bfe9409f572098e8edb445b6aa3fdaa889bbe2a89e9acf264192e +size 3604 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/C7/LHEOZ28EA00LZG55QEAGFH.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/C7/LHEOZ28EA00LZG55QEAGFH.uasset new file mode 100644 index 0000000..e3062b3 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/C7/LHEOZ28EA00LZG55QEAGFH.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c71d45731360d08d92f769ddbe0758e9eb501ede0806aedc2fdd949526725b9 +size 3727 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/IP/FTEAYZDQR9M2KDS0TEPHA0.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/IP/FTEAYZDQR9M2KDS0TEPHA0.uasset new file mode 100644 index 0000000..6cb4fcd --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/IP/FTEAYZDQR9M2KDS0TEPHA0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec4bf819e9bc775fc353d76cd8a379b6d57005cd1d9af6a385545ce358eabe9e +size 4201 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/LE/5ZDRK6QRB1CF1JSS3HJKPV.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/LE/5ZDRK6QRB1CF1JSS3HJKPV.uasset new file mode 100644 index 0000000..7c32ff3 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/LE/5ZDRK6QRB1CF1JSS3HJKPV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15d53e81635f2743e72551bbb53b2828485ac88d61c1c05f96266593a229ae05 +size 4553 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/R5/8FN93FIP5FEZUI0RECK61K.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/R5/8FN93FIP5FEZUI0RECK61K.uasset new file mode 100644 index 0000000..11c7cee --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/R5/8FN93FIP5FEZUI0RECK61K.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:675b8d471e08d69429c163e5540a68dbd1d9e016057965ef04ea6604b9d8a3a6 +size 4490 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/TO/58Y2HCG1B7M6VAJN1E38IS.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/TO/58Y2HCG1B7M6VAJN1E38IS.uasset new file mode 100644 index 0000000..bd5e036 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/TO/58Y2HCG1B7M6VAJN1E38IS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4810c44e752ed272b3b69b284d3418866d91db2f601f7d50a818cdfde6fc9b0 +size 4531 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/V1/DLNCFC4C5RQ8EDPCDYCKHQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/V1/DLNCFC4C5RQ8EDPCDYCKHQ.uasset new file mode 100644 index 0000000..acff4a4 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/V1/DLNCFC4C5RQ8EDPCDYCKHQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59b0b636102604704850e6d7abd0bd9a526f0f04ad936e70a6e7ba90b2cb60da +size 4401 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/W0/RTEFXSATTAVCPYEQHKNEY1.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/W0/RTEFXSATTAVCPYEQHKNEY1.uasset new file mode 100644 index 0000000..4060010 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/W0/RTEFXSATTAVCPYEQHKNEY1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a902ce57e2f5fa422c445cc8d372740acf35271e21980e90e4b8872224615707 +size 4497 diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/E/P7/9DOH3BZKA2A8C7ZTDWILWC.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/E/P7/9DOH3BZKA2A8C7ZTDWILWC.uasset new file mode 100644 index 0000000..386d292 --- /dev/null +++ b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/E/P7/9DOH3BZKA2A8C7ZTDWILWC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f01c917a9cf50c122f35ef3a121ca690c0f4b26a61d3db8b1691136636e87b6a +size 4255 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/9N/XNV375O8KPWILSKVGEFNR7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/9N/XNV375O8KPWILSKVGEFNR7.uasset new file mode 100644 index 0000000..7af1d9d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/9N/XNV375O8KPWILSKVGEFNR7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d639773f1268db4a88c93ff8bd8379892c4a8c94ab010f963a46a01f55b870b +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/H4/6XP4MN111ML9O0QCEYRKH2.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/H4/6XP4MN111ML9O0QCEYRKH2.uasset new file mode 100644 index 0000000..e33b34c --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/H4/6XP4MN111ML9O0QCEYRKH2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90c59b9c5930afeb76b3a1e3c3cf4bba0eeeba842952b836d24b9e6f41691afe +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/UL/NBOXI91CXDV03LG1XB034Y.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/UL/NBOXI91CXDV03LG1XB034Y.uasset new file mode 100644 index 0000000..bc09d66 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/UL/NBOXI91CXDV03LG1XB034Y.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2988b53b84b22457182b41ae9723e8326b81dbd306c2ee9a47c934408a0dea69 +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/BG/SUO39IID039W2OIT4A9WHD.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/BG/SUO39IID039W2OIT4A9WHD.uasset new file mode 100644 index 0000000..f97ec51 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/BG/SUO39IID039W2OIT4A9WHD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04181fd0cf40857cdd61595bc98dfd68d1501c75ca28a3fa8377236e5ed8871b +size 3943 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/IF/NN5BW9XQMA6PPAIDJ7SMAQ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/IF/NN5BW9XQMA6PPAIDJ7SMAQ.uasset new file mode 100644 index 0000000..e3dac99 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/IF/NN5BW9XQMA6PPAIDJ7SMAQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e32481c4e1dc5b18ab773e811871dcc06e799de7737271fe7d2808af7d911f9 +size 7097 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/XK/00H4DFA6S89FDUNS6VXWUB.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/XK/00H4DFA6S89FDUNS6VXWUB.uasset new file mode 100644 index 0000000..8f67039 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/XK/00H4DFA6S89FDUNS6VXWUB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86df08fdefd31820be93adc771058cb972140eec7255490b792b2b394b5d945a +size 4313 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/64/I7XEQFHVL5DIB1CJZBSBRU.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/64/I7XEQFHVL5DIB1CJZBSBRU.uasset new file mode 100644 index 0000000..80ccbb6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/64/I7XEQFHVL5DIB1CJZBSBRU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:902dbf9d049a2eefcbf3d84b62b43211b5d8562b568d0021b93da2cfb4d4af93 +size 4058 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/6N/K64CJI6KHKILLZWQSQ7IAN.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/6N/K64CJI6KHKILLZWQSQ7IAN.uasset new file mode 100644 index 0000000..c4943a1 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/6N/K64CJI6KHKILLZWQSQ7IAN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34c878b5a861529e8b3e2c36052a52380ad1057641081abf92f509891c471912 +size 4338 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/9C/1NTY6MECNAM0L7QUTBTWTC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/9C/1NTY6MECNAM0L7QUTBTWTC.uasset new file mode 100644 index 0000000..11af901 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/9C/1NTY6MECNAM0L7QUTBTWTC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d717d4a2d231ab5e8eb24cc8e9710a13bf30e993be5570f48069075f215be28b +size 4344 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/B7/QY8ULQWFS49XORXUUJYHBV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/B7/QY8ULQWFS49XORXUUJYHBV.uasset new file mode 100644 index 0000000..dfe484b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/B7/QY8ULQWFS49XORXUUJYHBV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:019217dd99c9a018e273042899ef53ab20fe577f10fa54462d8c7c5a2ab3c0e8 +size 3923 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/JU/S4QLU8WK2BN4J46DP9RPNN.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/JU/S4QLU8WK2BN4J46DP9RPNN.uasset new file mode 100644 index 0000000..07c5fae --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/JU/S4QLU8WK2BN4J46DP9RPNN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7477377909c4fb874eac57096f645d291e482f095e0a57f7e4ef1472a2610cf +size 3965 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/LP/X22M42YXL5MXZCB4XVRYG9.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/LP/X22M42YXL5MXZCB4XVRYG9.uasset new file mode 100644 index 0000000..78802f7 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/LP/X22M42YXL5MXZCB4XVRYG9.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e7bee7b398b8911601afd0a4aeb3e7582b6b5983bd18332e685d9bb1f592d3c +size 3663 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/PD/B1KLFOWOLE3HXLMQBBLOPE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/PD/B1KLFOWOLE3HXLMQBBLOPE.uasset new file mode 100644 index 0000000..58897f2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/PD/B1KLFOWOLE3HXLMQBBLOPE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a701b262202288724820e1837e78bb2f213ffa3334d66ed17d7aace71bfa1de4 +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/6N/OFZ2R5U7SYT7F3CB3XEANE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/6N/OFZ2R5U7SYT7F3CB3XEANE.uasset new file mode 100644 index 0000000..bb5913d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/6N/OFZ2R5U7SYT7F3CB3XEANE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:751d0de85f4895b264e1afb30a6ddcd066aed4c8c1da7c777529ae4797039d6f +size 7887 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/8G/ZPBH7EIP0LIE3IEE3X5I9P.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/8G/ZPBH7EIP0LIE3IEE3X5I9P.uasset new file mode 100644 index 0000000..8c8dccf --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/8G/ZPBH7EIP0LIE3IEE3X5I9P.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fe427ddd8b631ed113abb341201f3322156c8add4a4327df87416fb73a62e28 +size 7748 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/AD/4ANYKIAZ7LHW90QHRA8XXY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/AD/4ANYKIAZ7LHW90QHRA8XXY.uasset new file mode 100644 index 0000000..da03551 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/AD/4ANYKIAZ7LHW90QHRA8XXY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ad3b081a0a82b9e9485b997d231c9175d273482d750d4dfe279dc34e7857ed +size 3937 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/GK/3ZJBQHCJ1O8II9Z86X5JZ8.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/GK/3ZJBQHCJ1O8II9Z86X5JZ8.uasset new file mode 100644 index 0000000..fe58d11 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/GK/3ZJBQHCJ1O8II9Z86X5JZ8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:504c17a6d04f8bb71e3c6a6911f7977c66e66eca0eb61343d2401986b36e5535 +size 2244 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/HE/OG8UP7YLDKLJGZ6KZI41ZV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/HE/OG8UP7YLDKLJGZ6KZI41ZV.uasset new file mode 100644 index 0000000..fedc8e4 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/HE/OG8UP7YLDKLJGZ6KZI41ZV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fa42c2202aca090062ed06f9660b9357092b233feebf76c9ae38b9ba19f119e +size 11899 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/JM/JB5K424E7XL6HOHHKAGZ44.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/JM/JB5K424E7XL6HOHHKAGZ44.uasset new file mode 100644 index 0000000..20b3bb2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/JM/JB5K424E7XL6HOHHKAGZ44.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65e4834f351f62fb44aaf64fb4cc364d1d04248df36c1388340ee9af453be858 +size 3618 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/L5/T7HZAJOHJ8Z18VN4WJBHUF.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/L5/T7HZAJOHJ8Z18VN4WJBHUF.uasset new file mode 100644 index 0000000..7f36f14 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/L5/T7HZAJOHJ8Z18VN4WJBHUF.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9843da996d04d5a00d87d5c78db9143c008902217cc0777ab08056a29763a35f +size 11175 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/PZ/4LJ5CNYK9QNGK7I6CKWDDP.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/PZ/4LJ5CNYK9QNGK7I6CKWDDP.uasset new file mode 100644 index 0000000..5017984 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/PZ/4LJ5CNYK9QNGK7I6CKWDDP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61aef99e0a7306473e83521c9489a74ea2d57dcbaa61e2f3e41809a91c1ac1a5 +size 3944 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/QB/9KU2R8SEQ5NZF4EGCALVVD.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/QB/9KU2R8SEQ5NZF4EGCALVVD.uasset new file mode 100644 index 0000000..12a5ca4 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/QB/9KU2R8SEQ5NZF4EGCALVVD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c496965fd6be284536d1ac501caa84a084f465f98c57d66b883ff329f16d3db +size 3922 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/U3/8G5Q2ACBQL028FQW3TNA83.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/U3/8G5Q2ACBQL028FQW3TNA83.uasset new file mode 100644 index 0000000..8f0f6dc --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/U3/8G5Q2ACBQL028FQW3TNA83.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9debb82901c5fac4225a51374615243e5040d53f3d1e00dbad7ddaf71d2f703b +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/XH/ZI2O8JLKELBZHG2VGWB2BY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/XH/ZI2O8JLKELBZHG2VGWB2BY.uasset new file mode 100644 index 0000000..d84d3bd --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/XH/ZI2O8JLKELBZHG2VGWB2BY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5faff5771130c043fd199899e5d8aade144de96b10b08fe80fce6628b63c2bda +size 12022 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/1N/6ZCWCW0P2JN8XT3L45YXLS.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/1N/6ZCWCW0P2JN8XT3L45YXLS.uasset new file mode 100644 index 0000000..b8ce200 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/1N/6ZCWCW0P2JN8XT3L45YXLS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27f2605071d224a6e9f3dc164ec8fedfa0ee1bdefc64753597a1f4b673999751 +size 12102 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/3O/7P5L1R6H2S9W36WVJFO7C2.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/3O/7P5L1R6H2S9W36WVJFO7C2.uasset new file mode 100644 index 0000000..0eba7c6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/3O/7P5L1R6H2S9W36WVJFO7C2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6034ad1b60222f3381581fd96c89c78a98ed14fdefa47b307fc099c7cd0e914c +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/CU/3X5T5KEXZ9AFNDPZO353I4.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/CU/3X5T5KEXZ9AFNDPZO353I4.uasset new file mode 100644 index 0000000..091d179 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/CU/3X5T5KEXZ9AFNDPZO353I4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f863813c3432c5112c329cc4c901badad6ebc27ae9d3b63241cd1f068dbb4581 +size 3965 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/LW/63SRQSBPGN1O19F38FOJJI.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/LW/63SRQSBPGN1O19F38FOJJI.uasset new file mode 100644 index 0000000..108e47b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/LW/63SRQSBPGN1O19F38FOJJI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ab44ca17afb951fb8e58d10a5e1269e56229ab5c507f538a975877f261fd15 +size 4250 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YO/H0MBGL3CLVB8BC3LTOTEJZ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YO/H0MBGL3CLVB8BC3LTOTEJZ.uasset new file mode 100644 index 0000000..6a80c9d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YO/H0MBGL3CLVB8BC3LTOTEJZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11456f4e71e7113715378fd2fbe1de715b61eea8036a40b104a6ed50f5669bbd +size 4114 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YQ/U25QS32O4D60A2JP4UZWAL.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YQ/U25QS32O4D60A2JP4UZWAL.uasset new file mode 100644 index 0000000..a645a45 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YQ/U25QS32O4D60A2JP4UZWAL.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:042adff64df014936f0198ec30bf44501b3007b41bb551175f566e49534668f1 +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/9G/8PH3B28FAWBUO5LZGIKBPY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/9G/8PH3B28FAWBUO5LZGIKBPY.uasset new file mode 100644 index 0000000..aee9c3e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/9G/8PH3B28FAWBUO5LZGIKBPY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ef31333d6ffb0767a2a9b7bf7c2b596b64c23f457a6d4c068bcc916657d9542 +size 3923 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/RE/41ING9B1UUSXVFVQAR67TW.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/RE/41ING9B1UUSXVFVQAR67TW.uasset new file mode 100644 index 0000000..28c22ad --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/RE/41ING9B1UUSXVFVQAR67TW.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8dac4a6a3dc52c31af9109de6a98a2c7d473a9e7fe72d2552d8adc7258b7bd5 +size 7984 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/TR/3KZ317G6QAISBA8KVHXNID.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/TR/3KZ317G6QAISBA8KVHXNID.uasset new file mode 100644 index 0000000..15bb75e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/TR/3KZ317G6QAISBA8KVHXNID.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63f05c371c6f7712c7abef12ada211b0da9d5741a7c563addc436078acd9b7c6 +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/V8/ELVBBJP6FQBB46EOR16SNV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/V8/ELVBBJP6FQBB46EOR16SNV.uasset new file mode 100644 index 0000000..745dde0 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/V8/ELVBBJP6FQBB46EOR16SNV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee870350b1ceb6cfd6eda436b5d91aef75b47acee6bb3b8dc6d5de8791694b9f +size 4252 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/XB/P3903AEGCCLEKH4X762BHW.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/XB/P3903AEGCCLEKH4X762BHW.uasset new file mode 100644 index 0000000..a5feecf --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/XB/P3903AEGCCLEKH4X762BHW.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a6c17d4949704270b2531ac4452bd8f6b490d52ade11dcabb8f4bc40ed094f2 +size 3922 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/2Q/U1Q6LWD0LO8TBYP8XAG1HZ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/2Q/U1Q6LWD0LO8TBYP8XAG1HZ.uasset new file mode 100644 index 0000000..f731208 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/2Q/U1Q6LWD0LO8TBYP8XAG1HZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55afd9d155f087924a0b8382bd70f5def0968a7e70d05ea575306836bc71af39 +size 6955 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/BR/8VZFJT0FO7JL9XP9AKBVU0.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/BR/8VZFJT0FO7JL9XP9AKBVU0.uasset new file mode 100644 index 0000000..63b8516 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/BR/8VZFJT0FO7JL9XP9AKBVU0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a8abc5d3422002b09b1914860ace8961ac0634b397be7145b640ebcc3aa90e3 +size 4230 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/FN/P6DHQRHWG5A4ANBB6IVE9X.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/FN/P6DHQRHWG5A4ANBB6IVE9X.uasset new file mode 100644 index 0000000..7706f0c --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/FN/P6DHQRHWG5A4ANBB6IVE9X.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8cc80ac2b775e4406d27b90e214d4eb1f5204f7b9a3e75ff43dce0b9359284b +size 3922 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/NR/EKR8BAGTREZL6130JK27PM.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/NR/EKR8BAGTREZL6130JK27PM.uasset new file mode 100644 index 0000000..d4bfb7f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/NR/EKR8BAGTREZL6130JK27PM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6293ce4f1b9f3debd49d4718bb279dc38056bf7e80534f300bb0172890f55557 +size 3943 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/ST/OY6MMZK8D42GBJO5FHWZLC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/ST/OY6MMZK8D42GBJO5FHWZLC.uasset new file mode 100644 index 0000000..fe27b4c --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/ST/OY6MMZK8D42GBJO5FHWZLC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ba9225851b37143d5600be98adece3a0c0abb1f0e4cfadbd16fdf32d249afad +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/7/H6/HH9TF15E2MP5ZWX3UGV7P3.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/7/H6/HH9TF15E2MP5ZWX3UGV7P3.uasset new file mode 100644 index 0000000..3f7747a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/7/H6/HH9TF15E2MP5ZWX3UGV7P3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f23bc171d5d77342aa9c027e966965bc867f5639138b0385573538e7e6d3901b +size 3963 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/4F/T21R05MMSCET8BZ2EG6SWS.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/4F/T21R05MMSCET8BZ2EG6SWS.uasset new file mode 100644 index 0000000..57f0fc5 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/4F/T21R05MMSCET8BZ2EG6SWS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cff5a2dff137c31ab95a8744acf66405bcf21b7ea65c80b57f5e8777e8e53cb8 +size 3966 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/9N/KESGN0131EL35XN79RTO8S.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/9N/KESGN0131EL35XN79RTO8S.uasset new file mode 100644 index 0000000..e9b288d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/9N/KESGN0131EL35XN79RTO8S.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfb9ffa2bfdef47c5ca417488b675438be9117bd9b2ea5c4ae2fb2b2b12f5698 +size 4058 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/GM/VJPIOZG5M5HV9SMJQGRMD7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/GM/VJPIOZG5M5HV9SMJQGRMD7.uasset new file mode 100644 index 0000000..2f7da95 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/GM/VJPIOZG5M5HV9SMJQGRMD7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:522873c39e2f103c309eb647e7cbec4a5bcd0ce31c4cf8883d6637197f16589f +size 4058 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/VA/9SHJ6ONF0NO9EQH3EUOZ67.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/VA/9SHJ6ONF0NO9EQH3EUOZ67.uasset new file mode 100644 index 0000000..e228f05 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/VA/9SHJ6ONF0NO9EQH3EUOZ67.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fc9835148fd358b959bb38279d473fe734027825ff5d79fd10cde99fb2eb1b7 +size 4250 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8K/OGFT07X88T4YB1XZANAEWK.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8K/OGFT07X88T4YB1XZANAEWK.uasset new file mode 100644 index 0000000..1731fde --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8K/OGFT07X88T4YB1XZANAEWK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7db338f16015924ec7b365b1d05c16062a8b0e0def31cd72bce7bfd4a2709f36 +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8P/HXB7QO5CUITP877I1SNGVT.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8P/HXB7QO5CUITP877I1SNGVT.uasset new file mode 100644 index 0000000..6400bbc --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8P/HXB7QO5CUITP877I1SNGVT.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2742bf5ef94489694c2867d44b4d828aa1ce00117a6db90b0582382f7d14ddf6 +size 7100 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/DJ/PDAUG5BCKDEAJ2FGTRYQW7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/DJ/PDAUG5BCKDEAJ2FGTRYQW7.uasset new file mode 100644 index 0000000..9b0a468 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/DJ/PDAUG5BCKDEAJ2FGTRYQW7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f1355ef34c89dc5f5dbde31366a7577240c813f9c5bbe5ec6ee20ba642c9509 +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/J6/KXD20TVKFIAWADS9P5K6T3.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/J6/KXD20TVKFIAWADS9P5K6T3.uasset new file mode 100644 index 0000000..6d190d2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/J6/KXD20TVKFIAWADS9P5K6T3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96a3b229673c2187d5bda979e4dcf7da131f43403bdaeefd077748fa44571eaa +size 4122 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/L1/8PH18ZESFPZR6AFQNZZJHY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/L1/8PH18ZESFPZR6AFQNZZJHY.uasset new file mode 100644 index 0000000..77d4f70 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/L1/8PH18ZESFPZR6AFQNZZJHY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d24f5b2c66303ac2299daa747d9d1c1d99cfe19674b4b4f4c3ca36194d76e60 +size 7062 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/NW/3TP5SO08C78O361MV635WZ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/NW/3TP5SO08C78O361MV635WZ.uasset new file mode 100644 index 0000000..dfb20b3 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/NW/3TP5SO08C78O361MV635WZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dcbc7693b5994fba7373cde9d3805475ab76af950793e1158b94e3dae7d6df9 +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PO/Z5JQ3715U90GC78LF8YVZE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PO/Z5JQ3715U90GC78LF8YVZE.uasset new file mode 100644 index 0000000..ccef164 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PO/Z5JQ3715U90GC78LF8YVZE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2baab240b907a1c2525b81a01c05c13ff5b3a3390984564d64f1844ac9492b53 +size 7100 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PQ/FUO1PC0ZE1T7HGD5M7WH3M.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PQ/FUO1PC0ZE1T7HGD5M7WH3M.uasset new file mode 100644 index 0000000..aeca4d2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PQ/FUO1PC0ZE1T7HGD5M7WH3M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99440a0f6e6ffc597ffbe0baea6c40e2c4d3f2731317b92a61ae773627944593 +size 4058 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/SQ/MI31B44UZ0O83WZ92D8YYJ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/SQ/MI31B44UZ0O83WZ92D8YYJ.uasset new file mode 100644 index 0000000..b7f1b62 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/SQ/MI31B44UZ0O83WZ92D8YYJ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:482a127d6e2ea505b25eef2e93250b0d8fb8cd74a1ecc27ab589db7b7426fd19 +size 7748 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/4E/Z2RVP4X49TRJ8PV1TG7F99.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/4E/Z2RVP4X49TRJ8PV1TG7F99.uasset new file mode 100644 index 0000000..1d7ef3a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/4E/Z2RVP4X49TRJ8PV1TG7F99.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83dc319a0620b9ab09e8a40310a585eb3bf946a98f5a391c04b2ca6ca17fad55 +size 7031 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/A0/0ZNCGT5BJTSIS7GE8BBTBR.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/A0/0ZNCGT5BJTSIS7GE8BBTBR.uasset new file mode 100644 index 0000000..389045a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/A0/0ZNCGT5BJTSIS7GE8BBTBR.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f22126e4ad75636a470cfcf6b72fd1edfc5b54616fb923c2e72597bfdffff5a +size 6955 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/RE/2051XEA4LGIN555FZ9R41D.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/RE/2051XEA4LGIN555FZ9R41D.uasset new file mode 100644 index 0000000..52d1d86 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/RE/2051XEA4LGIN555FZ9R41D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32746ed0e57bf9ba85e79cb6dd59bc250d23badb410ad0660615eac5ca4ef674 +size 4196 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/TT/PEKH451HOOMAWN4TUYPAXE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/TT/PEKH451HOOMAWN4TUYPAXE.uasset new file mode 100644 index 0000000..65f977f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/TT/PEKH451HOOMAWN4TUYPAXE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbd474dbc5f991c4a7a6a24d9c3f6b7652bbd8dd36711932d449b545487143b7 +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/WM/PVV6DOCSPK8FAIAI96F846.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/WM/PVV6DOCSPK8FAIAI96F846.uasset new file mode 100644 index 0000000..7da69e1 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/WM/PVV6DOCSPK8FAIAI96F846.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bb712b6f2c8ececb2c22f1fcba972b390c9b17826a9a5c11463238a9e4f710e +size 6949 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/2Z/V55SREFRW1QNPJ6CMEYPID.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/2Z/V55SREFRW1QNPJ6CMEYPID.uasset new file mode 100644 index 0000000..2f38935 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/2Z/V55SREFRW1QNPJ6CMEYPID.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eac3c4111cd3c01539886ff03e5a08405a9b6cdf89d4ec6bf3a12d56f9a2490a +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/CQ/T05AOFB8X3Y7RPQEZ703H3.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/CQ/T05AOFB8X3Y7RPQEZ703H3.uasset new file mode 100644 index 0000000..4fd07b9 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/CQ/T05AOFB8X3Y7RPQEZ703H3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92ee5d6f326f9e8441cd89d2b790d44e2b24eeb69e886fb8ed88e3ce75f787aa +size 5135 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/DR/JY8SVZB41D6BLQJZT15DEL.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/DR/JY8SVZB41D6BLQJZT15DEL.uasset new file mode 100644 index 0000000..e218038 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/DR/JY8SVZB41D6BLQJZT15DEL.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ad451a157837ae2104ea2e2898f4e4be1716b39aa54e6506355c66cff4e7539 +size 2222 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/E5/HXHMPRE5K9TQ8IMYNUFT0K.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/E5/HXHMPRE5K9TQ8IMYNUFT0K.uasset new file mode 100644 index 0000000..608f577 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/E5/HXHMPRE5K9TQ8IMYNUFT0K.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84fc3434a4825a4a6b11f23211314ca35630d0a92a8855cfdb8aa205fb386bfa +size 4001 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/FY/LE2HVZRIWYTD4D2LOE75Z7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/FY/LE2HVZRIWYTD4D2LOE75Z7.uasset new file mode 100644 index 0000000..2e61bf7 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/FY/LE2HVZRIWYTD4D2LOE75Z7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f5fc4141a849f1296a59095b578e9ce24d07805ee0fec6c2b66a3cf861f0321 +size 3964 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/JT/XP386E2S52UV4Y1UWONFOG.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/JT/XP386E2S52UV4Y1UWONFOG.uasset new file mode 100644 index 0000000..31dbbe6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/JT/XP386E2S52UV4Y1UWONFOG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53e1e085d6ee21d435c58dc25a06436ff1d668e64a27bacad0ecd125ee25e351 +size 6958 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/LN/PZBDBOZ4P0GSOF0G4UQO24.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/LN/PZBDBOZ4P0GSOF0G4UQO24.uasset new file mode 100644 index 0000000..303a6dc --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/LN/PZBDBOZ4P0GSOF0G4UQO24.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7f7afd5920321d39aaae64f2c38d6137b8be1b3af0ba6178b0d6a75acc058e0 +size 3998 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/U8/WEFKJYFRD6NOQWK1CYE8MC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/U8/WEFKJYFRD6NOQWK1CYE8MC.uasset new file mode 100644 index 0000000..a5819e4 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/U8/WEFKJYFRD6NOQWK1CYE8MC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f004d43516a8e126583381802304b370ba06c5966e169efbb7f5fa8e05c030a +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/6B/R2H3DQMJE0N712J72DUGZM.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/6B/R2H3DQMJE0N712J72DUGZM.uasset new file mode 100644 index 0000000..05b101e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/6B/R2H3DQMJE0N712J72DUGZM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dcc9fc219597a329c7eab8e2215e255b28f87f6343aa61228c0e1cf999f3815 +size 6955 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/F2/KD7ZDAX5WSTHYZHAIHIVOE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/F2/KD7ZDAX5WSTHYZHAIHIVOE.uasset new file mode 100644 index 0000000..a082701 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/F2/KD7ZDAX5WSTHYZHAIHIVOE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b97b6f9696fb3a3b88a97efceded1980b18735ca323dbe694334cb79cae7fa3 +size 7097 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/VN/3X14DSC2WBO2DN31WFFFEC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/VN/3X14DSC2WBO2DN31WFFFEC.uasset new file mode 100644 index 0000000..578a34e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/VN/3X14DSC2WBO2DN31WFFFEC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1fb6371c4d2e7ba527b2a0ee961c1896e8f7ea75bc2e3c0a27edd5ea1d00eaf +size 3946 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/G7/X9LYXH5KHAQDRL4H74W1CV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/G7/X9LYXH5KHAQDRL4H74W1CV.uasset new file mode 100644 index 0000000..331eb17 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/G7/X9LYXH5KHAQDRL4H74W1CV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:281d183555c6346d8e4400924d8bc8c7f16a0e7f627787701305edce93d02c9f +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/GK/ZY5JAZ69GEG4DXEH3ABYGY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/GK/ZY5JAZ69GEG4DXEH3ABYGY.uasset new file mode 100644 index 0000000..9e108fc --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/GK/ZY5JAZ69GEG4DXEH3ABYGY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29d064321ac7f31db9d4525c99731cf13ebe35cbfc3a53d06e3a8e4a209589ca +size 12102 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/XI/NKDB0RUCK5SBQ97LIA6W5N.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/XI/NKDB0RUCK5SBQ97LIA6W5N.uasset new file mode 100644 index 0000000..d608dd8 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/XI/NKDB0RUCK5SBQ97LIA6W5N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:646b1ed09e29f56f7929a0fd872190a0822a2cfaa1ea9ffc9c4c35ecfc639491 +size 6955 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/ZA/2D8B8Y2TMBHSQR4C5FUHOM.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/ZA/2D8B8Y2TMBHSQR4C5FUHOM.uasset new file mode 100644 index 0000000..02c3d62 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/ZA/2D8B8Y2TMBHSQR4C5FUHOM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a0e3687076575f36cfb1cc3142ed4cb67ed888903d3f2bbb9f853f67ce3188e +size 4060 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/7J/9BJEHFBRWNQ4Y19IW2AX89.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/7J/9BJEHFBRWNQ4Y19IW2AX89.uasset new file mode 100644 index 0000000..8936724 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/7J/9BJEHFBRWNQ4Y19IW2AX89.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec746d21df40adc548a6407f5b20318dec2761aeefb2f2dcdd2a003411ab77c0 +size 3965 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/ID/VDROBGOSK9AYG8F03X20KO.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/ID/VDROBGOSK9AYG8F03X20KO.uasset new file mode 100644 index 0000000..63186a2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/ID/VDROBGOSK9AYG8F03X20KO.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bca01cffa66e6331538173637feac8daad79d440ab0f8bd766481ea1628d3e70 +size 7100 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/IM/098ZZWGR4KV9W9OSXMLS3F.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/IM/098ZZWGR4KV9W9OSXMLS3F.uasset new file mode 100644 index 0000000..d898e6c --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/IM/098ZZWGR4KV9W9OSXMLS3F.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8c249de0ea457ca89f97641fcc6edd959783d7948b9da28e64049b3c79bff3d +size 3944 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/OZ/EWBP9T0DZVQI1I0D108ARK.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/OZ/EWBP9T0DZVQI1I0D108ARK.uasset new file mode 100644 index 0000000..707f361 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/OZ/EWBP9T0DZVQI1I0D108ARK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1509a5fad003e77c0ace183e9915b476d3ee3d1b221f06e0afc49d1c3f6396ed +size 3966 diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/F/30/Q30QC3KM9PIKZM4AGT7MT8.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/F/30/Q30QC3KM9PIKZM4AGT7MT8.uasset new file mode 100644 index 0000000..0304179 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/F/30/Q30QC3KM9PIKZM4AGT7MT8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f08873cdde0319c71d272381c20cde0d553f06febe9bd9a29934acd60677feb3 +size 3944 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/0M/2W7A0TQFW2RQ2JSGI4EAAU.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/0M/2W7A0TQFW2RQ2JSGI4EAAU.uasset new file mode 100644 index 0000000..e842db2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/0M/2W7A0TQFW2RQ2JSGI4EAAU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ffb2fb133bf59fd69757ec3c7725bce3b5cc83d19c32e4433a609b8b0863617 +size 8169 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/3W/4OWTQGAFHRSSWPHLF17GDA.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/3W/4OWTQGAFHRSSWPHLF17GDA.uasset new file mode 100644 index 0000000..e9ae260 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/3W/4OWTQGAFHRSSWPHLF17GDA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7c32ac747efd135b5e40d01a454b28fea64b231a384c88fae128fdb104947d0 +size 8169 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/AF/ZF7MEEQXMQ4L1ZLTG98CF2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/AF/ZF7MEEQXMQ4L1ZLTG98CF2.uasset new file mode 100644 index 0000000..053f6ae --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/AF/ZF7MEEQXMQ4L1ZLTG98CF2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eae251b4162dffd0736f702c4f3d0a131f833bd1875078463e381ec67c6c5837 +size 4568 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/F4/YDO8QO1YCWW4FK9C6JXB13.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/F4/YDO8QO1YCWW4FK9C6JXB13.uasset new file mode 100644 index 0000000..58a0c67 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/F4/YDO8QO1YCWW4FK9C6JXB13.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf31ce6d496cb0a63ea893b7d5edba640a9462d95d693a5b1a8ba83096841f3c +size 4512 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/GO/V9XAM3GMJV136EQQRF4AX6.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/GO/V9XAM3GMJV136EQQRF4AX6.uasset new file mode 100644 index 0000000..efef689 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/GO/V9XAM3GMJV136EQQRF4AX6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c93120db759cb6411ca9f7e7af84c8a5fe122a2ba588e60c38b1dcdd21ec07ab +size 4489 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/NI/MG4LD5RUV0OUVPW5ILC24A.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/NI/MG4LD5RUV0OUVPW5ILC24A.uasset new file mode 100644 index 0000000..618a225 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/NI/MG4LD5RUV0OUVPW5ILC24A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e92bfb28f5951d14d4707f56d68abc3f822bdfcf812047d4fa8fc073e2dbde2 +size 7431 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/SB/8XCGDZOPH9K2GTXGM0NZ9Z.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/SB/8XCGDZOPH9K2GTXGM0NZ9Z.uasset new file mode 100644 index 0000000..8c87012 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/SB/8XCGDZOPH9K2GTXGM0NZ9Z.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f5de39f26fc19f3b29f82bd8bbd90710496573c34de1d3f9ae990e0c77970dc +size 8169 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/Z7/F9FGM7QMM5OJ69Q0FQVPI2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/Z7/F9FGM7QMM5OJ69Q0FQVPI2.uasset new file mode 100644 index 0000000..df0f133 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/0/Z7/F9FGM7QMM5OJ69Q0FQVPI2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86002278a962ef5c144af60903f3c5087529b874a94cfc2f17cf747e585f3ce4 +size 60389 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/C4/DK472FPXL56BWBL5GTSRYC.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/C4/DK472FPXL56BWBL5GTSRYC.uasset new file mode 100644 index 0000000..3b838cd --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/C4/DK472FPXL56BWBL5GTSRYC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:493f53ededce39b3f031343ad85cd0c303db6eea5055a466884b2cf3c5f4b7bc +size 3580 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/E0/YOQ2IEWKHEFVIYLKEOACFS.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/E0/YOQ2IEWKHEFVIYLKEOACFS.uasset new file mode 100644 index 0000000..bb9f396 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/E0/YOQ2IEWKHEFVIYLKEOACFS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9be4fb1143125722e2d4d252c0a8605af032170d495df39170f875113b280caa +size 4335 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/J3/5P2KEO4NI8FORQR8QBNI47.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/J3/5P2KEO4NI8FORQR8QBNI47.uasset new file mode 100644 index 0000000..e8aa22e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/J3/5P2KEO4NI8FORQR8QBNI47.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec95ee4f6e50c22cde188589f7631f8854312d63f555c65d140873d1f735c6df +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/TR/H93R1S6H13LSMPCN0XLH1U.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/TR/H93R1S6H13LSMPCN0XLH1U.uasset new file mode 100644 index 0000000..240c067 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/TR/H93R1S6H13LSMPCN0XLH1U.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6576b334091a5538a4b72182ccfc2fbbde129f349cf728aa777c40f63a76d804 +size 4531 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/W6/NU6H0B1N4KZ39T0WFGMC85.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/W6/NU6H0B1N4KZ39T0WFGMC85.uasset new file mode 100644 index 0000000..3461c77 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/W6/NU6H0B1N4KZ39T0WFGMC85.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7deb03c475f33e8b2b89fdf382462ad3d370993bccb0d7337087381d8f604f +size 8169 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/X5/OJ9O1Z0V1RA2I60X0E1MCB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/X5/OJ9O1Z0V1RA2I60X0E1MCB.uasset new file mode 100644 index 0000000..d90c223 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/1/X5/OJ9O1Z0V1RA2I60X0E1MCB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a6a8259d4d91c853eaa5230f043958634f7a9fc3ce3882490420015265ef379 +size 4807 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/21/OPIKYSZSUNYQ6FCTTCKNH2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/21/OPIKYSZSUNYQ6FCTTCKNH2.uasset new file mode 100644 index 0000000..d233621 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/21/OPIKYSZSUNYQ6FCTTCKNH2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6ec8306a7d199b17f51a7e99092ee56956712ffe3e2bd0c98bc406c8fc41e6b +size 5128 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/2I/LP90LR7MNBZK6BK6WBYWE0.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/2I/LP90LR7MNBZK6BK6WBYWE0.uasset new file mode 100644 index 0000000..ef2ecc6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/2I/LP90LR7MNBZK6BK6WBYWE0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0dd676e1961bab83becfa612a921b103443134259f9c51ea077db79e8a5cc6d +size 4486 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/3S/QP7RC5S7TEGQTEGEPKYS7S.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/3S/QP7RC5S7TEGQTEGEPKYS7S.uasset new file mode 100644 index 0000000..7593dfb --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/3S/QP7RC5S7TEGQTEGEPKYS7S.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2ca730dfcd1868010b295a36ab562e0a2eaa7990dd5cab8ffb291c7d1a20d96 +size 4337 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/47/EPSQHQIUJ0PMGCKIRS4P3D.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/47/EPSQHQIUJ0PMGCKIRS4P3D.uasset new file mode 100644 index 0000000..934958e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/47/EPSQHQIUJ0PMGCKIRS4P3D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36c05fe97e9a9708a079e74417f6e0d06249ded9a8921faf59130af0df1ac307 +size 4432 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/4R/OLEQXEVNQITH993RA1K72C.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/4R/OLEQXEVNQITH993RA1K72C.uasset new file mode 100644 index 0000000..54a7b31 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/4R/OLEQXEVNQITH993RA1K72C.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9308e44b81356b43994b185bb40c01937aea6269f8d32080f3536ba3c9fda4e3 +size 2252 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/71/YW8CI30OGK3D0E0UFPW345.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/71/YW8CI30OGK3D0E0UFPW345.uasset new file mode 100644 index 0000000..e07f501 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/71/YW8CI30OGK3D0E0UFPW345.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6785c5502de39133c69924c987bd20d755b38c3513bc911836132d15ee5cd75c +size 3690 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/A7/N2VQC81615YBX5QQ4DD1DH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/A7/N2VQC81615YBX5QQ4DD1DH.uasset new file mode 100644 index 0000000..e09f3e4 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/A7/N2VQC81615YBX5QQ4DD1DH.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c649311cddcd87cef967c2e8e1c5ed3033258720d12e0e5ea74cf67d849d316a +size 4392 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/EL/ZCMASU9FA69X4FRWIOZXLF.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/EL/ZCMASU9FA69X4FRWIOZXLF.uasset new file mode 100644 index 0000000..8d45391 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/EL/ZCMASU9FA69X4FRWIOZXLF.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f8758ac53ae14fb7da7731ab7f44820111e7d704140f38fe24e9291293d981a +size 4417 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/TF/5V1R4R14ALRKBVE4EB3IE5.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/TF/5V1R4R14ALRKBVE4EB3IE5.uasset new file mode 100644 index 0000000..c149ee9 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/TF/5V1R4R14ALRKBVE4EB3IE5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c6b538f0443e7b342cc1cd43ba0a6437e4656fd034abc782367bf900e715bec +size 5034 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/VV/8T4IS7U0HG2KEYF3554ZMT.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/VV/8T4IS7U0HG2KEYF3554ZMT.uasset new file mode 100644 index 0000000..3583a4b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/VV/8T4IS7U0HG2KEYF3554ZMT.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5c9ccf202166c4f9f379b9a45c3fc60508663b08d6ae057e0dd99b2ddb98423 +size 6453 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/XB/NXHNT4IWLYE5N4Q5JWHKQT.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/XB/NXHNT4IWLYE5N4Q5JWHKQT.uasset new file mode 100644 index 0000000..302f2e0 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/2/XB/NXHNT4IWLYE5N4Q5JWHKQT.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed120208cb87745a8d052ef7a1522e3804f0058b4a57a4336b8cc671e802d94f +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/D1/BFO7PDRG6PWTEPAEPCNPD3.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/D1/BFO7PDRG6PWTEPAEPCNPD3.uasset new file mode 100644 index 0000000..cc94e0b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/D1/BFO7PDRG6PWTEPAEPCNPD3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1d51f110d2b7fa35283ca2b986d61975cad0b5101c631dffa9676627e29dac2 +size 4297 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/EF/ONB59WKPJIJQFIU8TQF5HB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/EF/ONB59WKPJIJQFIU8TQF5HB.uasset new file mode 100644 index 0000000..b91fe7b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/EF/ONB59WKPJIJQFIU8TQF5HB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36394a64bd4124764a5fb09fd3e122efead905763843e6b6dbc45118103f55d1 +size 4477 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/FK/B8JHTMJJT6RAJNB20BVLHG.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/FK/B8JHTMJJT6RAJNB20BVLHG.uasset new file mode 100644 index 0000000..af5ba59 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/FK/B8JHTMJJT6RAJNB20BVLHG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45588c31b3bb542387917bd8cb37b440e9d5daea23f8a66c03d8eb30eaa47ffc +size 4812 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/G0/CNMKSON899NRH3LSKRTO8B.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/G0/CNMKSON899NRH3LSKRTO8B.uasset new file mode 100644 index 0000000..8c02054 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/G0/CNMKSON899NRH3LSKRTO8B.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44312f76c74e133d5a00e94000618b38fddf4a398ef44ee54494ab19945bafaa +size 6453 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/KQ/U2GB5PAQ7IKHBWZX9B3E5C.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/KQ/U2GB5PAQ7IKHBWZX9B3E5C.uasset new file mode 100644 index 0000000..3f68f2a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/KQ/U2GB5PAQ7IKHBWZX9B3E5C.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bebedcd83f59e1d47e101744ce8828a7b973e4b2adb3bcc3cf3fd4326d7806ef +size 4506 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/L4/X2RT7LNEHCGGGU1MI95AT3.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/L4/X2RT7LNEHCGGGU1MI95AT3.uasset new file mode 100644 index 0000000..6bc34da --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/L4/X2RT7LNEHCGGGU1MI95AT3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55a18a9198c4e84a4788f069aa2ad5f8793912a0c982071fc09ee552e15fc36e +size 4484 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/LP/VOOY55N5QBASMJ3MB5FBF8.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/LP/VOOY55N5QBASMJ3MB5FBF8.uasset new file mode 100644 index 0000000..2abafe0 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/LP/VOOY55N5QBASMJ3MB5FBF8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26cec94979b39be91e99ff49aaef166229925596168f3043aad7ffc8c237a1c8 +size 10707 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/NR/2FFVMWVCFXP8BHOTFV9ZYZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/NR/2FFVMWVCFXP8BHOTFV9ZYZ.uasset new file mode 100644 index 0000000..00e5a14 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/3/NR/2FFVMWVCFXP8BHOTFV9ZYZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54f1db95d6d30cb7b0716de8c47fcc93561966b5793c2e11b439484bb5fe5698 +size 4510 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/3S/AY58X4SHLU19PXGLVCJLCU.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/3S/AY58X4SHLU19PXGLVCJLCU.uasset new file mode 100644 index 0000000..91a9177 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/3S/AY58X4SHLU19PXGLVCJLCU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f963d40b801ca417c1d674823b65c4c8c35b717de2f224a098bf120de889d38e +size 4430 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/4A/VTCLSHIX2YXQ8FSREY3I5O.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/4A/VTCLSHIX2YXQ8FSREY3I5O.uasset new file mode 100644 index 0000000..594e749 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/4A/VTCLSHIX2YXQ8FSREY3I5O.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:958456cbf07fc4575ec7727bad6f3e47a8331f68778c713fc0259a3173453c80 +size 12049 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/74/E8REIFZ2JXZGKXPAG377ZI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/74/E8REIFZ2JXZGKXPAG377ZI.uasset new file mode 100644 index 0000000..cf729fb --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/74/E8REIFZ2JXZGKXPAG377ZI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09f4f0ed2dbbe3f7f533506cda77b53f9934d23b2c3b9c6e0e666e3f26664546 +size 2230 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/8R/4KE7PNR39XBST18TQVKQD2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/8R/4KE7PNR39XBST18TQVKQD2.uasset new file mode 100644 index 0000000..caec393 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/8R/4KE7PNR39XBST18TQVKQD2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8a0a76bc2c293ca7ac499bc6e03f36b12e1d94284a29095934298420cb621a4 +size 4505 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/CB/MKHCMIGW9MTCBYZ2ENCHZI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/CB/MKHCMIGW9MTCBYZ2ENCHZI.uasset new file mode 100644 index 0000000..7b9f678 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/CB/MKHCMIGW9MTCBYZ2ENCHZI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ed53645ecdce464a3a65a83a2e1e3845fd80931ce43cfc1ad2cc366ae935489 +size 7471 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/F9/IYHQGBLXUFEQ4FSL3LGMKP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/F9/IYHQGBLXUFEQ4FSL3LGMKP.uasset new file mode 100644 index 0000000..20eb1c8 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/F9/IYHQGBLXUFEQ4FSL3LGMKP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa63aad7a7b0efde1bbff104f92ff3b7f84a5370501f647e3d1ef9926e20ed58 +size 4326 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/FK/N0I7ZGW3RHRDWQJANEWT2R.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/FK/N0I7ZGW3RHRDWQJANEWT2R.uasset new file mode 100644 index 0000000..6769482 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/FK/N0I7ZGW3RHRDWQJANEWT2R.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c5f58d73dde89a0ceed6bbb0a1f5ab6833cee2bfbc7c832723e4ec38ff3e7ef +size 4568 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/QR/Y2VZNQLMIRRT4AF72G5PJY.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/QR/Y2VZNQLMIRRT4AF72G5PJY.uasset new file mode 100644 index 0000000..ff79da7 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/QR/Y2VZNQLMIRRT4AF72G5PJY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:239c67f95a8be87583ca8e8f63c45ab6b6007759149f5f27b0692077594a26f2 +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/X8/2YV05QMX7SE54V3NZM2SUR.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/X8/2YV05QMX7SE54V3NZM2SUR.uasset new file mode 100644 index 0000000..6290761 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/4/X8/2YV05QMX7SE54V3NZM2SUR.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:021a3be8ae552b7bbcd4a13b7ea2bde985619e23d871421b5a309445b0921108 +size 4566 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/1C/A3UKEQ70E1RMOB72D74WHO.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/1C/A3UKEQ70E1RMOB72D74WHO.uasset new file mode 100644 index 0000000..adc4f19 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/1C/A3UKEQ70E1RMOB72D74WHO.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fd2ad98bc20e600d1ba1f35f519575967f8d26d1e85673071f5223b902df734 +size 5032 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/4N/8930XQ2F5PXX5UP7J3NZWP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/4N/8930XQ2F5PXX5UP7J3NZWP.uasset new file mode 100644 index 0000000..029be19 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/4N/8930XQ2F5PXX5UP7J3NZWP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d99f770de4479e63820fca5bfe0bec7db73d9fb0d4413c219183b581d0e47a3d +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/82/3FXC2P85LEFD9UWU50YMVL.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/82/3FXC2P85LEFD9UWU50YMVL.uasset new file mode 100644 index 0000000..f97e1c7 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/82/3FXC2P85LEFD9UWU50YMVL.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5448b9576afe5753a88e44501e7b58a56e03ddf0933434d4ad5565dc8154892 +size 5034 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/EX/SPBUY5TP7JPB25VIYJCI4N.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/EX/SPBUY5TP7JPB25VIYJCI4N.uasset new file mode 100644 index 0000000..0eeda92 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/EX/SPBUY5TP7JPB25VIYJCI4N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:816be8198d44041fe461e6e1b219fe0bbffa5c8b931a68f1244160b7ecd6b03d +size 4334 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/GY/1OQ2XTVN6TLOZQR3TZZHWO.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/GY/1OQ2XTVN6TLOZQR3TZZHWO.uasset new file mode 100644 index 0000000..9ca47f0 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/GY/1OQ2XTVN6TLOZQR3TZZHWO.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47343b1f54bddd228b759433e61404d73c8093d63e0e08152f985d05da69eb1c +size 4398 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/MJ/6PQD4KP1RTD6RK0X2WYDRD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/MJ/6PQD4KP1RTD6RK0X2WYDRD.uasset new file mode 100644 index 0000000..43770fa --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/MJ/6PQD4KP1RTD6RK0X2WYDRD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63c2578c2a7374375865a64edbd6c23ecfb585d64b6de246d4500c09aaf7f7d6 +size 4505 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/PY/CZVJVA9FVPJCDZW8N0DY0E.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/PY/CZVJVA9FVPJCDZW8N0DY0E.uasset new file mode 100644 index 0000000..3da3cb9 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/PY/CZVJVA9FVPJCDZW8N0DY0E.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98f1b5dbbfbb2d814f1ae4fa5539e7ef8218585fa3a6832f5f01ff71b2075d96 +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/QI/EVFNMBE7BZTBXFSLA3MNGI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/QI/EVFNMBE7BZTBXFSLA3MNGI.uasset new file mode 100644 index 0000000..4af0d00 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/QI/EVFNMBE7BZTBXFSLA3MNGI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40ab7dce5cfe75d0f72c6c795a01c88ee73556e021a2dc2200b60e34b56bd008 +size 4511 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/RU/F7I0JH45UMMDWQKJ3B0IES.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/RU/F7I0JH45UMMDWQKJ3B0IES.uasset new file mode 100644 index 0000000..5ac37d2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/RU/F7I0JH45UMMDWQKJ3B0IES.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6953644000c3e2c4fd0d84653e1d0d17adf8f6bb001021a13e3fbfedf68c5d75 +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/UG/2IAK7M3SWBNKRNSUQDDLRF.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/UG/2IAK7M3SWBNKRNSUQDDLRF.uasset new file mode 100644 index 0000000..aa665dc --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/UG/2IAK7M3SWBNKRNSUQDDLRF.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e028d59754e6521c67fffa7124d822c0543e27aa768ef1f7f21de77a8eae9672 +size 4807 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/UG/PX4LZ68G18XX9UTSXQAF8R.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/UG/PX4LZ68G18XX9UTSXQAF8R.uasset new file mode 100644 index 0000000..e9203d4 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/5/UG/PX4LZ68G18XX9UTSXQAF8R.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:645bbf6df9f37da1533bbcd0ced01f1b58633fac8ebbcd25d1217981d5245fc1 +size 6453 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/81/TPBZUMZA7ZAO0NAMA5WZE6.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/81/TPBZUMZA7ZAO0NAMA5WZE6.uasset new file mode 100644 index 0000000..7f56b52 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/81/TPBZUMZA7ZAO0NAMA5WZE6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1218850a94bacedc6a35806280d0c5b109da42f2afb6559e9eccd48d9b5a69f +size 5129 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/8N/MFMXWD65LGY7YKQ3QKC7IB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/8N/MFMXWD65LGY7YKQ3QKC7IB.uasset new file mode 100644 index 0000000..3deaebe --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/8N/MFMXWD65LGY7YKQ3QKC7IB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2e94801afa6c7be19d55039fa3cb66d9b96fa3e8e20f21972880c487638d9e4 +size 4504 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/EG/ML1BFF59ATFJJFFG0FBMPJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/EG/ML1BFF59ATFJJFFG0FBMPJ.uasset new file mode 100644 index 0000000..75260fa --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/EG/ML1BFF59ATFJJFFG0FBMPJ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35ae81a4fdffe814f02ecf8868f13613e4b5ac16ab5e68a7fb4f16510f870d92 +size 4305 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/HK/WBN373R14SBX6NJ2K8QXXG.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/HK/WBN373R14SBX6NJ2K8QXXG.uasset new file mode 100644 index 0000000..e135e40 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/HK/WBN373R14SBX6NJ2K8QXXG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9c5d66e5e27c4026b79f21888971e9f51a9922781b9c7d1f3e39bd78df80af3 +size 7431 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/JX/HBTUH10XOH0KFVBAHOIL2X.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/JX/HBTUH10XOH0KFVBAHOIL2X.uasset new file mode 100644 index 0000000..777240d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/JX/HBTUH10XOH0KFVBAHOIL2X.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1762100d674ac105bbad8bd690c8880c5d3e7ad43122a1961b906a4041e499e0 +size 4449 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/UV/ITSLYO85KH2FWAZPPGLCO2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/UV/ITSLYO85KH2FWAZPPGLCO2.uasset new file mode 100644 index 0000000..bdc5e94 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/6/UV/ITSLYO85KH2FWAZPPGLCO2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d740e7741506018b31460f8d5bfca695f6c766b72b8d61e35a46010e207197bf +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/0F/CLSM7G0KP9S3SKWG7BP65A.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/0F/CLSM7G0KP9S3SKWG7BP65A.uasset new file mode 100644 index 0000000..715cf24 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/0F/CLSM7G0KP9S3SKWG7BP65A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:467776918812e68aa500bb9beccf5eb594548359e7f9c34484244756f49d5f38 +size 4812 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/4Q/SE3163RHB7C0OIJ715G8XJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/4Q/SE3163RHB7C0OIJ715G8XJ.uasset new file mode 100644 index 0000000..fdb7af7 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/4Q/SE3163RHB7C0OIJ715G8XJ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:083d53dda208050b815ef1144da489328c1a6ae81f79cd6d5e3acc5c657017aa +size 4332 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/7F/JS7TSR3L8BG7QAMXGPE8KZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/7F/JS7TSR3L8BG7QAMXGPE8KZ.uasset new file mode 100644 index 0000000..e6496f0 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/7F/JS7TSR3L8BG7QAMXGPE8KZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89777f6f60338f00c52eff6dfd924ddd56ad0f302aea29699532142bbc8d43da +size 4506 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/8P/4RJMNHEYLO9LBSKTWAP3K0.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/8P/4RJMNHEYLO9LBSKTWAP3K0.uasset new file mode 100644 index 0000000..8bf8fa9 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/8P/4RJMNHEYLO9LBSKTWAP3K0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e83e03bafd177cc4577dec941ec03b0059c6e4714f7d7fe475d178ee028b8b5 +size 4511 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/A4/GM34X4MV7JKOEVMT9BD6DK.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/A4/GM34X4MV7JKOEVMT9BD6DK.uasset new file mode 100644 index 0000000..5358915 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/A4/GM34X4MV7JKOEVMT9BD6DK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d04c5babf2f930a9bf69ceb140b245db39421c1f0d23a748032d133b138d4db5 +size 3923 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/ES/AZ00WJD36GHTQFGAA3M640.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/ES/AZ00WJD36GHTQFGAA3M640.uasset new file mode 100644 index 0000000..ee6d8a3 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/ES/AZ00WJD36GHTQFGAA3M640.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:589fb019a51e9559285d967e56ad30857ecf76d3330463e3976474a34b9f73d3 +size 4305 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/FY/DZULLSRWN7CLU58WEZBQBD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/FY/DZULLSRWN7CLU58WEZBQBD.uasset new file mode 100644 index 0000000..2541423 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/FY/DZULLSRWN7CLU58WEZBQBD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:544e272f982deb816c3b678a061b8a84b4631984f0fe250eb6b675aaa9428e79 +size 4489 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/QR/5L81GGT6LFA1SR1E1HOHAF.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/QR/5L81GGT6LFA1SR1E1HOHAF.uasset new file mode 100644 index 0000000..821bdf4 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/QR/5L81GGT6LFA1SR1E1HOHAF.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:729db090ebcd9758c37e03801f3d941aa5c7a21d17a21a5cb9ff1061bc352b45 +size 4512 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/TM/IKFTKD1ZP1KLUJC4DQ8KVE.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/TM/IKFTKD1ZP1KLUJC4DQ8KVE.uasset new file mode 100644 index 0000000..3d3ba78 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/7/TM/IKFTKD1ZP1KLUJC4DQ8KVE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961240adf4e8b7125473d35c4760a54cbc9c0efe484abda4bf1e633521a99fea +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/2A/XHGPJ0ECCIW2GOB3K8SHKN.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/2A/XHGPJ0ECCIW2GOB3K8SHKN.uasset new file mode 100644 index 0000000..e8ead36 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/2A/XHGPJ0ECCIW2GOB3K8SHKN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f06ab8c4a144c1837300dff2dc3d6f7872621f47702e89250f6a3d9fc60b19b +size 4506 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/3N/EBHCOJGXSI7GEKQVASGUTT.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/3N/EBHCOJGXSI7GEKQVASGUTT.uasset new file mode 100644 index 0000000..bfbddb7 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/3N/EBHCOJGXSI7GEKQVASGUTT.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7664452b41dc6e5d769b337287d8545c13dbc87d91efa2e25c26c2d5e38698f +size 4506 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/5D/WSN91CNHUAVJ5XDYC4FAC4.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/5D/WSN91CNHUAVJ5XDYC4FAC4.uasset new file mode 100644 index 0000000..7c0503e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/5D/WSN91CNHUAVJ5XDYC4FAC4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cb5f3fe05a7ab8030b4e22c2b0f499dd385770687959ccfca33a6fd1d823bcd +size 4510 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/8M/VITU9EX4VWF006RSKKKE8H.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/8M/VITU9EX4VWF006RSKKKE8H.uasset new file mode 100644 index 0000000..689ebb6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/8M/VITU9EX4VWF006RSKKKE8H.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3fd0f866d1b8f06ceb45d09c3e3c642937c24ea7f7d378df6ba6d3c84eb5dde +size 4510 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/8V/DETGNY7T4LFNIO9AW8AJ2Y.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/8V/DETGNY7T4LFNIO9AW8AJ2Y.uasset new file mode 100644 index 0000000..31a9c3d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/8V/DETGNY7T4LFNIO9AW8AJ2Y.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e9d571ed41c4ef66d74b8021356ef4d447495736efd93e7bc3fb7866829e216 +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/E4/SHIWMFW5LS6BMG8YLQF90P.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/E4/SHIWMFW5LS6BMG8YLQF90P.uasset new file mode 100644 index 0000000..8d723fc --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/E4/SHIWMFW5LS6BMG8YLQF90P.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23db7ed87e4e37f35c0690acbbf099b91bd2ded8e5e96030d9a80d4244b28a24 +size 4332 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/J2/NJSICP75S1AAG0RX0WWEV8.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/J2/NJSICP75S1AAG0RX0WWEV8.uasset new file mode 100644 index 0000000..c991c6a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/J2/NJSICP75S1AAG0RX0WWEV8.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a8d6a300fe499163bbf79a3b52ee9082a7479d60558418eb2dede5beae1fcf0 +size 4489 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/PA/GKTBLM66BNQLPZV4E8XZL2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/PA/GKTBLM66BNQLPZV4E8XZL2.uasset new file mode 100644 index 0000000..735b8ac --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/PA/GKTBLM66BNQLPZV4E8XZL2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce649762e4f0783dc757dd0be4d4aa065c399de72215c52a925d42b90d78b933 +size 4446 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/SH/AIAQJXTFOA1VCWQOW2E4RR.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/SH/AIAQJXTFOA1VCWQOW2E4RR.uasset new file mode 100644 index 0000000..5274c34 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/SH/AIAQJXTFOA1VCWQOW2E4RR.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b2d3978d347f76d8c56737fab74fe3dd4d54cff459dddf04ba12276469b0395 +size 4728 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/U0/X7YRBKY2NXUICG2T2L9HFS.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/U0/X7YRBKY2NXUICG2T2L9HFS.uasset new file mode 100644 index 0000000..8ed98c8 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/8/U0/X7YRBKY2NXUICG2T2L9HFS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55d51fdd0fd271f4a91f1f48041b334661bd91f70b15db933df389d40d238497 +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/11/S85EET3C30AER5UMTBB972.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/11/S85EET3C30AER5UMTBB972.uasset new file mode 100644 index 0000000..04de988 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/11/S85EET3C30AER5UMTBB972.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9e37308da7af8525eb9d33d4a6d458282feb171059b3549488f1445d178b25d +size 4506 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/68/5UFLOC7TYTREZUJD4TVN5J.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/68/5UFLOC7TYTREZUJD4TVN5J.uasset new file mode 100644 index 0000000..c7c1701 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/68/5UFLOC7TYTREZUJD4TVN5J.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:661d7377ed098b0b020c060f5dc941c0e267c8fe155178315bf6fe9c2dee86fe +size 4451 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/B4/XH06CNJM9F5JBUW37K8ZGU.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/B4/XH06CNJM9F5JBUW37K8ZGU.uasset new file mode 100644 index 0000000..bb3378a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/B4/XH06CNJM9F5JBUW37K8ZGU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fb5bee53e2e85fe3a81504be0afb4596dbf789204e58c33495598f3aa529070 +size 5032 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/CD/WSMTLK2F2LHYHZ1ODL6U8I.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/CD/WSMTLK2F2LHYHZ1ODL6U8I.uasset new file mode 100644 index 0000000..24b8de3 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/CD/WSMTLK2F2LHYHZ1ODL6U8I.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b82f6f5a0045efd73f29367a337127506a236c1011457c5671670342c2b74a +size 4486 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/CV/UORV0S2ARLO4XJO8GJVJYP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/CV/UORV0S2ARLO4XJO8GJVJYP.uasset new file mode 100644 index 0000000..0baeb46 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/CV/UORV0S2ARLO4XJO8GJVJYP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49fd5a3b5bb8cbe3e1169940d477b2d249aaf323aae2ec11e63aca869bfa097d +size 4305 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EA/IFDP9Q20ZABLKDWU3JG0XI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EA/IFDP9Q20ZABLKDWU3JG0XI.uasset new file mode 100644 index 0000000..d501458 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EA/IFDP9Q20ZABLKDWU3JG0XI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6b4efa899286f37f537a50469334a6a7422c02655a0e937eaadee6737418ade +size 4512 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EF/TX8KPTY73QLOGBRUT0K7QO.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EF/TX8KPTY73QLOGBRUT0K7QO.uasset new file mode 100644 index 0000000..2a8ff30 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EF/TX8KPTY73QLOGBRUT0K7QO.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50c1c9c1fddda094c813aeb8221f5a484e573ce6155f783c673a18b77baba879 +size 5034 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EY/FC7NMRYAN0Y77NPAC5S5K2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EY/FC7NMRYAN0Y77NPAC5S5K2.uasset new file mode 100644 index 0000000..2d8e1f6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/EY/FC7NMRYAN0Y77NPAC5S5K2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70acd71e28839ebf0ee8c135672522aeb040d7324030e467fe427272d8277cf9 +size 4297 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/GW/JEA64HFPIFEUWSJWGTPHOD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/GW/JEA64HFPIFEUWSJWGTPHOD.uasset new file mode 100644 index 0000000..0741089 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/GW/JEA64HFPIFEUWSJWGTPHOD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1618a32a5016d66b74f472e0f2b2162230c85ff67e0c8a37ed02ab16652ae0f +size 4397 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/I2/5ND7QZ3YOE1FN57S92PCC6.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/I2/5ND7QZ3YOE1FN57S92PCC6.uasset new file mode 100644 index 0000000..d011474 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/I2/5ND7QZ3YOE1FN57S92PCC6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d47614217677e63ce4929e92d1124ee7f9de67bdc5bc25464b084443b3b6be3f +size 5034 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/KF/E8ZVIKZWKZVYOPCOJLJJDC.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/KF/E8ZVIKZWKZVYOPCOJLJJDC.uasset new file mode 100644 index 0000000..a9b7622 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/KF/E8ZVIKZWKZVYOPCOJLJJDC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13479809ede20e8bde3bc5497bca3a5a3d37b1daeaba95d8756c911cae74fa3b +size 4417 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/OQ/WIWCALTDEKEGJB0TLM45SL.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/OQ/WIWCALTDEKEGJB0TLM45SL.uasset new file mode 100644 index 0000000..1c36ed2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/OQ/WIWCALTDEKEGJB0TLM45SL.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:659af50bfd13e43658f88ec9d11b4fceeebf56c31794d6d2e4b8a6ee74b467e8 +size 4505 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/P2/ZPU2HDJ9PZWQ718JH95FB7.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/P2/ZPU2HDJ9PZWQ718JH95FB7.uasset new file mode 100644 index 0000000..4810dab --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/P2/ZPU2HDJ9PZWQ718JH95FB7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94a36a252d7315b6a9f1ef10998cf99a99bc33710cd2c5dc49621a4874649268 +size 4572 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/RL/Z64VCCBBIKFGKMJSXMOLRD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/RL/Z64VCCBBIKFGKMJSXMOLRD.uasset new file mode 100644 index 0000000..2de946b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/RL/Z64VCCBBIKFGKMJSXMOLRD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9718ccdad9c746e51c55d002f3eacd46ff3071333ecb9870cfc8b4091d9b0dc2 +size 4512 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/S7/MS6LGAZB30JAO6LZXG9NCQ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/S7/MS6LGAZB30JAO6LZXG9NCQ.uasset new file mode 100644 index 0000000..12e103e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/S7/MS6LGAZB30JAO6LZXG9NCQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6db3c699a0ad22a9ecd43ab69592a3224633a372cd4b2390ec1f4f6aa3dc0bc9 +size 4531 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/T1/Y5TFOGZA2J90AXOJ1X2SI3.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/T1/Y5TFOGZA2J90AXOJ1X2SI3.uasset new file mode 100644 index 0000000..288a52d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/T1/Y5TFOGZA2J90AXOJ1X2SI3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86b492f9ba438fe7d283e51c497dce8ff4b800ce70a94c7a7904dc4511651d40 +size 4375 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/WI/M7RG491UCWT2BKDWW40DQ1.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/WI/M7RG491UCWT2BKDWW40DQ1.uasset new file mode 100644 index 0000000..d67bb30 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/WI/M7RG491UCWT2BKDWW40DQ1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96f2fb7683e6a9c56a86c549b044376d94031bb5a1a47cbe8847268c78af427d +size 4549 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/WM/11IA1T7W705Z0XRZR2F3RN.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/WM/11IA1T7W705Z0XRZR2F3RN.uasset new file mode 100644 index 0000000..e104536 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/9/WM/11IA1T7W705Z0XRZR2F3RN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26f46c674aca4f2c2af196414af0669c122048e45ac9220ecba8f97580dd0946 +size 12259 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/68/K0MN1M8CMOSGHYTDTYOTRA.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/68/K0MN1M8CMOSGHYTDTYOTRA.uasset new file mode 100644 index 0000000..0c62879 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/68/K0MN1M8CMOSGHYTDTYOTRA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c481dcc05b753decaf9096dc31f96e795e59f72f31f882409f7f95c931a4b9d8 +size 5289 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/HE/VU8B6ST3EIXVOIQ7RDLJXD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/HE/VU8B6ST3EIXVOIQ7RDLJXD.uasset new file mode 100644 index 0000000..28689b1 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/HE/VU8B6ST3EIXVOIQ7RDLJXD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:904f2587c91d47c8342849aa8c2868886451415281da4482f034d37386eb5d71 +size 4572 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/HT/64QNI431ITASWGXQVEP9GZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/HT/64QNI431ITASWGXQVEP9GZ.uasset new file mode 100644 index 0000000..449365f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/HT/64QNI431ITASWGXQVEP9GZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa7651564b7a1a7a014b48f9de4f5c35d07f3eeb160164bf850f190f0e5494bf +size 4506 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/KN/QKE5ONGFK6KBAWKGOX5EFP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/KN/QKE5ONGFK6KBAWKGOX5EFP.uasset new file mode 100644 index 0000000..dd8ea80 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/KN/QKE5ONGFK6KBAWKGOX5EFP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:130f18a0ad965179b7fcb1e645226f276cfe74b0485c1b326e7b1401ff9d4659 +size 4432 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/O1/JPCT6UKOQUR6ZBFSX0R3YW.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/O1/JPCT6UKOQUR6ZBFSX0R3YW.uasset new file mode 100644 index 0000000..cc96346 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/O1/JPCT6UKOQUR6ZBFSX0R3YW.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c02f468f6164089b050c17276c62984931872c28bda919edc315a455313c0d6b +size 4492 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/OG/ID8G9B27E6SMDDH5XN7JAE.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/OG/ID8G9B27E6SMDDH5XN7JAE.uasset new file mode 100644 index 0000000..7e35cb2 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/OG/ID8G9B27E6SMDDH5XN7JAE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1054fd4739339c146e8f5c903f1881df43f26d3d89da192d7697197e1fdb5402 +size 4489 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/OR/8M18FS2XGZVEKEZCD9M9G5.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/OR/8M18FS2XGZVEKEZCD9M9G5.uasset new file mode 100644 index 0000000..e5891b6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/OR/8M18FS2XGZVEKEZCD9M9G5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b93a6486a9a1803ef52bfceee60657c0f0e4ad5251be44270253453e52e272c2 +size 4511 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/PS/2HHOJ2I7VB009PVNZSASSP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/PS/2HHOJ2I7VB009PVNZSASSP.uasset new file mode 100644 index 0000000..d8fae4f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/PS/2HHOJ2I7VB009PVNZSASSP.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:addec85c12aec062192c3de8d2bd53e9498fd57cecd346e81f2e7ce268829c4f +size 4415 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/RB/DH88LLLXULXZVJKUSKUY65.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/RB/DH88LLLXULXZVJKUSKUY65.uasset new file mode 100644 index 0000000..56d5367 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/RB/DH88LLLXULXZVJKUSKUY65.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5814e6a95b8da5ab3f37960559af5bfa20c19bbd93b9dd8cfe2bd59ada1357c +size 4305 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/WS/OD81AP87WA1TF62223ZRF1.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/WS/OD81AP87WA1TF62223ZRF1.uasset new file mode 100644 index 0000000..e35afee --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/WS/OD81AP87WA1TF62223ZRF1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5afdafc94da03893dcf3e4f881c9c4c771c7ce9e36688929c3aa8d36fa2a11c0 +size 4451 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/WY/LVFUG6K1BKN13XE4KQQ40K.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/WY/LVFUG6K1BKN13XE4KQQ40K.uasset new file mode 100644 index 0000000..fb6f94d --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/A/WY/LVFUG6K1BKN13XE4KQQ40K.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:458bd9ea04993ce12674b760147c75a59ae429bd0bab12205b8ee8854b3b7898 +size 5029 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/D9/Z57RGITVPW1E9TYTA44LWH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/D9/Z57RGITVPW1E9TYTA44LWH.uasset new file mode 100644 index 0000000..ddbc30f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/D9/Z57RGITVPW1E9TYTA44LWH.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8195fee65345b7fa9af846e5563ab0902401379ae9983beed7c5f7bc09400b3 +size 5246 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/K6/H3CZPHI7O0HFA0DHKWFFB1.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/K6/H3CZPHI7O0HFA0DHKWFFB1.uasset new file mode 100644 index 0000000..46f0994 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/K6/H3CZPHI7O0HFA0DHKWFFB1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59d20cec3e6ffa01a2e2eb83c18f8224e09662f0f3fd02d356fb2c1975630572 +size 7069 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/NY/ZXIJINPFFQNCKX34HPQEDZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/NY/ZXIJINPFFQNCKX34HPQEDZ.uasset new file mode 100644 index 0000000..63464bc --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/NY/ZXIJINPFFQNCKX34HPQEDZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:564382fd32687710f9b18ee3dd2861b6837b46e0605908dd1affc4af1e7a5a6f +size 8167 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/T9/WTK0WZ7YP778QRTNM2ASIH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/T9/WTK0WZ7YP778QRTNM2ASIH.uasset new file mode 100644 index 0000000..ccd25b6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/T9/WTK0WZ7YP778QRTNM2ASIH.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d202bbff2090c8873e94bb5785b6381cd88ae6056b0cb912f270d1ee9190d2f +size 4512 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/Y2/NO03Q09VKP8EMBQAGCK9MU.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/Y2/NO03Q09VKP8EMBQAGCK9MU.uasset new file mode 100644 index 0000000..aabbc02 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/B/Y2/NO03Q09VKP8EMBQAGCK9MU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c33ac38315fb29c30003f90176858955655e6849c36d29ba64a3a1a3c2c4ea80 +size 11828 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/7O/0L9RYRRBQG7VEGHR8Q98BD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/7O/0L9RYRRBQG7VEGHR8Q98BD.uasset new file mode 100644 index 0000000..a6eaf2a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/7O/0L9RYRRBQG7VEGHR8Q98BD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b937407713b7013996c18c7372cbc5e576207e738f90450a714b044659b48d2d +size 6453 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/C3/Q48R0F7C7BXL14R1P7QC22.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/C3/Q48R0F7C7BXL14R1P7QC22.uasset new file mode 100644 index 0000000..2bc78e4 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/C3/Q48R0F7C7BXL14R1P7QC22.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfb53eefd83ccd6f3a31afe5a728668792939aba9a2c45ca325ca6e0c8b8522b +size 3808 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/DO/HZ34Q26I12KNKJVQEF18EM.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/DO/HZ34Q26I12KNKJVQEF18EM.uasset new file mode 100644 index 0000000..9d1d94a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/DO/HZ34Q26I12KNKJVQEF18EM.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a6a6839bed8b903ecc2414901416b40186e69309c7f625c620d55553fbf08b4 +size 4572 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/EC/KA71OOH03YKI068HDGL3VB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/EC/KA71OOH03YKI068HDGL3VB.uasset new file mode 100644 index 0000000..5676af1 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/EC/KA71OOH03YKI068HDGL3VB.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b7acca59bfd88c1fa6f00e8c60d534323043f0afce831e67cfc7a2bf4fcad05 +size 4448 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/SI/8DCD2UP9VNXNP2N5WMXNUQ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/SI/8DCD2UP9VNXNP2N5WMXNUQ.uasset new file mode 100644 index 0000000..3a158ea --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/C/SI/8DCD2UP9VNXNP2N5WMXNUQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12161558d0f875b340cc241050e3eac0fb5fd2f61cae337faa8154d9ca4f95fb +size 5129 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/5O/XGIEUX13MQCOU125YK3X2C.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/5O/XGIEUX13MQCOU125YK3X2C.uasset new file mode 100644 index 0000000..f4c965a --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/5O/XGIEUX13MQCOU125YK3X2C.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a56156c7bddd29f8b67a23b411d56e48b42c08da6ecf209ee5c0d86650afcf4d +size 4505 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/9H/36KF3AMIT683JEIMNB4XAA.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/9H/36KF3AMIT683JEIMNB4XAA.uasset new file mode 100644 index 0000000..713efe0 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/9H/36KF3AMIT683JEIMNB4XAA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed26976dbce726f3e23dac318e8cd16f22d867d2e0f58a961be3543dbff9096c +size 7063 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/G8/7GP7X2YYJWIGC7PC3AVPXQ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/G8/7GP7X2YYJWIGC7PC3AVPXQ.uasset new file mode 100644 index 0000000..06c7c8f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/G8/7GP7X2YYJWIGC7PC3AVPXQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:178af063983ccf4bafdb73b881816de6d3b26e363e25776ab723cd8620a35aa3 +size 4965 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/HW/I1794TW7FPLR5XAV3TW7L6.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/HW/I1794TW7FPLR5XAV3TW7L6.uasset new file mode 100644 index 0000000..7311c87 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/D/HW/I1794TW7FPLR5XAV3TW7L6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18c666507687171346a2bc15195277c0b407467595009036a59a475bd243e497 +size 5114 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/44/H4Q0ZTK0XODVRU6OS62V6B.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/44/H4Q0ZTK0XODVRU6OS62V6B.uasset new file mode 100644 index 0000000..605a609 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/44/H4Q0ZTK0XODVRU6OS62V6B.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4c107a8b61ed00689ef2a69bd0f52c79936291faf1d0f523a9c4841856f30f2 +size 4812 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/4V/C1AI26EB3D2ORY2QX3LI4V.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/4V/C1AI26EB3D2ORY2QX3LI4V.uasset new file mode 100644 index 0000000..c1daed8 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/4V/C1AI26EB3D2ORY2QX3LI4V.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2df3756ecea53c15cd5c98f395e1739b515f69f3f5a1436c33fc40ac34452896 +size 4432 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/8K/GQDG92R9FRUQLYSQOFAMKI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/8K/GQDG92R9FRUQLYSQOFAMKI.uasset new file mode 100644 index 0000000..f9eaa4e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/8K/GQDG92R9FRUQLYSQOFAMKI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2351bbbef09bfb0737afdcf65decda298285bb1e2a35ad473d5ce2553b81ae2 +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/99/L0HWLRDISQ4RX3LTBZGL2Y.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/99/L0HWLRDISQ4RX3LTBZGL2Y.uasset new file mode 100644 index 0000000..e106415 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/99/L0HWLRDISQ4RX3LTBZGL2Y.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08c9858cd5530b86ee94383e8bb5a3a7acde9b5419806e5d75cb13a8ac45c631 +size 5283 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/AG/V9HGVOTOBYIE10UPD6CPRU.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/AG/V9HGVOTOBYIE10UPD6CPRU.uasset new file mode 100644 index 0000000..d046df6 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/AG/V9HGVOTOBYIE10UPD6CPRU.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d3e4ca6116d2416e0c8970000f8c3d8669fa0862139cab23c66feab0e8ff75c +size 5034 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/CY/PYU8OGSFL0C5HOKJTOQJ18.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/CY/PYU8OGSFL0C5HOKJTOQJ18.uasset new file mode 100644 index 0000000..ddf502b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/CY/PYU8OGSFL0C5HOKJTOQJ18.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:540a01d224989113d1522d1f9d7a5f2a27e8fd0fcce9d7ec7ea36813060d3f42 +size 4585 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/OV/WP567OU0GDSNI7DV6OHSHL.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/OV/WP567OU0GDSNI7DV6OHSHL.uasset new file mode 100644 index 0000000..7be7898 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/OV/WP567OU0GDSNI7DV6OHSHL.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8635248bcb1dcb70f7f14a6f0b07edcb5a1a088d60cf2db74dc289324ace4dfa +size 4572 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/PP/0FS30TRW5307EXU14BXFWH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/PP/0FS30TRW5307EXU14BXFWH.uasset new file mode 100644 index 0000000..f17e20b --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/PP/0FS30TRW5307EXU14BXFWH.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4adde21d5aa94cbc96bf40b227b94f6df18535f7c4cccfbb95da4bbe7a40516e +size 4591 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/RC/YWG76NICZRGBLF21JJXNPV.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/RC/YWG76NICZRGBLF21JJXNPV.uasset new file mode 100644 index 0000000..7a8899f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/RC/YWG76NICZRGBLF21JJXNPV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66d1201f81ed4aee6fb168d54141e6a0cc29c7ae5b477d55c1c52b6de491e4bc +size 5034 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/TB/LAHFA52TW10239NQOCP5VJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/TB/LAHFA52TW10239NQOCP5VJ.uasset new file mode 100644 index 0000000..e0a92f1 --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/E/TB/LAHFA52TW10239NQOCP5VJ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26b4f7412bf4bdf5008220b535920416644c2c6cff39207aea8c3a2a63d2eab4 +size 6451 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/F/1S/0E5W9QWRKKYALBDU8J7OJ7.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/F/1S/0E5W9QWRKKYALBDU8J7OJ7.uasset new file mode 100644 index 0000000..09cfe6e --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/F/1S/0E5W9QWRKKYALBDU8J7OJ7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fec46935f270103f71356360d5b08ef75ce9aabea6ae99e50bb103e4002005e2 +size 4572 diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/F/3Q/D5C015VFBWHJPBUNK6LYQZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/F/3Q/D5C015VFBWHJPBUNK6LYQZ.uasset new file mode 100644 index 0000000..bbe674f --- /dev/null +++ b/Content/__ExternalActors__/Variant_Shooter/Lvl_Shooter/F/3Q/D5C015VFBWHJPBUNK6LYQZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f173458c5aa4e60439a5372a97b74f183023c1017ff7a472270e337d2a8f4768 +size 4337 diff --git a/Content/__ExternalObjects__/FirstPerson/Lvl_FirstPerson/1/E5/IOQOGT9AJYYZQ06SOLO6RW.uasset b/Content/__ExternalObjects__/FirstPerson/Lvl_FirstPerson/1/E5/IOQOGT9AJYYZQ06SOLO6RW.uasset new file mode 100644 index 0000000..42dcfe2 --- /dev/null +++ b/Content/__ExternalObjects__/FirstPerson/Lvl_FirstPerson/1/E5/IOQOGT9AJYYZQ06SOLO6RW.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae06f5d4591172a518e5215ee2b4ee22ee57cd286e746cd9717bd00557f7c691 +size 1863 diff --git a/Content/__ExternalObjects__/Variant_Horror/Lvl_Horror/E/4S/MTC0EUCY5X4PPSGG0YEW81.uasset b/Content/__ExternalObjects__/Variant_Horror/Lvl_Horror/E/4S/MTC0EUCY5X4PPSGG0YEW81.uasset new file mode 100644 index 0000000..bd1fce1 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Horror/Lvl_Horror/E/4S/MTC0EUCY5X4PPSGG0YEW81.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d816742250b3d2eec4a3b538d10c879afd74104a32d3145e2d1b887c753686dc +size 1829 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/1/YM/YQOYN83O0AY6EIUCED607T.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/1/YM/YQOYN83O0AY6EIUCED607T.uasset new file mode 100644 index 0000000..2b27692 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/1/YM/YQOYN83O0AY6EIUCED607T.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e619b59c625bfb73214a1bee7cd29de0dfd8f639b4f0d6b1318321d55024cd28 +size 1837 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/3/2W/ZNRQ5WHS64UROQO8IYBQ8K.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/3/2W/ZNRQ5WHS64UROQO8IYBQ8K.uasset new file mode 100644 index 0000000..bdcb444 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/3/2W/ZNRQ5WHS64UROQO8IYBQ8K.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90df125b6e8cf69878a3f2737d50908bda726b8e9db7614f576b67cb1a35f8b9 +size 1837 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/3/GX/9T107TEODWHN5T1WPYBUQ7.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/3/GX/9T107TEODWHN5T1WPYBUQ7.uasset new file mode 100644 index 0000000..6e7c3fa --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/3/GX/9T107TEODWHN5T1WPYBUQ7.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc6618a04d372f7fd7c21ef6ed3d41e9032aa55191b645b64d14a47b0346911f +size 1837 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/5/VB/10P3UZA0QNYFH1YBTDGMZ1.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/5/VB/10P3UZA0QNYFH1YBTDGMZ1.uasset new file mode 100644 index 0000000..c05f6bc --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/5/VB/10P3UZA0QNYFH1YBTDGMZ1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb5fba0df41968592e79473a86b07a30ae38702f51d4dfa708a1106b734a4d64 +size 1837 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/6/CO/XIQDOOHSXSPVKBOZEQMPYA.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/6/CO/XIQDOOHSXSPVKBOZEQMPYA.uasset new file mode 100644 index 0000000..8d90085 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/6/CO/XIQDOOHSXSPVKBOZEQMPYA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caf33df308b779e5b0b9c8bfccaa55deb2cc432bf60cfe78ec5de4fc720be193 +size 1837 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/A/U2/YWYC9H20DSG3PUCQB8WBZY.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/A/U2/YWYC9H20DSG3PUCQB8WBZY.uasset new file mode 100644 index 0000000..3f78ce6 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/A/U2/YWYC9H20DSG3PUCQB8WBZY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7ba2cb9fa2e19b0f59c28a53c68e395049db9324edeb0288de3642ec1d85c71 +size 1851 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/A/X7/68F5K6E8SAVZAFAA6X809G.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/A/X7/68F5K6E8SAVZAFAA6X809G.uasset new file mode 100644 index 0000000..55b7db8 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/A/X7/68F5K6E8SAVZAFAA6X809G.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1f3ed94390e1b4c09f286e9dd7871753ee5209cbaf11a3406cf705b4ec872af +size 1843 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/C/EV/FYOQKZQDM3AYZEKRQRNWNL.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/C/EV/FYOQKZQDM3AYZEKRQRNWNL.uasset new file mode 100644 index 0000000..3908098 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/C/EV/FYOQKZQDM3AYZEKRQRNWNL.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:214dc666e5599bd8e227d8c49a80401376b17fd3999609381b8806c4c33c246a +size 1837 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/D/H2/NB2B3NDNJ5EHLF4RBHMD8K.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/D/H2/NB2B3NDNJ5EHLF4RBHMD8K.uasset new file mode 100644 index 0000000..89e29bd --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/D/H2/NB2B3NDNJ5EHLF4RBHMD8K.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec7573b7439ce6c1d5c0dd40ae90c0a84c92ea74cef8e9f129fe0015b7b128a0 +size 1839 diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/E/9R/OEDP71GC0TR19P70FPV3QX.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/E/9R/OEDP71GC0TR19P70FPV3QX.uasset new file mode 100644 index 0000000..93e66b0 --- /dev/null +++ b/Content/__ExternalObjects__/Variant_Shooter/Lvl_Shooter/E/9R/OEDP71GC0TR19P70FPV3QX.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b27ebc76fcb857dab317279fe0c9b7fb234356ac5d42818d859dca71658ce0c +size 1839 diff --git a/FirstPersonDemo.uproject b/FirstPersonDemo.uproject new file mode 100644 index 0000000..974ac4d --- /dev/null +++ b/FirstPersonDemo.uproject @@ -0,0 +1,35 @@ +{ + "FileVersion": 3, + "EngineAssociation": "5.7", + "Category": "", + "Description": "", + "Modules": [ + { + "Name": "FirstPersonDemo", + "Type": "Runtime", + "LoadingPhase": "Default", + "AdditionalDependencies": [ + "Engine", + "AIModule", + "UMG" + ] + } + ], + "Plugins": [ + { + "Name": "ModelingToolsEditorMode", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "StateTree", + "Enabled": true + }, + { + "Name": "GameplayStateTree", + "Enabled": true + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..497c754 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# FirstPersonDemo + +Developed with Unreal Engine 5 diff --git a/Source/FirstPersonDemo.Target.cs b/Source/FirstPersonDemo.Target.cs new file mode 100644 index 0000000..c4f11e6 --- /dev/null +++ b/Source/FirstPersonDemo.Target.cs @@ -0,0 +1,15 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class FirstPersonDemoTarget : TargetRules +{ + public FirstPersonDemoTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Game; + DefaultBuildSettings = BuildSettingsVersion.V6; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; + ExtraModuleNames.Add("FirstPersonDemo"); + } +} diff --git a/Source/FirstPersonDemo/FirstPersonDemo.Build.cs b/Source/FirstPersonDemo/FirstPersonDemo.Build.cs new file mode 100644 index 0000000..beddc8d --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemo.Build.cs @@ -0,0 +1,44 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; + +public class FirstPersonDemo : ModuleRules +{ + public FirstPersonDemo(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange(new string[] { + "Core", + "CoreUObject", + "Engine", + "InputCore", + "EnhancedInput", + "AIModule", + "StateTreeModule", + "GameplayStateTreeModule", + "UMG", + "Slate" + }); + + PrivateDependencyModuleNames.AddRange(new string[] { }); + + PublicIncludePaths.AddRange(new string[] { + "FirstPersonDemo", + "FirstPersonDemo/Variant_Horror", + "FirstPersonDemo/Variant_Horror/UI", + "FirstPersonDemo/Variant_Shooter", + "FirstPersonDemo/Variant_Shooter/AI", + "FirstPersonDemo/Variant_Shooter/UI", + "FirstPersonDemo/Variant_Shooter/Weapons" + }); + + // Uncomment if you are using Slate UI + // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + + // Uncomment if you are using online features + // PrivateDependencyModuleNames.Add("OnlineSubsystem"); + + // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true + } +} diff --git a/Source/FirstPersonDemo/FirstPersonDemo.cpp b/Source/FirstPersonDemo/FirstPersonDemo.cpp new file mode 100644 index 0000000..83723e3 --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemo.cpp @@ -0,0 +1,8 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "FirstPersonDemo.h" +#include "Modules/ModuleManager.h" + +IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, FirstPersonDemo, "FirstPersonDemo" ); + +DEFINE_LOG_CATEGORY(LogFirstPersonDemo) \ No newline at end of file diff --git a/Source/FirstPersonDemo/FirstPersonDemo.h b/Source/FirstPersonDemo/FirstPersonDemo.h new file mode 100644 index 0000000..6395163 --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemo.h @@ -0,0 +1,8 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" + +/** Main log category used across the project */ +DECLARE_LOG_CATEGORY_EXTERN(LogFirstPersonDemo, Log, All); \ No newline at end of file diff --git a/Source/FirstPersonDemo/FirstPersonDemoCameraManager.cpp b/Source/FirstPersonDemo/FirstPersonDemoCameraManager.cpp new file mode 100644 index 0000000..a63c949 --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoCameraManager.cpp @@ -0,0 +1,11 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "FirstPersonDemoCameraManager.h" + +AFirstPersonDemoCameraManager::AFirstPersonDemoCameraManager() +{ + // set the min/max pitch + ViewPitchMin = -70.0f; + ViewPitchMax = 80.0f; +} diff --git a/Source/FirstPersonDemo/FirstPersonDemoCameraManager.h b/Source/FirstPersonDemo/FirstPersonDemoCameraManager.h new file mode 100644 index 0000000..669c25d --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoCameraManager.h @@ -0,0 +1,22 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Camera/PlayerCameraManager.h" +#include "FirstPersonDemoCameraManager.generated.h" + +/** + * Basic First Person camera manager. + * Limits min/max look pitch. + */ +UCLASS() +class AFirstPersonDemoCameraManager : public APlayerCameraManager +{ + GENERATED_BODY() + +public: + + /** Constructor */ + AFirstPersonDemoCameraManager(); +}; diff --git a/Source/FirstPersonDemo/FirstPersonDemoCharacter.cpp b/Source/FirstPersonDemo/FirstPersonDemoCharacter.cpp new file mode 100644 index 0000000..ef2d180 --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoCharacter.cpp @@ -0,0 +1,120 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "FirstPersonDemoCharacter.h" +#include "Animation/AnimInstance.h" +#include "Camera/CameraComponent.h" +#include "Components/CapsuleComponent.h" +#include "Components/SkeletalMeshComponent.h" +#include "EnhancedInputComponent.h" +#include "InputActionValue.h" +#include "GameFramework/CharacterMovementComponent.h" +#include "FirstPersonDemo.h" + +AFirstPersonDemoCharacter::AFirstPersonDemoCharacter() +{ + // Set size for collision capsule + GetCapsuleComponent()->InitCapsuleSize(55.f, 96.0f); + + // Create the first person mesh that will be viewed only by this character's owner + FirstPersonMesh = CreateDefaultSubobject(TEXT("First Person Mesh")); + + FirstPersonMesh->SetupAttachment(GetMesh()); + FirstPersonMesh->SetOnlyOwnerSee(true); + FirstPersonMesh->FirstPersonPrimitiveType = EFirstPersonPrimitiveType::FirstPerson; + FirstPersonMesh->SetCollisionProfileName(FName("NoCollision")); + + // Create the Camera Component + FirstPersonCameraComponent = CreateDefaultSubobject(TEXT("First Person Camera")); + FirstPersonCameraComponent->SetupAttachment(FirstPersonMesh, FName("head")); + FirstPersonCameraComponent->SetRelativeLocationAndRotation(FVector(-2.8f, 5.89f, 0.0f), FRotator(0.0f, 90.0f, -90.0f)); + FirstPersonCameraComponent->bUsePawnControlRotation = true; + FirstPersonCameraComponent->bEnableFirstPersonFieldOfView = true; + FirstPersonCameraComponent->bEnableFirstPersonScale = true; + FirstPersonCameraComponent->FirstPersonFieldOfView = 70.0f; + FirstPersonCameraComponent->FirstPersonScale = 0.6f; + + // configure the character comps + GetMesh()->SetOwnerNoSee(true); + GetMesh()->FirstPersonPrimitiveType = EFirstPersonPrimitiveType::WorldSpaceRepresentation; + + GetCapsuleComponent()->SetCapsuleSize(34.0f, 96.0f); + + // Configure character movement + GetCharacterMovement()->BrakingDecelerationFalling = 1500.0f; + GetCharacterMovement()->AirControl = 0.5f; +} + +void AFirstPersonDemoCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + // Set up action bindings + if (UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerInputComponent)) + { + // Jumping + EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this, &AFirstPersonDemoCharacter::DoJumpStart); + EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &AFirstPersonDemoCharacter::DoJumpEnd); + + // Moving + EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AFirstPersonDemoCharacter::MoveInput); + + // Looking/Aiming + EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &AFirstPersonDemoCharacter::LookInput); + EnhancedInputComponent->BindAction(MouseLookAction, ETriggerEvent::Triggered, this, &AFirstPersonDemoCharacter::LookInput); + } + else + { + UE_LOG(LogFirstPersonDemo, Error, TEXT("'%s' Failed to find an Enhanced Input Component! This template is built to use the Enhanced Input system. If you intend to use the legacy system, then you will need to update this C++ file."), *GetNameSafe(this)); + } +} + + +void AFirstPersonDemoCharacter::MoveInput(const FInputActionValue& Value) +{ + // get the Vector2D move axis + FVector2D MovementVector = Value.Get(); + + // pass the axis values to the move input + DoMove(MovementVector.X, MovementVector.Y); + +} + +void AFirstPersonDemoCharacter::LookInput(const FInputActionValue& Value) +{ + // get the Vector2D look axis + FVector2D LookAxisVector = Value.Get(); + + // pass the axis values to the aim input + DoAim(LookAxisVector.X, LookAxisVector.Y); + +} + +void AFirstPersonDemoCharacter::DoAim(float Yaw, float Pitch) +{ + if (GetController()) + { + // pass the rotation inputs + AddControllerYawInput(Yaw); + AddControllerPitchInput(Pitch); + } +} + +void AFirstPersonDemoCharacter::DoMove(float Right, float Forward) +{ + if (GetController()) + { + // pass the move inputs + AddMovementInput(GetActorRightVector(), Right); + AddMovementInput(GetActorForwardVector(), Forward); + } +} + +void AFirstPersonDemoCharacter::DoJumpStart() +{ + // pass Jump to the character + Jump(); +} + +void AFirstPersonDemoCharacter::DoJumpEnd() +{ + // pass StopJumping to the character + StopJumping(); +} diff --git a/Source/FirstPersonDemo/FirstPersonDemoCharacter.h b/Source/FirstPersonDemo/FirstPersonDemoCharacter.h new file mode 100644 index 0000000..650617b --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoCharacter.h @@ -0,0 +1,94 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Character.h" +#include "Logging/LogMacros.h" +#include "FirstPersonDemoCharacter.generated.h" + +class UInputComponent; +class USkeletalMeshComponent; +class UCameraComponent; +class UInputAction; +struct FInputActionValue; + +DECLARE_LOG_CATEGORY_EXTERN(LogTemplateCharacter, Log, All); + +/** + * A basic first person character + */ +UCLASS(abstract) +class AFirstPersonDemoCharacter : public ACharacter +{ + GENERATED_BODY() + + /** Pawn mesh: first person view (arms; seen only by self) */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + USkeletalMeshComponent* FirstPersonMesh; + + /** First person camera */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + UCameraComponent* FirstPersonCameraComponent; + +protected: + + /** Jump Input Action */ + UPROPERTY(EditAnywhere, Category ="Input") + UInputAction* JumpAction; + + /** Move Input Action */ + UPROPERTY(EditAnywhere, Category ="Input") + UInputAction* MoveAction; + + /** Look Input Action */ + UPROPERTY(EditAnywhere, Category ="Input") + class UInputAction* LookAction; + + /** Mouse Look Input Action */ + UPROPERTY(EditAnywhere, Category ="Input") + class UInputAction* MouseLookAction; + +public: + AFirstPersonDemoCharacter(); + +protected: + + /** Called from Input Actions for movement input */ + void MoveInput(const FInputActionValue& Value); + + /** Called from Input Actions for looking input */ + void LookInput(const FInputActionValue& Value); + + /** Handles aim inputs from either controls or UI interfaces */ + UFUNCTION(BlueprintCallable, Category="Input") + virtual void DoAim(float Yaw, float Pitch); + + /** Handles move inputs from either controls or UI interfaces */ + UFUNCTION(BlueprintCallable, Category="Input") + virtual void DoMove(float Right, float Forward); + + /** Handles jump start inputs from either controls or UI interfaces */ + UFUNCTION(BlueprintCallable, Category="Input") + virtual void DoJumpStart(); + + /** Handles jump end inputs from either controls or UI interfaces */ + UFUNCTION(BlueprintCallable, Category="Input") + virtual void DoJumpEnd(); + +protected: + + /** Set up input action bindings */ + virtual void SetupPlayerInputComponent(UInputComponent* InputComponent) override; + + +public: + + /** Returns the first person mesh **/ + USkeletalMeshComponent* GetFirstPersonMesh() const { return FirstPersonMesh; } + + /** Returns first person camera component **/ + UCameraComponent* GetFirstPersonCameraComponent() const { return FirstPersonCameraComponent; } + +}; + diff --git a/Source/FirstPersonDemo/FirstPersonDemoGameMode.cpp b/Source/FirstPersonDemo/FirstPersonDemoGameMode.cpp new file mode 100644 index 0000000..3a853cf --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoGameMode.cpp @@ -0,0 +1,8 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "FirstPersonDemoGameMode.h" + +AFirstPersonDemoGameMode::AFirstPersonDemoGameMode() +{ + // stub +} diff --git a/Source/FirstPersonDemo/FirstPersonDemoGameMode.h b/Source/FirstPersonDemo/FirstPersonDemoGameMode.h new file mode 100644 index 0000000..76bd117 --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoGameMode.h @@ -0,0 +1,22 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameModeBase.h" +#include "FirstPersonDemoGameMode.generated.h" + +/** + * Simple GameMode for a first person game + */ +UCLASS(abstract) +class AFirstPersonDemoGameMode : public AGameModeBase +{ + GENERATED_BODY() + +public: + AFirstPersonDemoGameMode(); +}; + + + diff --git a/Source/FirstPersonDemo/FirstPersonDemoPlayerController.cpp b/Source/FirstPersonDemo/FirstPersonDemoPlayerController.cpp new file mode 100644 index 0000000..750c3d0 --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoPlayerController.cpp @@ -0,0 +1,76 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "FirstPersonDemoPlayerController.h" +#include "EnhancedInputSubsystems.h" +#include "Engine/LocalPlayer.h" +#include "InputMappingContext.h" +#include "FirstPersonDemoCameraManager.h" +#include "Blueprint/UserWidget.h" +#include "FirstPersonDemo.h" +#include "Widgets/Input/SVirtualJoystick.h" + +AFirstPersonDemoPlayerController::AFirstPersonDemoPlayerController() +{ + // set the player camera manager class + PlayerCameraManagerClass = AFirstPersonDemoCameraManager::StaticClass(); +} + +void AFirstPersonDemoPlayerController::BeginPlay() +{ + Super::BeginPlay(); + + + // only spawn touch controls on local player controllers + if (ShouldUseTouchControls() && IsLocalPlayerController()) + { + // spawn the mobile controls widget + MobileControlsWidget = CreateWidget(this, MobileControlsWidgetClass); + + if (MobileControlsWidget) + { + // add the controls to the player screen + MobileControlsWidget->AddToPlayerScreen(0); + + } else { + + UE_LOG(LogFirstPersonDemo, Error, TEXT("Could not spawn mobile controls widget.")); + + } + + } +} + +void AFirstPersonDemoPlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); + + // only add IMCs for local player controllers + if (IsLocalPlayerController()) + { + // Add Input Mapping Context + if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer())) + { + for (UInputMappingContext* CurrentContext : DefaultMappingContexts) + { + Subsystem->AddMappingContext(CurrentContext, 0); + } + + // only add these IMCs if we're not using mobile touch input + if (!ShouldUseTouchControls()) + { + for (UInputMappingContext* CurrentContext : MobileExcludedMappingContexts) + { + Subsystem->AddMappingContext(CurrentContext, 0); + } + } + } + } + +} + +bool AFirstPersonDemoPlayerController::ShouldUseTouchControls() const +{ + // are we on a mobile platform? Should we force touch? + return SVirtualJoystick::ShouldDisplayTouchInterface() || bForceTouchControls; +} diff --git a/Source/FirstPersonDemo/FirstPersonDemoPlayerController.h b/Source/FirstPersonDemo/FirstPersonDemoPlayerController.h new file mode 100644 index 0000000..0c381df --- /dev/null +++ b/Source/FirstPersonDemo/FirstPersonDemoPlayerController.h @@ -0,0 +1,57 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/PlayerController.h" +#include "FirstPersonDemoPlayerController.generated.h" + +class UInputMappingContext; +class UUserWidget; + +/** + * Simple first person Player Controller + * Manages the input mapping context. + * Overrides the Player Camera Manager class. + */ +UCLASS(abstract, config="Game") +class FIRSTPERSONDEMO_API AFirstPersonDemoPlayerController : public APlayerController +{ + GENERATED_BODY() + +public: + + /** Constructor */ + AFirstPersonDemoPlayerController(); + +protected: + + /** Input Mapping Contexts */ + UPROPERTY(EditAnywhere, Category="Input|Input Mappings") + TArray DefaultMappingContexts; + + /** Input Mapping Contexts */ + UPROPERTY(EditAnywhere, Category="Input|Input Mappings") + TArray MobileExcludedMappingContexts; + + /** Mobile controls widget to spawn */ + UPROPERTY(EditAnywhere, Category="Input|Touch Controls") + TSubclassOf MobileControlsWidgetClass; + + /** Pointer to the mobile controls widget */ + UPROPERTY() + TObjectPtr MobileControlsWidget; + + /** If true, the player will use UMG touch controls even if not playing on mobile platforms */ + UPROPERTY(EditAnywhere, Config, Category = "Input|Touch Controls") + bool bForceTouchControls = false; + + /** Gameplay initialization */ + virtual void BeginPlay() override; + + /** Input mapping context setup */ + virtual void SetupInputComponent() override; + + /** Returns true if the player should use UMG touch controls */ + bool ShouldUseTouchControls() const; +}; diff --git a/Source/FirstPersonDemo/Variant_Horror/HorrorCharacter.cpp b/Source/FirstPersonDemo/Variant_Horror/HorrorCharacter.cpp new file mode 100644 index 0000000..d3e76ed --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/HorrorCharacter.cpp @@ -0,0 +1,143 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Horror/HorrorCharacter.h" +#include "Engine/World.h" +#include "TimerManager.h" +#include "GameFramework/CharacterMovementComponent.h" +#include "Camera/CameraComponent.h" +#include "Components/SpotLightComponent.h" +#include "EnhancedInputComponent.h" +#include "InputAction.h" + +AHorrorCharacter::AHorrorCharacter() +{ + // create the spotlight + SpotLight = CreateDefaultSubobject(TEXT("SpotLight")); + SpotLight->SetupAttachment(GetFirstPersonCameraComponent()); + + SpotLight->SetRelativeLocationAndRotation(FVector(30.0f, 17.5f, -5.0f), FRotator(-18.6f, -1.3f, 5.26f)); + SpotLight->Intensity = 0.5; + SpotLight->SetIntensityUnits(ELightUnits::Lumens); + SpotLight->AttenuationRadius = 1050.0f; + SpotLight->InnerConeAngle = 18.7f; + SpotLight->OuterConeAngle = 45.24f; +} + +void AHorrorCharacter::BeginPlay() +{ + Super::BeginPlay(); + + // initialize sprint meter to max + SprintMeter = SprintTime; + + // Initialize the walk speed + GetCharacterMovement()->MaxWalkSpeed = WalkSpeed; + + // start the sprint tick timer + GetWorld()->GetTimerManager().SetTimer(SprintTimer, this, &AHorrorCharacter::SprintFixedTick, SprintFixedTickTime, true); +} + +void AHorrorCharacter::EndPlay(EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // clear the sprint timer + GetWorld()->GetTimerManager().ClearTimer(SprintTimer); +} + +void AHorrorCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); + + { + // Set up action bindings + if (UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerInputComponent)) + { + // Sprinting + EnhancedInputComponent->BindAction(SprintAction, ETriggerEvent::Started, this, &AHorrorCharacter::DoStartSprint); + EnhancedInputComponent->BindAction(SprintAction, ETriggerEvent::Completed, this, &AHorrorCharacter::DoEndSprint); + + } + } +} + +void AHorrorCharacter::DoStartSprint() +{ + // set the sprinting flag + bSprinting = true; + + // are we out of recovery mode? + if (!bRecovering) + { + // set the sprint walk speed + GetCharacterMovement()->MaxWalkSpeed = SprintSpeed; + + // call the sprint state changed delegate + OnSprintStateChanged.Broadcast(true); + } + +} + +void AHorrorCharacter::DoEndSprint() +{ + // set the sprinting flag + bSprinting = false; + + // are we out of recovery mode? + if (!bRecovering) + { + // set the default walk speed + GetCharacterMovement()->MaxWalkSpeed = WalkSpeed; + + // call the sprint state changed delegate + OnSprintStateChanged.Broadcast(false); + } +} + +void AHorrorCharacter::SprintFixedTick() +{ + // are we out of recovery, still have stamina and are moving faster than our walk speed? + if (bSprinting && !bRecovering && GetVelocity().Length() > WalkSpeed) + { + + // do we still have meter to burn? + if (SprintMeter > 0.0f) + { + // update the sprint meter + SprintMeter = FMath::Max(SprintMeter - SprintFixedTickTime, 0.0f); + + // have we run out of stamina? + if (SprintMeter <= 0.0f) + { + // raise the recovering flag + bRecovering = true; + + // set the recovering walk speed + GetCharacterMovement()->MaxWalkSpeed = RecoveringWalkSpeed; + } + } + + } else { + + // recover stamina + SprintMeter = FMath::Min(SprintMeter + SprintFixedTickTime, SprintTime); + + if (SprintMeter >= SprintTime) + { + // lower the recovering flag + bRecovering = false; + + // set the walk or sprint speed depending on whether the sprint button is down + GetCharacterMovement()->MaxWalkSpeed = bSprinting ? SprintSpeed : WalkSpeed; + + // update the sprint state depending on whether the button is down or not + OnSprintStateChanged.Broadcast(bSprinting); + } + + } + + // broadcast the sprint meter updated delegate + OnSprintMeterUpdated.Broadcast(SprintMeter / SprintTime); + +} diff --git a/Source/FirstPersonDemo/Variant_Horror/HorrorCharacter.h b/Source/FirstPersonDemo/Variant_Horror/HorrorCharacter.h new file mode 100644 index 0000000..0752d70 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/HorrorCharacter.h @@ -0,0 +1,104 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "FirstPersonDemoCharacter.h" +#include "HorrorCharacter.generated.h" + +class USpotLightComponent; +class UInputAction; + +DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FUpdateSprintMeterDelegate, float, Percentage); +DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FSprintStateChangedDelegate, bool, bSprinting); + +/** + * Simple first person horror character + * Provides stamina-based sprinting + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AHorrorCharacter : public AFirstPersonDemoCharacter +{ + GENERATED_BODY() + + /** Player light source */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + USpotLightComponent* SpotLight; + +protected: + + /** Fire weapon input action */ + UPROPERTY(EditAnywhere, Category ="Input") + UInputAction* SprintAction; + + /** If true, we're sprinting */ + bool bSprinting = false; + + /** If true, we're recovering stamina */ + bool bRecovering = false; + + /** Default walk speed when not sprinting or recovering */ + UPROPERTY(EditAnywhere, Category="Walk") + float WalkSpeed = 250.0f; + + /** Time interval for sprinting stamina ticks */ + UPROPERTY(EditAnywhere, Category="Sprint", meta = (ClampMin = 0, ClampMax = 1, Units = "s")) + float SprintFixedTickTime = 0.03333f; + + /** Sprint stamina amount. Maxes at SprintTime */ + float SprintMeter = 0.0f; + + /** How long we can sprint for, in seconds */ + UPROPERTY(EditAnywhere, Category="Sprint", meta = (ClampMin = 0, ClampMax = 10, Units = "s")) + float SprintTime = 3.0f; + + /** Walk speed while sprinting */ + UPROPERTY(EditAnywhere, Category="Sprint", meta = (ClampMin = 0, ClampMax = 10, Units = "cm/s")) + float SprintSpeed = 600.0f; + + /** Walk speed while recovering stamina */ + UPROPERTY(EditAnywhere, Category="Recovery", meta = (ClampMin = 0, ClampMax = 10, Units = "cm/s")) + float RecoveringWalkSpeed = 150.0f; + + /** Time it takes for the sprint meter to recover */ + UPROPERTY(EditAnywhere, Category="Recovery", meta = (ClampMin = 0, ClampMax = 10, Units = "s")) + float RecoveryTime = 0.0f; + + /** Sprint tick timer */ + FTimerHandle SprintTimer; + +public: + + /** Delegate called when the sprint meter should be updated */ + FUpdateSprintMeterDelegate OnSprintMeterUpdated; + + /** Delegate called when we start and stop sprinting */ + FSprintStateChangedDelegate OnSprintStateChanged; + +protected: + + /** Constructor */ + AHorrorCharacter(); + + /** Gameplay initialization */ + virtual void BeginPlay() override; + + /** Gameplay cleanup */ + virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override; + + /** Set up input action bindings */ + virtual void SetupPlayerInputComponent(UInputComponent* InputComponent) override; + +protected: + + /** Starts sprinting behavior */ + UFUNCTION(BlueprintCallable, Category = "Input") + void DoStartSprint(); + + /** Stops sprinting behavior */ + UFUNCTION(BlueprintCallable, Category="Input") + void DoEndSprint(); + + /** Called while sprinting at a fixed time interval */ + void SprintFixedTick(); +}; diff --git a/Source/FirstPersonDemo/Variant_Horror/HorrorGameMode.cpp b/Source/FirstPersonDemo/Variant_Horror/HorrorGameMode.cpp new file mode 100644 index 0000000..b0621d3 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/HorrorGameMode.cpp @@ -0,0 +1,9 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Horror/HorrorGameMode.h" + +AHorrorGameMode::AHorrorGameMode() +{ + // stub +} diff --git a/Source/FirstPersonDemo/Variant_Horror/HorrorGameMode.h b/Source/FirstPersonDemo/Variant_Horror/HorrorGameMode.h new file mode 100644 index 0000000..2c0b1d5 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/HorrorGameMode.h @@ -0,0 +1,21 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameModeBase.h" +#include "HorrorGameMode.generated.h" + +/** + * Simple GameMode for a first person horror game + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AHorrorGameMode : public AGameModeBase +{ + GENERATED_BODY() + +public: + + /** Constructor */ + AHorrorGameMode(); +}; diff --git a/Source/FirstPersonDemo/Variant_Horror/HorrorPlayerController.cpp b/Source/FirstPersonDemo/Variant_Horror/HorrorPlayerController.cpp new file mode 100644 index 0000000..2cb3484 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/HorrorPlayerController.cpp @@ -0,0 +1,98 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Horror/HorrorPlayerController.h" +#include "EnhancedInputSubsystems.h" +#include "Engine/LocalPlayer.h" +#include "InputMappingContext.h" +#include "FirstPersonDemoCameraManager.h" +#include "HorrorCharacter.h" +#include "HorrorUI.h" +#include "FirstPersonDemo.h" +#include "Widgets/Input/SVirtualJoystick.h" + +AHorrorPlayerController::AHorrorPlayerController() +{ + // set the player camera manager class + PlayerCameraManagerClass = AFirstPersonDemoCameraManager::StaticClass(); +} + +void AHorrorPlayerController::BeginPlay() +{ + Super::BeginPlay(); + + // only spawn touch controls on local player controllers + if (ShouldUseTouchControls() && IsLocalPlayerController()) + { + // spawn the mobile controls widget + MobileControlsWidget = CreateWidget(this, MobileControlsWidgetClass); + + if (MobileControlsWidget) + { + // add the controls to the player screen + MobileControlsWidget->AddToPlayerScreen(0); + + } else { + + UE_LOG(LogFirstPersonDemo, Error, TEXT("Could not spawn mobile controls widget.")); + + } + + } +} + +void AHorrorPlayerController::OnPossess(APawn* aPawn) +{ + Super::OnPossess(aPawn); + + // only spawn UI on local player controllers + if (IsLocalPlayerController()) + { + // set up the UI for the character + if (AHorrorCharacter* HorrorCharacter = Cast(aPawn)) + { + // create the UI + if (!HorrorUI) + { + HorrorUI = CreateWidget(this, HorrorUIClass); + HorrorUI->AddToViewport(0); + } + + HorrorUI->SetupCharacter(HorrorCharacter); + } + } + +} + +void AHorrorPlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); + + // only add IMCs for local player controllers + if (IsLocalPlayerController()) + { + // Add Input Mapping Contexts + if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer())) + { + for (UInputMappingContext* CurrentContext : DefaultMappingContexts) + { + Subsystem->AddMappingContext(CurrentContext, 0); + } + + // only add these IMCs if we're not using mobile touch input + if (!ShouldUseTouchControls()) + { + for (UInputMappingContext* CurrentContext : MobileExcludedMappingContexts) + { + Subsystem->AddMappingContext(CurrentContext, 0); + } + } + } + } +} + +bool AHorrorPlayerController::ShouldUseTouchControls() const +{ + // are we on a mobile platform? Should we force touch? + return SVirtualJoystick::ShouldDisplayTouchInterface() || bForceTouchControls; +} diff --git a/Source/FirstPersonDemo/Variant_Horror/HorrorPlayerController.h b/Source/FirstPersonDemo/Variant_Horror/HorrorPlayerController.h new file mode 100644 index 0000000..a9bb00e --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/HorrorPlayerController.h @@ -0,0 +1,69 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/PlayerController.h" +#include "HorrorPlayerController.generated.h" + +class UInputMappingContext; +class UHorrorUI; + +/** + * Player Controller for a first person horror game + * Manages input mappings + * Manages UI + */ +UCLASS(abstract, config="Game") +class FIRSTPERSONDEMO_API AHorrorPlayerController : public APlayerController +{ + GENERATED_BODY() + +protected: + + /** Type of UI widget to spawn */ + UPROPERTY(EditAnywhere, Category="Horror|UI") + TSubclassOf HorrorUIClass; + + /** Pointer to the UI widget */ + UPROPERTY() + TObjectPtr HorrorUI; + +public: + + /** Constructor */ + AHorrorPlayerController(); + +protected: + + /** Input Mapping Contexts */ + UPROPERTY(EditAnywhere, Category ="Input|Input Mappings") + TArray DefaultMappingContexts; + + /** Input Mapping Contexts */ + UPROPERTY(EditAnywhere, Category="Input|Input Mappings") + TArray MobileExcludedMappingContexts; + + /** Mobile controls widget to spawn */ + UPROPERTY(EditAnywhere, Category="Input|Touch Controls") + TSubclassOf MobileControlsWidgetClass; + + /** Pointer to the mobile controls widget */ + TObjectPtr MobileControlsWidget; + + /** If true, the player will use UMG touch controls even if not playing on mobile platforms */ + UPROPERTY(EditAnywhere, Config, Category = "Input|Touch Controls") + bool bForceTouchControls = false; + + /** Gameplay Initialization */ + virtual void BeginPlay() override; + + /** Possessed pawn initialization */ + virtual void OnPossess(APawn* aPawn) override; + + /** Input mapping context setup */ + virtual void SetupInputComponent() override; + + /** Returns true if the player should use UMG touch controls */ + bool ShouldUseTouchControls() const; +}; diff --git a/Source/FirstPersonDemo/Variant_Horror/UI/HorrorUI.cpp b/Source/FirstPersonDemo/Variant_Horror/UI/HorrorUI.cpp new file mode 100644 index 0000000..78d17bd --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/UI/HorrorUI.cpp @@ -0,0 +1,23 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "HorrorUI.h" +#include "HorrorCharacter.h" + +void UHorrorUI::SetupCharacter(AHorrorCharacter* HorrorCharacter) +{ + HorrorCharacter->OnSprintMeterUpdated.AddDynamic(this, &UHorrorUI::OnSprintMeterUpdated); + HorrorCharacter->OnSprintStateChanged.AddDynamic(this, &UHorrorUI::OnSprintStateChanged); +} + +void UHorrorUI::OnSprintMeterUpdated(float Percent) +{ + // call the BP handler + BP_SprintMeterUpdated(Percent); +} + +void UHorrorUI::OnSprintStateChanged(bool bSprinting) +{ + // call the BP handler + BP_SprintStateChanged(bSprinting); +} diff --git a/Source/FirstPersonDemo/Variant_Horror/UI/HorrorUI.h b/Source/FirstPersonDemo/Variant_Horror/UI/HorrorUI.h new file mode 100644 index 0000000..32b15a9 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Horror/UI/HorrorUI.h @@ -0,0 +1,42 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "HorrorUI.generated.h" + +class AHorrorCharacter; + +/** + * Simple UI for a first person horror game + * Manages character sprint meter display + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API UHorrorUI : public UUserWidget +{ + GENERATED_BODY() + +public: + + /** Sets up delegate listeners for the passed character */ + void SetupCharacter(AHorrorCharacter* HorrorCharacter); + + /** Called when the character's sprint meter is updated */ + UFUNCTION() + void OnSprintMeterUpdated(float Percent); + + /** Called when the character's sprint state changes */ + UFUNCTION() + void OnSprintStateChanged(bool bSprinting); + +protected: + + /** Passes control to Blueprint to update the sprint meter widgets */ + UFUNCTION(BlueprintImplementableEvent, Category="Horror", meta = (DisplayName = "Sprint Meter Updated")) + void BP_SprintMeterUpdated(float Percent); + + /** Passes control to Blueprint to update the sprint meter status */ + UFUNCTION(BlueprintImplementableEvent, Category="Horror", meta = (DisplayName = "Sprint State Changed")) + void BP_SprintStateChanged(bool bSprinting); +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/EnvQueryContext_Target.cpp b/Source/FirstPersonDemo/Variant_Shooter/AI/EnvQueryContext_Target.cpp new file mode 100644 index 0000000..7a45abe --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/EnvQueryContext_Target.cpp @@ -0,0 +1,27 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Shooter/AI/EnvQueryContext_Target.h" +#include "EnvironmentQuery/Items/EnvQueryItemType_Actor.h" +#include "EnvironmentQuery/EnvQueryTypes.h" +#include "ShooterAIController.h" + +void UEnvQueryContext_Target::ProvideContext(FEnvQueryInstance& QueryInstance, FEnvQueryContextData& ContextData) const +{ + // get the controller from the query instance + if (AShooterAIController* Controller = Cast(QueryInstance.Owner)) + { + // ensure the target is valid + if (IsValid(Controller->GetCurrentTarget())) + { + // add the controller's target actor to the context + UEnvQueryItemType_Actor::SetContextHelper(ContextData, Controller->GetCurrentTarget()); + + } else { + + // if for any reason there's no target, default to the controller + UEnvQueryItemType_Actor::SetContextHelper(ContextData, Controller); + } + } + +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/EnvQueryContext_Target.h b/Source/FirstPersonDemo/Variant_Shooter/AI/EnvQueryContext_Target.h new file mode 100644 index 0000000..73a7359 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/EnvQueryContext_Target.h @@ -0,0 +1,22 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "EnvironmentQuery/EnvQueryContext.h" +#include "EnvQueryContext_Target.generated.h" + +/** + * Custom EnvQuery Context that returns the actor currently targeted by an NPC + */ +UCLASS() +class FIRSTPERSONDEMO_API UEnvQueryContext_Target : public UEnvQueryContext +{ + GENERATED_BODY() + +public: + + /** Provides the context locations or actors for this EnvQuery */ + virtual void ProvideContext(FEnvQueryInstance& QueryInstance, FEnvQueryContextData& ContextData) const override; + +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterAIController.cpp b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterAIController.cpp new file mode 100644 index 0000000..f95ab8d --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterAIController.cpp @@ -0,0 +1,78 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Shooter/AI/ShooterAIController.h" +#include "ShooterNPC.h" +#include "Components/StateTreeAIComponent.h" +#include "Perception/AIPerceptionComponent.h" +#include "Navigation/PathFollowingComponent.h" +#include "AI/Navigation/PathFollowingAgentInterface.h" + +AShooterAIController::AShooterAIController() +{ + // create the StateTree component + StateTreeAI = CreateDefaultSubobject(TEXT("StateTreeAI")); + StateTreeAI->SetStartLogicAutomatically(false); + + // create the AI perception component. It will be configured in BP + AIPerception = CreateDefaultSubobject(TEXT("AIPerception")); + + // subscribe to the AI perception delegates + AIPerception->OnTargetPerceptionUpdated.AddDynamic(this, &AShooterAIController::OnPerceptionUpdated); + AIPerception->OnTargetPerceptionForgotten.AddDynamic(this, &AShooterAIController::OnPerceptionForgotten); +} + +void AShooterAIController::OnPossess(APawn* InPawn) +{ + Super::OnPossess(InPawn); + + // ensure we're possessing an NPC + if (AShooterNPC* NPC = Cast(InPawn)) + { + // add the team tag to the pawn + NPC->Tags.Add(TeamTag); + + // subscribe to the pawn's OnDeath delegate + NPC->OnPawnDeath.AddDynamic(this, &AShooterAIController::OnPawnDeath); + + // start AI logic + StateTreeAI->StartLogic(); + } +} + +void AShooterAIController::OnPawnDeath() +{ + // stop movement + GetPathFollowingComponent()->AbortMove(*this, FPathFollowingResultFlags::UserAbort); + + // stop StateTree logic + StateTreeAI->StopLogic(FString("")); + + // unpossess the pawn + UnPossess(); + + // destroy this controller + Destroy(); +} + +void AShooterAIController::SetCurrentTarget(AActor* Target) +{ + TargetEnemy = Target; +} + +void AShooterAIController::ClearCurrentTarget() +{ + TargetEnemy = nullptr; +} + +void AShooterAIController::OnPerceptionUpdated(AActor* Actor, FAIStimulus Stimulus) +{ + // pass the data to the StateTree delegate hook + OnShooterPerceptionUpdated.ExecuteIfBound(Actor, Stimulus); +} + +void AShooterAIController::OnPerceptionForgotten(AActor* Actor) +{ + // pass the data to the StateTree delegate hook + OnShooterPerceptionForgotten.ExecuteIfBound(Actor); +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterAIController.h b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterAIController.h new file mode 100644 index 0000000..7638e84 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterAIController.h @@ -0,0 +1,85 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "AIController.h" +#include "ShooterAIController.generated.h" + +class UStateTreeAIComponent; +class UAIPerceptionComponent; +struct FAIStimulus; + +DECLARE_DELEGATE_TwoParams(FShooterPerceptionUpdatedDelegate, AActor*, const FAIStimulus&); +DECLARE_DELEGATE_OneParam(FShooterPerceptionForgottenDelegate, AActor*); + +/** + * Simple AI Controller for a first person shooter enemy + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AShooterAIController : public AAIController +{ + GENERATED_BODY() + + /** Runs the behavior StateTree for this NPC */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + UStateTreeAIComponent* StateTreeAI; + + /** Detects other actors through sight, hearing and other senses */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + UAIPerceptionComponent* AIPerception; + +protected: + + /** Team tag for pawn friend or foe identification */ + UPROPERTY(EditAnywhere, Category="Shooter") + FName TeamTag = FName("Enemy"); + + /** Enemy currently being targeted */ + TObjectPtr TargetEnemy; + +public: + + /** Called when an AI perception has been updated. StateTree task delegate hook */ + FShooterPerceptionUpdatedDelegate OnShooterPerceptionUpdated; + + /** Called when an AI perception has been forgotten. StateTree task delegate hook */ + FShooterPerceptionForgottenDelegate OnShooterPerceptionForgotten; + +public: + + /** Constructor */ + AShooterAIController(); + +protected: + + /** Pawn initialization */ + virtual void OnPossess(APawn* InPawn) override; + +protected: + + /** Called when the possessed pawn dies */ + UFUNCTION() + void OnPawnDeath(); + +public: + + /** Sets the targeted enemy */ + void SetCurrentTarget(AActor* Target); + + /** Clears the targeted enemy */ + void ClearCurrentTarget(); + + /** Returns the targeted enemy */ + AActor* GetCurrentTarget() const { return TargetEnemy; }; + +protected: + + /** Called when the AI perception component updates a perception on a given actor */ + UFUNCTION() + void OnPerceptionUpdated(AActor* Actor, FAIStimulus Stimulus); + + /** Called when the AI perception component forgets a given actor */ + UFUNCTION() + void OnPerceptionForgotten(AActor* Actor); +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPC.cpp b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPC.cpp new file mode 100644 index 0000000..3d1a21b --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPC.cpp @@ -0,0 +1,214 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Shooter/AI/ShooterNPC.h" +#include "ShooterWeapon.h" +#include "Components/SkeletalMeshComponent.h" +#include "Camera/CameraComponent.h" +#include "Kismet/KismetMathLibrary.h" +#include "Engine/World.h" +#include "ShooterGameMode.h" +#include "Components/CapsuleComponent.h" +#include "GameFramework/CharacterMovementComponent.h" +#include "TimerManager.h" + +void AShooterNPC::BeginPlay() +{ + Super::BeginPlay(); + + // spawn the weapon + FActorSpawnParameters SpawnParams; + SpawnParams.Owner = this; + SpawnParams.Instigator = this; + SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; + + Weapon = GetWorld()->SpawnActor(WeaponClass, GetActorTransform(), SpawnParams); +} + +void AShooterNPC::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // clear the death timer + GetWorld()->GetTimerManager().ClearTimer(DeathTimer); +} + +float AShooterNPC::TakeDamage(float Damage, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) +{ + // ignore if already dead + if (bIsDead) + { + return 0.0f; + } + + // Reduce HP + CurrentHP -= Damage; + + // Have we depleted HP? + if (CurrentHP <= 0.0f) + { + Die(); + } + + return Damage; +} + +void AShooterNPC::AttachWeaponMeshes(AShooterWeapon* WeaponToAttach) +{ + const FAttachmentTransformRules AttachmentRule(EAttachmentRule::SnapToTarget, false); + + // attach the weapon actor + WeaponToAttach->AttachToActor(this, AttachmentRule); + + // attach the weapon meshes + WeaponToAttach->GetFirstPersonMesh()->AttachToComponent(GetFirstPersonMesh(), AttachmentRule, FirstPersonWeaponSocket); + WeaponToAttach->GetThirdPersonMesh()->AttachToComponent(GetMesh(), AttachmentRule, ThirdPersonWeaponSocket); +} + +void AShooterNPC::PlayFiringMontage(UAnimMontage* Montage) +{ + // unused +} + +void AShooterNPC::AddWeaponRecoil(float Recoil) +{ + // unused +} + +void AShooterNPC::UpdateWeaponHUD(int32 CurrentAmmo, int32 MagazineSize) +{ + // unused +} + +FVector AShooterNPC::GetWeaponTargetLocation() +{ + // start aiming from the camera location + const FVector AimSource = GetFirstPersonCameraComponent()->GetComponentLocation(); + + FVector AimDir, AimTarget = FVector::ZeroVector; + + // do we have an aim target? + if (CurrentAimTarget) + { + // target the actor location + AimTarget = CurrentAimTarget->GetActorLocation(); + + // apply a vertical offset to target head/feet + AimTarget.Z += FMath::RandRange(MinAimOffsetZ, MaxAimOffsetZ); + + // get the aim direction and apply randomness in a cone + AimDir = (AimTarget - AimSource).GetSafeNormal(); + AimDir = UKismetMathLibrary::RandomUnitVectorInConeInDegrees(AimDir, AimVarianceHalfAngle); + + + } else { + + // no aim target, so just use the camera facing + AimDir = UKismetMathLibrary::RandomUnitVectorInConeInDegrees(GetFirstPersonCameraComponent()->GetForwardVector(), AimVarianceHalfAngle); + + } + + // calculate the unobstructed aim target location + AimTarget = AimSource + (AimDir * AimRange); + + // run a visibility trace to see if there's obstructions + FHitResult OutHit; + + FCollisionQueryParams QueryParams; + QueryParams.AddIgnoredActor(this); + + GetWorld()->LineTraceSingleByChannel(OutHit, AimSource, AimTarget, ECC_Visibility, QueryParams); + + // return either the impact point or the trace end + return OutHit.bBlockingHit ? OutHit.ImpactPoint : OutHit.TraceEnd; +} + +void AShooterNPC::AddWeaponClass(const TSubclassOf& InWeaponClass) +{ + // unused +} + +void AShooterNPC::OnWeaponActivated(AShooterWeapon* InWeapon) +{ + // unused +} + +void AShooterNPC::OnWeaponDeactivated(AShooterWeapon* InWeapon) +{ + // unused +} + +void AShooterNPC::OnSemiWeaponRefire() +{ + // are we still shooting? + if (bIsShooting) + { + // fire the weapon + Weapon->StartFiring(); + } +} + +void AShooterNPC::Die() +{ + // ignore if already dead + if (bIsDead) + { + return; + } + + // raise the dead flag + bIsDead = true; + + // grant the death tag to the character + Tags.Add(DeathTag); + + // call the delegate + OnPawnDeath.Broadcast(); + + // increment the team score + if (AShooterGameMode* GM = Cast(GetWorld()->GetAuthGameMode())) + { + GM->IncrementTeamScore(TeamByte); + } + + // disable capsule collision + GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision); + + // stop movement + GetCharacterMovement()->StopMovementImmediately(); + GetCharacterMovement()->StopActiveMovement(); + + // enable ragdoll physics on the third person mesh + GetMesh()->SetCollisionProfileName(RagdollCollisionProfile); + GetMesh()->SetSimulatePhysics(true); + GetMesh()->SetPhysicsBlendWeight(1.0f); + + // schedule actor destruction + GetWorld()->GetTimerManager().SetTimer(DeathTimer, this, &AShooterNPC::DeferredDestruction, DeferredDestructionTime, false); +} + +void AShooterNPC::DeferredDestruction() +{ + Destroy(); +} + +void AShooterNPC::StartShooting(AActor* ActorToShoot) +{ + // save the aim target + CurrentAimTarget = ActorToShoot; + + // raise the flag + bIsShooting = true; + + // signal the weapon + Weapon->StartFiring(); +} + +void AShooterNPC::StopShooting() +{ + // lower the flag + bIsShooting = false; + + // signal the weapon + Weapon->StopFiring(); +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPC.h b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPC.h new file mode 100644 index 0000000..8140976 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPC.h @@ -0,0 +1,157 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "FirstPersonDemoCharacter.h" +#include "ShooterWeaponHolder.h" +#include "ShooterNPC.generated.h" + +DECLARE_DYNAMIC_MULTICAST_DELEGATE(FPawnDeathDelegate); + +class AShooterWeapon; + +/** + * A simple AI-controlled shooter game NPC + * Executes its behavior through a StateTree managed by its AI Controller + * Holds and manages a weapon + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AShooterNPC : public AFirstPersonDemoCharacter, public IShooterWeaponHolder +{ + GENERATED_BODY() + +public: + + /** Current HP for this character. It dies if it reaches zero through damage */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Damage") + float CurrentHP = 100.0f; + +protected: + + /** Name of the collision profile to use during ragdoll death */ + UPROPERTY(EditAnywhere, Category="Damage") + FName RagdollCollisionProfile = FName("Ragdoll"); + + /** Time to wait after death before destroying this actor */ + UPROPERTY(EditAnywhere, Category="Damage") + float DeferredDestructionTime = 5.0f; + + /** Team byte for this character */ + UPROPERTY(EditAnywhere, Category="Team") + uint8 TeamByte = 1; + + /** Actor tag to grant this character when it dies */ + UPROPERTY(EditAnywhere, Category="Team") + FName DeathTag = FName("Dead"); + + /** Pointer to the equipped weapon */ + TObjectPtr Weapon; + + /** Type of weapon to spawn for this character */ + UPROPERTY(EditAnywhere, Category="Weapon") + TSubclassOf WeaponClass; + + /** Name of the first person mesh weapon socket */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Weapons") + FName FirstPersonWeaponSocket = FName("HandGrip_R"); + + /** Name of the third person mesh weapon socket */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category ="Weapons") + FName ThirdPersonWeaponSocket = FName("HandGrip_R"); + + /** Max range for aiming calculations */ + UPROPERTY(EditAnywhere, Category="Aim") + float AimRange = 10000.0f; + + /** Cone variance to apply while aiming */ + UPROPERTY(EditAnywhere, Category="Aim") + float AimVarianceHalfAngle = 10.0f; + + /** Minimum vertical offset from the target center to apply when aiming */ + UPROPERTY(EditAnywhere, Category="Aim") + float MinAimOffsetZ = -35.0f; + + /** Maximum vertical offset from the target center to apply when aiming */ + UPROPERTY(EditAnywhere, Category="Aim") + float MaxAimOffsetZ = -60.0f; + + /** Actor currently being targeted */ + TObjectPtr CurrentAimTarget; + + /** If true, this character is currently shooting its weapon */ + bool bIsShooting = false; + + /** If true, this character has already died */ + bool bIsDead = false; + + /** Deferred destruction on death timer */ + FTimerHandle DeathTimer; + +public: + + /** Delegate called when this NPC dies */ + FPawnDeathDelegate OnPawnDeath; + +protected: + + /** Gameplay initialization */ + virtual void BeginPlay() override; + + /** Gameplay cleanup */ + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + +public: + + /** Handle incoming damage */ + virtual float TakeDamage(float Damage, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override; + +public: + + //~Begin IShooterWeaponHolder interface + + /** Attaches a weapon's meshes to the owner */ + virtual void AttachWeaponMeshes(AShooterWeapon* Weapon) override; + + /** Plays the firing montage for the weapon */ + virtual void PlayFiringMontage(UAnimMontage* Montage) override; + + /** Applies weapon recoil to the owner */ + virtual void AddWeaponRecoil(float Recoil) override; + + /** Updates the weapon's HUD with the current ammo count */ + virtual void UpdateWeaponHUD(int32 CurrentAmmo, int32 MagazineSize) override; + + /** Calculates and returns the aim location for the weapon */ + virtual FVector GetWeaponTargetLocation() override; + + /** Gives a weapon of this class to the owner */ + virtual void AddWeaponClass(const TSubclassOf& WeaponClass) override; + + /** Activates the passed weapon */ + virtual void OnWeaponActivated(AShooterWeapon* Weapon) override; + + /** Deactivates the passed weapon */ + virtual void OnWeaponDeactivated(AShooterWeapon* Weapon) override; + + /** Notifies the owner that the weapon cooldown has expired and it's ready to shoot again */ + virtual void OnSemiWeaponRefire() override; + + //~End IShooterWeaponHolder interface + +protected: + + /** Called when HP is depleted and the character should die */ + void Die(); + + /** Called after death to destroy the actor */ + void DeferredDestruction(); + +public: + + /** Signals this character to start shooting at the passed actor */ + void StartShooting(AActor* ActorToShoot); + + /** Signals this character to stop shooting */ + void StopShooting(); +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPCSpawner.cpp b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPCSpawner.cpp new file mode 100644 index 0000000..0e893a2 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPCSpawner.cpp @@ -0,0 +1,85 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Shooter/AI/ShooterNPCSpawner.h" +#include "Engine/World.h" +#include "Components/SceneComponent.h" +#include "Components/CapsuleComponent.h" +#include "Components/ArrowComponent.h" +#include "TimerManager.h" +#include "ShooterNPC.h" + +// Sets default values +AShooterNPCSpawner::AShooterNPCSpawner() +{ + PrimaryActorTick.bCanEverTick = false; + + // create the root + RootComponent = CreateDefaultSubobject(TEXT("Root")); + + // create the reference spawn capsule + SpawnCapsule = CreateDefaultSubobject(TEXT("Spawn Capsule")); + SpawnCapsule->SetupAttachment(RootComponent); + + SpawnCapsule->SetRelativeLocation(FVector(0.0f, 0.0f, 90.0f)); + SpawnCapsule->SetCapsuleSize(35.0f, 90.0f); + SpawnCapsule->SetCollisionProfileName(FName("NoCollision")); + + SpawnDirection = CreateDefaultSubobject(TEXT("Spawn Direction")); + SpawnDirection->SetupAttachment(RootComponent); +} + +void AShooterNPCSpawner::BeginPlay() +{ + Super::BeginPlay(); + + // ensure we don't spawn NPCs if our initial spawn count is zero + if (SpawnCount > 0) + { + // schedule the first NPC spawn + GetWorld()->GetTimerManager().SetTimer(SpawnTimer, this, &AShooterNPCSpawner::SpawnNPC, InitialSpawnDelay); + } +} + +void AShooterNPCSpawner::EndPlay(EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // clear the spawn timer + GetWorld()->GetTimerManager().ClearTimer(SpawnTimer); +} + +void AShooterNPCSpawner::SpawnNPC() +{ + // ensure the NPC class is valid + if (IsValid(NPCClass)) + { + // spawn the NPC at the reference capsule's transform + FActorSpawnParameters SpawnParams; + SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn; + + AShooterNPC* SpawnedNPC = GetWorld()->SpawnActor(NPCClass, SpawnCapsule->GetComponentTransform(), SpawnParams); + + // was the NPC successfully created? + if (SpawnedNPC) + { + // subscribe to the death delegate + SpawnedNPC->OnPawnDeath.AddDynamic(this, &AShooterNPCSpawner::OnNPCDied); + } + } +} + +void AShooterNPCSpawner::OnNPCDied() +{ + // decrease the spawn counter + --SpawnCount; + + // is this the last NPC we should spawn? + if (SpawnCount <= 0) + { + return; + } + + // schedule the next NPC spawn + GetWorld()->GetTimerManager().SetTimer(SpawnTimer, this, &AShooterNPCSpawner::SpawnNPC, RespawnDelay); +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPCSpawner.h b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPCSpawner.h new file mode 100644 index 0000000..8acb515 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterNPCSpawner.h @@ -0,0 +1,71 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "ShooterNPCSpawner.generated.h" + +class UCapsuleComponent; +class UArrowComponent; +class AShooterNPC; + +/** + * A basic Actor in charge of spawning Shooter NPCs and monitoring their deaths. + * NPCs will be spawned one by one, and the spawner will wait until it dies before spawning a new one. + */ +UCLASS() +class FIRSTPERSONDEMO_API AShooterNPCSpawner : public AActor +{ + GENERATED_BODY() + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + UCapsuleComponent* SpawnCapsule; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components", meta = (AllowPrivateAccess = "true")) + UArrowComponent* SpawnDirection; + +protected: + + /** Type of NPC to spawn */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="NPC Spawner") + TSubclassOf NPCClass; + + /** Time to wait before spawning the first NPC on game start */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="NPC Spawner", meta = (ClampMin = 0, ClampMax = 10)) + float InitialSpawnDelay = 5.0f; + + /** Number of NPCs to spawn */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="NPC Spawner", meta = (ClampMin = 0, ClampMax = 100)) + int32 SpawnCount = 1; + + /** Time to wait before spawning the next NPC after the current one dies */ + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="NPC Spawner", meta = (ClampMin = 0, ClampMax = 10)) + float RespawnDelay = 5.0f; + + /** Timer to spawn NPCs after a delay */ + FTimerHandle SpawnTimer; + +public: + + /** Constructor */ + AShooterNPCSpawner(); + +public: + + /** Initialization */ + virtual void BeginPlay() override; + + /** Cleanup */ + virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override; + +protected: + + /** Spawn an NPC and subscribe to its death event */ + void SpawnNPC(); + + /** Called when the spawned NPC has died */ + UFUNCTION() + void OnNPCDied(); + +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterStateTreeUtility.cpp b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterStateTreeUtility.cpp new file mode 100644 index 0000000..e8f1e74 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterStateTreeUtility.cpp @@ -0,0 +1,361 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Shooter/AI/ShooterStateTreeUtility.h" +#include "StateTreeExecutionContext.h" +#include "ShooterNPC.h" +#include "Camera/CameraComponent.h" +#include "AIController.h" +#include "Perception/AIPerceptionComponent.h" +#include "ShooterAIController.h" +#include "StateTreeAsyncExecutionContext.h" + +bool FStateTreeLineOfSightToTargetCondition::TestCondition(FStateTreeExecutionContext& Context) const +{ + const FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // ensure the target is valid + if (!IsValid(InstanceData.Target)) + { + return !InstanceData.bMustHaveLineOfSight; + } + + // check if the character is facing towards the target + const FVector TargetDir = (InstanceData.Target->GetActorLocation() - InstanceData.Character->GetActorLocation()).GetSafeNormal(); + + const float FacingDot = FVector::DotProduct(TargetDir, InstanceData.Character->GetActorForwardVector()); + const float MaxDot = FMath::Cos(FMath::DegreesToRadians(InstanceData.LineOfSightConeAngle)); + + // is the facing outside of our cone half angle? + if (FacingDot <= MaxDot) + { + return !InstanceData.bMustHaveLineOfSight; + } + + // get the target's bounding box + FVector CenterOfMass, Extent; + InstanceData.Target->GetActorBounds(true, CenterOfMass, Extent, false); + + // divide the vertical extent by the number of line of sight checks we'll do + const float ExtentZOffset = Extent.Z * 2.0f / InstanceData.NumberOfVerticalLineOfSightChecks; + + // get the character's camera location as the source for the line checks + const FVector Start = InstanceData.Character->GetFirstPersonCameraComponent()->GetComponentLocation(); + + // ignore the character and target. We want to ensure there's an unobstructed trace not counting them + FCollisionQueryParams QueryParams; + QueryParams.AddIgnoredActor(InstanceData.Character); + QueryParams.AddIgnoredActor(InstanceData.Target); + + FHitResult OutHit; + + // run a number of vertically offset line traces to the target location + for (int32 i = 0; i < InstanceData.NumberOfVerticalLineOfSightChecks - 1; ++i) + { + // calculate the endpoint for the trace + const FVector End = CenterOfMass + FVector(0.0f, 0.0f, Extent.Z - ExtentZOffset * i); + + InstanceData.Character->GetWorld()->LineTraceSingleByChannel(OutHit, Start, End, ECC_Visibility, QueryParams); + + // is the trace unobstructed? + if (!OutHit.bBlockingHit) + { + // we only need one unobstructed trace, so terminate early + return InstanceData.bMustHaveLineOfSight; + } + } + + // no line of sight found + return !InstanceData.bMustHaveLineOfSight; +} + +#if WITH_EDITOR +FText FStateTreeLineOfSightToTargetCondition::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting /*= EStateTreeNodeFormatting::Text*/) const +{ + return FText::FromString("Has Line of Sight"); +} +#endif + +//////////////////////////////////////////////////////////////////// + +EStateTreeRunStatus FStateTreeFaceActorTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned from another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // set the AI Controller's focus + InstanceData.Controller->SetFocus(InstanceData.ActorToFaceTowards); + } + + return EStateTreeRunStatus::Running; +} + +void FStateTreeFaceActorTask::ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned to another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // clear the AI Controller's focus + InstanceData.Controller->ClearFocus(EAIFocusPriority::Gameplay); + } +} + +#if WITH_EDITOR +FText FStateTreeFaceActorTask::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting /*= EStateTreeNodeFormatting::Text*/) const +{ + return FText::FromString("Face Towards Actor"); +} +#endif // WITH_EDITOR + +//////////////////////////////////////////////////////////////////// + +EStateTreeRunStatus FStateTreeFaceLocationTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned from another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // set the AI Controller's focus + InstanceData.Controller->SetFocalPoint(InstanceData.FaceLocation); + } + + return EStateTreeRunStatus::Running; +} + +void FStateTreeFaceLocationTask::ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned to another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // clear the AI Controller's focus + InstanceData.Controller->ClearFocus(EAIFocusPriority::Gameplay); + } +} + +#if WITH_EDITOR +FText FStateTreeFaceLocationTask::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting /*= EStateTreeNodeFormatting::Text*/) const +{ + return FText::FromString("Face Towards Location"); +} +#endif // WITH_EDITOR + +//////////////////////////////////////////////////////////////////// + +EStateTreeRunStatus FStateTreeSetRandomFloatTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned to another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // calculate the output value + InstanceData.OutValue = FMath::RandRange(InstanceData.MinValue, InstanceData.MaxValue); + } + + return EStateTreeRunStatus::Running; +} + +#if WITH_EDITOR +FText FStateTreeSetRandomFloatTask::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting /*= EStateTreeNodeFormatting::Text*/) const +{ + return FText::FromString("Set Random Float"); +} +#endif // WITH_EDITOR + +//////////////////////////////////////////////////////////////////// + +EStateTreeRunStatus FStateTreeShootAtTargetTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned from another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // tell the character to shoot the target + InstanceData.Character->StartShooting(InstanceData.Target); + } + + return EStateTreeRunStatus::Running; +} + +void FStateTreeShootAtTargetTask::ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned to another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // tell the character to stop shooting + InstanceData.Character->StopShooting(); + } +} + +#if WITH_EDITOR +FText FStateTreeShootAtTargetTask::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting /*= EStateTreeNodeFormatting::Text*/) const +{ + return FText::FromString("Shoot at Target"); +} +#endif // WITH_EDITOR + +EStateTreeRunStatus FStateTreeSenseEnemiesTask::EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned from another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // bind the perception updated delegate on the controller + InstanceData.Controller->OnShooterPerceptionUpdated.BindLambda( + [WeakContext = Context.MakeWeakExecutionContext()](AActor* SensedActor, const FAIStimulus& Stimulus) + { + // get the instance data inside the lambda + const FStateTreeStrongExecutionContext StrongContext = WeakContext.MakeStrongExecutionContext(); + if (FInstanceDataType* LambdaInstanceData = StrongContext.GetInstanceDataPtr()) + { + if (SensedActor->ActorHasTag(LambdaInstanceData->SenseTag)) + { + bool bDirectLOS = false; + + // calculate the direction of the stimulus + const FVector StimulusDir = (Stimulus.StimulusLocation - LambdaInstanceData->Character->GetActorLocation()).GetSafeNormal(); + + // infer the angle from the dot product between the character facing and the stimulus direction + const float DirDot = FVector::DotProduct(StimulusDir, LambdaInstanceData->Character->GetActorForwardVector()); + const float MaxDot = FMath::Cos(FMath::DegreesToRadians(LambdaInstanceData->DirectLineOfSightCone)); + + // is the direction within our perception cone? + if (DirDot >= MaxDot) + { + // run a line trace between the character and the sensed actor + FCollisionQueryParams QueryParams; + QueryParams.AddIgnoredActor(LambdaInstanceData->Character); + QueryParams.AddIgnoredActor(SensedActor); + + FHitResult OutHit; + + // we have direct line of sight if this trace is unobstructed + bDirectLOS = !LambdaInstanceData->Character->GetWorld()->LineTraceSingleByChannel(OutHit, LambdaInstanceData->Character->GetActorLocation(), SensedActor->GetActorLocation(), ECC_Visibility, QueryParams); + + } + + // check if we have a direct line of sight to the stimulus + if (bDirectLOS) + { + // set the controller's target + LambdaInstanceData->Controller->SetCurrentTarget(SensedActor); + + // set the task output + LambdaInstanceData->TargetActor = SensedActor; + + // set the flags + LambdaInstanceData->bHasTarget = true; + LambdaInstanceData->bHasInvestigateLocation = false; + + // no direct line of sight to target + } else { + + // if we already have a target, ignore the partial sense and keep on them + if (!IsValid(LambdaInstanceData->TargetActor)) + { + // is this stimulus stronger than the last one we had? + if (Stimulus.Strength > LambdaInstanceData->LastStimulusStrength) + { + // update the stimulus strength + LambdaInstanceData->LastStimulusStrength = Stimulus.Strength; + + // set the investigate location + LambdaInstanceData->InvestigateLocation = Stimulus.StimulusLocation; + + // set the investigate flag + LambdaInstanceData->bHasInvestigateLocation = true; + } + } + } + } + } + } + ); + + // bind the perception forgotten delegate on the controller + InstanceData.Controller->OnShooterPerceptionForgotten.BindLambda( + [WeakContext = Context.MakeWeakExecutionContext()](AActor* SensedActor) + { + // get the instance data inside the lambda + const FStateTreeStrongExecutionContext StrongContext = WeakContext.MakeStrongExecutionContext(); + if (FInstanceDataType* LambdaInstanceData = StrongContext.GetInstanceDataPtr()) + { + bool bForget = false; + + // are we forgetting the current target? + if (SensedActor == LambdaInstanceData->TargetActor) + { + bForget = true; + } + else + { + // are we forgetting about a partial sense? + if (!IsValid(LambdaInstanceData->TargetActor)) + { + bForget = true; + } + } + + if (bForget) + { + // clear the target + LambdaInstanceData->TargetActor = nullptr; + + // clear the flags + LambdaInstanceData->bHasInvestigateLocation = false; + LambdaInstanceData->bHasTarget = false; + + // reset the stimulus strength + LambdaInstanceData->LastStimulusStrength = 0.0f; + + // clear the target on the controller + LambdaInstanceData->Controller->ClearCurrentTarget(); + LambdaInstanceData->Controller->ClearFocus(EAIFocusPriority::Gameplay); + } + } + } + ); + } + + return EStateTreeRunStatus::Running; +} + +void FStateTreeSenseEnemiesTask::ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const +{ + // have we transitioned to another state? + if (Transition.ChangeType == EStateTreeStateChangeType::Changed) + { + // get the instance data + FInstanceDataType& InstanceData = Context.GetInstanceData(*this); + + // unbind the perception delegates + InstanceData.Controller->OnShooterPerceptionUpdated.Unbind(); + InstanceData.Controller->OnShooterPerceptionForgotten.Unbind(); + } +} + +#if WITH_EDITOR +FText FStateTreeSenseEnemiesTask::GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting /*= EStateTreeNodeFormatting::Text*/) const +{ + return FText::FromString("Sense Enemies"); +} +#endif // WITH_EDITOR \ No newline at end of file diff --git a/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterStateTreeUtility.h b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterStateTreeUtility.h new file mode 100644 index 0000000..a9e24c8 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/AI/ShooterStateTreeUtility.h @@ -0,0 +1,309 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "StateTreeTaskBase.h" +#include "StateTreeConditionBase.h" + +#include "ShooterStateTreeUtility.generated.h" + +class AShooterNPC; +class AAIController; +class AShooterAIController; + +/** + * Instance data struct for the FStateTreeLineOfSightToTargetCondition condition + */ +USTRUCT() +struct FStateTreeLineOfSightToTargetConditionInstanceData +{ + GENERATED_BODY() + + /** Targeting character */ + UPROPERTY(EditAnywhere, Category = "Context") + AShooterNPC* Character; + + /** Target to check line of sight for */ + UPROPERTY(EditAnywhere, Category = "Condition") + AActor* Target; + + /** Max allowed line of sight cone angle, in degrees */ + UPROPERTY(EditAnywhere, Category = "Condition") + float LineOfSightConeAngle = 35.0f; + + /** Number of vertical line of sight checks to run to try and get around low obstacles */ + UPROPERTY(EditAnywhere, Category = "Condition") + int32 NumberOfVerticalLineOfSightChecks = 5; + + /** If true, the condition passes if the character has line of sight */ + UPROPERTY(EditAnywhere, Category = "Condition") + bool bMustHaveLineOfSight = true; +}; +STATETREE_POD_INSTANCEDATA(FStateTreeLineOfSightToTargetConditionInstanceData); + +/** + * StateTree condition to check if the character is grounded + */ +USTRUCT(DisplayName = "Has Line of Sight to Target", Category="Shooter") +struct FStateTreeLineOfSightToTargetCondition : public FStateTreeConditionCommonBase +{ + GENERATED_BODY() + + /** Set the instance data type */ + using FInstanceDataType = FStateTreeLineOfSightToTargetConditionInstanceData; + virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); } + + /** Default constructor */ + FStateTreeLineOfSightToTargetCondition() = default; + + /** Tests the StateTree condition */ + virtual bool TestCondition(FStateTreeExecutionContext& Context) const override; + +#if WITH_EDITOR + /** Provides the description string */ + virtual FText GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting = EStateTreeNodeFormatting::Text) const override; +#endif + +}; + +//////////////////////////////////////////////////////////////////// + +/** + * Instance data struct for the Face Towards Actor StateTree task + */ +USTRUCT() +struct FStateTreeFaceActorInstanceData +{ + GENERATED_BODY() + + /** AI Controller that will determine the focused actor */ + UPROPERTY(EditAnywhere, Category = Context) + TObjectPtr Controller; + + /** Actor that will be faced towards */ + UPROPERTY(EditAnywhere, Category = Input) + TObjectPtr ActorToFaceTowards; +}; + +/** + * StateTree task to face an AI-Controlled Pawn towards an Actor + */ +USTRUCT(meta=(DisplayName="Face Towards Actor", Category="Shooter")) +struct FStateTreeFaceActorTask : public FStateTreeTaskCommonBase +{ + GENERATED_BODY() + + /* Ensure we're using the correct instance data struct */ + using FInstanceDataType = FStateTreeFaceActorInstanceData; + virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); } + + /** Runs when the owning state is entered */ + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + + /** Runs when the owning state is ended */ + virtual void ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + +#if WITH_EDITOR + virtual FText GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting = EStateTreeNodeFormatting::Text) const override; +#endif // WITH_EDITOR +}; + +//////////////////////////////////////////////////////////////////// + +/** + * Instance data struct for the Face Towards Location StateTree task + */ +USTRUCT() +struct FStateTreeFaceLocationInstanceData +{ + GENERATED_BODY() + + /** AI Controller that will determine the focused location */ + UPROPERTY(EditAnywhere, Category = Context) + TObjectPtr Controller; + + /** Location that will be faced towards */ + UPROPERTY(EditAnywhere, Category = Parameter) + FVector FaceLocation = FVector::ZeroVector; +}; + +/** + * StateTree task to face an AI-Controlled Pawn towards a world location + */ +USTRUCT(meta=(DisplayName="Face Towards Location", Category="Shooter")) +struct FStateTreeFaceLocationTask : public FStateTreeTaskCommonBase +{ + GENERATED_BODY() + + /* Ensure we're using the correct instance data struct */ + using FInstanceDataType = FStateTreeFaceLocationInstanceData; + virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); } + + /** Runs when the owning state is entered */ + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + + /** Runs when the owning state is ended */ + virtual void ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + +#if WITH_EDITOR + virtual FText GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting = EStateTreeNodeFormatting::Text) const override; +#endif // WITH_EDITOR +}; + +//////////////////////////////////////////////////////////////////// + +/** + * Instance data struct for the Set Random Float StateTree task + */ +USTRUCT() +struct FStateTreeSetRandomFloatData +{ + GENERATED_BODY() + + /** Minimum random value */ + UPROPERTY(EditAnywhere, Category = Parameter) + float MinValue = 0.0f; + + /** Maximum random value */ + UPROPERTY(EditAnywhere, Category = Parameter) + float MaxValue = 0.0f; + + /** Output calculated value */ + UPROPERTY(EditAnywhere, Category = Output) + float OutValue = 0.0f; +}; + +/** + * StateTree task to calculate a random float value within the specified range + */ +USTRUCT(meta=(DisplayName="Set Random Float", Category="Shooter")) +struct FStateTreeSetRandomFloatTask : public FStateTreeTaskCommonBase +{ + GENERATED_BODY() + + /* Ensure we're using the correct instance data struct */ + using FInstanceDataType = FStateTreeSetRandomFloatData; + virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); } + + /** Runs when the owning state is entered */ + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + +#if WITH_EDITOR + virtual FText GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting = EStateTreeNodeFormatting::Text) const override; +#endif // WITH_EDITOR +}; + +//////////////////////////////////////////////////////////////////// + +/** + * Instance data struct for the Shoot At Target StateTree task + */ +USTRUCT() +struct FStateTreeShootAtTargetInstanceData +{ + GENERATED_BODY() + + /** NPC that will do the shooting */ + UPROPERTY(EditAnywhere, Category = Context) + TObjectPtr Character; + + /** Target to shoot at */ + UPROPERTY(EditAnywhere, Category = Input) + TObjectPtr Target; +}; + +/** + * StateTree task to have an NPC shoot at an actor + */ +USTRUCT(meta=(DisplayName="Shoot at Target", Category="Shooter")) +struct FStateTreeShootAtTargetTask : public FStateTreeTaskCommonBase +{ + GENERATED_BODY() + + /* Ensure we're using the correct instance data struct */ + using FInstanceDataType = FStateTreeShootAtTargetInstanceData; + virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); } + + /** Runs when the owning state is entered */ + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + + /** Runs when the owning state is ended */ + virtual void ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + +#if WITH_EDITOR + virtual FText GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting = EStateTreeNodeFormatting::Text) const override; +#endif // WITH_EDITOR +}; + +//////////////////////////////////////////////////////////////////// + +/** + * Instance data struct for the Sense Enemies StateTree task + */ +USTRUCT() +struct FStateTreeSenseEnemiesInstanceData +{ + GENERATED_BODY() + + /** Sensing AI Controller */ + UPROPERTY(EditAnywhere, Category = Context) + TObjectPtr Controller; + + /** Sensing NPC */ + UPROPERTY(EditAnywhere, Category = Context) + TObjectPtr Character; + + /** Sensed actor to target */ + UPROPERTY(EditAnywhere, Category = Output) + TObjectPtr TargetActor; + + /** Sensed location to investigate */ + UPROPERTY(EditAnywhere, Category = Output) + FVector InvestigateLocation = FVector::ZeroVector; + + /** True if a target was successfully sensed */ + UPROPERTY(EditAnywhere, Category = Output) + bool bHasTarget = false; + + /** True if an investigate location was successfully sensed */ + UPROPERTY(EditAnywhere, Category = Output) + bool bHasInvestigateLocation = false; + + /** Tag required on sensed actors */ + UPROPERTY(EditAnywhere, Category = Parameter) + FName SenseTag = FName("Player"); + + /** Line of sight cone half angle to consider a full sense */ + UPROPERTY(EditAnywhere, Category = Parameter) + float DirectLineOfSightCone = 85.0f; + + /** Strength of the last processed stimulus */ + UPROPERTY(EditAnywhere) + float LastStimulusStrength = 0.0f; +}; + +/** + * StateTree task to have an NPC process AI Perceptions and sense nearby enemies + */ +USTRUCT(meta=(DisplayName="Sense Enemies", Category="Shooter")) +struct FStateTreeSenseEnemiesTask : public FStateTreeTaskCommonBase +{ + GENERATED_BODY() + + /* Ensure we're using the correct instance data struct */ + using FInstanceDataType = FStateTreeSenseEnemiesInstanceData; + virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); } + + /** Runs when the owning state is entered */ + virtual EStateTreeRunStatus EnterState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + + /** Runs when the owning state is ended */ + virtual void ExitState(FStateTreeExecutionContext& Context, const FStateTreeTransitionResult& Transition) const override; + +#if WITH_EDITOR + virtual FText GetDescription(const FGuid& ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup& BindingLookup, EStateTreeNodeFormatting Formatting = EStateTreeNodeFormatting::Text) const override; +#endif // WITH_EDITOR +}; + +//////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/Source/FirstPersonDemo/Variant_Shooter/ShooterCharacter.cpp b/Source/FirstPersonDemo/Variant_Shooter/ShooterCharacter.cpp new file mode 100644 index 0000000..e499865 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/ShooterCharacter.cpp @@ -0,0 +1,328 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "ShooterCharacter.h" +#include "ShooterWeapon.h" +#include "EnhancedInputComponent.h" +#include "Components/InputComponent.h" +#include "Components/PawnNoiseEmitterComponent.h" +#include "GameFramework/CharacterMovementComponent.h" +#include "Components/SkeletalMeshComponent.h" +#include "Engine/World.h" +#include "Camera/CameraComponent.h" +#include "TimerManager.h" +#include "ShooterGameMode.h" + +AShooterCharacter::AShooterCharacter() +{ + // create the noise emitter component + PawnNoiseEmitter = CreateDefaultSubobject(TEXT("Pawn Noise Emitter")); + + // configure movement + GetCharacterMovement()->RotationRate = FRotator(0.0f, 600.0f, 0.0f); +} + +void AShooterCharacter::BeginPlay() +{ + Super::BeginPlay(); + + // reset HP to max + CurrentHP = MaxHP; + + // update the HUD + OnDamaged.Broadcast(1.0f); +} + +void AShooterCharacter::EndPlay(EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // clear the respawn timer + GetWorld()->GetTimerManager().ClearTimer(RespawnTimer); +} + +void AShooterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + // base class handles move, aim and jump inputs + Super::SetupPlayerInputComponent(PlayerInputComponent); + + // Set up action bindings + if (UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerInputComponent)) + { + // Firing + EnhancedInputComponent->BindAction(FireAction, ETriggerEvent::Started, this, &AShooterCharacter::DoStartFiring); + EnhancedInputComponent->BindAction(FireAction, ETriggerEvent::Completed, this, &AShooterCharacter::DoStopFiring); + + // Switch weapon + EnhancedInputComponent->BindAction(SwitchWeaponAction, ETriggerEvent::Triggered, this, &AShooterCharacter::DoSwitchWeapon); + } + +} + +float AShooterCharacter::TakeDamage(float Damage, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) +{ + // ignore if already dead + if (CurrentHP <= 0.0f) + { + return 0.0f; + } + + // Reduce HP + CurrentHP -= Damage; + + // Have we depleted HP? + if (CurrentHP <= 0.0f) + { + Die(); + } + + // update the HUD + OnDamaged.Broadcast(FMath::Max(0.0f, CurrentHP / MaxHP)); + + return Damage; +} + +void AShooterCharacter::DoAim(float Yaw, float Pitch) +{ + // only route inputs if the character is not dead + if (!IsDead()) + { + Super::DoAim(Yaw, Pitch); + } +} + +void AShooterCharacter::DoMove(float Right, float Forward) +{ + // only route inputs if the character is not dead + if (!IsDead()) + { + Super::DoMove(Right, Forward); + } +} + +void AShooterCharacter::DoJumpStart() +{ + // only route inputs if the character is not dead + if (!IsDead()) + { + Super::DoJumpStart(); + } +} + +void AShooterCharacter::DoJumpEnd() +{ + // only route inputs if the character is not dead + if (!IsDead()) + { + Super::DoJumpEnd(); + } +} + +void AShooterCharacter::DoStartFiring() +{ + // fire the current weapon + if (CurrentWeapon && !IsDead()) + { + CurrentWeapon->StartFiring(); + } +} + +void AShooterCharacter::DoStopFiring() +{ + // stop firing the current weapon + if (CurrentWeapon && !IsDead()) + { + CurrentWeapon->StopFiring(); + } +} + +void AShooterCharacter::DoSwitchWeapon() +{ + // ensure we have at least two weapons two switch between + if (OwnedWeapons.Num() > 1 && !IsDead()) + { + // deactivate the old weapon + CurrentWeapon->DeactivateWeapon(); + + // find the index of the current weapon in the owned list + int32 WeaponIndex = OwnedWeapons.Find(CurrentWeapon); + + // is this the last weapon? + if (WeaponIndex == OwnedWeapons.Num() - 1) + { + // loop back to the beginning of the array + WeaponIndex = 0; + } + else { + // select the next weapon index + ++WeaponIndex; + } + + // set the new weapon as current + CurrentWeapon = OwnedWeapons[WeaponIndex]; + + // activate the new weapon + CurrentWeapon->ActivateWeapon(); + } +} + +void AShooterCharacter::AttachWeaponMeshes(AShooterWeapon* Weapon) +{ + const FAttachmentTransformRules AttachmentRule(EAttachmentRule::SnapToTarget, false); + + // attach the weapon actor + Weapon->AttachToActor(this, AttachmentRule); + + // attach the weapon meshes + Weapon->GetFirstPersonMesh()->AttachToComponent(GetFirstPersonMesh(), AttachmentRule, FirstPersonWeaponSocket); + Weapon->GetThirdPersonMesh()->AttachToComponent(GetMesh(), AttachmentRule, FirstPersonWeaponSocket); + +} + +void AShooterCharacter::PlayFiringMontage(UAnimMontage* Montage) +{ + // stub +} + +void AShooterCharacter::AddWeaponRecoil(float Recoil) +{ + // apply the recoil as pitch input + AddControllerPitchInput(Recoil); +} + +void AShooterCharacter::UpdateWeaponHUD(int32 CurrentAmmo, int32 MagazineSize) +{ + OnBulletCountUpdated.Broadcast(MagazineSize, CurrentAmmo); +} + +FVector AShooterCharacter::GetWeaponTargetLocation() +{ + // trace ahead from the camera viewpoint + FHitResult OutHit; + + const FVector Start = GetFirstPersonCameraComponent()->GetComponentLocation(); + const FVector End = Start + (GetFirstPersonCameraComponent()->GetForwardVector() * MaxAimDistance); + + FCollisionQueryParams QueryParams; + QueryParams.AddIgnoredActor(this); + + GetWorld()->LineTraceSingleByChannel(OutHit, Start, End, ECC_Visibility, QueryParams); + + // return either the impact point or the trace end + return OutHit.bBlockingHit ? OutHit.ImpactPoint : OutHit.TraceEnd; +} + +void AShooterCharacter::AddWeaponClass(const TSubclassOf& WeaponClass) +{ + // do we already own this weapon? + AShooterWeapon* OwnedWeapon = FindWeaponOfType(WeaponClass); + + if (!OwnedWeapon) + { + // spawn the new weapon + FActorSpawnParameters SpawnParams; + SpawnParams.Owner = this; + SpawnParams.Instigator = this; + SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; + SpawnParams.TransformScaleMethod = ESpawnActorScaleMethod::MultiplyWithRoot; + + AShooterWeapon* AddedWeapon = GetWorld()->SpawnActor(WeaponClass, GetActorTransform(), SpawnParams); + + if (AddedWeapon) + { + // add the weapon to the owned list + OwnedWeapons.Add(AddedWeapon); + + // if we have an existing weapon, deactivate it + if (CurrentWeapon) + { + CurrentWeapon->DeactivateWeapon(); + } + + // switch to the new weapon + CurrentWeapon = AddedWeapon; + CurrentWeapon->ActivateWeapon(); + } + } +} + +void AShooterCharacter::OnWeaponActivated(AShooterWeapon* Weapon) +{ + // update the bullet counter + OnBulletCountUpdated.Broadcast(Weapon->GetMagazineSize(), Weapon->GetBulletCount()); + + // set the character mesh AnimInstances + GetFirstPersonMesh()->SetAnimInstanceClass(Weapon->GetFirstPersonAnimInstanceClass()); + GetMesh()->SetAnimInstanceClass(Weapon->GetThirdPersonAnimInstanceClass()); +} + +void AShooterCharacter::OnWeaponDeactivated(AShooterWeapon* Weapon) +{ + // unused +} + +void AShooterCharacter::OnSemiWeaponRefire() +{ + // unused +} + +AShooterWeapon* AShooterCharacter::FindWeaponOfType(TSubclassOf WeaponClass) const +{ + // check each owned weapon + for (AShooterWeapon* Weapon : OwnedWeapons) + { + if (Weapon->IsA(WeaponClass)) + { + return Weapon; + } + } + + // weapon not found + return nullptr; + +} + +void AShooterCharacter::Die() +{ + // deactivate the weapon + if (IsValid(CurrentWeapon)) + { + CurrentWeapon->DeactivateWeapon(); + } + + // increment the team score + if (AShooterGameMode* GM = Cast(GetWorld()->GetAuthGameMode())) + { + GM->IncrementTeamScore(TeamByte); + } + + // grant the death tag to the character + Tags.Add(DeathTag); + + // stop character movement + GetCharacterMovement()->StopMovementImmediately(); + + // disable controls + DisableInput(nullptr); + + // reset the bullet counter UI + OnBulletCountUpdated.Broadcast(0, 0); + + // call the BP handler + BP_OnDeath(); + + // schedule character respawn + GetWorld()->GetTimerManager().SetTimer(RespawnTimer, this, &AShooterCharacter::OnRespawn, RespawnTime, false); +} + +void AShooterCharacter::OnRespawn() +{ + // destroy the character to force the PC to respawn + Destroy(); +} + +bool AShooterCharacter::IsDead() const +{ + // the character is dead if their current HP drops to zero + return CurrentHP <= 0.0f; +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/ShooterCharacter.h b/Source/FirstPersonDemo/Variant_Shooter/ShooterCharacter.h new file mode 100644 index 0000000..c158e5b --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/ShooterCharacter.h @@ -0,0 +1,187 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "FirstPersonDemoCharacter.h" +#include "ShooterWeaponHolder.h" +#include "ShooterCharacter.generated.h" + +class AShooterWeapon; +class UInputAction; +class UInputComponent; +class UPawnNoiseEmitterComponent; + +DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FBulletCountUpdatedDelegate, int32, MagazineSize, int32, Bullets); +DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDamagedDelegate, float, LifePercent); + +/** + * A player controllable first person shooter character + * Manages a weapon inventory through the IShooterWeaponHolder interface + * Manages health and death + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AShooterCharacter : public AFirstPersonDemoCharacter, public IShooterWeaponHolder +{ + GENERATED_BODY() + + /** AI Noise emitter component */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + UPawnNoiseEmitterComponent* PawnNoiseEmitter; + +protected: + + /** Fire weapon input action */ + UPROPERTY(EditAnywhere, Category ="Input") + UInputAction* FireAction; + + /** Switch weapon input action */ + UPROPERTY(EditAnywhere, Category ="Input") + UInputAction* SwitchWeaponAction; + + /** Name of the first person mesh weapon socket */ + UPROPERTY(EditAnywhere, Category ="Weapons") + FName FirstPersonWeaponSocket = FName("HandGrip_R"); + + /** Name of the third person mesh weapon socket */ + UPROPERTY(EditAnywhere, Category ="Weapons") + FName ThirdPersonWeaponSocket = FName("HandGrip_R"); + + /** Max distance to use for aim traces */ + UPROPERTY(EditAnywhere, Category ="Aim", meta = (ClampMin = 0, ClampMax = 100000, Units = "cm")) + float MaxAimDistance = 10000.0f; + + /** Max HP this character can have */ + UPROPERTY(EditAnywhere, Category="Health") + float MaxHP = 500.0f; + + /** Current HP remaining to this character */ + float CurrentHP = 0.0f; + + /** Team ID for this character*/ + UPROPERTY(EditAnywhere, Category="Team") + uint8 TeamByte = 0; + + /** Actor tag to grant this character when it dies */ + UPROPERTY(EditAnywhere, Category="Team") + FName DeathTag = FName("Dead"); + + /** List of weapons picked up by the character */ + TArray OwnedWeapons; + + /** Weapon currently equipped and ready to shoot with */ + TObjectPtr CurrentWeapon; + + UPROPERTY(EditAnywhere, Category ="Destruction", meta = (ClampMin = 0, ClampMax = 10, Units = "s")) + float RespawnTime = 5.0f; + + FTimerHandle RespawnTimer; + +public: + + /** Bullet count updated delegate */ + FBulletCountUpdatedDelegate OnBulletCountUpdated; + + /** Damaged delegate */ + FDamagedDelegate OnDamaged; + +public: + + /** Constructor */ + AShooterCharacter(); + +protected: + + /** Gameplay initialization */ + virtual void BeginPlay() override; + + /** Gameplay cleanup */ + virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override; + + /** Set up input action bindings */ + virtual void SetupPlayerInputComponent(UInputComponent* InputComponent) override; + +public: + + /** Handle incoming damage */ + virtual float TakeDamage(float Damage, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override; + +public: + + /** Handles aim inputs from either controls or UI interfaces */ + virtual void DoAim(float Yaw, float Pitch) override; + + /** Handles move inputs from either controls or UI interfaces */ + virtual void DoMove(float Right, float Forward) override; + + /** Handles jump start inputs from either controls or UI interfaces */ + virtual void DoJumpStart() override; + + /** Handles jump end inputs from either controls or UI interfaces */ + virtual void DoJumpEnd() override; + + /** Handles start firing input */ + UFUNCTION(BlueprintCallable, Category="Input") + void DoStartFiring(); + + /** Handles stop firing input */ + UFUNCTION(BlueprintCallable, Category="Input") + void DoStopFiring(); + + /** Handles switch weapon input */ + UFUNCTION(BlueprintCallable, Category="Input") + void DoSwitchWeapon(); + +public: + + //~Begin IShooterWeaponHolder interface + + /** Attaches a weapon's meshes to the owner */ + virtual void AttachWeaponMeshes(AShooterWeapon* Weapon) override; + + /** Plays the firing montage for the weapon */ + virtual void PlayFiringMontage(UAnimMontage* Montage) override; + + /** Applies weapon recoil to the owner */ + virtual void AddWeaponRecoil(float Recoil) override; + + /** Updates the weapon's HUD with the current ammo count */ + virtual void UpdateWeaponHUD(int32 CurrentAmmo, int32 MagazineSize) override; + + /** Calculates and returns the aim location for the weapon */ + virtual FVector GetWeaponTargetLocation() override; + + /** Gives a weapon of this class to the owner */ + virtual void AddWeaponClass(const TSubclassOf& WeaponClass) override; + + /** Activates the passed weapon */ + virtual void OnWeaponActivated(AShooterWeapon* Weapon) override; + + /** Deactivates the passed weapon */ + virtual void OnWeaponDeactivated(AShooterWeapon* Weapon) override; + + /** Notifies the owner that the weapon cooldown has expired and it's ready to shoot again */ + virtual void OnSemiWeaponRefire() override; + + //~End IShooterWeaponHolder interface + +protected: + + /** Returns true if the character already owns a weapon of the given class */ + AShooterWeapon* FindWeaponOfType(TSubclassOf WeaponClass) const; + + /** Called when this character's HP is depleted */ + void Die(); + + /** Called to allow Blueprint code to react to this character's death */ + UFUNCTION(BlueprintImplementableEvent, Category="Shooter", meta = (DisplayName = "On Death")) + void BP_OnDeath(); + + /** Called from the respawn timer to destroy this character and force the PC to respawn */ + void OnRespawn(); + +public: + + /** Returns true if the character is dead */ + bool IsDead() const; +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/ShooterGameMode.cpp b/Source/FirstPersonDemo/Variant_Shooter/ShooterGameMode.cpp new file mode 100644 index 0000000..2a56327 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/ShooterGameMode.cpp @@ -0,0 +1,33 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Shooter/ShooterGameMode.h" +#include "ShooterUI.h" +#include "Kismet/GameplayStatics.h" +#include "Engine/World.h" + +void AShooterGameMode::BeginPlay() +{ + Super::BeginPlay(); + + // create the UI + ShooterUI = CreateWidget(UGameplayStatics::GetPlayerController(GetWorld(), 0), ShooterUIClass); + ShooterUI->AddToViewport(0); +} + +void AShooterGameMode::IncrementTeamScore(uint8 TeamByte) +{ + // retrieve the team score if any + int32 Score = 0; + if (int32* FoundScore = TeamScores.Find(TeamByte)) + { + Score = *FoundScore; + } + + // increment the score for the given team + ++Score; + TeamScores.Add(TeamByte, Score); + + // update the UI + ShooterUI->BP_UpdateScore(TeamByte, Score); +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/ShooterGameMode.h b/Source/FirstPersonDemo/Variant_Shooter/ShooterGameMode.h new file mode 100644 index 0000000..24e9242 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/ShooterGameMode.h @@ -0,0 +1,42 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameModeBase.h" +#include "ShooterGameMode.generated.h" + +class UShooterUI; + +/** + * Simple GameMode for a first person shooter game + * Manages game UI + * Keeps track of team scores + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AShooterGameMode : public AGameModeBase +{ + GENERATED_BODY() + +protected: + + /** Type of UI widget to spawn */ + UPROPERTY(EditAnywhere, Category="Shooter") + TSubclassOf ShooterUIClass; + + /** Pointer to the UI widget */ + TObjectPtr ShooterUI; + + /** Map of scores by team ID */ + TMap TeamScores; + +protected: + + /** Gameplay initialization */ + virtual void BeginPlay() override; + +public: + + /** Increases the score for the given team */ + void IncrementTeamScore(uint8 TeamByte); +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/ShooterPlayerController.cpp b/Source/FirstPersonDemo/Variant_Shooter/ShooterPlayerController.cpp new file mode 100644 index 0000000..8fa2ee2 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/ShooterPlayerController.cpp @@ -0,0 +1,153 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "Variant_Shooter/ShooterPlayerController.h" +#include "EnhancedInputSubsystems.h" +#include "Engine/LocalPlayer.h" +#include "InputMappingContext.h" +#include "Kismet/GameplayStatics.h" +#include "GameFramework/PlayerStart.h" +#include "ShooterCharacter.h" +#include "ShooterBulletCounterUI.h" +#include "FirstPersonDemo.h" +#include "Widgets/Input/SVirtualJoystick.h" + +void AShooterPlayerController::BeginPlay() +{ + Super::BeginPlay(); + + // only spawn touch controls on local player controllers + if (IsLocalPlayerController()) + { + if (ShouldUseTouchControls()) + { + // spawn the mobile controls widget + MobileControlsWidget = CreateWidget(this, MobileControlsWidgetClass); + + if (MobileControlsWidget) + { + // add the controls to the player screen + MobileControlsWidget->AddToPlayerScreen(0); + + } else { + + UE_LOG(LogFirstPersonDemo, Error, TEXT("Could not spawn mobile controls widget.")); + + } + } + + // create the bullet counter widget and add it to the screen + BulletCounterUI = CreateWidget(this, BulletCounterUIClass); + + if (BulletCounterUI) + { + BulletCounterUI->AddToPlayerScreen(0); + + } else { + + UE_LOG(LogFirstPersonDemo, Error, TEXT("Could not spawn bullet counter widget.")); + + } + + } +} + +void AShooterPlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); + + // only add IMCs for local player controllers + if (IsLocalPlayerController()) + { + // add the input mapping contexts + if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer())) + { + for (UInputMappingContext* CurrentContext : DefaultMappingContexts) + { + Subsystem->AddMappingContext(CurrentContext, 0); + } + + // only add these IMCs if we're not using mobile touch input + if (!ShouldUseTouchControls()) + { + for (UInputMappingContext* CurrentContext : MobileExcludedMappingContexts) + { + Subsystem->AddMappingContext(CurrentContext, 0); + } + } + } + } +} + +void AShooterPlayerController::OnPossess(APawn* InPawn) +{ + Super::OnPossess(InPawn); + + // subscribe to the pawn's OnDestroyed delegate + InPawn->OnDestroyed.AddDynamic(this, &AShooterPlayerController::OnPawnDestroyed); + + // is this a shooter character? + if (AShooterCharacter* ShooterCharacter = Cast(InPawn)) + { + // add the player tag + ShooterCharacter->Tags.Add(PlayerPawnTag); + + // subscribe to the pawn's delegates + ShooterCharacter->OnBulletCountUpdated.AddDynamic(this, &AShooterPlayerController::OnBulletCountUpdated); + ShooterCharacter->OnDamaged.AddDynamic(this, &AShooterPlayerController::OnPawnDamaged); + + // force update the life bar + ShooterCharacter->OnDamaged.Broadcast(1.0f); + } +} + +void AShooterPlayerController::OnPawnDestroyed(AActor* DestroyedActor) +{ + // reset the bullet counter HUD + if (IsValid(BulletCounterUI)) + { + BulletCounterUI->BP_UpdateBulletCounter(0, 0); + } + + // find the player start + TArray ActorList; + UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerStart::StaticClass(), ActorList); + + if (ActorList.Num() > 0) + { + // select a random player start + AActor* RandomPlayerStart = ActorList[FMath::RandRange(0, ActorList.Num() - 1)]; + + // spawn a character at the player start + const FTransform SpawnTransform = RandomPlayerStart->GetActorTransform(); + + if (AShooterCharacter* RespawnedCharacter = GetWorld()->SpawnActor(CharacterClass, SpawnTransform)) + { + // possess the character + Possess(RespawnedCharacter); + } + } +} + +void AShooterPlayerController::OnBulletCountUpdated(int32 MagazineSize, int32 Bullets) +{ + // update the UI + if (BulletCounterUI) + { + BulletCounterUI->BP_UpdateBulletCounter(MagazineSize, Bullets); + } +} + +void AShooterPlayerController::OnPawnDamaged(float LifePercent) +{ + if (IsValid(BulletCounterUI)) + { + BulletCounterUI->BP_Damaged(LifePercent); + } +} + +bool AShooterPlayerController::ShouldUseTouchControls() const +{ + // are we on a mobile platform? Should we force touch? + return SVirtualJoystick::ShouldDisplayTouchInterface() || bForceTouchControls; +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/ShooterPlayerController.h b/Source/FirstPersonDemo/Variant_Shooter/ShooterPlayerController.h new file mode 100644 index 0000000..471a886 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/ShooterPlayerController.h @@ -0,0 +1,86 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/PlayerController.h" +#include "ShooterPlayerController.generated.h" + +class UInputMappingContext; +class AShooterCharacter; +class UShooterBulletCounterUI; + +/** + * Simple PlayerController for a first person shooter game + * Manages input mappings + * Respawns the player pawn when it's destroyed + */ +UCLASS(abstract, config="Game") +class FIRSTPERSONDEMO_API AShooterPlayerController : public APlayerController +{ + GENERATED_BODY() + +protected: + + /** Input mapping contexts for this player */ + UPROPERTY(EditAnywhere, Category="Input|Input Mappings") + TArray DefaultMappingContexts; + + /** Input Mapping Contexts */ + UPROPERTY(EditAnywhere, Category="Input|Input Mappings") + TArray MobileExcludedMappingContexts; + + /** Mobile controls widget to spawn */ + UPROPERTY(EditAnywhere, Category="Input|Touch Controls") + TSubclassOf MobileControlsWidgetClass; + + /** Pointer to the mobile controls widget */ + UPROPERTY() + TObjectPtr MobileControlsWidget; + + /** If true, the player will use UMG touch controls even if not playing on mobile platforms */ + UPROPERTY(EditAnywhere, Config, Category = "Input|Touch Controls") + bool bForceTouchControls = false; + + /** Character class to respawn when the possessed pawn is destroyed */ + UPROPERTY(EditAnywhere, Category="Shooter|Respawn") + TSubclassOf CharacterClass; + + /** Type of bullet counter UI widget to spawn */ + UPROPERTY(EditAnywhere, Category="Shooter|UI") + TSubclassOf BulletCounterUIClass; + + /** Tag to grant the possessed pawn to flag it as the player */ + UPROPERTY(EditAnywhere, Category="Shooter|Player") + FName PlayerPawnTag = FName("Player"); + + /** Pointer to the bullet counter UI widget */ + UPROPERTY() + TObjectPtr BulletCounterUI; + +protected: + + /** Gameplay Initialization */ + virtual void BeginPlay() override; + + /** Initialize input bindings */ + virtual void SetupInputComponent() override; + + /** Pawn initialization */ + virtual void OnPossess(APawn* InPawn) override; + + /** Called if the possessed pawn is destroyed */ + UFUNCTION() + void OnPawnDestroyed(AActor* DestroyedActor); + + /** Called when the bullet count on the possessed pawn is updated */ + UFUNCTION() + void OnBulletCountUpdated(int32 MagazineSize, int32 Bullets); + + /** Called when the possessed pawn is damaged */ + UFUNCTION() + void OnPawnDamaged(float LifePercent); + + /** Returns true if the player should use UMG touch controls */ + bool ShouldUseTouchControls() const; +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterBulletCounterUI.cpp b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterBulletCounterUI.cpp new file mode 100644 index 0000000..c6ccd39 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterBulletCounterUI.cpp @@ -0,0 +1,5 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "ShooterBulletCounterUI.h" + diff --git a/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterBulletCounterUI.h b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterBulletCounterUI.h new file mode 100644 index 0000000..6e834d1 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterBulletCounterUI.h @@ -0,0 +1,26 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "ShooterBulletCounterUI.generated.h" + +/** + * Simple bullet counter UI widget for a first person shooter game + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API UShooterBulletCounterUI : public UUserWidget +{ + GENERATED_BODY() + +public: + + /** Allows Blueprint to update sub-widgets with the new bullet count */ + UFUNCTION(BlueprintImplementableEvent, Category="Shooter", meta=(DisplayName = "UpdateBulletCounter")) + void BP_UpdateBulletCounter(int32 MagazineSize, int32 BulletCount); + + /** Allows Blueprint to update sub-widgets with the new life total and play a damage effect on the HUD */ + UFUNCTION(BlueprintImplementableEvent, Category="Shooter", meta=(DisplayName = "Damaged")) + void BP_Damaged(float LifePercent); +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterUI.cpp b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterUI.cpp new file mode 100644 index 0000000..c656497 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterUI.cpp @@ -0,0 +1,5 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "ShooterUI.h" + diff --git a/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterUI.h b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterUI.h new file mode 100644 index 0000000..2afa68a --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/UI/ShooterUI.h @@ -0,0 +1,22 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "ShooterUI.generated.h" + +/** + * Simple scoreboard UI for a first person shooter game + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API UShooterUI : public UUserWidget +{ + GENERATED_BODY() + +public: + + /** Allows Blueprint to update score sub-widgets */ + UFUNCTION(BlueprintImplementableEvent, Category="Shooter", meta = (DisplayName = "Update Score")) + void BP_UpdateScore(uint8 TeamByte, int32 Score); +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterPickup.cpp b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterPickup.cpp new file mode 100644 index 0000000..e0205d3 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterPickup.cpp @@ -0,0 +1,108 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "ShooterPickup.h" +#include "Components/SceneComponent.h" +#include "Components/SphereComponent.h" +#include "Components/StaticMeshComponent.h" +#include "ShooterWeaponHolder.h" +#include "ShooterWeapon.h" +#include "Engine/World.h" +#include "TimerManager.h" + +AShooterPickup::AShooterPickup() +{ + PrimaryActorTick.bCanEverTick = true; + + // create the root + RootComponent = CreateDefaultSubobject(TEXT("Root")); + + // create the collision sphere + SphereCollision = CreateDefaultSubobject(TEXT("Sphere Collision")); + SphereCollision->SetupAttachment(RootComponent); + + SphereCollision->SetRelativeLocation(FVector(0.0f, 0.0f, 84.0f)); + SphereCollision->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + SphereCollision->SetCollisionObjectType(ECC_WorldStatic); + SphereCollision->SetCollisionResponseToAllChannels(ECR_Ignore); + SphereCollision->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + SphereCollision->bFillCollisionUnderneathForNavmesh = true; + + // subscribe to the collision overlap on the sphere + SphereCollision->OnComponentBeginOverlap.AddDynamic(this, &AShooterPickup::OnOverlap); + + // create the mesh + Mesh = CreateDefaultSubobject(TEXT("Mesh")); + Mesh->SetupAttachment(SphereCollision); + + Mesh->SetCollisionProfileName(FName("NoCollision")); +} + +void AShooterPickup::OnConstruction(const FTransform& Transform) +{ + Super::OnConstruction(Transform); + + if (FWeaponTableRow* WeaponData = WeaponType.GetRow(FString())) + { + // set the mesh + Mesh->SetStaticMesh(WeaponData->StaticMesh.LoadSynchronous()); + } +} + +void AShooterPickup::BeginPlay() +{ + Super::BeginPlay(); + + if (FWeaponTableRow* WeaponData = WeaponType.GetRow(FString())) + { + // copy the weapon class + WeaponClass = WeaponData->WeaponToSpawn; + } +} + +void AShooterPickup::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // clear the respawn timer + GetWorld()->GetTimerManager().ClearTimer(RespawnTimer); +} + +void AShooterPickup::OnOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) +{ + // have we collided against a weapon holder? + if (IShooterWeaponHolder* WeaponHolder = Cast(OtherActor)) + { + WeaponHolder->AddWeaponClass(WeaponClass); + + // hide this mesh + SetActorHiddenInGame(true); + + // disable collision + SetActorEnableCollision(false); + + // disable ticking + SetActorTickEnabled(false); + + // schedule the respawn + GetWorld()->GetTimerManager().SetTimer(RespawnTimer, this, &AShooterPickup::RespawnPickup, RespawnTime, false); + } +} + +void AShooterPickup::RespawnPickup() +{ + // unhide this pickup + SetActorHiddenInGame(false); + + // call the BP handler + BP_OnRespawn(); +} + +void AShooterPickup::FinishRespawn() +{ + // enable collision + SetActorEnableCollision(true); + + // enable tick + SetActorTickEnabled(true); +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterPickup.h b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterPickup.h new file mode 100644 index 0000000..bc006c7 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterPickup.h @@ -0,0 +1,96 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "Engine/DataTable.h" +#include "Engine/StaticMesh.h" +#include "ShooterPickup.generated.h" + +class USphereComponent; +class UPrimitiveComponent; +class AShooterWeapon; + +/** + * Holds information about a type of weapon pickup + */ +USTRUCT(BlueprintType) +struct FWeaponTableRow : public FTableRowBase +{ + GENERATED_BODY() + + /** Mesh to display on the pickup */ + UPROPERTY(EditAnywhere) + TSoftObjectPtr StaticMesh; + + /** Weapon class to grant on pickup */ + UPROPERTY(EditAnywhere) + TSubclassOf WeaponToSpawn; +}; + +/** + * Simple shooter game weapon pickup + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AShooterPickup : public AActor +{ + GENERATED_BODY() + + /** Collision sphere */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + USphereComponent* SphereCollision; + + /** Weapon pickup mesh. Its mesh asset is set from the weapon data table */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + UStaticMeshComponent* Mesh; + +protected: + + /** Data on the type of picked weapon and visuals of this pickup */ + UPROPERTY(EditAnywhere, Category="Pickup") + FDataTableRowHandle WeaponType; + + /** Type to weapon to grant on pickup. Set from the weapon data table. */ + TSubclassOf WeaponClass; + + /** Time to wait before respawning this pickup */ + UPROPERTY(EditAnywhere, Category="Pickup", meta = (ClampMin = 0, ClampMax = 120, Units = "s")) + float RespawnTime = 4.0f; + + /** Timer to respawn the pickup */ + FTimerHandle RespawnTimer; + +public: + + /** Constructor */ + AShooterPickup(); + +protected: + + /** Native construction script */ + virtual void OnConstruction(const FTransform& Transform) override; + + /** Gameplay Initialization*/ + virtual void BeginPlay() override; + + /** Gameplay cleanup */ + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + + /** Handles collision overlap */ + UFUNCTION() + virtual void OnOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); + +protected: + + /** Called when it's time to respawn this pickup */ + void RespawnPickup(); + + /** Passes control to Blueprint to animate the pickup respawn. Should end by calling FinishRespawn */ + UFUNCTION(BlueprintImplementableEvent, Category="Pickup", meta = (DisplayName = "OnRespawn")) + void BP_OnRespawn(); + + /** Enables this pickup after respawning */ + UFUNCTION(BlueprintCallable, Category="Pickup") + void FinishRespawn(); +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterProjectile.cpp b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterProjectile.cpp new file mode 100644 index 0000000..cd075c0 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterProjectile.cpp @@ -0,0 +1,167 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "ShooterProjectile.h" +#include "Components/SphereComponent.h" +#include "GameFramework/ProjectileMovementComponent.h" +#include "GameFramework/Character.h" +#include "Kismet/GameplayStatics.h" +#include "GameFramework/DamageType.h" +#include "GameFramework/Pawn.h" +#include "GameFramework/Controller.h" +#include "Engine/OverlapResult.h" +#include "Engine/World.h" +#include "TimerManager.h" + +AShooterProjectile::AShooterProjectile() +{ + PrimaryActorTick.bCanEverTick = true; + + // create the collision component and assign it as the root + RootComponent = CollisionComponent = CreateDefaultSubobject(TEXT("Collision Component")); + + CollisionComponent->SetSphereRadius(16.0f); + CollisionComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + CollisionComponent->SetCollisionResponseToAllChannels(ECR_Block); + CollisionComponent->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_No; + + // create the projectile movement component. No need to attach it because it's not a Scene Component + ProjectileMovement = CreateDefaultSubobject(TEXT("Projectile Movement")); + + ProjectileMovement->InitialSpeed = 3000.0f; + ProjectileMovement->MaxSpeed = 3000.0f; + ProjectileMovement->bShouldBounce = true; + + // set the default damage type + HitDamageType = UDamageType::StaticClass(); +} + +void AShooterProjectile::BeginPlay() +{ + Super::BeginPlay(); + + // ignore the pawn that shot this projectile + CollisionComponent->IgnoreActorWhenMoving(GetInstigator(), true); +} + +void AShooterProjectile::EndPlay(EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // clear the destruction timer + GetWorld()->GetTimerManager().ClearTimer(DestructionTimer); +} + +void AShooterProjectile::NotifyHit(class UPrimitiveComponent* MyComp, AActor* Other, class UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit) +{ + // ignore if we've already hit something else + if (bHit) + { + return; + } + + bHit = true; + + // disable collision on the projectile + CollisionComponent->SetCollisionEnabled(ECollisionEnabled::NoCollision); + + // make AI perception noise + MakeNoise(NoiseLoudness, GetInstigator(), GetActorLocation(), NoiseRange, NoiseTag); + + if (bExplodeOnHit) + { + + // apply explosion damage centered on the projectile + ExplosionCheck(GetActorLocation()); + + } else { + + // single hit projectile. Process the collided actor + ProcessHit(Other, OtherComp, Hit.ImpactPoint, -Hit.ImpactNormal); + + } + + // pass control to BP for any extra effects + BP_OnProjectileHit(Hit); + + // check if we should schedule deferred destruction of the projectile + if (DeferredDestructionTime > 0.0f) + { + GetWorld()->GetTimerManager().SetTimer(DestructionTimer, this, &AShooterProjectile::OnDeferredDestruction, DeferredDestructionTime, false); + + } else { + + // destroy the projectile right away + Destroy(); + } +} + +void AShooterProjectile::ExplosionCheck(const FVector& ExplosionCenter) +{ + // do a sphere overlap check look for nearby actors to damage + TArray Overlaps; + + FCollisionShape OverlapShape; + OverlapShape.SetSphere(ExplosionRadius); + + FCollisionObjectQueryParams ObjectParams; + ObjectParams.AddObjectTypesToQuery(ECC_Pawn); + ObjectParams.AddObjectTypesToQuery(ECC_WorldDynamic); + ObjectParams.AddObjectTypesToQuery(ECC_PhysicsBody); + + FCollisionQueryParams QueryParams; + QueryParams.AddIgnoredActor(this); + if (!bDamageOwner) + { + QueryParams.AddIgnoredActor(GetInstigator()); + } + + GetWorld()->OverlapMultiByObjectType(Overlaps, ExplosionCenter, FQuat::Identity, ObjectParams, OverlapShape, QueryParams); + + TArray DamagedActors; + + // process the overlap results + for (const FOverlapResult& CurrentOverlap : Overlaps) + { + // overlaps may return the same actor multiple times per each component overlapped + // ensure we only damage each actor once by adding it to a damaged list + if (DamagedActors.Find(CurrentOverlap.GetActor()) == INDEX_NONE) + { + DamagedActors.Add(CurrentOverlap.GetActor()); + + // apply physics force away from the explosion + const FVector& ExplosionDir = CurrentOverlap.GetActor()->GetActorLocation() - GetActorLocation(); + + // push and/or damage the overlapped actor + ProcessHit(CurrentOverlap.GetActor(), CurrentOverlap.GetComponent(), GetActorLocation(), ExplosionDir.GetSafeNormal()); + } + + } +} + +void AShooterProjectile::ProcessHit(AActor* HitActor, UPrimitiveComponent* HitComp, const FVector& HitLocation, const FVector& HitDirection) +{ + // have we hit a character? + if (ACharacter* HitCharacter = Cast(HitActor)) + { + // ignore the owner of this projectile + if (HitCharacter != GetOwner() || bDamageOwner) + { + // apply damage to the character + UGameplayStatics::ApplyDamage(HitCharacter, HitDamage, GetInstigator()->GetController(), this, HitDamageType); + } + } + + // have we hit a physics object? + if (HitComp->IsSimulatingPhysics()) + { + // give some physics impulse to the object + HitComp->AddImpulseAtLocation(HitDirection * PhysicsForce, HitLocation); + } +} + +void AShooterProjectile::OnDeferredDestruction() +{ + // destroy this actor + Destroy(); +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterProjectile.h b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterProjectile.h new file mode 100644 index 0000000..97c5374 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterProjectile.h @@ -0,0 +1,109 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "ShooterProjectile.generated.h" + +class USphereComponent; +class UProjectileMovementComponent; +class ACharacter; +class UPrimitiveComponent; + +/** + * Simple projectile class for a first person shooter game + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AShooterProjectile : public AActor +{ + GENERATED_BODY() + + /** Provides collision detection for the projectile */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + USphereComponent* CollisionComponent; + + /** Handles movement for the projectile */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + UProjectileMovementComponent* ProjectileMovement; + +protected: + + /** Loudness of the AI perception noise done by this projectile on hit */ + UPROPERTY(EditAnywhere, Category="Projectile|Noise", meta = (ClampMin = 0, ClampMax = 100)) + float NoiseLoudness = 3.0f; + + /** Range of the AI perception noise done by this projectile on hit */ + UPROPERTY(EditAnywhere, Category="Projectile|Noise", meta = (ClampMin = 0, ClampMax = 100000, Units = "cm")) + float NoiseRange = 3000.0f; + + /** Tag of the AI perception noise done by this projectile on hit */ + UPROPERTY(EditAnywhere, Category="Noise") + FName NoiseTag = FName("Projectile"); + + /** Physics force to apply on hit */ + UPROPERTY(EditAnywhere, Category="Projectile|Hit", meta = (ClampMin = 0, ClampMax = 50000)) + float PhysicsForce = 100.0f; + + /** Damage to apply on hit */ + UPROPERTY(EditAnywhere, Category="Projectile|Hit", meta = (ClampMin = 0, ClampMax = 100)) + float HitDamage = 25.0f; + + /** Type of damage to apply. Can be used to represent specific types of damage such as fire, explosion, etc. */ + UPROPERTY(EditAnywhere, Category="Projectile|Hit") + TSubclassOf HitDamageType; + + /** If true, the projectile can damage the character that shot it */ + UPROPERTY(EditAnywhere, Category="Projectile|Hit") + bool bDamageOwner = false; + + /** If true, the projectile will explode and apply radial damage to all actors in range */ + UPROPERTY(EditAnywhere, Category="Projectile|Explosion") + bool bExplodeOnHit = false; + + /** Max distance for actors to be affected by explosion damage */ + UPROPERTY(EditAnywhere, Category="Projectile|Explosion", meta = (ClampMin = 0, ClampMax = 5000, Units = "cm")) + float ExplosionRadius = 500.0f; + + /** If true, this projectile has already hit another surface */ + bool bHit = false; + + /** How long to wait after a hit before destroying this projectile */ + UPROPERTY(EditAnywhere, Category="Projectile|Destruction", meta = (ClampMin = 0, ClampMax = 10, Units = "s")) + float DeferredDestructionTime = 5.0f; + + /** Timer to handle deferred destruction of this projectile */ + FTimerHandle DestructionTimer; + +public: + + /** Constructor */ + AShooterProjectile(); + +protected: + + /** Gameplay initialization */ + virtual void BeginPlay() override; + + /** Gameplay cleanup */ + virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override; + + /** Handles collision */ + virtual void NotifyHit(class UPrimitiveComponent* MyComp, AActor* Other, UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit) override; + +protected: + + /** Looks up actors within the explosion radius and damages them */ + void ExplosionCheck(const FVector& ExplosionCenter); + + /** Processes a projectile hit for the given actor */ + void ProcessHit(AActor* HitActor, UPrimitiveComponent* HitComp, const FVector& HitLocation, const FVector& HitDirection); + + /** Passes control to Blueprint to implement any effects on hit. */ + UFUNCTION(BlueprintImplementableEvent, Category="Projectile", meta = (DisplayName = "On Projectile Hit")) + void BP_OnProjectileHit(const FHitResult& Hit); + + /** Called from the destruction timer to destroy this projectile */ + void OnDeferredDestruction(); + +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeapon.cpp b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeapon.cpp new file mode 100644 index 0000000..d53d0b4 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeapon.cpp @@ -0,0 +1,218 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "ShooterWeapon.h" +#include "Kismet/KismetMathLibrary.h" +#include "Engine/World.h" +#include "ShooterProjectile.h" +#include "ShooterWeaponHolder.h" +#include "Components/SceneComponent.h" +#include "TimerManager.h" +#include "Animation/AnimInstance.h" +#include "Components/SkeletalMeshComponent.h" +#include "GameFramework/Pawn.h" + +AShooterWeapon::AShooterWeapon() +{ + PrimaryActorTick.bCanEverTick = true; + + // create the root + RootComponent = CreateDefaultSubobject(TEXT("Root")); + + // create the first person mesh + FirstPersonMesh = CreateDefaultSubobject(TEXT("First Person Mesh")); + FirstPersonMesh->SetupAttachment(RootComponent); + + FirstPersonMesh->SetCollisionProfileName(FName("NoCollision")); + FirstPersonMesh->SetFirstPersonPrimitiveType(EFirstPersonPrimitiveType::FirstPerson); + FirstPersonMesh->bOnlyOwnerSee = true; + + // create the third person mesh + ThirdPersonMesh = CreateDefaultSubobject(TEXT("Third Person Mesh")); + ThirdPersonMesh->SetupAttachment(RootComponent); + + ThirdPersonMesh->SetCollisionProfileName(FName("NoCollision")); + ThirdPersonMesh->SetFirstPersonPrimitiveType(EFirstPersonPrimitiveType::WorldSpaceRepresentation); + ThirdPersonMesh->bOwnerNoSee = true; +} + +void AShooterWeapon::BeginPlay() +{ + Super::BeginPlay(); + + // subscribe to the owner's destroyed delegate + GetOwner()->OnDestroyed.AddDynamic(this, &AShooterWeapon::OnOwnerDestroyed); + + // cast the weapon owner + WeaponOwner = Cast(GetOwner()); + PawnOwner = Cast(GetOwner()); + + // fill the first ammo clip + CurrentBullets = MagazineSize; + + // attach the meshes to the owner + WeaponOwner->AttachWeaponMeshes(this); +} + +void AShooterWeapon::EndPlay(EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // clear the refire timer + GetWorld()->GetTimerManager().ClearTimer(RefireTimer); +} + +void AShooterWeapon::OnOwnerDestroyed(AActor* DestroyedActor) +{ + // ensure this weapon is destroyed when the owner is destroyed + Destroy(); +} + +void AShooterWeapon::ActivateWeapon() +{ + // unhide this weapon + SetActorHiddenInGame(false); + + // notify the owner + WeaponOwner->OnWeaponActivated(this); +} + +void AShooterWeapon::DeactivateWeapon() +{ + // ensure we're no longer firing this weapon while deactivated + StopFiring(); + + // hide the weapon + SetActorHiddenInGame(true); + + // notify the owner + WeaponOwner->OnWeaponDeactivated(this); +} + +void AShooterWeapon::StartFiring() +{ + // raise the firing flag + bIsFiring = true; + + // check how much time has passed since we last shot + // this may be under the refire rate if the weapon shoots slow enough and the player is spamming the trigger + const float TimeSinceLastShot = GetWorld()->GetTimeSeconds() - TimeOfLastShot; + + if (TimeSinceLastShot > RefireRate) + { + // fire the weapon right away + Fire(); + + } else { + + // if we're full auto, schedule the next shot + if (bFullAuto) + { + GetWorld()->GetTimerManager().SetTimer(RefireTimer, this, &AShooterWeapon::Fire, TimeSinceLastShot, false); + } + + } +} + +void AShooterWeapon::StopFiring() +{ + // lower the firing flag + bIsFiring = false; + + // clear the refire timer + GetWorld()->GetTimerManager().ClearTimer(RefireTimer); +} + +void AShooterWeapon::Fire() +{ + // ensure the player still wants to fire. They may have let go of the trigger + if (!bIsFiring) + { + return; + } + + // fire a projectile at the target + FireProjectile(WeaponOwner->GetWeaponTargetLocation()); + + // update the time of our last shot + TimeOfLastShot = GetWorld()->GetTimeSeconds(); + + // make noise so the AI perception system can hear us + MakeNoise(ShotLoudness, PawnOwner, PawnOwner->GetActorLocation(), ShotNoiseRange, ShotNoiseTag); + + // are we full auto? + if (bFullAuto) + { + // schedule the next shot + GetWorld()->GetTimerManager().SetTimer(RefireTimer, this, &AShooterWeapon::Fire, RefireRate, false); + } else { + + // for semi-auto weapons, schedule the cooldown notification + GetWorld()->GetTimerManager().SetTimer(RefireTimer, this, &AShooterWeapon::FireCooldownExpired, RefireRate, false); + + } +} + +void AShooterWeapon::FireCooldownExpired() +{ + // notify the owner + WeaponOwner->OnSemiWeaponRefire(); +} + +void AShooterWeapon::FireProjectile(const FVector& TargetLocation) +{ + // get the projectile transform + FTransform ProjectileTransform = CalculateProjectileSpawnTransform(TargetLocation); + + // spawn the projectile + FActorSpawnParameters SpawnParams; + SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; + SpawnParams.TransformScaleMethod = ESpawnActorScaleMethod::OverrideRootScale; + SpawnParams.Owner = GetOwner(); + SpawnParams.Instigator = PawnOwner; + + AShooterProjectile* Projectile = GetWorld()->SpawnActor(ProjectileClass, ProjectileTransform, SpawnParams); + + // play the firing montage + WeaponOwner->PlayFiringMontage(FiringMontage); + + // add recoil + WeaponOwner->AddWeaponRecoil(FiringRecoil); + + // consume bullets + --CurrentBullets; + + // if the clip is depleted, reload it + if (CurrentBullets <= 0) + { + CurrentBullets = MagazineSize; + } + + // update the weapon HUD + WeaponOwner->UpdateWeaponHUD(CurrentBullets, MagazineSize); +} + +FTransform AShooterWeapon::CalculateProjectileSpawnTransform(const FVector& TargetLocation) const +{ + // find the muzzle location + const FVector MuzzleLoc = FirstPersonMesh->GetSocketLocation(MuzzleSocketName); + + // calculate the spawn location ahead of the muzzle + const FVector SpawnLoc = MuzzleLoc + ((TargetLocation - MuzzleLoc).GetSafeNormal() * MuzzleOffset); + + // find the aim rotation vector while applying some variance to the target + const FRotator AimRot = UKismetMathLibrary::FindLookAtRotation(SpawnLoc, TargetLocation + (UKismetMathLibrary::RandomUnitVector() * AimVariance)); + + // return the built transform + return FTransform(AimRot, SpawnLoc, FVector::OneVector); +} + +const TSubclassOf& AShooterWeapon::GetFirstPersonAnimInstanceClass() const +{ + return FirstPersonAnimInstanceClass; +} + +const TSubclassOf& AShooterWeapon::GetThirdPersonAnimInstanceClass() const +{ + return ThirdPersonAnimInstanceClass; +} diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeapon.h b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeapon.h new file mode 100644 index 0000000..ca1dcb0 --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeapon.h @@ -0,0 +1,180 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "ShooterWeaponHolder.h" +#include "Animation/AnimInstance.h" +#include "ShooterWeapon.generated.h" + +class IShooterWeaponHolder; +class AShooterProjectile; +class USkeletalMeshComponent; +class UAnimMontage; +class UAnimInstance; + +/** + * Base class for a simple first person shooter weapon + * Provides both first person and third person perspective meshes + * Handles ammo and firing logic + * Interacts with the weapon owner through the ShooterWeaponHolder interface + */ +UCLASS(abstract) +class FIRSTPERSONDEMO_API AShooterWeapon : public AActor +{ + GENERATED_BODY() + + /** First person perspective mesh */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + USkeletalMeshComponent* FirstPersonMesh; + + /** Third person perspective mesh */ + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + USkeletalMeshComponent* ThirdPersonMesh; + +protected: + + /** Cast pointer to the weapon owner */ + IShooterWeaponHolder* WeaponOwner; + + /** Type of projectiles this weapon will shoot */ + UPROPERTY(EditAnywhere, Category="Ammo") + TSubclassOf ProjectileClass; + + /** Number of bullets in a magazine */ + UPROPERTY(EditAnywhere, Category="Ammo", meta = (ClampMin = 0, ClampMax = 100)) + int32 MagazineSize = 10; + + /** Number of bullets in the current magazine */ + int32 CurrentBullets = 0; + + /** Animation montage to play when firing this weapon */ + UPROPERTY(EditAnywhere, Category="Animation") + UAnimMontage* FiringMontage; + + /** AnimInstance class to set for the first person character mesh when this weapon is active */ + UPROPERTY(EditAnywhere, Category="Animation") + TSubclassOf FirstPersonAnimInstanceClass; + + /** AnimInstance class to set for the third person character mesh when this weapon is active */ + UPROPERTY(EditAnywhere, Category="Animation") + TSubclassOf ThirdPersonAnimInstanceClass; + + /** Cone half-angle for variance while aiming */ + UPROPERTY(EditAnywhere, Category="Aim", meta = (ClampMin = 0, ClampMax = 90, Units = "Degrees")) + float AimVariance = 0.0f; + + /** Amount of firing recoil to apply to the owner */ + UPROPERTY(EditAnywhere, Category="Aim", meta = (ClampMin = 0, ClampMax = 100)) + float FiringRecoil = 0.0f; + + /** Name of the first person muzzle socket where projectiles will spawn */ + UPROPERTY(EditAnywhere, Category="Aim") + FName MuzzleSocketName; + + /** Distance ahead of the muzzle that bullets will spawn at */ + UPROPERTY(EditAnywhere, Category="Aim", meta = (ClampMin = 0, ClampMax = 1000, Units = "cm")) + float MuzzleOffset = 10.0f; + + /** If true, this weapon will automatically fire at the refire rate */ + UPROPERTY(EditAnywhere, Category="Refire") + bool bFullAuto = false; + + /** Time between shots for this weapon. Affects both full auto and semi auto modes */ + UPROPERTY(EditAnywhere, Category="Refire", meta = (ClampMin = 0, ClampMax = 5, Units = "s")) + float RefireRate = 0.5f; + + /** Game time of last shot fired, used to enforce refire rate on semi auto */ + float TimeOfLastShot = 0.0f; + + /** If true, the weapon is currently firing */ + bool bIsFiring = false; + + /** Timer to handle full auto refiring */ + FTimerHandle RefireTimer; + + /** Cast pawn pointer to the owner for AI perception system interactions */ + TObjectPtr PawnOwner; + + /** Loudness of the shot for AI perception system interactions */ + UPROPERTY(EditAnywhere, Category="Perception", meta = (ClampMin = 0, ClampMax = 100)) + float ShotLoudness = 1.0f; + + /** Max range of shot AI perception noise */ + UPROPERTY(EditAnywhere, Category="Perception", meta = (ClampMin = 0, ClampMax = 100000, Units = "cm")) + float ShotNoiseRange = 3000.0f; + + /** Tag to apply to noise generated by shooting this weapon */ + UPROPERTY(EditAnywhere, Category="Perception") + FName ShotNoiseTag = FName("Shot"); + +public: + + /** Constructor */ + AShooterWeapon(); + +protected: + + /** Gameplay initialization */ + virtual void BeginPlay() override; + + /** Gameplay Cleanup */ + virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override; + +protected: + + /** Called when the weapon's owner is destroyed */ + UFUNCTION() + void OnOwnerDestroyed(AActor* DestroyedActor); + +public: + + /** Activates this weapon and gets it ready to fire */ + void ActivateWeapon(); + + /** Deactivates this weapon */ + void DeactivateWeapon(); + + /** Start firing this weapon */ + void StartFiring(); + + /** Stop firing this weapon */ + void StopFiring(); + +protected: + + /** Fire the weapon */ + virtual void Fire(); + + /** Called when the refire rate time has passed while shooting semi auto weapons */ + void FireCooldownExpired(); + + /** Fire a projectile towards the target location */ + virtual void FireProjectile(const FVector& TargetLocation); + + /** Calculates the spawn transform for projectiles shot by this weapon */ + FTransform CalculateProjectileSpawnTransform(const FVector& TargetLocation) const; + +public: + + /** Returns the first person mesh */ + UFUNCTION(BlueprintPure, Category="Weapon") + USkeletalMeshComponent* GetFirstPersonMesh() const { return FirstPersonMesh; }; + + /** Returns the third person mesh */ + UFUNCTION(BlueprintPure, Category="Weapon") + USkeletalMeshComponent* GetThirdPersonMesh() const { return ThirdPersonMesh; }; + + /** Returns the first person anim instance class */ + const TSubclassOf& GetFirstPersonAnimInstanceClass() const; + + /** Returns the third person anim instance class */ + const TSubclassOf& GetThirdPersonAnimInstanceClass() const; + + /** Returns the magazine size */ + int32 GetMagazineSize() const { return MagazineSize; }; + + /** Returns the current bullet count */ + int32 GetBulletCount() const { return CurrentBullets; } +}; diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeaponHolder.cpp b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeaponHolder.cpp new file mode 100644 index 0000000..5b4675e --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeaponHolder.cpp @@ -0,0 +1,6 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + + +#include "ShooterWeaponHolder.h" + +// Add default functionality here for any IShooterWeaponHolder functions that are not pure virtual. diff --git a/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeaponHolder.h b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeaponHolder.h new file mode 100644 index 0000000..bde32ff --- /dev/null +++ b/Source/FirstPersonDemo/Variant_Shooter/Weapons/ShooterWeaponHolder.h @@ -0,0 +1,55 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/Interface.h" +#include "ShooterWeaponHolder.generated.h" + +class AShooterWeapon; +class UAnimMontage; + + +// This class does not need to be modified. +UINTERFACE(MinimalAPI) +class UShooterWeaponHolder : public UInterface +{ + GENERATED_BODY() +}; + +/** + * Common interface for Shooter Game weapon holder classes + */ +class FIRSTPERSONDEMO_API IShooterWeaponHolder +{ + GENERATED_BODY() + +public: + + /** Attaches a weapon's meshes to the owner */ + virtual void AttachWeaponMeshes(AShooterWeapon* Weapon) = 0; + + /** Plays the firing montage for the weapon */ + virtual void PlayFiringMontage(UAnimMontage* Montage) = 0; + + /** Applies weapon recoil to the owner */ + virtual void AddWeaponRecoil(float Recoil) = 0; + + /** Updates the weapon's HUD with the current ammo count */ + virtual void UpdateWeaponHUD(int32 CurrentAmmo, int32 MagazineSize) = 0; + + /** Calculates and returns the aim location for the weapon */ + virtual FVector GetWeaponTargetLocation() = 0; + + /** Gives a weapon of this class to the owner */ + virtual void AddWeaponClass(const TSubclassOf& WeaponClass) = 0; + + /** Activates the passed weapon */ + virtual void OnWeaponActivated(AShooterWeapon* Weapon) = 0; + + /** Deactivates the passed weapon */ + virtual void OnWeaponDeactivated(AShooterWeapon* Weapon) = 0; + + /** Notifies the owner that the weapon cooldown has expired and it's ready to shoot again */ + virtual void OnSemiWeaponRefire() = 0; +}; diff --git a/Source/FirstPersonDemoEditor.Target.cs b/Source/FirstPersonDemoEditor.Target.cs new file mode 100644 index 0000000..fa35cbe --- /dev/null +++ b/Source/FirstPersonDemoEditor.Target.cs @@ -0,0 +1,15 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class FirstPersonDemoEditorTarget : TargetRules +{ + public FirstPersonDemoEditorTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Editor; + DefaultBuildSettings = BuildSettingsVersion.V6; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; + ExtraModuleNames.Add("FirstPersonDemo"); + } +}