├── .gitignore ├── Binaries └── Win64 │ ├── UE4Editor-FPSGame.dll │ └── UnrealEditor-FPSGame.dll ├── Config ├── DefaultEditor.ini ├── DefaultEngine.ini ├── DefaultGame.ini └── DefaultInput.ini ├── Content ├── Animations │ ├── FirstPerson_AnimBP.uasset │ ├── FirstPerson_Fire.uasset │ ├── FirstPerson_Idle.uasset │ ├── FirstPerson_JumpEnd.uasset │ ├── FirstPerson_JumpLoop.uasset │ ├── FirstPerson_JumpStart.uasset │ └── FirstPerson_Run.uasset ├── Audio │ └── FirstPersonTemplateWeaponFire02.uasset ├── Blueprints │ ├── BP_Player.uasset │ └── BP_Projectile.uasset ├── Character │ ├── M_PlayerArms.uasset │ ├── Mesh │ │ ├── SK_Mannequin_Arms.uasset │ │ ├── SK_Mannequin_Arms_PhysicsAsset.uasset │ │ └── SK_Mannequin_Arms_Skeleton.uasset │ └── Textures │ │ ├── UE4_LOGO_CARD.uasset │ │ ├── UE4_Mannequin_MAT_MASKA.uasset │ │ └── UE4_Mannequin__normals.uasset ├── Effects │ ├── Materials │ │ ├── M_Burst.uasset │ │ ├── M_explosion_subUV.uasset │ │ ├── M_radial_ramp.uasset │ │ ├── M_smoke_subUV.uasset │ │ └── m_flare_01.uasset │ ├── P_Explosion.uasset │ └── Textures │ │ ├── T_Burst_M.uasset │ │ ├── T_Explosion_SubUV.uasset │ │ ├── T_Smoke_SubUV.uasset │ │ └── T_Smoke_Tiled_D.uasset ├── Environment │ ├── AntiAliasedTextMaterialTranslucent_Glow.uasset │ ├── MI_BlockoutSimple_Inst.uasset │ ├── M_BlockoutSimple.uasset │ ├── M_Cube.uasset │ ├── M_Cube_Inst.uasset │ └── Shape_Cube.uasset ├── Input │ ├── IA_Fire.uasset │ ├── IA_Jump.uasset │ ├── IA_Look.uasset │ ├── IA_Move.uasset │ └── IMC_DefaultPlayer.uasset ├── Maps │ ├── FirstPersonExampleMap.umap │ └── FirstPersonExampleMap_BuiltData.uasset ├── Misc │ └── Shakes │ │ ├── CamShake_Jump.uasset │ │ ├── CamShake_Landed.uasset │ │ └── CamShake_TakeDamage.uasset ├── ParagonGideon │ └── FX │ │ ├── Materials │ │ ├── Debris │ │ │ └── M_Explosion_RockChunks.uasset │ │ ├── Energy │ │ │ └── Plasma │ │ │ │ └── M_Swirl_Plasma.uasset │ │ ├── Flares │ │ │ ├── M_DarkFlare_DistShrink.uasset │ │ │ ├── M_GlowPoint_DistShrink_MASTER.uasset │ │ │ └── M_Lensflare_TB_Soft_LDR2HDR.uasset │ │ ├── Functions │ │ │ ├── MF_CameraDistanceFade.uasset │ │ │ ├── MF_DitheredRefraction.uasset │ │ │ ├── MF_FX_EmissiveModulate.uasset │ │ │ ├── MF_FX_NearCameraFade.uasset │ │ │ └── MF_ParticleShrinkDistance.uasset │ │ ├── Heroes │ │ │ ├── Gideon │ │ │ │ ├── M_Explosion_Smoke_Spears.uasset │ │ │ │ ├── M_Wisp_SplineThicken_Small.uasset │ │ │ │ └── M_Wispy_Smoke_Trail_Projectile.uasset │ │ │ ├── M_Radial_Blur_Refraction.uasset │ │ │ ├── M_Spark_VelocityLerp_Pellets_Inst.uasset │ │ │ └── M_Spark_VelocityLerp_TeamColor.uasset │ │ ├── MaterialFunctions │ │ │ └── MF_Eleven_Colors.uasset │ │ ├── Smoke │ │ │ └── M_Inky_Smoke_Burst.uasset │ │ └── Sparks │ │ │ ├── M_Hotdog_Spark_VLerp_MASTER.uasset │ │ │ └── M_Soft_Spark_Glow.uasset │ │ ├── Meshes │ │ └── Heroes │ │ │ ├── Gideon │ │ │ └── SM_Spline_X_Aligned.uasset │ │ │ └── SM_swirls_polySurface3.uasset │ │ ├── Particles │ │ └── Gideon │ │ │ └── Abilities │ │ │ └── Primary │ │ │ └── FX │ │ │ ├── P_Gideon_Primary_HitWorld.uasset │ │ │ ├── P_Gideon_Primary_MuzzleFlash.uasset │ │ │ └── P_Gideon_Primary_Projectile.uasset │ │ ├── Textures │ │ ├── Debris │ │ │ ├── T_Concrete_ChunkSubUV_D.uasset │ │ │ └── T_Concrete_ChunkSubUV_N_TGA.uasset │ │ ├── Energy │ │ │ ├── Plasma │ │ │ │ └── T_Inky_Smoke.uasset │ │ │ └── T_ElectricalBolt_3.uasset │ │ ├── Flares │ │ │ ├── T_Flare_Spikeball.uasset │ │ │ └── T_Glow_Sphere_Soft.uasset │ │ ├── Masks │ │ │ ├── T_Radial_Burst.uasset │ │ │ └── T_TankMoteNoise.uasset │ │ ├── NormalShapes │ │ │ └── T_Radial_Refraction_Blur_N.uasset │ │ ├── Smoke │ │ │ ├── T_FluidSmoke_04.uasset │ │ │ ├── T_FluidSmoke_04_Depth.uasset │ │ │ └── T_TilingClouds_01.uasset │ │ ├── Sparks │ │ │ ├── T_Spark_Soft.uasset │ │ │ └── T_StretchSpark_01.uasset │ │ ├── Tile │ │ │ └── Noise │ │ │ │ ├── T_Inky_Smoke_Tile.uasset │ │ │ │ └── T_Soft_Noise.uasset │ │ └── trails │ │ │ ├── T_Silky_Smoke_Trail.uasset │ │ │ ├── T_Smoke_Trail_Soft.uasset │ │ │ └── T_Trail_Mask.uasset │ │ └── VectorFields │ │ └── VF_F60.uasset ├── Splash │ ├── EdSplash.bmp │ └── Splash.bmp ├── UI │ └── FirstPersonCrosshair.uasset └── Weapon │ ├── FirstPersonProjectileMesh.uasset │ ├── M_FPGun.uasset │ ├── M_Projectile.uasset │ ├── SK_FPGun.uasset │ ├── SK_FPGun_PhysicsAsset.uasset │ ├── SK_FPGun_Skeleton.uasset │ ├── T_FPGun_M.uasset │ └── T_FPGun_N.uasset ├── FPSGame.uproject ├── Platforms └── HoloLens │ └── Config │ └── HoloLensEngine.ini ├── README.md └── Source ├── FPSGame.Target.cs ├── FPSGame ├── FPSGame.Build.cs ├── FPSGame.cpp ├── FPSGame.h ├── Private │ ├── FPSAnimInstance.cpp │ ├── FPSCharacter.cpp │ ├── FPSGameMode.cpp │ ├── FPSHUD.cpp │ └── FPSProjectile.cpp └── Public │ ├── FPSAnimInstance.h │ ├── FPSCharacter.h │ ├── FPSGameMode.h │ ├── FPSHUD.h │ └── FPSProjectile.h └── FPSGameEditor.Target.cs /.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio 2015 user specific files 2 | .vs/ 3 | .vsconfig 4 | 5 | # Rider 6 | .idea/ 7 | 8 | # Visual Studio 2015 database file 9 | *.VC.db 10 | 11 | # Compiled Object files 12 | *.slo 13 | *.lo 14 | *.o 15 | *.obj 16 | *.pdb 17 | *.modules 18 | *.target 19 | 20 | # Precompiled Headers 21 | *.gch 22 | *.pch 23 | 24 | # Compiled Dynamic libraries 25 | *.so 26 | *.dylib 27 | 28 | # Fortran module files 29 | *.mod 30 | 31 | # Compiled Static libraries 32 | *.lai 33 | *.la 34 | *.a 35 | *.lib 36 | 37 | # Executables 38 | *.exe 39 | *.out 40 | *.app 41 | *.ipa 42 | 43 | # These project files can be generated by the engine 44 | *.xcodeproj 45 | *.xcworkspace 46 | *.sln 47 | *.suo 48 | *.opensdf 49 | *.sdf 50 | *.VC.db 51 | *.VC.opendb 52 | 53 | # Precompiled Assets 54 | SourceArt/**/*.png 55 | SourceArt/**/*.tga 56 | 57 | # Builds 58 | Build/* 59 | 60 | # Whitelist PakBlacklist-.txt files 61 | !Build/*/ 62 | Build/*/** 63 | !Build/*/PakBlacklist*.txt 64 | 65 | # Don't ignore icon files in Build 66 | !Build/**/*.ico 67 | 68 | # Configuration files generated by the Editor 69 | Saved/* 70 | 71 | # Compiled source files for the engine to use 72 | Intermediate/* 73 | 74 | # Cache files for the editor to use 75 | DerivedDataCache/* 76 | -------------------------------------------------------------------------------- /Binaries/Win64/UE4Editor-FPSGame.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Binaries/Win64/UE4Editor-FPSGame.dll -------------------------------------------------------------------------------- /Binaries/Win64/UnrealEditor-FPSGame.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Binaries/Win64/UnrealEditor-FPSGame.dll -------------------------------------------------------------------------------- /Config/DefaultEditor.ini: -------------------------------------------------------------------------------- 1 | [UnrealEd.SimpleMap] 2 | SimpleMapName=/Game/FirstPerson/Maps/FirstPersonExampleMap 3 | 4 | [EditoronlyBP] 5 | bAllowClassAndBlueprintPinMatching=true 6 | bReplaceBlueprintWithClass= true 7 | bDontLoadBlueprintOutsideEditor= true 8 | bBlueprintIsNotBlueprintType= true 9 | 10 | 11 | -------------------------------------------------------------------------------- /Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | [/Script/Engine.CollisionProfile] 2 | +Profiles=(Name="Projectile",CollisionEnabled=QueryOnly,ObjectTypeName="Projectile",CustomResponses=,HelpMessage="Preset for projectiles",bCanModify=True) 3 | +DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,Name="Projectile",DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False) 4 | +EditProfiles=(Name="Trigger",CustomResponses=((Channel=Projectile, Response=ECR_Ignore))) 5 | 6 | [/Script/EngineSettings.GameMapsSettings] 7 | EditorStartupMap=/Game/Maps/FirstPersonExampleMap.FirstPersonExampleMap 8 | LocalMapOptions= 9 | TransitionMap= 10 | bUseSplitscreen=True 11 | TwoPlayerSplitscreenLayout=Horizontal 12 | ThreePlayerSplitscreenLayout=FavorTop 13 | GameInstanceClass=/Script/Engine.GameInstance 14 | GameDefaultMap=/Game/Maps/FirstPersonExampleMap.FirstPersonExampleMap 15 | ServerDefaultMap=/Engine/Maps/Entry 16 | GlobalDefaultGameMode=/Script/FPSGame.FPSGameMode 17 | GlobalDefaultServerGameMode=None 18 | 19 | [/Script/IOSRuntimeSettings.IOSRuntimeSettings] 20 | MinimumiOSVersion=IOS_11 21 | 22 | 23 | [/Script/Engine.Engine] 24 | +ActiveGameNameRedirects=(OldGameName="TP_FirstPerson",NewGameName="/Script/FPSGame") 25 | +ActiveGameNameRedirects=(OldGameName="/Script/TP_FirstPerson",NewGameName="/Script/FPSGame") 26 | +ActiveClassRedirects=(OldClassName="TP_FirstPersonProjectile",NewClassName="FPSProjectile") 27 | +ActiveClassRedirects=(OldClassName="TP_FirstPersonHUD",NewClassName="FPSHUD") 28 | +ActiveClassRedirects=(OldClassName="TP_FirstPersonGameMode",NewClassName="FPSGameMode") 29 | +ActiveClassRedirects=(OldClassName="TP_FirstPersonCharacter",NewClassName="FPSCharacter") 30 | 31 | [/Script/HardwareTargeting.HardwareTargetingSettings] 32 | TargetedHardwareClass=Desktop 33 | AppliedTargetedHardwareClass=Desktop 34 | DefaultGraphicsPerformance=Maximum 35 | AppliedDefaultGraphicsPerformance=Maximum 36 | 37 | [/Script/Engine.PhysicsSettings] 38 | DefaultGravityZ=-980.000000 39 | DefaultTerminalVelocity=4000.000000 40 | DefaultFluidFriction=0.300000 41 | SimulateScratchMemorySize=262144 42 | RagdollAggregateThreshold=4 43 | TriangleMeshTriangleMinAreaThreshold=5.000000 44 | bEnableAsyncScene=False 45 | bEnableShapeSharing=False 46 | bEnablePCM=True 47 | bEnableStabilization=False 48 | bWarnMissingLocks=True 49 | bEnable2DPhysics=False 50 | PhysicErrorCorrection=(PingExtrapolation=0.100000,ErrorPerLinearDifference=1.000000,ErrorPerAngularDifference=1.000000,MaxRestoredStateError=1.000000,PositionLerp=0.000000,AngleLerp=0.400000,LinearVelocityCoefficient=100.000000,AngularVelocityCoefficient=10.000000,ErrorAccumulationSeconds=0.500000,ErrorAccumulationDistanceSq=15.000000,ErrorAccumulationSimilarity=100.000000) 51 | LockedAxis=Invalid 52 | DefaultDegreesOfFreedom=Full3D 53 | BounceThresholdVelocity=200.000000 54 | FrictionCombineMode=Average 55 | RestitutionCombineMode=Average 56 | MaxAngularVelocity=3600.000000 57 | MaxDepenetrationVelocity=0.000000 58 | ContactOffsetMultiplier=0.020000 59 | MinContactOffset=2.000000 60 | MaxContactOffset=8.000000 61 | bSimulateSkeletalMeshOnDedicatedServer=True 62 | DefaultShapeComplexity=CTF_UseSimpleAndComplex 63 | bDefaultHasComplexCollision=True 64 | bSuppressFaceRemapTable=False 65 | bSupportUVFromHitResults=False 66 | bDisableActiveActors=False 67 | bDisableKinematicStaticPairs=False 68 | bDisableKinematicKinematicPairs=False 69 | bDisableCCD=False 70 | bEnableEnhancedDeterminism=False 71 | MaxPhysicsDeltaTime=0.033333 72 | bSubstepping=False 73 | bSubsteppingAsync=False 74 | MaxSubstepDeltaTime=0.016667 75 | MaxSubsteps=6 76 | SyncSceneSmoothingFactor=0.000000 77 | AsyncSceneSmoothingFactor=0.990000 78 | InitialAverageFrameRate=0.016667 79 | PhysXTreeRebuildRate=10 80 | DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=0),MBPNumSubdivs=2) 81 | 82 | [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] 83 | bEnablePlugin=True 84 | bAllowNetworkConnection=True 85 | SecurityToken=561E9ADD4322F7E7009885955F008E1E 86 | bIncludeInShipping=False 87 | bAllowExternalStartInShipping=False 88 | bCompileAFSProject=False 89 | bUseCompression=False 90 | bLogFiles=False 91 | bReportStats=False 92 | ConnectionType=USBOnly 93 | bUseManualIPAddress=False 94 | ManualIPAddress= 95 | 96 | -------------------------------------------------------------------------------- /Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [ProjectSettings] 2 | ProjectID=(A=1823396784,B=1298598689,C=1743498150,D=-2048051708) 3 | ProjectName=First Person Template 4 | 5 | 6 | [/Script/EngineSettings.GeneralProjectSettings] 7 | ProjectID=84280D9543200F6157F566BBB17DFDAE -------------------------------------------------------------------------------- /Config/DefaultInput.ini: -------------------------------------------------------------------------------- 1 | [/Script/Engine.InputSettings] 2 | -AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 3 | -AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 4 | -AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 5 | -AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 6 | -AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 7 | -AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 8 | -AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 9 | +AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 10 | +AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 11 | +AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 12 | +AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 13 | +AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 14 | +AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 15 | +AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 16 | +AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 17 | +AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 18 | +AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 19 | +AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 20 | +AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 21 | +AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 22 | +AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 23 | +AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 24 | +AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 25 | +AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 26 | +AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 27 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 28 | +AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 29 | +AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 30 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 31 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 32 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 33 | +AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 34 | +AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 35 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 36 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 37 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 38 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 39 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 40 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 41 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 42 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 43 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 44 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 45 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 46 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 47 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 48 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 49 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 50 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 51 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 52 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 53 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 54 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 55 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 56 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 57 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 58 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 59 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 60 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 61 | bAltEnterTogglesFullscreen=True 62 | bF11TogglesFullscreen=True 63 | bUseMouseForTouch=False 64 | bEnableMouseSmoothing=True 65 | bEnableFOVScaling=True 66 | bCaptureMouseOnLaunch=True 67 | bEnableLegacyInputScales=True 68 | bEnableMotionControls=True 69 | bFilterInputByPlatformUser=False 70 | bEnableInputDeviceSubsystem=True 71 | bShouldFlushPressedKeysOnViewportFocusLost=True 72 | bEnableDynamicComponentInputBinding=True 73 | bAlwaysShowTouchInterface=False 74 | bShowConsoleOnFourFingerTap=True 75 | bEnableGestureRecognizer=False 76 | bUseAutocorrect=False 77 | DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown 78 | DefaultViewportMouseLockMode=LockOnCapture 79 | FOVScale=0.011110 80 | DoubleClickTime=0.200000 81 | DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput 82 | DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent 83 | DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks 84 | -ConsoleKeys=Tilde 85 | +ConsoleKeys=Tilde 86 | 87 | -------------------------------------------------------------------------------- /Content/Animations/FirstPerson_AnimBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Animations/FirstPerson_AnimBP.uasset -------------------------------------------------------------------------------- /Content/Animations/FirstPerson_Fire.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Animations/FirstPerson_Fire.uasset -------------------------------------------------------------------------------- /Content/Animations/FirstPerson_Idle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Animations/FirstPerson_Idle.uasset -------------------------------------------------------------------------------- /Content/Animations/FirstPerson_JumpEnd.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Animations/FirstPerson_JumpEnd.uasset -------------------------------------------------------------------------------- /Content/Animations/FirstPerson_JumpLoop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Animations/FirstPerson_JumpLoop.uasset -------------------------------------------------------------------------------- /Content/Animations/FirstPerson_JumpStart.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Animations/FirstPerson_JumpStart.uasset -------------------------------------------------------------------------------- /Content/Animations/FirstPerson_Run.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Animations/FirstPerson_Run.uasset -------------------------------------------------------------------------------- /Content/Audio/FirstPersonTemplateWeaponFire02.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Audio/FirstPersonTemplateWeaponFire02.uasset -------------------------------------------------------------------------------- /Content/Blueprints/BP_Player.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Blueprints/BP_Player.uasset -------------------------------------------------------------------------------- /Content/Blueprints/BP_Projectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Blueprints/BP_Projectile.uasset -------------------------------------------------------------------------------- /Content/Character/M_PlayerArms.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Character/M_PlayerArms.uasset -------------------------------------------------------------------------------- /Content/Character/Mesh/SK_Mannequin_Arms.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Character/Mesh/SK_Mannequin_Arms.uasset -------------------------------------------------------------------------------- /Content/Character/Mesh/SK_Mannequin_Arms_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Character/Mesh/SK_Mannequin_Arms_PhysicsAsset.uasset -------------------------------------------------------------------------------- /Content/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset -------------------------------------------------------------------------------- /Content/Character/Textures/UE4_LOGO_CARD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Character/Textures/UE4_LOGO_CARD.uasset -------------------------------------------------------------------------------- /Content/Character/Textures/UE4_Mannequin_MAT_MASKA.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Character/Textures/UE4_Mannequin_MAT_MASKA.uasset -------------------------------------------------------------------------------- /Content/Character/Textures/UE4_Mannequin__normals.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Character/Textures/UE4_Mannequin__normals.uasset -------------------------------------------------------------------------------- /Content/Effects/Materials/M_Burst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Materials/M_Burst.uasset -------------------------------------------------------------------------------- /Content/Effects/Materials/M_explosion_subUV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Materials/M_explosion_subUV.uasset -------------------------------------------------------------------------------- /Content/Effects/Materials/M_radial_ramp.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Materials/M_radial_ramp.uasset -------------------------------------------------------------------------------- /Content/Effects/Materials/M_smoke_subUV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Materials/M_smoke_subUV.uasset -------------------------------------------------------------------------------- /Content/Effects/Materials/m_flare_01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Materials/m_flare_01.uasset -------------------------------------------------------------------------------- /Content/Effects/P_Explosion.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/P_Explosion.uasset -------------------------------------------------------------------------------- /Content/Effects/Textures/T_Burst_M.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Textures/T_Burst_M.uasset -------------------------------------------------------------------------------- /Content/Effects/Textures/T_Explosion_SubUV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Textures/T_Explosion_SubUV.uasset -------------------------------------------------------------------------------- /Content/Effects/Textures/T_Smoke_SubUV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Textures/T_Smoke_SubUV.uasset -------------------------------------------------------------------------------- /Content/Effects/Textures/T_Smoke_Tiled_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Effects/Textures/T_Smoke_Tiled_D.uasset -------------------------------------------------------------------------------- /Content/Environment/AntiAliasedTextMaterialTranslucent_Glow.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Environment/AntiAliasedTextMaterialTranslucent_Glow.uasset -------------------------------------------------------------------------------- /Content/Environment/MI_BlockoutSimple_Inst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Environment/MI_BlockoutSimple_Inst.uasset -------------------------------------------------------------------------------- /Content/Environment/M_BlockoutSimple.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Environment/M_BlockoutSimple.uasset -------------------------------------------------------------------------------- /Content/Environment/M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Environment/M_Cube.uasset -------------------------------------------------------------------------------- /Content/Environment/M_Cube_Inst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Environment/M_Cube_Inst.uasset -------------------------------------------------------------------------------- /Content/Environment/Shape_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Environment/Shape_Cube.uasset -------------------------------------------------------------------------------- /Content/Input/IA_Fire.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Input/IA_Fire.uasset -------------------------------------------------------------------------------- /Content/Input/IA_Jump.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Input/IA_Jump.uasset -------------------------------------------------------------------------------- /Content/Input/IA_Look.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Input/IA_Look.uasset -------------------------------------------------------------------------------- /Content/Input/IA_Move.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Input/IA_Move.uasset -------------------------------------------------------------------------------- /Content/Input/IMC_DefaultPlayer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Input/IMC_DefaultPlayer.uasset -------------------------------------------------------------------------------- /Content/Maps/FirstPersonExampleMap.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Maps/FirstPersonExampleMap.umap -------------------------------------------------------------------------------- /Content/Maps/FirstPersonExampleMap_BuiltData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Maps/FirstPersonExampleMap_BuiltData.uasset -------------------------------------------------------------------------------- /Content/Misc/Shakes/CamShake_Jump.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Misc/Shakes/CamShake_Jump.uasset -------------------------------------------------------------------------------- /Content/Misc/Shakes/CamShake_Landed.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Misc/Shakes/CamShake_Landed.uasset -------------------------------------------------------------------------------- /Content/Misc/Shakes/CamShake_TakeDamage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Misc/Shakes/CamShake_TakeDamage.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Debris/M_Explosion_RockChunks.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Debris/M_Explosion_RockChunks.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Energy/Plasma/M_Swirl_Plasma.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Energy/Plasma/M_Swirl_Plasma.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Flares/M_DarkFlare_DistShrink.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Flares/M_DarkFlare_DistShrink.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Flares/M_GlowPoint_DistShrink_MASTER.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Flares/M_GlowPoint_DistShrink_MASTER.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Flares/M_Lensflare_TB_Soft_LDR2HDR.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Flares/M_Lensflare_TB_Soft_LDR2HDR.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Functions/MF_CameraDistanceFade.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Functions/MF_CameraDistanceFade.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Functions/MF_DitheredRefraction.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Functions/MF_DitheredRefraction.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Functions/MF_FX_EmissiveModulate.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Functions/MF_FX_EmissiveModulate.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Functions/MF_FX_NearCameraFade.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Functions/MF_FX_NearCameraFade.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Functions/MF_ParticleShrinkDistance.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Functions/MF_ParticleShrinkDistance.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Heroes/Gideon/M_Explosion_Smoke_Spears.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Heroes/Gideon/M_Explosion_Smoke_Spears.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Heroes/Gideon/M_Wisp_SplineThicken_Small.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Heroes/Gideon/M_Wisp_SplineThicken_Small.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Heroes/Gideon/M_Wispy_Smoke_Trail_Projectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Heroes/Gideon/M_Wispy_Smoke_Trail_Projectile.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Heroes/M_Radial_Blur_Refraction.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Heroes/M_Radial_Blur_Refraction.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Heroes/M_Spark_VelocityLerp_Pellets_Inst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Heroes/M_Spark_VelocityLerp_Pellets_Inst.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Heroes/M_Spark_VelocityLerp_TeamColor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Heroes/M_Spark_VelocityLerp_TeamColor.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/MaterialFunctions/MF_Eleven_Colors.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/MaterialFunctions/MF_Eleven_Colors.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Smoke/M_Inky_Smoke_Burst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Smoke/M_Inky_Smoke_Burst.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Sparks/M_Hotdog_Spark_VLerp_MASTER.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Sparks/M_Hotdog_Spark_VLerp_MASTER.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Materials/Sparks/M_Soft_Spark_Glow.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Materials/Sparks/M_Soft_Spark_Glow.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Meshes/Heroes/Gideon/SM_Spline_X_Aligned.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Meshes/Heroes/Gideon/SM_Spline_X_Aligned.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Meshes/Heroes/SM_swirls_polySurface3.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Meshes/Heroes/SM_swirls_polySurface3.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Particles/Gideon/Abilities/Primary/FX/P_Gideon_Primary_HitWorld.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Particles/Gideon/Abilities/Primary/FX/P_Gideon_Primary_HitWorld.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Particles/Gideon/Abilities/Primary/FX/P_Gideon_Primary_MuzzleFlash.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Particles/Gideon/Abilities/Primary/FX/P_Gideon_Primary_MuzzleFlash.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Particles/Gideon/Abilities/Primary/FX/P_Gideon_Primary_Projectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Particles/Gideon/Abilities/Primary/FX/P_Gideon_Primary_Projectile.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Debris/T_Concrete_ChunkSubUV_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Debris/T_Concrete_ChunkSubUV_D.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Debris/T_Concrete_ChunkSubUV_N_TGA.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Debris/T_Concrete_ChunkSubUV_N_TGA.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Energy/Plasma/T_Inky_Smoke.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Energy/Plasma/T_Inky_Smoke.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Energy/T_ElectricalBolt_3.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Energy/T_ElectricalBolt_3.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Flares/T_Flare_Spikeball.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Flares/T_Flare_Spikeball.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Flares/T_Glow_Sphere_Soft.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Flares/T_Glow_Sphere_Soft.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Masks/T_Radial_Burst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Masks/T_Radial_Burst.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Masks/T_TankMoteNoise.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Masks/T_TankMoteNoise.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/NormalShapes/T_Radial_Refraction_Blur_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/NormalShapes/T_Radial_Refraction_Blur_N.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Smoke/T_FluidSmoke_04.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Smoke/T_FluidSmoke_04.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Smoke/T_FluidSmoke_04_Depth.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Smoke/T_FluidSmoke_04_Depth.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Smoke/T_TilingClouds_01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Smoke/T_TilingClouds_01.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Sparks/T_Spark_Soft.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Sparks/T_Spark_Soft.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Sparks/T_StretchSpark_01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Sparks/T_StretchSpark_01.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Tile/Noise/T_Inky_Smoke_Tile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Tile/Noise/T_Inky_Smoke_Tile.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/Tile/Noise/T_Soft_Noise.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/Tile/Noise/T_Soft_Noise.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/trails/T_Silky_Smoke_Trail.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/trails/T_Silky_Smoke_Trail.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/trails/T_Smoke_Trail_Soft.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/trails/T_Smoke_Trail_Soft.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/Textures/trails/T_Trail_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/Textures/trails/T_Trail_Mask.uasset -------------------------------------------------------------------------------- /Content/ParagonGideon/FX/VectorFields/VF_F60.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/ParagonGideon/FX/VectorFields/VF_F60.uasset -------------------------------------------------------------------------------- /Content/Splash/EdSplash.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Splash/EdSplash.bmp -------------------------------------------------------------------------------- /Content/Splash/Splash.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Splash/Splash.bmp -------------------------------------------------------------------------------- /Content/UI/FirstPersonCrosshair.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/UI/FirstPersonCrosshair.uasset -------------------------------------------------------------------------------- /Content/Weapon/FirstPersonProjectileMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/FirstPersonProjectileMesh.uasset -------------------------------------------------------------------------------- /Content/Weapon/M_FPGun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/M_FPGun.uasset -------------------------------------------------------------------------------- /Content/Weapon/M_Projectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/M_Projectile.uasset -------------------------------------------------------------------------------- /Content/Weapon/SK_FPGun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/SK_FPGun.uasset -------------------------------------------------------------------------------- /Content/Weapon/SK_FPGun_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/SK_FPGun_PhysicsAsset.uasset -------------------------------------------------------------------------------- /Content/Weapon/SK_FPGun_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/SK_FPGun_Skeleton.uasset -------------------------------------------------------------------------------- /Content/Weapon/T_FPGun_M.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/T_FPGun_M.uasset -------------------------------------------------------------------------------- /Content/Weapon/T_FPGun_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomlooman/SimpleFPSTemplate/e783e078498a9996a625ac0becc22909e0a02a76/Content/Weapon/T_FPGun_N.uasset -------------------------------------------------------------------------------- /FPSGame.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "5.2", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "FPSGame", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "Engine" 13 | ] 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Platforms/HoloLens/Config/HoloLensEngine.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/HoloLensPlatformEditor.HoloLensTargetSettings] 4 | bBuildForEmulation=False 5 | bBuildForDevice=True 6 | bUseNameForLogo=True 7 | bBuildForRetailWindowsStore=False 8 | bAutoIncrementVersion=False 9 | bShouldCreateAppInstaller=False 10 | AppInstallerInstallationURL= 11 | HoursBetweenUpdateChecks=0 12 | bEnablePIXProfiling=False 13 | TileBackgroundColor=(B=64,G=0,R=0,A=255) 14 | SplashScreenBackgroundColor=(B=64,G=0,R=0,A=255) 15 | +PerCultureResources=(CultureId="",Strings=(PackageDisplayName="",PublisherDisplayName="",PackageDescription="",ApplicationDisplayName="",ApplicationDescription=""),Images=()) 16 | TargetDeviceFamily=Windows.Holographic 17 | MinimumPlatformVersion=10.0.18362.0 18 | MaximumPlatformVersionTested=10.0.19041.0 19 | MaxTrianglesPerCubicMeter=500.000000 20 | SpatialMeshingVolumeSize=20.000000 21 | CompilerVersion=Default 22 | Windows10SDKVersion=10.0.18362.0 23 | +CapabilityList=internetClientServer 24 | +CapabilityList=privateNetworkClientServer 25 | +Uap2CapabilityList=spatialPerception 26 | bSetDefaultCapabilities=False 27 | SpatializationPlugin= 28 | SourceDataOverridePlugin= 29 | ReverbPlugin= 30 | OcclusionPlugin= 31 | SoundCueCookQualityIndex=-1 32 | 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SimpleFPSTemplate 2 | Simple C++ FPS Template for Unreal Engine [More Info](https://www.tomlooman.com/fps-template/) 3 | 4 | *Last updated for 5.2* 5 | 6 | # Why create a "simplified" FPS C++ Template? 7 | The provided C++ template that ships with the engine has several features that someone new to C++ may not be interested in like VR controls and Touch input. This code "bloats" the template to look a lot more complex than neccessary if you are simply looking to start with C++ in Unreal Engine. I'm using this project to create tutorials and you can use it in your own way! 8 | 9 | ![alt text](https://www.tomlooman.com/wp-content/uploads/2017/09/Thumb_FPSTemplate2.jpg) 10 | 11 | This project is licensed under the Unreal Engine EULA. 12 | -------------------------------------------------------------------------------- /Source/FPSGame.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class FPSGameTarget : TargetRules 7 | { 8 | public FPSGameTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | ExtraModuleNames.Add("FPSGame"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Source/FPSGame/FPSGame.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class FPSGame : ModuleRules 6 | { 7 | public FPSGame(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] 12 | { 13 | "Core", 14 | "CoreUObject", 15 | "Engine", 16 | "InputCore", 17 | "EnhancedInput", 18 | }); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/FPSGame/FPSGame.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "FPSGame.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, FPSGame, "FPSGame" ); 7 | -------------------------------------------------------------------------------- /Source/FPSGame/FPSGame.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | -------------------------------------------------------------------------------- /Source/FPSGame/Private/FPSAnimInstance.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "FPSAnimInstance.h" 5 | #include "GameFramework/Character.h" 6 | 7 | 8 | UFPSAnimInstance::UFPSAnimInstance() 9 | { 10 | MaxSwayRotation = 8.0f; 11 | SwaySpeed = 3.0f; 12 | } 13 | 14 | 15 | void UFPSAnimInstance::CalcWeaponSway(float DeltaTime) 16 | { 17 | const APawn* MyPawn = Cast(GetOwningActor()); 18 | if (MyPawn == nullptr) 19 | { 20 | // Can be nullptr while in editor 21 | return; 22 | } 23 | 24 | // Sway Rotation 25 | FRotator CharControlRotation = MyPawn->GetControlRotation(); 26 | FRotator RawDelta = SwayOldRotation - CharControlRotation; 27 | RawDelta.Normalize(); 28 | SwayDeltaRotation = FMath::RInterpTo(SwayDeltaRotation, RawDelta, DeltaTime, SwaySpeed); 29 | SwayOldRotation = CharControlRotation; 30 | // Invert the roll ( counter movement ) and clamp it. 31 | // todo: expose all these params 32 | SwayDeltaRotation.Roll = FMath::Clamp(SwayDeltaRotation.Yaw * -1.35f, MaxSwayRotation * -1.0f, MaxSwayRotation); 33 | 34 | // Sway Translation 35 | FVector InputDirection = MyPawn->GetActorTransform().InverseTransformVectorNoScale(MyPawn->GetLastMovementInputVector()); 36 | InputDirection.Normalize(); 37 | 38 | // todo: expose all these params 39 | InputDirection = InputDirection * FVector(-0.50f, -0.55, 1.0f) * 6.0f; 40 | SwayDeltaTranslation = FMath::Lerp(SwayDeltaTranslation, InputDirection, DeltaTime * SwaySpeed); 41 | } 42 | 43 | void UFPSAnimInstance::NativeUpdateAnimation(float DeltaSeconds) 44 | { 45 | Super::NativeUpdateAnimation(DeltaSeconds); 46 | 47 | // The weapon sway itself is applied to a specific bone in the AnimationBlueprint 48 | CalcWeaponSway(DeltaSeconds); 49 | } 50 | -------------------------------------------------------------------------------- /Source/FPSGame/Private/FPSCharacter.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "FPSCharacter.h" 4 | 5 | #include "EnhancedInputComponent.h" 6 | #include "EnhancedInputSubsystems.h" 7 | #include "InputMappingContext.h" 8 | #include "FPSProjectile.h" 9 | #include "Animation/AnimInstance.h" 10 | #include "Camera/CameraComponent.h" 11 | #include "Components/CapsuleComponent.h" 12 | #include "Kismet/GameplayStatics.h" 13 | #include "Animation/AnimSequence.h" 14 | 15 | 16 | AFPSCharacter::AFPSCharacter() 17 | { 18 | // Create a CameraComponent 19 | CameraComponent = CreateDefaultSubobject(TEXT("FirstPersonCamera")); 20 | CameraComponent->SetupAttachment(GetCapsuleComponent()); 21 | CameraComponent->SetRelativeLocation(FVector(0, 0, BaseEyeHeight)); // Position the camera 22 | CameraComponent->bUsePawnControlRotation = true; 23 | 24 | // Create a mesh component that will be used when being viewed from a '1st person' view (when controlling this pawn) 25 | Mesh1PComponent = CreateDefaultSubobject(TEXT("CharacterMesh")); 26 | Mesh1PComponent->SetupAttachment(CameraComponent); 27 | Mesh1PComponent->CastShadow = false; 28 | Mesh1PComponent->SetRelativeRotation(FRotator(2.0f, -15.0f, 5.0f)); 29 | Mesh1PComponent->SetRelativeLocation(FVector(0, 0, -160.0f)); 30 | 31 | // Create a gun mesh component 32 | GunMeshComponent = CreateDefaultSubobject(TEXT("FP_Gun")); 33 | GunMeshComponent->CastShadow = false; 34 | GunMeshComponent->SetupAttachment(Mesh1PComponent, "GripPoint"); 35 | } 36 | 37 | 38 | void AFPSCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) 39 | { 40 | UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerInputComponent); 41 | 42 | EnhancedInputComponent->BindAction(Input_Move, ETriggerEvent::Triggered, this, &AFPSCharacter::MoveInput); 43 | EnhancedInputComponent->BindAction(Input_Look, ETriggerEvent::Triggered, this, &AFPSCharacter::LookInput); 44 | 45 | // Jump exists in the base class, we dont need our own function 46 | EnhancedInputComponent->BindAction(Input_Jump, ETriggerEvent::Triggered, this, &ACharacter::Jump); 47 | EnhancedInputComponent->BindAction(Input_Fire, ETriggerEvent::Triggered, this, &AFPSCharacter::Fire); 48 | 49 | const APlayerController* PC = GetController(); 50 | const ULocalPlayer* LP = PC->GetLocalPlayer(); 51 | 52 | UEnhancedInputLocalPlayerSubsystem* Subsystem = LP->GetSubsystem(); 53 | // Add mappings for our game, more complex games may have multiple Contexts that are added/removed at runtime 54 | Subsystem->AddMappingContext(DefaultInputMapping, 0); 55 | } 56 | 57 | 58 | void AFPSCharacter::Landed(const FHitResult& Hit) 59 | { 60 | Super::Landed(Hit); 61 | 62 | if (IsLocallyControlled()) 63 | { 64 | /* Play landed camera anim */ 65 | APlayerController* PC = Cast(GetController()); 66 | PC->PlayerCameraManager->StartCameraShake(LandedCameraShake); 67 | 68 | //UGameplayStatics::PlaySound2D(this, LandedSound); 69 | } 70 | } 71 | 72 | void AFPSCharacter::OnJumped_Implementation() 73 | { 74 | Super::OnJumped_Implementation(); 75 | 76 | // Don't play when this code is running for another player's character (multiplayer) 77 | if (IsLocallyControlled()) 78 | { 79 | /* Play jump camera anim */ 80 | APlayerController* PC = Cast(GetController()); 81 | PC->PlayerCameraManager->StartCameraShake(JumpCameraShake); 82 | 83 | //UGameplayStatics::PlaySound2D(this, JumpedSound); 84 | } 85 | } 86 | 87 | 88 | void AFPSCharacter::Fire() 89 | { 90 | // try and fire a projectile 91 | if (ProjectileClass) 92 | { 93 | // Grabs location from the mesh that must have a socket called "Muzzle" in his skeleton 94 | FVector MuzzleLocation = GunMeshComponent->GetSocketLocation("Muzzle"); 95 | // Use controller rotation which is our view direction in first person 96 | FRotator MuzzleRotation = GetControlRotation(); 97 | 98 | //Set Spawn Collision Handling Override 99 | FActorSpawnParameters ActorSpawnParams; 100 | ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding; 101 | ActorSpawnParams.Instigator = this; 102 | 103 | // spawn the projectile at the muzzle 104 | GetWorld()->SpawnActor(ProjectileClass, MuzzleLocation, MuzzleRotation, ActorSpawnParams); 105 | } 106 | 107 | UGameplayStatics::PlaySoundAtLocation(this, FireSound, GetActorLocation()); 108 | 109 | // Get the animation object for the arms mesh 110 | UAnimInstance* AnimInstance = Mesh1PComponent->GetAnimInstance(); 111 | if (AnimInstance) 112 | { 113 | AnimInstance->PlaySlotAnimationAsDynamicMontage(FireAnimation, "Arms", 0.0f); 114 | } 115 | 116 | // Play Muzzle FX 117 | UGameplayStatics::SpawnEmitterAttached(MuzzleFlash, GunMeshComponent, "Muzzle"); 118 | } 119 | 120 | void AFPSCharacter::MoveInput(const FInputActionValue& InputValue) 121 | { 122 | // Combined input from forward/back (X) and left/right (Y) 123 | FVector2d MoveValue = InputValue.Get(); 124 | 125 | // add movement in that direction 126 | AddMovementInput(GetActorForwardVector(), MoveValue.X); 127 | 128 | // add movement in that direction 129 | AddMovementInput(GetActorRightVector(), MoveValue.Y); 130 | } 131 | 132 | void AFPSCharacter::LookInput(const FInputActionValue& InputValue) 133 | { 134 | // Combined input from look up/down (X) and left/right (Y) 135 | FVector2d LookValue = InputValue.Get(); 136 | 137 | AddControllerYawInput(LookValue.X); 138 | AddControllerPitchInput(LookValue.Y); 139 | } 140 | -------------------------------------------------------------------------------- /Source/FPSGame/Private/FPSGameMode.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "FPSGameMode.h" 4 | #include "FPSHUD.h" 5 | #include "FPSCharacter.h" 6 | #include "UObject/ConstructorHelpers.h" 7 | 8 | AFPSGameMode::AFPSGameMode() 9 | { 10 | // set default pawn class to our Blueprinted character 11 | static ConstructorHelpers::FClassFinder PlayerPawnClassFinder(TEXT("/Game/Blueprints/BP_Player")); 12 | DefaultPawnClass = PlayerPawnClassFinder.Class; 13 | 14 | // use our custom HUD class 15 | HUDClass = AFPSHUD::StaticClass(); 16 | } 17 | -------------------------------------------------------------------------------- /Source/FPSGame/Private/FPSHUD.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "FPSHUD.h" 4 | #include "Engine/Canvas.h" 5 | #include "Engine/Texture2D.h" 6 | #include "TextureResource.h" 7 | #include "CanvasItem.h" 8 | #include "UObject/ConstructorHelpers.h" 9 | 10 | AFPSHUD::AFPSHUD() 11 | { 12 | // Set the crosshair texture (not normally recommended to link content through a hardcoded line like below) 13 | static ConstructorHelpers::FObjectFinder CrosshairTexObj(TEXT("/Game/UI/FirstPersonCrosshair")); 14 | CrosshairTex = CrosshairTexObj.Object; 15 | } 16 | 17 | 18 | void AFPSHUD::DrawHUD() 19 | { 20 | Super::DrawHUD(); 21 | 22 | // Draw very simple crosshair 23 | 24 | // find center of the Canvas 25 | const FVector2D Center(Canvas->ClipX * 0.5f, Canvas->ClipY * 0.5f); 26 | 27 | // offset by half the texture's dimensions so that the center of the texture aligns with the center of the Canvas 28 | const FVector2D CrosshairDrawPosition(Center.X - (CrosshairTex->GetSurfaceWidth() * 0.5f), Center.Y - (CrosshairTex->GetSurfaceHeight() * 0.5f)); 29 | 30 | // draw the crosshair 31 | FCanvasTileItem TileItem( CrosshairDrawPosition, CrosshairTex->GetResource(), FLinearColor::White); 32 | TileItem.BlendMode = SE_BLEND_Translucent; 33 | Canvas->DrawItem( TileItem ); 34 | } 35 | -------------------------------------------------------------------------------- /Source/FPSGame/Private/FPSProjectile.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "FPSProjectile.h" 4 | #include "GameFramework/ProjectileMovementComponent.h" 5 | #include "Components/SphereComponent.h" 6 | #include "Kismet/GameplayStatics.h" 7 | #include "TimerManager.h" 8 | 9 | AFPSProjectile::AFPSProjectile() 10 | { 11 | // Use a sphere as a simple collision representation 12 | CollisionComp = CreateDefaultSubobject(TEXT("SphereComp")); 13 | CollisionComp->InitSphereRadius(5.0f); 14 | CollisionComp->SetCollisionProfileName("Projectile"); 15 | CollisionComp->OnComponentHit.AddDynamic(this, &AFPSProjectile::OnHit); // set up a notification for when this component hits something blocking 16 | 17 | // Players can't walk on it 18 | CollisionComp->SetWalkableSlopeOverride(FWalkableSlopeOverride(WalkableSlope_Unwalkable, 0.f)); 19 | CollisionComp->CanCharacterStepUpOn = ECB_No; 20 | 21 | // Set as root component 22 | RootComponent = CollisionComp; 23 | 24 | // Use a ProjectileMovementComponent to govern this projectile's movement 25 | ProjectileMovement = CreateDefaultSubobject(TEXT("ProjectileComp")); 26 | ProjectileMovement->UpdatedComponent = CollisionComp; 27 | ProjectileMovement->InitialSpeed = 3000.f; 28 | ProjectileMovement->MaxSpeed = 3000.f; 29 | ProjectileMovement->bRotationFollowsVelocity = true; 30 | ProjectileMovement->bShouldBounce = true; 31 | } 32 | 33 | 34 | void AFPSProjectile::BeginPlay() 35 | { 36 | Super::BeginPlay(); 37 | 38 | FTimerHandle TimerHandle; 39 | GetWorldTimerManager().SetTimer(TimerHandle, this, &AFPSProjectile::Explode, 3.0f, false); 40 | } 41 | 42 | void AFPSProjectile::Explode() 43 | { 44 | UGameplayStatics::SpawnEmitterAtLocation(this, ExplosionFX, GetActorLocation(), FRotator::ZeroRotator, FVector(5.0f)); 45 | 46 | // Allow BP to trigger additional logic 47 | BlueprintExplode(); 48 | 49 | Destroy(); 50 | } 51 | 52 | 53 | void AFPSProjectile::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) 54 | { 55 | // Only add impulse and destroy projectile if we hit a physics object 56 | if ((OtherActor) && (OtherActor != this) && (OtherComp) && OtherComp->IsSimulatingPhysics()) 57 | { 58 | float RandomIntensity = FMath::RandRange(200.0f, 500.0f); 59 | 60 | OtherComp->AddImpulseAtLocation(GetVelocity() * RandomIntensity, GetActorLocation()); 61 | 62 | FVector Scale = OtherComp->GetComponentScale(); 63 | Scale *= 0.8f; 64 | 65 | if (Scale.GetMin() < 0.5f) 66 | { 67 | OtherActor->Destroy(); 68 | } 69 | else 70 | { 71 | OtherComp->SetWorldScale3D(Scale); 72 | } 73 | 74 | UMaterialInstanceDynamic* MatInst = OtherComp->CreateDynamicMaterialInstance(0); 75 | if (MatInst) 76 | { 77 | MatInst->SetVectorParameterValue("Color", FLinearColor::MakeRandomColor()); 78 | } 79 | 80 | Explode(); 81 | } 82 | } -------------------------------------------------------------------------------- /Source/FPSGame/Public/FPSAnimInstance.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Animation/AnimInstance.h" 7 | #include "FPSAnimInstance.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class FPSGAME_API UFPSAnimInstance : public UAnimInstance 14 | { 15 | GENERATED_BODY() 16 | 17 | FRotator SwayOldRotation; 18 | 19 | protected: 20 | 21 | UPROPERTY(EditAnywhere, Category = "Arm Sway") 22 | float MaxSwayRotation; 23 | 24 | UPROPERTY(EditAnywhere, Category = "Arm Sway") 25 | float SwaySpeed; 26 | 27 | // This is the final value you need to plug into the Transform Bone node ( you don't need to clamp/swizzle this, it's ready as-is ) 28 | UPROPERTY(BlueprintReadOnly, Category ="ArmsAnimInstance") 29 | FRotator SwayDeltaRotation; 30 | 31 | UPROPERTY(BlueprintReadOnly, Category = "ArmsAnimInstance") 32 | FVector SwayDeltaTranslation; 33 | 34 | UFUNCTION(BlueprintCallable, Category = "ArmsAnimInstance") 35 | void CalcWeaponSway(float DeltaTime); 36 | 37 | virtual void NativeUpdateAnimation(float DeltaSeconds) override; 38 | 39 | UFPSAnimInstance(); 40 | }; 41 | -------------------------------------------------------------------------------- /Source/FPSGame/Public/FPSCharacter.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Character.h" 7 | 8 | // Included for struct FInputActionInstance (Enhanced Input) 9 | #include "InputAction.h" 10 | 11 | #include "FPSCharacter.generated.h" 12 | 13 | class UInputMappingContext; 14 | class UInputComponent; 15 | class USkeletalMeshComponent; 16 | class UCameraComponent; 17 | class AFPSProjectile; 18 | class USoundBase; 19 | class UAnimSequence; 20 | class UParticleSystem; 21 | 22 | 23 | UCLASS() 24 | class AFPSCharacter : public ACharacter 25 | { 26 | GENERATED_BODY() 27 | 28 | protected: 29 | 30 | // -- Enhanced Input -- // 31 | 32 | /* Holds collection of currently active and available InputActions */ 33 | UPROPERTY(EditDefaultsOnly, Category="Input") 34 | UInputMappingContext* DefaultInputMapping; 35 | 36 | UPROPERTY(EditDefaultsOnly, Category= "Input") 37 | UInputAction* Input_Move; 38 | 39 | UPROPERTY(EditDefaultsOnly, Category= "Input") 40 | UInputAction* Input_Look; 41 | 42 | UPROPERTY(EditDefaultsOnly, Category= "Input") 43 | UInputAction* Input_Jump; 44 | 45 | UPROPERTY(EditDefaultsOnly, Category= "Input") 46 | UInputAction* Input_Fire; 47 | 48 | /** Pawn mesh: 1st person view */ 49 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Mesh") 50 | USkeletalMeshComponent* Mesh1PComponent; 51 | 52 | /** Gun mesh: 1st person view (seen only by self) */ 53 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Mesh") 54 | USkeletalMeshComponent* GunMeshComponent; 55 | 56 | /** First person camera */ 57 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera") 58 | UCameraComponent* CameraComponent; 59 | 60 | UPROPERTY(EditDefaultsOnly, Category = "Camera") 61 | TSubclassOf LandedCameraShake; 62 | 63 | UPROPERTY(EditDefaultsOnly, Category = "Camera") 64 | TSubclassOf JumpCameraShake; 65 | 66 | public: 67 | AFPSCharacter(); 68 | 69 | /** Projectile class to spawn */ 70 | UPROPERTY(EditDefaultsOnly, Category="Projectile") 71 | TSubclassOf ProjectileClass; 72 | 73 | /** Sound to play each time we fire */ 74 | UPROPERTY(EditDefaultsOnly, Category="Gameplay") 75 | USoundBase* FireSound; 76 | 77 | /** AnimMontage to play each time we fire */ 78 | UPROPERTY(EditDefaultsOnly, Category = "Gameplay") 79 | UAnimSequence* FireAnimation; 80 | 81 | UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Movement") 82 | UParticleSystem* MuzzleFlash; 83 | 84 | virtual void Landed(const FHitResult& Hit) override; 85 | 86 | virtual void OnJumped_Implementation() override; 87 | 88 | protected: 89 | 90 | /** Fires a projectile. */ 91 | void Fire(); 92 | 93 | void MoveInput(const FInputActionValue& InputValue); 94 | 95 | void LookInput(const FInputActionValue& InputValue); 96 | 97 | virtual void SetupPlayerInputComponent(UInputComponent* InputComponent) override; 98 | 99 | public: 100 | /** Returns Mesh1P subobject **/ 101 | USkeletalMeshComponent* GetMesh1P() const { return Mesh1PComponent; } 102 | 103 | /** Returns FirstPersonCameraComponent subobject **/ 104 | UCameraComponent* GetFirstPersonCameraComponent() const { return CameraComponent; } 105 | 106 | }; 107 | 108 | -------------------------------------------------------------------------------- /Source/FPSGame/Public/FPSGameMode.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "FPSGameMode.generated.h" 8 | 9 | UCLASS() 10 | class AFPSGameMode : public AGameModeBase 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | 16 | AFPSGameMode(); 17 | }; 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Source/FPSGame/Public/FPSHUD.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/HUD.h" 7 | #include "FPSHUD.generated.h" 8 | 9 | class UTexture2D; 10 | 11 | UCLASS() 12 | class AFPSHUD : public AHUD 13 | { 14 | GENERATED_BODY() 15 | 16 | protected: 17 | 18 | /** Crosshair asset pointer */ 19 | UTexture2D* CrosshairTex; 20 | 21 | public: 22 | 23 | AFPSHUD(); 24 | 25 | /** Primary draw call for the HUD */ 26 | virtual void DrawHUD() override; 27 | 28 | }; 29 | 30 | -------------------------------------------------------------------------------- /Source/FPSGame/Public/FPSProjectile.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "FPSProjectile.generated.h" 8 | 9 | 10 | class UProjectileMovementComponent; 11 | class USphereComponent; 12 | class UParticleSystem; 13 | 14 | 15 | UCLASS() 16 | class AFPSProjectile : public AActor 17 | { 18 | GENERATED_BODY() 19 | 20 | protected: 21 | 22 | /** Sphere collision component */ 23 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category= "Components") 24 | USphereComponent* CollisionComp; 25 | 26 | /** Projectile movement component */ 27 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components") 28 | UProjectileMovementComponent* ProjectileMovement; 29 | 30 | UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Movement") 31 | UParticleSystem* ExplosionFX; 32 | 33 | UFUNCTION() 34 | void Explode(); 35 | 36 | UFUNCTION(BlueprintImplementableEvent) 37 | void BlueprintExplode(); 38 | 39 | public: 40 | 41 | AFPSProjectile(); 42 | 43 | virtual void BeginPlay() override; 44 | 45 | /** called when projectile hits something */ 46 | UFUNCTION() 47 | void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit); 48 | 49 | /** Returns CollisionComp subobject **/ 50 | USphereComponent* GetCollisionComp() const { return CollisionComp; } 51 | 52 | /** Returns ProjectileMovement subobject **/ 53 | UProjectileMovementComponent* GetProjectileMovement() const { return ProjectileMovement; } 54 | }; 55 | 56 | -------------------------------------------------------------------------------- /Source/FPSGameEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class FPSGameEditorTarget : TargetRules 7 | { 8 | public FPSGameEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | ExtraModuleNames.Add("FPSGame"); 12 | 13 | DefaultBuildSettings = BuildSettingsVersion.Latest; 14 | IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_2; 15 | } 16 | } 17 | --------------------------------------------------------------------------------