├── .gitattributes ├── .gitignore ├── .vsconfig ├── Config ├── DefaultEditor.ini ├── DefaultEditorPerProjectUserSettings.ini ├── DefaultEngine.ini ├── DefaultGame.ini ├── DefaultGameplayTags.ini ├── DefaultInput.ini └── HoloLens │ └── HoloLensEngine.ini ├── Content ├── AnimStarterPack │ ├── AimOffsets │ │ ├── RifleHip │ │ │ ├── AimOffsetDown_RifleHip.uasset │ │ │ ├── AimOffsetFwd_RifleHip.uasset │ │ │ ├── AimOffsetLeftDown_RifleHip.uasset │ │ │ ├── AimOffsetLeftUp_RifleHip.uasset │ │ │ ├── AimOffsetLeft_RifleHip.uasset │ │ │ ├── AimOffsetRifleHip.uasset │ │ │ ├── AimOffsetRightDown_RifleHip.uasset │ │ │ ├── AimOffsetRightUp_RifleHip.uasset │ │ │ ├── AimOffsetRight_RifleHip.uasset │ │ │ ├── AimOffsetUp_RifleHip.uasset │ │ │ └── Aim_Space_Hip.uasset │ │ └── RifleIronsights │ │ │ ├── AimOffsetDown_RifleIronsights.uasset │ │ │ ├── AimOffsetFwd_RifleIronsights.uasset │ │ │ ├── AimOffsetLeftDown_RifleIronsights.uasset │ │ │ ├── AimOffsetLeftUp_RifleIronsights.uasset │ │ │ ├── AimOffsetLeft_RifleIronsights.uasset │ │ │ ├── AimOffsetRifleIronsights.uasset │ │ │ ├── AimOffsetRightDown_RifleIronsights.uasset │ │ │ ├── AimOffsetRightUp_RifleIronsights.uasset │ │ │ ├── AimOffsetRight_RifleIronsights.uasset │ │ │ ├── AimOffsetUp_RifleIronsights.uasset │ │ │ └── Aim_Space_Ironsights.uasset │ ├── BS_CrouchWalk.uasset │ ├── BS_HeroAimDownSight.uasset │ ├── BS_HeroJog.uasset │ ├── BS_Jog.uasset │ ├── Crouch_Idle_Rifle_Hip.uasset │ ├── Crouch_Idle_Rifle_Ironsights.uasset │ ├── Crouch_Walk_Bwd_Rifle_Hip.uasset │ ├── Crouch_Walk_Bwd_Rifle_Ironsights.uasset │ ├── Crouch_Walk_Fwd_Rifle_Hip.uasset │ ├── Crouch_Walk_Fwd_Rifle_Ironsights.uasset │ ├── Crouch_Walk_Lt_Rifle_Hip.uasset │ ├── Crouch_Walk_Lt_Rifle_Ironsights.uasset │ ├── Crouch_Walk_Rt_Rifle_Hip.uasset │ ├── Crouch_Walk_Rt_Rifle_Ironsights.uasset │ ├── Crouch_to_Stand_Rifle_Hip.uasset │ ├── Crouch_to_Stand_Rifle_Ironsights.uasset │ ├── Dash.uasset │ ├── Dash_Montage.uasset │ ├── Death_1.uasset │ ├── Death_1_Montage.uasset │ ├── Death_2.uasset │ ├── Death_3.uasset │ ├── Death_3_Montage.uasset │ ├── Death_Ironsights_1.uasset │ ├── Death_Ironsights_2.uasset │ ├── Enemy_Idle.uasset │ ├── Enemy_Walk.uasset │ ├── Equip_Pistol_Standing.uasset │ ├── Equip_Rifle_Standing.uasset │ ├── Fire_Rifle_Hip.uasset │ ├── Fire_Rifle_Hip_Montage.uasset │ ├── Fire_Rifle_Ironsights.uasset │ ├── Fire_Rifle_Ironsights_Montage.uasset │ ├── Fire_Shotgun_Hip.uasset │ ├── Fire_Shotgun_Ironsights.uasset │ ├── Hit_React_1.uasset │ ├── Hit_React_2.uasset │ ├── Hit_React_3.uasset │ ├── Hit_React_4.uasset │ ├── Idle_Pistol.uasset │ ├── Idle_Rifle_Hip.uasset │ ├── Idle_Rifle_Hip_Break1.uasset │ ├── Idle_Rifle_Hip_Break2.uasset │ ├── Idle_Rifle_Ironsights.uasset │ ├── Jog_Bwd_Rifle.uasset │ ├── Jog_Fwd_Rifle.uasset │ ├── Jog_Lt_Rifle.uasset │ ├── Jog_Rt_Rifle.uasset │ ├── Jump_From_Jog.uasset │ ├── Jump_From_Stand.uasset │ ├── Jump_From_Stand_Ironsights.uasset │ ├── Prone_Death_1.uasset │ ├── Prone_Death_2.uasset │ ├── Prone_Fire_1.uasset │ ├── Prone_Fire_2.uasset │ ├── Prone_Idle.uasset │ ├── Prone_Reload_Rifle.uasset │ ├── Prone_Reload_Shotgun.uasset │ ├── Prone_To_Stand.uasset │ ├── Reload_Pistol.uasset │ ├── Reload_Rifle_Hip.uasset │ ├── Reload_Rifle_Ironsights.uasset │ ├── Reload_Shotgun_Hip.uasset │ ├── Reload_Shotgun_Ironsights.uasset │ ├── Showcase.umap │ ├── Sprint_Fwd_Rifle.uasset │ ├── Stand_To_Prone.uasset │ ├── Stand_to_Crouch_Rifle_Hip.uasset │ ├── Stand_to_Crouch_Rifle_Ironsights.uasset │ ├── StunLoop.uasset │ ├── StunStart.uasset │ ├── UE4ASP_HeroTPP_AnimBlueprint.uasset │ ├── UE4_Mannequin │ │ ├── Materials │ │ │ ├── MI_UE4Man_Body_Blue.uasset │ │ │ ├── MI_UE4Man_Body_Red.uasset │ │ │ ├── M_UE4Man_Body.uasset │ │ │ ├── M_UE4Man_ChestLogo.uasset │ │ │ └── MaterialLayers │ │ │ │ ├── ML_GlossyBlack_Latex_UE4.uasset │ │ │ │ ├── ML_Plastic_Shiny_Beige.uasset │ │ │ │ ├── ML_Plastic_Shiny_Beige_LOGO.uasset │ │ │ │ ├── ML_SoftMetal_UE4.uasset │ │ │ │ ├── T_ML_Aluminum01.uasset │ │ │ │ ├── T_ML_Aluminum01_N.uasset │ │ │ │ ├── T_ML_Rubber_Blue_01_D.uasset │ │ │ │ └── T_ML_Rubber_Blue_01_N.uasset │ │ ├── Mesh │ │ │ ├── SK_Mannequin.uasset │ │ │ ├── SK_Mannequin_PhysicsAsset.uasset │ │ │ └── UE4_Mannequin_Skeleton.uasset │ │ └── Textures │ │ │ ├── UE4Man_Logo_N.uasset │ │ │ ├── UE4_LOGO_CARD.uasset │ │ │ ├── UE4_Mannequin_MAT_MASKA.uasset │ │ │ ├── UE4_Mannequin__normals.uasset │ │ │ └── UE4_Mannequin_occlusion_Mobile.uasset │ ├── Ue4ASP_Character.uasset │ ├── Walk_Bwd_Rifle_Ironsights.uasset │ ├── Walk_Fwd_Rifle_Ironsights.uasset │ ├── Walk_Lt_Rifle_Ironsights.uasset │ └── Walk_Rt_Rifle_Ironsights.uasset ├── FPWeapon │ ├── Materials │ │ ├── MF_BaseColorTintAndContrast.uasset │ │ ├── MF_RoughnessAdjustment.uasset │ │ ├── MI_FPGun.uasset │ │ ├── M_FPGun.uasset │ │ └── MaterialLayers │ │ │ ├── ML_GlossyBlack_Latex_UE4.uasset │ │ │ ├── ML_Plastic_Shiny_Beige.uasset │ │ │ ├── ML_Plastic_Shiny_Beige_LOGO.uasset │ │ │ ├── ML_SoftMetal_UE4.uasset │ │ │ ├── T_ML_Aluminum01.uasset │ │ │ ├── T_ML_Aluminum01_N.uasset │ │ │ ├── T_ML_FineRubber.uasset │ │ │ ├── T_ML_Rubber_Blue_01_D.uasset │ │ │ └── T_ML_Rubber_Blue_01_N.uasset │ ├── Mesh │ │ ├── SK_FPGun.uasset │ │ ├── SK_FPGun_PhysicsAsset.uasset │ │ └── SK_FPGun_Skeleton.uasset │ └── Textures │ │ ├── T_FPGun_AO.uasset │ │ ├── T_FPGun_M.uasset │ │ ├── T_FPGun_N.uasset │ │ ├── UE4_LOGO_CARD.uasset │ │ └── UE4_Mannequin_occlusion_Mobile.uasset ├── GASDocumentation │ ├── Blueprints │ │ ├── AnimationNotifies │ │ │ ├── AnimNotify_Die.uasset │ │ │ └── AnimNotify_GenericEventByTag.uasset │ │ ├── BP_DamageVolume.uasset │ │ ├── BP_GDGameMode.uasset │ │ ├── BP_HealthManaStaminaRegenVolume.uasset │ │ ├── BP_HealthManaStaminaVolume.uasset │ │ ├── BP_MinionSpawner.uasset │ │ ├── BP_PlayerController.uasset │ │ ├── BP_PlayerState.uasset │ │ ├── GE_DamageVolume.uasset │ │ ├── GE_HealthManaStaminaRegenVolume.uasset │ │ └── GE_HealthManaStaminaVolume.uasset │ ├── Characters │ │ ├── Hero │ │ │ ├── ABP_Hero.uasset │ │ │ ├── Abilities │ │ │ │ ├── AimDownSight │ │ │ │ │ └── GA_AimDownSight_BP.uasset │ │ │ │ ├── Dash │ │ │ │ │ ├── GA_Dash_BP.uasset │ │ │ │ │ └── GE_DashCost.uasset │ │ │ │ ├── FireGun │ │ │ │ │ ├── BP_GunProjectile.uasset │ │ │ │ │ ├── GA_FireGun.uasset │ │ │ │ │ ├── GC_FireGunImpact.uasset │ │ │ │ │ ├── GE_GunDamage.uasset │ │ │ │ │ └── M_LaserProjectile.uasset │ │ │ │ ├── Meteor │ │ │ │ │ ├── BP_Meteor.uasset │ │ │ │ │ ├── BP_MeteorTargetActor.uasset │ │ │ │ │ ├── Effects │ │ │ │ │ │ ├── Masters │ │ │ │ │ │ │ ├── M_Opaque_MeshEmit_Lit_Emis_Master.uasset │ │ │ │ │ │ │ └── M_Trans_MeshEmit_Master.uasset │ │ │ │ │ │ ├── Materials │ │ │ │ │ │ │ ├── MI_Jagged_Rock_01_Lit.uasset │ │ │ │ │ │ │ └── MI_Jagged_rock_01.uasset │ │ │ │ │ │ ├── Meshes │ │ │ │ │ │ │ └── SM_RockComet.uasset │ │ │ │ │ │ └── Textures │ │ │ │ │ │ │ ├── T_JaggedRock_01_D.uasset │ │ │ │ │ │ │ └── T_JaggedRock_D.uasset │ │ │ │ │ ├── GA_Meteor_BP.uasset │ │ │ │ │ ├── GE_MeteorCooldown.uasset │ │ │ │ │ ├── GE_MeteorCost.uasset │ │ │ │ │ ├── GE_MeteorDamage.uasset │ │ │ │ │ └── GE_MeteorStun.uasset │ │ │ │ ├── PassiveArmor │ │ │ │ │ ├── GA_PassiveArmor_BP.uasset │ │ │ │ │ └── GE_PassiveArmor.uasset │ │ │ │ └── Sprint │ │ │ │ │ ├── GA_Sprint_BP.uasset │ │ │ │ │ ├── GC_Sprint.uasset │ │ │ │ │ └── GE_SprintCost.uasset │ │ │ ├── BP_HeroCharacter.uasset │ │ │ └── GE_HeroAttributes.uasset │ │ ├── Minions │ │ │ ├── ABP_Minion.uasset │ │ │ ├── BlueMinion │ │ │ │ ├── BP_BlueMinion.uasset │ │ │ │ └── GE_BlueMinionAttributes.uasset │ │ │ └── RedMinion │ │ │ │ ├── BP_RedMinion.uasset │ │ │ │ └── GE_RedMinionAttributes.uasset │ │ └── Shared │ │ │ ├── GameplayCues │ │ │ └── GC_Stun.uasset │ │ │ ├── GameplayEffectTemplates │ │ │ ├── GE_StandardAimDownSight.uasset │ │ │ ├── GE_StandardAimDownSightRemoval.uasset │ │ │ ├── GE_StandardSprint.uasset │ │ │ └── GE_StandardStun.uasset │ │ │ ├── GameplayEffects │ │ │ ├── GE_HealthRegen.uasset │ │ │ ├── GE_ManaRegen.uasset │ │ │ └── GE_StaminaRegen.uasset │ │ │ └── Targeting │ │ │ ├── Materials │ │ │ └── M_TargetingCircle_Decal.uasset │ │ │ └── Textures │ │ │ └── T_TargetingCircle_Decal.uasset │ ├── Environment │ │ └── Meshes │ │ │ ├── 1M_Cube.uasset │ │ │ ├── 1M_Cube_Chamfer.uasset │ │ │ ├── Bump_StaticMesh.uasset │ │ │ ├── CubeMaterial.uasset │ │ │ ├── LeftArm_StaticMesh.uasset │ │ │ ├── Linear_Stair_StaticMesh.uasset │ │ │ ├── RampMaterial.uasset │ │ │ ├── Ramp_StaticMesh.uasset │ │ │ ├── RightArm_StaticMesh.uasset │ │ │ └── TemplateFloor.uasset │ ├── Maps │ │ └── Map_Startup.umap │ └── UI │ │ ├── Texture │ │ ├── T_Small_Dot.uasset │ │ ├── T_UI_Checkbox_Unchecked.uasset │ │ └── T_UI_Skill_Fireball.uasset │ │ ├── UI_DamageNumber.uasset │ │ ├── UI_FloatingStatusBar_Hero.uasset │ │ ├── UI_FloatingStatusBar_Minion.uasset │ │ ├── UI_HUD.uasset │ │ └── WC_DamageText.uasset ├── ParagonMinions │ └── FX │ │ ├── Materials │ │ ├── Flares │ │ │ ├── MI_DotsStunned_Inst.uasset │ │ │ ├── MI_Stunned_Inst.uasset │ │ │ ├── MI_Stunned_Inst2.uasset │ │ │ ├── MI_Stunned_Inst3.uasset │ │ │ ├── M_DotsStunned.uasset │ │ │ ├── M_Lensflare_01.uasset │ │ │ └── M_Stunned.uasset │ │ ├── Functions │ │ │ ├── FX_EmissiveModulate.uasset │ │ │ ├── MF_CameraDistanceFade.uasset │ │ │ ├── MF_ParticleExpandDistance.uasset │ │ │ └── MF_ParticleRandomSize.uasset │ │ └── Trails │ │ │ └── M_SpeedTrails.uasset │ │ ├── Meshes │ │ └── Shapes │ │ │ ├── SM_StunnedHeroe.uasset │ │ │ ├── SM_StunnedSingleStreched02.uasset │ │ │ └── SM_StunnedSingleThick.uasset │ │ ├── Particles │ │ └── SharedGameplay │ │ │ └── States │ │ │ ├── Speed │ │ │ └── P_Shared_SpeedBuff.uasset │ │ │ └── Stun │ │ │ ├── P_StunnedActivation.uasset │ │ │ ├── P_StunnedDeactivation.uasset │ │ │ └── P_StunnedLoop.uasset │ │ ├── Textures │ │ ├── Flares │ │ │ └── T_blue_sharp.uasset │ │ ├── FluidPatterns │ │ │ └── T_DotsLineThickTile_M.uasset │ │ ├── Gradients │ │ │ └── Masks │ │ │ │ └── T_ShapedTrail.uasset │ │ ├── Masks │ │ │ ├── T_TankMote.uasset │ │ │ └── T_TankMoteNoise.uasset │ │ ├── Smoke │ │ │ └── T_SmokeBall_Single_03.uasset │ │ ├── Tile │ │ │ └── Noise │ │ │ │ ├── T_DotsMulti.uasset │ │ │ │ ├── T_Inky_Smoke_Tile.uasset │ │ │ │ ├── T_NormalNoise.uasset │ │ │ │ └── T_TilingNoise03-2.uasset │ │ └── trails │ │ │ └── T_SpeedTrails_R_N.uasset │ │ └── VectorFields │ │ ├── Galaxyspin.uasset │ │ └── VF_Vortex_6.uasset └── ShooterGame │ └── Effects │ ├── Materials │ ├── LensFlare │ │ └── M_LensFlare_02.uasset │ ├── Ramp │ │ └── M_radial_ramp_soft.uasset │ ├── Smoke │ │ ├── M_ImpactSmoke.uasset │ │ └── M_MuzzleSmokeDetail_GPU.uasset │ └── spark │ │ └── M_spark_subUV.uasset │ ├── ParticleSystems │ └── Weapons │ │ └── AssaultRifle │ │ └── Impacts │ │ └── P_AssaultRifle_IH.uasset │ └── Textures │ ├── LensFlare │ └── Flare_02.uasset │ ├── Smoke │ ├── T_Clouds_01.uasset │ └── T_SmokeBall_01_8_8.uasset │ ├── Spark │ └── T_SparkCore_2X2.uasset │ └── Water │ └── T_Steam_02_Packed.uasset ├── GASDocumentation.uproject ├── Images ├── abilityflowchartcomplex.png ├── abilityflowchartsimple.png ├── abilitytask.png ├── activationfailedtags.png ├── attributechange.png ├── attributeschange.png ├── batchabilityactivate.png ├── calculationmodifierbackingdataattribute.png ├── calculationmodifierbackingdatatempvariable.png ├── cooldownchange.png ├── cooldownmmc.png ├── cooldownsbc.png ├── costmmc.png ├── derivedattribute.png ├── gameplayabilityworldreticle.png ├── gameplaydebugger.png ├── gameplaytageditor.png ├── gcfromga.png ├── gcfromge.png ├── gecontainersetbycaller.png ├── gestackchange.png ├── scalablefloats.png ├── setbycaller.png ├── showdebugpage1.png ├── showdebugpage2.png └── showdebugpage3.png ├── LICENSE ├── README.md └── Source ├── GASDocumentation.Target.cs ├── GASDocumentation ├── GASDocumentation.Build.cs ├── GASDocumentation.cpp ├── GASDocumentation.h ├── GASDocumentationGameMode.cpp ├── GASDocumentationGameMode.h ├── Private │ ├── AI │ │ └── GDHeroAIController.cpp │ ├── Characters │ │ ├── Abilities │ │ │ ├── AbilityTasks │ │ │ │ ├── GDAT_PlayMontageAndWaitForEvent.cpp │ │ │ │ └── GDAT_WaitReceiveDamage.cpp │ │ │ ├── AsyncTaskAttributeChanged.cpp │ │ │ ├── AsyncTaskCooldownChanged.cpp │ │ │ ├── AsyncTaskEffectStackChanged.cpp │ │ │ ├── AttributeSets │ │ │ │ └── GDAttributeSetBase.cpp │ │ │ ├── GDAbilitySystemComponent.cpp │ │ │ ├── GDDamageExecCalculation.cpp │ │ │ ├── GDGA_CharacterJump.cpp │ │ │ └── GDGameplayAbility.cpp │ │ ├── GDCharacterBase.cpp │ │ ├── GDCharacterMovementComponent.cpp │ │ ├── GDProjectile.cpp │ │ ├── Heroes │ │ │ ├── Abilities │ │ │ │ └── GDGA_FireGun.cpp │ │ │ └── GDHeroCharacter.cpp │ │ └── Minions │ │ │ └── GDMinionCharacter.cpp │ ├── GDBlueprintLibrary.cpp │ ├── GDEngineSubsystem.cpp │ ├── Player │ │ ├── GDPlayerController.cpp │ │ └── GDPlayerState.cpp │ └── UI │ │ ├── GDDamageTextWidgetComponent.cpp │ │ ├── GDFloatingStatusBarWidget.cpp │ │ └── GDHUDWidget.cpp └── Public │ ├── AI │ └── GDHeroAIController.h │ ├── Characters │ ├── Abilities │ │ ├── AbilityTasks │ │ │ ├── GDAT_PlayMontageAndWaitForEvent.h │ │ │ └── GDAT_WaitReceiveDamage.h │ │ ├── AsyncTaskAttributeChanged.h │ │ ├── AsyncTaskCooldownChanged.h │ │ ├── AsyncTaskEffectStackChanged.h │ │ ├── AttributeSets │ │ │ └── GDAttributeSetBase.h │ │ ├── GDAbilitySystemComponent.h │ │ ├── GDDamageExecCalculation.h │ │ ├── GDGA_CharacterJump.h │ │ └── GDGameplayAbility.h │ ├── GDCharacterBase.h │ ├── GDCharacterMovementComponent.h │ ├── GDProjectile.h │ ├── Heroes │ │ ├── Abilities │ │ │ └── GDGA_FireGun.h │ │ └── GDHeroCharacter.h │ └── Minions │ │ └── GDMinionCharacter.h │ ├── GDBlueprintLibrary.h │ ├── GDEngineSubsystem.h │ ├── Player │ ├── GDPlayerController.h │ └── GDPlayerState.h │ └── UI │ ├── GDDamageTextWidgetComponent.h │ ├── GDFloatingStatusBarWidget.h │ └── GDHUDWidget.h └── GASDocumentationEditor.Target.cs /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio 2015 user specific files 2 | .vs/ 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | 22 | # Compiled Static libraries 23 | *.lai 24 | *.la 25 | *.a 26 | *.lib 27 | 28 | # Executables 29 | *.exe 30 | *.out 31 | *.app 32 | *.ipa 33 | 34 | # These project files can be generated by the engine 35 | *.xcodeproj 36 | *.xcworkspace 37 | *.sln 38 | *.suo 39 | *.opensdf 40 | *.sdf 41 | *.VC.db 42 | *.VC.opendb 43 | 44 | # Precompiled Assets 45 | SourceArt/**/*.png 46 | SourceArt/**/*.tga 47 | 48 | # Binary Files 49 | Binaries/* 50 | Plugins/*/Binaries/* 51 | 52 | # Builds 53 | Build/* 54 | 55 | # Whitelist PakBlacklist-.txt files 56 | !Build/*/ 57 | Build/*/** 58 | !Build/*/PakBlacklist*.txt 59 | 60 | # Don't ignore icon files in Build 61 | !Build/**/*.ico 62 | 63 | # Built data for maps 64 | *_BuiltData.uasset 65 | 66 | # Configuration files generated by the Editor 67 | Saved/* 68 | 69 | # Compiled source files for the engine to use 70 | Intermediate/* 71 | Plugins/*/Intermediate/* 72 | 73 | # Cache files for the editor to use 74 | DerivedDataCache/* 75 | 76 | # Spotlight index files 77 | .DS_Store 78 | 79 | # Visual Studio Code files 80 | .vscode 81 | *.code-workspace 82 | 83 | # Rider user specific files 84 | .idea/ 85 | /Plugins/Developer/RiderLink 86 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.Net.Component.4.6.2.TargetingPack", 5 | "Microsoft.VisualStudio.Component.VC.14.36.17.6.x86.x64", 6 | "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", 7 | "Microsoft.VisualStudio.Component.Windows10SDK.22000", 8 | "Microsoft.VisualStudio.Workload.CoreEditor", 9 | "Microsoft.VisualStudio.Workload.ManagedDesktop", 10 | "Microsoft.VisualStudio.Workload.NativeDesktop", 11 | "Microsoft.VisualStudio.Workload.NativeGame" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /Config/DefaultEditor.ini: -------------------------------------------------------------------------------- 1 | [UnrealEd.SimpleMap] 2 | SimpleMapName=/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap 3 | 4 | [EditoronlyBP] 5 | bAllowClassAndBlueprintPinMatching=true 6 | bReplaceBlueprintWithClass= true 7 | bDontLoadBlueprintOutsideEditor= true 8 | bBlueprintIsNotBlueprintType= true 9 | 10 | -------------------------------------------------------------------------------- /Config/DefaultEditorPerProjectUserSettings.ini: -------------------------------------------------------------------------------- 1 | [ContentBrowser] 2 | ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonCPP -------------------------------------------------------------------------------- /Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GeneralProjectSettings] 2 | ProjectID=DB236B2A480A1BF29FDDBD8F151CBFCC 3 | ProjectName=GAS Documentation 4 | CopyrightNotice=Copyright 2023 Dan Kestranek. 5 | 6 | [/Script/GameplayAbilities.AbilitySystemGlobals] 7 | GameplayCueNotifyPaths="/Game/GASDocumentation/Characters" 8 | ActivateFailIsDeadName=Activation.Fail.IsDead 9 | ActivateFailCooldownName=Activation.Fail.OnCooldown 10 | ActivateFailCostName=Activation.Fail.CantAffordCost 11 | ActivateFailTagsBlockedName=Activation.Fail.BlockedByTags 12 | ActivateFailTagsMissingName=Activation.Fail.MissingTags 13 | ActivateFailNetworkingName=Activation.Fail.Networking 14 | bUseDebugTargetFromHud=true -------------------------------------------------------------------------------- /Config/DefaultGameplayTags.ini: -------------------------------------------------------------------------------- 1 | 2 | [/Script/GameplayTags.GameplayTagsSettings] 3 | ImportTagsFromConfig=True 4 | WarnOnInvalidTags=True 5 | FastReplication=True 6 | InvalidTagCharacters="\"\'," 7 | +CommonlyReplicatedTags=State.AimDownSights 8 | +CommonlyReplicatedTags=State.AimDownSights.Removal 9 | +CommonlyReplicatedTags=State.Sprinting 10 | NumBitsForContainerSize=6 11 | NetIndexFirstBitSegment=16 12 | +GameplayTagList=(Tag="Ability.AimDownSights",DevComment="") 13 | +GameplayTagList=(Tag="Ability.Jump",DevComment="") 14 | +GameplayTagList=(Tag="Ability.NotCanceledByStun",DevComment="") 15 | +GameplayTagList=(Tag="Ability.Skill.Ability1",DevComment="") 16 | +GameplayTagList=(Tag="Ability.Skill.Ability2",DevComment="") 17 | +GameplayTagList=(Tag="Ability.Skill.Ability3",DevComment="") 18 | +GameplayTagList=(Tag="Ability.Skill.Ability4",DevComment="") 19 | +GameplayTagList=(Tag="Ability.Skill.Ability5",DevComment="") 20 | +GameplayTagList=(Tag="Ability.Sprint",DevComment="") 21 | +GameplayTagList=(Tag="Activation.Fail.BlockedByTags",DevComment="") 22 | +GameplayTagList=(Tag="Activation.Fail.CantAffordCost",DevComment="") 23 | +GameplayTagList=(Tag="Activation.Fail.IsDead",DevComment="") 24 | +GameplayTagList=(Tag="Activation.Fail.MissingTags",DevComment="") 25 | +GameplayTagList=(Tag="Activation.Fail.Networking",DevComment="") 26 | +GameplayTagList=(Tag="Activation.Fail.OnCooldown",DevComment="") 27 | +GameplayTagList=(Tag="Cooldown.Skill.Ability5",DevComment="") 28 | +GameplayTagList=(Tag="Data.Damage",DevComment="") 29 | +GameplayTagList=(Tag="Effect.Hero.PassiveArmor",DevComment="") 30 | +GameplayTagList=(Tag="Effect.HitReact.Back",DevComment="") 31 | +GameplayTagList=(Tag="Effect.HitReact.Front",DevComment="") 32 | +GameplayTagList=(Tag="Effect.HitReact.Left",DevComment="") 33 | +GameplayTagList=(Tag="Effect.HitReact.Right",DevComment="") 34 | +GameplayTagList=(Tag="Effect.RemoveOnDeath",DevComment="") 35 | +GameplayTagList=(Tag="Event.Montage.EndAbility",DevComment="") 36 | +GameplayTagList=(Tag="Event.Montage.SpawnProjectile",DevComment="") 37 | +GameplayTagList=(Tag="GameplayCue.Hero.FireGun.Impact",DevComment="") 38 | +GameplayTagList=(Tag="GameplayCue.Hero.Sprint",DevComment="") 39 | +GameplayTagList=(Tag="GameplayCue.Shared.Stun",DevComment="") 40 | +GameplayTagList=(Tag="State.AimDownSights.Removal",DevComment="") 41 | +GameplayTagList=(Tag="State.Dead",DevComment="") 42 | +GameplayTagList=(Tag="State.Debuff.Stun",DevComment="") 43 | +GameplayTagList=(Tag="State.Sprinting",DevComment="") 44 | 45 | 46 | -------------------------------------------------------------------------------- /Config/HoloLens/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= 18 | MaximumPlatformVersionTested=10.0.18362.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 | ReverbPlugin= 29 | OcclusionPlugin= 30 | SoundCueCookQualityIndex=-1 31 | 32 | -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetDown_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetDown_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetFwd_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetFwd_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetLeftDown_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetLeftDown_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetLeftUp_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetLeftUp_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetLeft_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetLeft_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRightDown_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRightDown_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRightUp_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRightUp_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRight_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetRight_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetUp_RifleHip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/AimOffsetUp_RifleHip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleHip/Aim_Space_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleHip/Aim_Space_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetDown_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetDown_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetFwd_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetFwd_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetLeftDown_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetLeftDown_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetLeftUp_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetLeftUp_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetLeft_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetLeft_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRightDown_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRightDown_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRightUp_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRightUp_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRight_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetRight_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetUp_RifleIronsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/AimOffsetUp_RifleIronsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/AimOffsets/RifleIronsights/Aim_Space_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/AimOffsets/RifleIronsights/Aim_Space_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/BS_CrouchWalk.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/BS_CrouchWalk.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/BS_HeroAimDownSight.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/BS_HeroAimDownSight.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/BS_HeroJog.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/BS_HeroJog.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/BS_Jog.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/BS_Jog.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Idle_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Idle_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Idle_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Idle_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Bwd_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Bwd_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Bwd_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Bwd_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Fwd_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Fwd_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Fwd_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Fwd_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Lt_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Lt_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Lt_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Lt_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Rt_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Rt_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_Walk_Rt_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_Walk_Rt_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_to_Stand_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_to_Stand_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Crouch_to_Stand_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Crouch_to_Stand_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Dash.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Dash.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Dash_Montage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Dash_Montage.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Death_1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Death_1.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Death_1_Montage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Death_1_Montage.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Death_2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Death_2.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Death_3.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Death_3.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Death_3_Montage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Death_3_Montage.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Death_Ironsights_1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Death_Ironsights_1.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Death_Ironsights_2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Death_Ironsights_2.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Enemy_Idle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Enemy_Idle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Enemy_Walk.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Enemy_Walk.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Equip_Pistol_Standing.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Equip_Pistol_Standing.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Equip_Rifle_Standing.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Equip_Rifle_Standing.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Fire_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Fire_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Fire_Rifle_Hip_Montage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Fire_Rifle_Hip_Montage.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Fire_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Fire_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Fire_Rifle_Ironsights_Montage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Fire_Rifle_Ironsights_Montage.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Fire_Shotgun_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Fire_Shotgun_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Fire_Shotgun_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Fire_Shotgun_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Hit_React_1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Hit_React_1.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Hit_React_2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Hit_React_2.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Hit_React_3.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Hit_React_3.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Hit_React_4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Hit_React_4.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Idle_Pistol.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Idle_Pistol.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Idle_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Idle_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Idle_Rifle_Hip_Break1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Idle_Rifle_Hip_Break1.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Idle_Rifle_Hip_Break2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Idle_Rifle_Hip_Break2.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Idle_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Idle_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Jog_Bwd_Rifle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Jog_Bwd_Rifle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Jog_Fwd_Rifle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Jog_Fwd_Rifle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Jog_Lt_Rifle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Jog_Lt_Rifle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Jog_Rt_Rifle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Jog_Rt_Rifle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Jump_From_Jog.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Jump_From_Jog.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Jump_From_Stand.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Jump_From_Stand.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Jump_From_Stand_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Jump_From_Stand_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_Death_1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_Death_1.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_Death_2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_Death_2.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_Fire_1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_Fire_1.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_Fire_2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_Fire_2.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_Idle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_Idle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_Reload_Rifle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_Reload_Rifle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_Reload_Shotgun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_Reload_Shotgun.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Prone_To_Stand.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Prone_To_Stand.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Reload_Pistol.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Reload_Pistol.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Reload_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Reload_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Reload_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Reload_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Reload_Shotgun_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Reload_Shotgun_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Reload_Shotgun_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Reload_Shotgun_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Showcase.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Showcase.umap -------------------------------------------------------------------------------- /Content/AnimStarterPack/Sprint_Fwd_Rifle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Sprint_Fwd_Rifle.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Stand_To_Prone.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Stand_To_Prone.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Stand_to_Crouch_Rifle_Hip.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Stand_to_Crouch_Rifle_Hip.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Stand_to_Crouch_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Stand_to_Crouch_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/StunLoop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/StunLoop.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/StunStart.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/StunStart.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4ASP_HeroTPP_AnimBlueprint.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4ASP_HeroTPP_AnimBlueprint.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MI_UE4Man_Body_Blue.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MI_UE4Man_Body_Blue.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MI_UE4Man_Body_Red.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MI_UE4Man_Body_Red.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/M_UE4Man_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/M_UE4Man_Body.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/M_UE4Man_ChestLogo.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/M_UE4Man_ChestLogo.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Aluminum01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Aluminum01.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Mesh/SK_Mannequin.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Mesh/SK_Mannequin.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Mesh/SK_Mannequin_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Mesh/SK_Mannequin_PhysicsAsset.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Mesh/UE4_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Mesh/UE4_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Textures/UE4Man_Logo_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Textures/UE4Man_Logo_N.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_LOGO_CARD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_LOGO_CARD.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_Mannequin_MAT_MASKA.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_Mannequin_MAT_MASKA.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_Mannequin__normals.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_Mannequin__normals.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_Mannequin_occlusion_Mobile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/UE4_Mannequin/Textures/UE4_Mannequin_occlusion_Mobile.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Ue4ASP_Character.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Ue4ASP_Character.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Walk_Bwd_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Walk_Bwd_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Walk_Fwd_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Walk_Fwd_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Walk_Lt_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Walk_Lt_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/AnimStarterPack/Walk_Rt_Rifle_Ironsights.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/AnimStarterPack/Walk_Rt_Rifle_Ironsights.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MF_BaseColorTintAndContrast.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MF_BaseColorTintAndContrast.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MF_RoughnessAdjustment.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MF_RoughnessAdjustment.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MI_FPGun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MI_FPGun.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/M_FPGun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/M_FPGun.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/T_ML_FineRubber.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/T_ML_FineRubber.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Mesh/SK_FPGun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Mesh/SK_FPGun.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Textures/T_FPGun_AO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Textures/T_FPGun_AO.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Textures/T_FPGun_M.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Textures/T_FPGun_M.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Textures/T_FPGun_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Textures/T_FPGun_N.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Textures/UE4_LOGO_CARD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Textures/UE4_LOGO_CARD.uasset -------------------------------------------------------------------------------- /Content/FPWeapon/Textures/UE4_Mannequin_occlusion_Mobile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/FPWeapon/Textures/UE4_Mannequin_occlusion_Mobile.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/AnimationNotifies/AnimNotify_Die.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/AnimationNotifies/AnimNotify_Die.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/AnimationNotifies/AnimNotify_GenericEventByTag.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/AnimationNotifies/AnimNotify_GenericEventByTag.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/BP_DamageVolume.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/BP_DamageVolume.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/BP_GDGameMode.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/BP_GDGameMode.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/BP_HealthManaStaminaRegenVolume.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/BP_HealthManaStaminaRegenVolume.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/BP_HealthManaStaminaVolume.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/BP_HealthManaStaminaVolume.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/BP_MinionSpawner.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/BP_MinionSpawner.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/BP_PlayerController.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/BP_PlayerController.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/BP_PlayerState.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/BP_PlayerState.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/GE_DamageVolume.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/GE_DamageVolume.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/GE_HealthManaStaminaRegenVolume.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/GE_HealthManaStaminaRegenVolume.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Blueprints/GE_HealthManaStaminaVolume.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Blueprints/GE_HealthManaStaminaVolume.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/ABP_Hero.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/ABP_Hero.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/AimDownSight/GA_AimDownSight_BP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/AimDownSight/GA_AimDownSight_BP.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Dash/GA_Dash_BP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Dash/GA_Dash_BP.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Dash/GE_DashCost.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Dash/GE_DashCost.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/FireGun/BP_GunProjectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/FireGun/BP_GunProjectile.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/FireGun/GA_FireGun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/FireGun/GA_FireGun.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/FireGun/GC_FireGunImpact.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/FireGun/GC_FireGunImpact.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/FireGun/GE_GunDamage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/FireGun/GE_GunDamage.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/FireGun/M_LaserProjectile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/FireGun/M_LaserProjectile.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/BP_Meteor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/BP_Meteor.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/BP_MeteorTargetActor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/BP_MeteorTargetActor.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Masters/M_Opaque_MeshEmit_Lit_Emis_Master.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Masters/M_Opaque_MeshEmit_Lit_Emis_Master.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Masters/M_Trans_MeshEmit_Master.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Masters/M_Trans_MeshEmit_Master.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Materials/MI_Jagged_Rock_01_Lit.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Materials/MI_Jagged_Rock_01_Lit.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Materials/MI_Jagged_rock_01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Materials/MI_Jagged_rock_01.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Meshes/SM_RockComet.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Meshes/SM_RockComet.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Textures/T_JaggedRock_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Textures/T_JaggedRock_01_D.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Textures/T_JaggedRock_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/Effects/Textures/T_JaggedRock_D.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GA_Meteor_BP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GA_Meteor_BP.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorCooldown.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorCooldown.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorCost.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorCost.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorDamage.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorDamage.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorStun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Meteor/GE_MeteorStun.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/PassiveArmor/GA_PassiveArmor_BP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/PassiveArmor/GA_PassiveArmor_BP.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/PassiveArmor/GE_PassiveArmor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/PassiveArmor/GE_PassiveArmor.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Sprint/GA_Sprint_BP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Sprint/GA_Sprint_BP.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Sprint/GC_Sprint.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Sprint/GC_Sprint.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/Abilities/Sprint/GE_SprintCost.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/Abilities/Sprint/GE_SprintCost.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/BP_HeroCharacter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/BP_HeroCharacter.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Hero/GE_HeroAttributes.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Hero/GE_HeroAttributes.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Minions/ABP_Minion.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Minions/ABP_Minion.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Minions/BlueMinion/BP_BlueMinion.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Minions/BlueMinion/BP_BlueMinion.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Minions/BlueMinion/GE_BlueMinionAttributes.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Minions/BlueMinion/GE_BlueMinionAttributes.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Minions/RedMinion/BP_RedMinion.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Minions/RedMinion/BP_RedMinion.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Minions/RedMinion/GE_RedMinionAttributes.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Minions/RedMinion/GE_RedMinionAttributes.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayCues/GC_Stun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayCues/GC_Stun.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardAimDownSight.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardAimDownSight.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardAimDownSightRemoval.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardAimDownSightRemoval.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardSprint.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardSprint.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardStun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayEffectTemplates/GE_StandardStun.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayEffects/GE_HealthRegen.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayEffects/GE_HealthRegen.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayEffects/GE_ManaRegen.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayEffects/GE_ManaRegen.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/GameplayEffects/GE_StaminaRegen.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/GameplayEffects/GE_StaminaRegen.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/Targeting/Materials/M_TargetingCircle_Decal.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/Targeting/Materials/M_TargetingCircle_Decal.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Characters/Shared/Targeting/Textures/T_TargetingCircle_Decal.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Characters/Shared/Targeting/Textures/T_TargetingCircle_Decal.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/1M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/1M_Cube.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/1M_Cube_Chamfer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/1M_Cube_Chamfer.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/Bump_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/Bump_StaticMesh.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/CubeMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/CubeMaterial.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/LeftArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/LeftArm_StaticMesh.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/Linear_Stair_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/Linear_Stair_StaticMesh.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/RampMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/RampMaterial.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/Ramp_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/Ramp_StaticMesh.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/RightArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/RightArm_StaticMesh.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Environment/Meshes/TemplateFloor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Environment/Meshes/TemplateFloor.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/Maps/Map_Startup.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/Maps/Map_Startup.umap -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/Texture/T_Small_Dot.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/Texture/T_Small_Dot.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/Texture/T_UI_Checkbox_Unchecked.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/Texture/T_UI_Checkbox_Unchecked.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/Texture/T_UI_Skill_Fireball.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/Texture/T_UI_Skill_Fireball.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/UI_DamageNumber.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/UI_DamageNumber.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/UI_FloatingStatusBar_Hero.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/UI_FloatingStatusBar_Hero.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/UI_FloatingStatusBar_Minion.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/UI_FloatingStatusBar_Minion.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/UI_HUD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/UI_HUD.uasset -------------------------------------------------------------------------------- /Content/GASDocumentation/UI/WC_DamageText.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/GASDocumentation/UI/WC_DamageText.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Flares/MI_DotsStunned_Inst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Flares/MI_DotsStunned_Inst.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Flares/MI_Stunned_Inst.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Flares/MI_Stunned_Inst.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Flares/MI_Stunned_Inst2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Flares/MI_Stunned_Inst2.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Flares/MI_Stunned_Inst3.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Flares/MI_Stunned_Inst3.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Flares/M_DotsStunned.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Flares/M_DotsStunned.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Flares/M_Lensflare_01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Flares/M_Lensflare_01.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Flares/M_Stunned.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Flares/M_Stunned.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Functions/FX_EmissiveModulate.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Functions/FX_EmissiveModulate.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Functions/MF_CameraDistanceFade.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Functions/MF_CameraDistanceFade.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Functions/MF_ParticleExpandDistance.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Functions/MF_ParticleExpandDistance.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Functions/MF_ParticleRandomSize.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Functions/MF_ParticleRandomSize.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Materials/Trails/M_SpeedTrails.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Materials/Trails/M_SpeedTrails.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Meshes/Shapes/SM_StunnedHeroe.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Meshes/Shapes/SM_StunnedHeroe.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Meshes/Shapes/SM_StunnedSingleStreched02.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Meshes/Shapes/SM_StunnedSingleStreched02.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Meshes/Shapes/SM_StunnedSingleThick.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Meshes/Shapes/SM_StunnedSingleThick.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Particles/SharedGameplay/States/Speed/P_Shared_SpeedBuff.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Particles/SharedGameplay/States/Speed/P_Shared_SpeedBuff.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Particles/SharedGameplay/States/Stun/P_StunnedActivation.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Particles/SharedGameplay/States/Stun/P_StunnedActivation.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Particles/SharedGameplay/States/Stun/P_StunnedDeactivation.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Particles/SharedGameplay/States/Stun/P_StunnedDeactivation.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Particles/SharedGameplay/States/Stun/P_StunnedLoop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Particles/SharedGameplay/States/Stun/P_StunnedLoop.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Flares/T_blue_sharp.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Flares/T_blue_sharp.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/FluidPatterns/T_DotsLineThickTile_M.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/FluidPatterns/T_DotsLineThickTile_M.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Gradients/Masks/T_ShapedTrail.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Gradients/Masks/T_ShapedTrail.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Masks/T_TankMote.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Masks/T_TankMote.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Masks/T_TankMoteNoise.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Masks/T_TankMoteNoise.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Smoke/T_SmokeBall_Single_03.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Smoke/T_SmokeBall_Single_03.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Tile/Noise/T_DotsMulti.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Tile/Noise/T_DotsMulti.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Tile/Noise/T_Inky_Smoke_Tile.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Tile/Noise/T_Inky_Smoke_Tile.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Tile/Noise/T_NormalNoise.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Tile/Noise/T_NormalNoise.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/Tile/Noise/T_TilingNoise03-2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/Tile/Noise/T_TilingNoise03-2.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/Textures/trails/T_SpeedTrails_R_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/Textures/trails/T_SpeedTrails_R_N.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/VectorFields/Galaxyspin.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/VectorFields/Galaxyspin.uasset -------------------------------------------------------------------------------- /Content/ParagonMinions/FX/VectorFields/VF_Vortex_6.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ParagonMinions/FX/VectorFields/VF_Vortex_6.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Materials/LensFlare/M_LensFlare_02.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Materials/LensFlare/M_LensFlare_02.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Materials/Ramp/M_radial_ramp_soft.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Materials/Ramp/M_radial_ramp_soft.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Materials/Smoke/M_ImpactSmoke.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Materials/Smoke/M_ImpactSmoke.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Materials/Smoke/M_MuzzleSmokeDetail_GPU.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Materials/Smoke/M_MuzzleSmokeDetail_GPU.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Materials/spark/M_spark_subUV.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Materials/spark/M_spark_subUV.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/ParticleSystems/Weapons/AssaultRifle/Impacts/P_AssaultRifle_IH.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/ParticleSystems/Weapons/AssaultRifle/Impacts/P_AssaultRifle_IH.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Textures/LensFlare/Flare_02.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Textures/LensFlare/Flare_02.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Textures/Smoke/T_Clouds_01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Textures/Smoke/T_Clouds_01.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Textures/Smoke/T_SmokeBall_01_8_8.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Textures/Smoke/T_SmokeBall_01_8_8.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Textures/Spark/T_SparkCore_2X2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Textures/Spark/T_SparkCore_2X2.uasset -------------------------------------------------------------------------------- /Content/ShooterGame/Effects/Textures/Water/T_Steam_02_Packed.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Content/ShooterGame/Effects/Textures/Water/T_Steam_02_Packed.uasset -------------------------------------------------------------------------------- /GASDocumentation.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "5.3", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "GASDocumentation", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "Engine", 13 | "GameplayAbilities", 14 | "AIModule", 15 | "UMG" 16 | ] 17 | } 18 | ], 19 | "Plugins": [ 20 | { 21 | "Name": "GameplayAbilities", 22 | "Enabled": true 23 | }, 24 | { 25 | "Name": "MagicLeapMedia", 26 | "Enabled": false, 27 | "SupportedTargetPlatforms": [ 28 | "Lumin" 29 | ] 30 | }, 31 | { 32 | "Name": "MagicLeap", 33 | "Enabled": false, 34 | "SupportedTargetPlatforms": [ 35 | "Lumin", 36 | "Mac", 37 | "Win64" 38 | ] 39 | }, 40 | { 41 | "Name": "Bridge", 42 | "Enabled": true, 43 | "SupportedTargetPlatforms": [ 44 | "Win64", 45 | "Mac", 46 | "Linux" 47 | ] 48 | }, 49 | { 50 | "Name": "AndroidFileServer", 51 | "Enabled": false 52 | } 53 | ] 54 | } -------------------------------------------------------------------------------- /Images/abilityflowchartcomplex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/abilityflowchartcomplex.png -------------------------------------------------------------------------------- /Images/abilityflowchartsimple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/abilityflowchartsimple.png -------------------------------------------------------------------------------- /Images/abilitytask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/abilitytask.png -------------------------------------------------------------------------------- /Images/activationfailedtags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/activationfailedtags.png -------------------------------------------------------------------------------- /Images/attributechange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/attributechange.png -------------------------------------------------------------------------------- /Images/attributeschange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/attributeschange.png -------------------------------------------------------------------------------- /Images/batchabilityactivate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/batchabilityactivate.png -------------------------------------------------------------------------------- /Images/calculationmodifierbackingdataattribute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/calculationmodifierbackingdataattribute.png -------------------------------------------------------------------------------- /Images/calculationmodifierbackingdatatempvariable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/calculationmodifierbackingdatatempvariable.png -------------------------------------------------------------------------------- /Images/cooldownchange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/cooldownchange.png -------------------------------------------------------------------------------- /Images/cooldownmmc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/cooldownmmc.png -------------------------------------------------------------------------------- /Images/cooldownsbc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/cooldownsbc.png -------------------------------------------------------------------------------- /Images/costmmc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/costmmc.png -------------------------------------------------------------------------------- /Images/derivedattribute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/derivedattribute.png -------------------------------------------------------------------------------- /Images/gameplayabilityworldreticle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/gameplayabilityworldreticle.png -------------------------------------------------------------------------------- /Images/gameplaydebugger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/gameplaydebugger.png -------------------------------------------------------------------------------- /Images/gameplaytageditor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/gameplaytageditor.png -------------------------------------------------------------------------------- /Images/gcfromga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/gcfromga.png -------------------------------------------------------------------------------- /Images/gcfromge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/gcfromge.png -------------------------------------------------------------------------------- /Images/gecontainersetbycaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/gecontainersetbycaller.png -------------------------------------------------------------------------------- /Images/gestackchange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/gestackchange.png -------------------------------------------------------------------------------- /Images/scalablefloats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/scalablefloats.png -------------------------------------------------------------------------------- /Images/setbycaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/setbycaller.png -------------------------------------------------------------------------------- /Images/showdebugpage1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/showdebugpage1.png -------------------------------------------------------------------------------- /Images/showdebugpage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/showdebugpage2.png -------------------------------------------------------------------------------- /Images/showdebugpage3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranek/GASDocumentation/8f76c5780bdea69e0ea2cc161ab2f435f04182eb/Images/showdebugpage3.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Dan Kestranek 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Source/GASDocumentation.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class GASDocumentationTarget : TargetRules 7 | { 8 | public GASDocumentationTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | DefaultBuildSettings = BuildSettingsVersion.Latest; 12 | IncludeOrderVersion = EngineIncludeOrderVersion.Latest; 13 | ExtraModuleNames.Add("GASDocumentation"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/GASDocumentation/GASDocumentation.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class GASDocumentation : ModuleRules 6 | { 7 | public GASDocumentation(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { 14 | "Slate", 15 | "SlateCore", 16 | "GameplayAbilities", 17 | "GameplayTags", 18 | "GameplayTasks" 19 | }); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/GASDocumentation/GASDocumentation.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #include "GASDocumentation/GASDocumentation.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, GASDocumentation, "GASDocumentation" ); 7 | -------------------------------------------------------------------------------- /Source/GASDocumentation/GASDocumentation.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "UObject/ObjectMacros.h" 7 | 8 | #define ACTOR_ROLE_FSTRING *(FindObject(nullptr, TEXT("/Script/Engine.ENetRole"), true)->GetNameStringByValue(GetLocalRole())) 9 | #define GET_ACTOR_ROLE_FSTRING(Actor) *(FindObject(nullptr, TEXT("/Script/Engine.ENetRole"), true)->GetNameStringByValue(Actor->GetLocalRole())) 10 | 11 | UENUM(BlueprintType) 12 | enum class EGDHitReactDirection : uint8 13 | { 14 | // 0 15 | None UMETA(DisplayName = "None"), 16 | // 1 17 | Left UMETA(DisplayName = "Left"), 18 | // 2 19 | Front UMETA(DisplayName = "Front"), 20 | // 3 21 | Right UMETA(DisplayName = "Right"), 22 | // 4 23 | Back UMETA(DisplayName = "Back") 24 | }; 25 | 26 | UENUM(BlueprintType) 27 | enum class EGDAbilityInputID : uint8 28 | { 29 | // 0 None 30 | None UMETA(DisplayName = "None"), 31 | // 1 Confirm 32 | Confirm UMETA(DisplayName = "Confirm"), 33 | // 2 Cancel 34 | Cancel UMETA(DisplayName = "Cancel"), 35 | // 3 LMB 36 | Ability1 UMETA(DisplayName = "Ability1"), 37 | // 4 RMB 38 | Ability2 UMETA(DisplayName = "Ability2"), 39 | // 5 Q 40 | Ability3 UMETA(DisplayName = "Ability3"), 41 | // 6 E 42 | Ability4 UMETA(DisplayName = "Ability4"), 43 | // 7 R 44 | Ability5 UMETA(DisplayName = "Ability5"), 45 | // 8 Sprint 46 | Sprint UMETA(DisplayName = "Sprint"), 47 | // 9 Jump 48 | Jump UMETA(DisplayName = "Jump") 49 | }; -------------------------------------------------------------------------------- /Source/GASDocumentation/GASDocumentationGameMode.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #include "GASDocumentation/GASDocumentationGameMode.h" 4 | #include "Engine/World.h" 5 | #include "Characters/Heroes/GDHeroCharacter.h" 6 | #include "Player/GDPlayerController.h" 7 | #include "Player/GDPlayerState.h" 8 | #include "GameFramework/SpectatorPawn.h" 9 | #include "Kismet/GameplayStatics.h" 10 | #include "TimerManager.h" 11 | #include "UObject/ConstructorHelpers.h" 12 | 13 | AGASDocumentationGameMode::AGASDocumentationGameMode() 14 | { 15 | RespawnDelay = 5.0f; 16 | 17 | HeroClass = StaticLoadClass(UObject::StaticClass(), nullptr, TEXT("/Game/GASDocumentation/Characters/Hero/BP_HeroCharacter.BP_HeroCharacter_C")); 18 | if (!HeroClass) 19 | { 20 | UE_LOG(LogTemp, Error, TEXT("%s() Failed to find HeroClass. If it was moved, please update the reference location in C++."), *FString(__FUNCTION__)); 21 | } 22 | } 23 | 24 | void AGASDocumentationGameMode::HeroDied(AController* Controller) 25 | { 26 | FActorSpawnParameters SpawnParameters; 27 | SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn; 28 | ASpectatorPawn* SpectatorPawn = GetWorld()->SpawnActor(SpectatorClass, Controller->GetPawn()->GetActorTransform(), SpawnParameters); 29 | 30 | Controller->UnPossess(); 31 | Controller->Possess(SpectatorPawn); 32 | 33 | FTimerHandle RespawnTimerHandle; 34 | FTimerDelegate RespawnDelegate; 35 | 36 | RespawnDelegate = FTimerDelegate::CreateUObject(this, &AGASDocumentationGameMode::RespawnHero, Controller); 37 | GetWorldTimerManager().SetTimer(RespawnTimerHandle, RespawnDelegate, RespawnDelay, false); 38 | 39 | AGDPlayerController* PC = Cast(Controller); 40 | if (PC) 41 | { 42 | PC->SetRespawnCountdown(RespawnDelay); 43 | } 44 | } 45 | 46 | void AGASDocumentationGameMode::BeginPlay() 47 | { 48 | Super::BeginPlay(); 49 | 50 | // Get the enemy hero spawn point 51 | TArray Actors; 52 | UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), Actors); 53 | for (AActor* Actor : Actors) 54 | { 55 | if (Actor->GetName() == FString("EnemyHeroSpawn")) 56 | { 57 | EnemySpawnPoint = Actor; 58 | break; 59 | } 60 | } 61 | } 62 | 63 | void AGASDocumentationGameMode::RespawnHero(AController * Controller) 64 | { 65 | if (Controller->IsPlayerController()) 66 | { 67 | // Respawn player hero 68 | AActor* PlayerStart = FindPlayerStart(Controller); 69 | 70 | FActorSpawnParameters SpawnParameters; 71 | SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn; 72 | 73 | AGDHeroCharacter* Hero = GetWorld()->SpawnActor(HeroClass, PlayerStart->GetActorLocation(), PlayerStart->GetActorRotation(), SpawnParameters); 74 | 75 | APawn* OldSpectatorPawn = Controller->GetPawn(); 76 | Controller->UnPossess(); 77 | OldSpectatorPawn->Destroy(); 78 | Controller->Possess(Hero); 79 | } 80 | else 81 | { 82 | // Respawn AI hero 83 | FActorSpawnParameters SpawnParameters; 84 | SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn; 85 | 86 | AGDHeroCharacter* Hero = GetWorld()->SpawnActor(HeroClass, EnemySpawnPoint->GetActorTransform(), SpawnParameters); 87 | 88 | APawn* OldSpectatorPawn = Controller->GetPawn(); 89 | Controller->UnPossess(); 90 | OldSpectatorPawn->Destroy(); 91 | Controller->Possess(Hero); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Source/GASDocumentation/GASDocumentationGameMode.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "GASDocumentationGameMode.generated.h" 8 | 9 | UCLASS(minimalapi) 10 | class AGASDocumentationGameMode : public AGameModeBase 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | AGASDocumentationGameMode(); 16 | 17 | void HeroDied(AController* Controller); 18 | 19 | protected: 20 | float RespawnDelay; 21 | 22 | TSubclassOf HeroClass; 23 | 24 | AActor* EnemySpawnPoint; 25 | 26 | virtual void BeginPlay() override; 27 | 28 | void RespawnHero(AController* Controller); 29 | }; 30 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/AI/GDHeroAIController.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "AI/GDHeroAIController.h" 5 | 6 | AGDHeroAIController::AGDHeroAIController() 7 | { 8 | bWantsPlayerState = true; 9 | } -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/AbilityTasks/GDAT_WaitReceiveDamage.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/AbilityTasks/GDAT_WaitReceiveDamage.h" 5 | #include "Characters/Abilities/GDAbilitySystemComponent.h" 6 | 7 | UGDAT_WaitReceiveDamage::UGDAT_WaitReceiveDamage(const FObjectInitializer& ObjectInitializer) 8 | : Super(ObjectInitializer) 9 | { 10 | TriggerOnce = false; 11 | } 12 | 13 | UGDAT_WaitReceiveDamage* UGDAT_WaitReceiveDamage::WaitReceiveDamage(UGameplayAbility* OwningAbility, bool InTriggerOnce) 14 | { 15 | UGDAT_WaitReceiveDamage* MyObj = NewAbilityTask(OwningAbility); 16 | MyObj->TriggerOnce = InTriggerOnce; 17 | return MyObj; 18 | } 19 | 20 | void UGDAT_WaitReceiveDamage::Activate() 21 | { 22 | UGDAbilitySystemComponent* GDASC = Cast(AbilitySystemComponent); 23 | 24 | if (GDASC) 25 | { 26 | GDASC->ReceivedDamage.AddDynamic(this, &UGDAT_WaitReceiveDamage::OnDamageReceived); 27 | } 28 | } 29 | 30 | void UGDAT_WaitReceiveDamage::OnDestroy(bool AbilityIsEnding) 31 | { 32 | UGDAbilitySystemComponent* GDASC = Cast(AbilitySystemComponent); 33 | 34 | if (GDASC) 35 | { 36 | GDASC->ReceivedDamage.RemoveDynamic(this, &UGDAT_WaitReceiveDamage::OnDamageReceived); 37 | } 38 | 39 | Super::OnDestroy(AbilityIsEnding); 40 | } 41 | 42 | void UGDAT_WaitReceiveDamage::OnDamageReceived(UGDAbilitySystemComponent* SourceASC, float UnmitigatedDamage, float MitigatedDamage) 43 | { 44 | if (ShouldBroadcastAbilityTaskDelegates()) 45 | { 46 | OnDamage.Broadcast(SourceASC, UnmitigatedDamage, MitigatedDamage); 47 | } 48 | 49 | if (TriggerOnce) 50 | { 51 | EndTask(); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/AsyncTaskAttributeChanged.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/AsyncTaskAttributeChanged.h" 5 | 6 | UAsyncTaskAttributeChanged* UAsyncTaskAttributeChanged::ListenForAttributeChange(UAbilitySystemComponent* AbilitySystemComponent, FGameplayAttribute Attribute) 7 | { 8 | UAsyncTaskAttributeChanged* WaitForAttributeChangedTask = NewObject(); 9 | WaitForAttributeChangedTask->ASC = AbilitySystemComponent; 10 | WaitForAttributeChangedTask->AttributeToListenFor = Attribute; 11 | 12 | if (!IsValid(AbilitySystemComponent) || !Attribute.IsValid()) 13 | { 14 | WaitForAttributeChangedTask->RemoveFromRoot(); 15 | return nullptr; 16 | } 17 | 18 | AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(Attribute).AddUObject(WaitForAttributeChangedTask, &UAsyncTaskAttributeChanged::AttributeChanged); 19 | 20 | return WaitForAttributeChangedTask; 21 | } 22 | 23 | UAsyncTaskAttributeChanged * UAsyncTaskAttributeChanged::ListenForAttributesChange(UAbilitySystemComponent * AbilitySystemComponent, TArray Attributes) 24 | { 25 | UAsyncTaskAttributeChanged* WaitForAttributeChangedTask = NewObject(); 26 | WaitForAttributeChangedTask->ASC = AbilitySystemComponent; 27 | WaitForAttributeChangedTask->AttributesToListenFor = Attributes; 28 | 29 | if (!IsValid(AbilitySystemComponent) || Attributes.Num() < 1) 30 | { 31 | WaitForAttributeChangedTask->RemoveFromRoot(); 32 | return nullptr; 33 | } 34 | 35 | for (FGameplayAttribute Attribute : Attributes) 36 | { 37 | AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(Attribute).AddUObject(WaitForAttributeChangedTask, &UAsyncTaskAttributeChanged::AttributeChanged); 38 | } 39 | 40 | return WaitForAttributeChangedTask; 41 | } 42 | 43 | void UAsyncTaskAttributeChanged::EndTask() 44 | { 45 | if (IsValid(ASC)) 46 | { 47 | ASC->GetGameplayAttributeValueChangeDelegate(AttributeToListenFor).RemoveAll(this); 48 | 49 | for (FGameplayAttribute Attribute : AttributesToListenFor) 50 | { 51 | ASC->GetGameplayAttributeValueChangeDelegate(Attribute).RemoveAll(this); 52 | } 53 | } 54 | 55 | SetReadyToDestroy(); 56 | MarkAsGarbage(); 57 | } 58 | 59 | void UAsyncTaskAttributeChanged::AttributeChanged(const FOnAttributeChangeData & Data) 60 | { 61 | OnAttributeChanged.Broadcast(Data.Attribute, Data.NewValue, Data.OldValue); 62 | } -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/AsyncTaskCooldownChanged.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/AsyncTaskCooldownChanged.h" 5 | 6 | UAsyncTaskCooldownChanged * UAsyncTaskCooldownChanged::ListenForCooldownChange(UAbilitySystemComponent * AbilitySystemComponent, FGameplayTagContainer InCooldownTags, bool InUseServerCooldown) 7 | { 8 | UAsyncTaskCooldownChanged* ListenForCooldownChange = NewObject(); 9 | ListenForCooldownChange->ASC = AbilitySystemComponent; 10 | ListenForCooldownChange->CooldownTags = InCooldownTags; 11 | ListenForCooldownChange->UseServerCooldown = InUseServerCooldown; 12 | 13 | if (!IsValid(AbilitySystemComponent) || InCooldownTags.Num() < 1) 14 | { 15 | ListenForCooldownChange->EndTask(); 16 | return nullptr; 17 | } 18 | 19 | AbilitySystemComponent->OnActiveGameplayEffectAddedDelegateToSelf.AddUObject(ListenForCooldownChange, &UAsyncTaskCooldownChanged::OnActiveGameplayEffectAddedCallback); 20 | 21 | TArray CooldownTagArray; 22 | InCooldownTags.GetGameplayTagArray(CooldownTagArray); 23 | 24 | for (FGameplayTag CooldownTag : CooldownTagArray) 25 | { 26 | AbilitySystemComponent->RegisterGameplayTagEvent(CooldownTag, EGameplayTagEventType::NewOrRemoved).AddUObject(ListenForCooldownChange, &UAsyncTaskCooldownChanged::CooldownTagChanged); 27 | } 28 | 29 | return ListenForCooldownChange; 30 | } 31 | 32 | void UAsyncTaskCooldownChanged::EndTask() 33 | { 34 | if (IsValid(ASC)) 35 | { 36 | ASC->OnActiveGameplayEffectAddedDelegateToSelf.RemoveAll(this); 37 | 38 | TArray CooldownTagArray; 39 | CooldownTags.GetGameplayTagArray(CooldownTagArray); 40 | 41 | for (FGameplayTag CooldownTag : CooldownTagArray) 42 | { 43 | ASC->RegisterGameplayTagEvent(CooldownTag, EGameplayTagEventType::NewOrRemoved).RemoveAll(this); 44 | } 45 | } 46 | 47 | SetReadyToDestroy(); 48 | MarkAsGarbage(); 49 | } 50 | 51 | void UAsyncTaskCooldownChanged::OnActiveGameplayEffectAddedCallback(UAbilitySystemComponent * Target, const FGameplayEffectSpec & SpecApplied, FActiveGameplayEffectHandle ActiveHandle) 52 | { 53 | FGameplayTagContainer AssetTags; 54 | SpecApplied.GetAllAssetTags(AssetTags); 55 | 56 | FGameplayTagContainer GrantedTags; 57 | SpecApplied.GetAllGrantedTags(GrantedTags); 58 | 59 | TArray CooldownTagArray; 60 | CooldownTags.GetGameplayTagArray(CooldownTagArray); 61 | 62 | for (FGameplayTag CooldownTag : CooldownTagArray) 63 | { 64 | if (AssetTags.HasTagExact(CooldownTag) || GrantedTags.HasTagExact(CooldownTag)) 65 | { 66 | float TimeRemaining = 0.0f; 67 | float Duration = 0.0f; 68 | // Expecting cooldown tag to always be first tag 69 | FGameplayTagContainer CooldownTagContainer(GrantedTags.GetByIndex(0)); 70 | GetCooldownRemainingForTag(CooldownTagContainer, TimeRemaining, Duration); 71 | 72 | if (ASC->GetOwnerRole() == ROLE_Authority) 73 | { 74 | // Player is Server 75 | OnCooldownBegin.Broadcast(CooldownTag, TimeRemaining, Duration); 76 | } 77 | else if (!UseServerCooldown && SpecApplied.GetContext().GetAbilityInstance_NotReplicated()) 78 | { 79 | // Client using predicted cooldown 80 | OnCooldownBegin.Broadcast(CooldownTag, TimeRemaining, Duration); 81 | } 82 | else if (UseServerCooldown && SpecApplied.GetContext().GetAbilityInstance_NotReplicated() == nullptr) 83 | { 84 | // Client using Server's cooldown. This is Server's corrective cooldown GE. 85 | OnCooldownBegin.Broadcast(CooldownTag, TimeRemaining, Duration); 86 | } 87 | else if (UseServerCooldown && SpecApplied.GetContext().GetAbilityInstance_NotReplicated()) 88 | { 89 | // Client using Server's cooldown but this is predicted cooldown GE. 90 | // This can be useful to gray out abilities until Server's cooldown comes in. 91 | OnCooldownBegin.Broadcast(CooldownTag, -1.0f, -1.0f); 92 | } 93 | } 94 | } 95 | } 96 | 97 | void UAsyncTaskCooldownChanged::CooldownTagChanged(const FGameplayTag CooldownTag, int32 NewCount) 98 | { 99 | if (NewCount == 0) 100 | { 101 | OnCooldownEnd.Broadcast(CooldownTag, -1.0f, -1.0f); 102 | } 103 | } 104 | 105 | bool UAsyncTaskCooldownChanged::GetCooldownRemainingForTag(FGameplayTagContainer InCooldownTags, float & TimeRemaining, float & CooldownDuration) 106 | { 107 | if (IsValid(ASC) && InCooldownTags.Num() > 0) 108 | { 109 | TimeRemaining = 0.f; 110 | CooldownDuration = 0.f; 111 | 112 | FGameplayEffectQuery const Query = FGameplayEffectQuery::MakeQuery_MatchAnyOwningTags(InCooldownTags); 113 | TArray< TPair > DurationAndTimeRemaining = ASC->GetActiveEffectsTimeRemainingAndDuration(Query); 114 | if (DurationAndTimeRemaining.Num() > 0) 115 | { 116 | int32 BestIdx = 0; 117 | float LongestTime = DurationAndTimeRemaining[0].Key; 118 | for (int32 Idx = 1; Idx < DurationAndTimeRemaining.Num(); ++Idx) 119 | { 120 | if (DurationAndTimeRemaining[Idx].Key > LongestTime) 121 | { 122 | LongestTime = DurationAndTimeRemaining[Idx].Key; 123 | BestIdx = Idx; 124 | } 125 | } 126 | 127 | TimeRemaining = DurationAndTimeRemaining[BestIdx].Key; 128 | CooldownDuration = DurationAndTimeRemaining[BestIdx].Value; 129 | 130 | return true; 131 | } 132 | } 133 | 134 | return false; 135 | } 136 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/AsyncTaskEffectStackChanged.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/AsyncTaskEffectStackChanged.h" 5 | 6 | UAsyncTaskEffectStackChanged * UAsyncTaskEffectStackChanged::ListenForGameplayEffectStackChange(UAbilitySystemComponent * AbilitySystemComponent, FGameplayTag InEffectGameplayTag) 7 | { 8 | UAsyncTaskEffectStackChanged* ListenForGameplayEffectStackChange = NewObject(); 9 | ListenForGameplayEffectStackChange->ASC = AbilitySystemComponent; 10 | ListenForGameplayEffectStackChange->EffectGameplayTag = InEffectGameplayTag; 11 | 12 | if (!IsValid(AbilitySystemComponent) || !InEffectGameplayTag.IsValid()) 13 | { 14 | ListenForGameplayEffectStackChange->EndTask(); 15 | return nullptr; 16 | } 17 | 18 | AbilitySystemComponent->OnActiveGameplayEffectAddedDelegateToSelf.AddUObject(ListenForGameplayEffectStackChange, &UAsyncTaskEffectStackChanged::OnActiveGameplayEffectAddedCallback); 19 | AbilitySystemComponent->OnAnyGameplayEffectRemovedDelegate().AddUObject(ListenForGameplayEffectStackChange, &UAsyncTaskEffectStackChanged::OnRemoveGameplayEffectCallback); 20 | 21 | return ListenForGameplayEffectStackChange; 22 | } 23 | 24 | void UAsyncTaskEffectStackChanged::EndTask() 25 | { 26 | if (IsValid(ASC)) 27 | { 28 | ASC->OnActiveGameplayEffectAddedDelegateToSelf.RemoveAll(this); 29 | ASC->OnAnyGameplayEffectRemovedDelegate().RemoveAll(this); 30 | 31 | if(ActiveEffectHandle.IsValid()) 32 | { 33 | ASC->OnGameplayEffectStackChangeDelegate(ActiveEffectHandle)->RemoveAll(this); 34 | } 35 | } 36 | 37 | SetReadyToDestroy(); 38 | MarkAsGarbage(); 39 | } 40 | 41 | void UAsyncTaskEffectStackChanged::OnActiveGameplayEffectAddedCallback(UAbilitySystemComponent * Target, const FGameplayEffectSpec & SpecApplied, FActiveGameplayEffectHandle ActiveHandle) 42 | { 43 | FGameplayTagContainer AssetTags; 44 | SpecApplied.GetAllAssetTags(AssetTags); 45 | 46 | FGameplayTagContainer GrantedTags; 47 | SpecApplied.GetAllGrantedTags(GrantedTags); 48 | 49 | if (AssetTags.HasTagExact(EffectGameplayTag) || GrantedTags.HasTagExact(EffectGameplayTag)) 50 | { 51 | ASC->OnGameplayEffectStackChangeDelegate(ActiveHandle)->AddUObject(this, &UAsyncTaskEffectStackChanged::GameplayEffectStackChanged); 52 | OnGameplayEffectStackChange.Broadcast(EffectGameplayTag, ActiveHandle, 1, 0); 53 | ActiveEffectHandle = ActiveHandle; 54 | } 55 | } 56 | 57 | void UAsyncTaskEffectStackChanged::OnRemoveGameplayEffectCallback(const FActiveGameplayEffect & EffectRemoved) 58 | { 59 | FGameplayTagContainer AssetTags; 60 | EffectRemoved.Spec.GetAllAssetTags(AssetTags); 61 | 62 | FGameplayTagContainer GrantedTags; 63 | EffectRemoved.Spec.GetAllGrantedTags(GrantedTags); 64 | 65 | if (AssetTags.HasTagExact(EffectGameplayTag) || GrantedTags.HasTagExact(EffectGameplayTag)) 66 | { 67 | OnGameplayEffectStackChange.Broadcast(EffectGameplayTag, EffectRemoved.Handle, 0, 1); 68 | } 69 | } 70 | 71 | void UAsyncTaskEffectStackChanged::GameplayEffectStackChanged(FActiveGameplayEffectHandle EffectHandle, int32 NewStackCount, int32 PreviousStackCount) 72 | { 73 | OnGameplayEffectStackChange.Broadcast(EffectGameplayTag, EffectHandle, NewStackCount, PreviousStackCount); 74 | } 75 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/GDAbilitySystemComponent.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/GDAbilitySystemComponent.h" 5 | 6 | void UGDAbilitySystemComponent::ReceiveDamage(UGDAbilitySystemComponent * SourceASC, float UnmitigatedDamage, float MitigatedDamage) 7 | { 8 | ReceivedDamage.Broadcast(SourceASC, UnmitigatedDamage, MitigatedDamage); 9 | } 10 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/GDDamageExecCalculation.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/GDDamageExecCalculation.h" 5 | #include "Characters/Abilities/GDAbilitySystemComponent.h" 6 | #include "Characters/Abilities/AttributeSets/GDAttributeSetBase.h" 7 | 8 | // Declare the attributes to capture and define how we want to capture them from the Source and Target. 9 | struct GDDamageStatics 10 | { 11 | DECLARE_ATTRIBUTE_CAPTUREDEF(Armor); 12 | DECLARE_ATTRIBUTE_CAPTUREDEF(Damage); 13 | 14 | GDDamageStatics() 15 | { 16 | // Snapshot happens at time of GESpec creation 17 | 18 | // We're not capturing anything from the Source in this example, but there could be like AttackPower attributes that you might want. 19 | 20 | // Capture optional Damage set on the damage GE as a CalculationModifier under the ExecutionCalculation 21 | DEFINE_ATTRIBUTE_CAPTUREDEF(UGDAttributeSetBase, Damage, Source, true); 22 | 23 | // Capture the Target's Armor. Don't snapshot. 24 | DEFINE_ATTRIBUTE_CAPTUREDEF(UGDAttributeSetBase, Armor, Target, false); 25 | } 26 | }; 27 | 28 | static const GDDamageStatics& DamageStatics() 29 | { 30 | static GDDamageStatics DStatics; 31 | return DStatics; 32 | } 33 | 34 | UGDDamageExecCalculation::UGDDamageExecCalculation() 35 | { 36 | RelevantAttributesToCapture.Add(DamageStatics().DamageDef); 37 | RelevantAttributesToCapture.Add(DamageStatics().ArmorDef); 38 | } 39 | 40 | void UGDDamageExecCalculation::Execute_Implementation(const FGameplayEffectCustomExecutionParameters & ExecutionParams, OUT FGameplayEffectCustomExecutionOutput & OutExecutionOutput) const 41 | { 42 | UAbilitySystemComponent* TargetAbilitySystemComponent = ExecutionParams.GetTargetAbilitySystemComponent(); 43 | UAbilitySystemComponent* SourceAbilitySystemComponent = ExecutionParams.GetSourceAbilitySystemComponent(); 44 | 45 | AActor* SourceActor = SourceAbilitySystemComponent ? SourceAbilitySystemComponent->GetAvatarActor() : nullptr; 46 | AActor* TargetActor = TargetAbilitySystemComponent ? TargetAbilitySystemComponent->GetAvatarActor() : nullptr; 47 | 48 | const FGameplayEffectSpec& Spec = ExecutionParams.GetOwningSpec(); 49 | 50 | // Gather the tags from the source and target as that can affect which buffs should be used 51 | const FGameplayTagContainer* SourceTags = Spec.CapturedSourceTags.GetAggregatedTags(); 52 | const FGameplayTagContainer* TargetTags = Spec.CapturedTargetTags.GetAggregatedTags(); 53 | 54 | FAggregatorEvaluateParameters EvaluationParameters; 55 | EvaluationParameters.SourceTags = SourceTags; 56 | EvaluationParameters.TargetTags = TargetTags; 57 | 58 | float Armor = 0.0f; 59 | ExecutionParams.AttemptCalculateCapturedAttributeMagnitude(DamageStatics().ArmorDef, EvaluationParameters, Armor); 60 | Armor = FMath::Max(Armor, 0.0f); 61 | 62 | float Damage = 0.0f; 63 | // Capture optional damage value set on the damage GE as a CalculationModifier under the ExecutionCalculation 64 | ExecutionParams.AttemptCalculateCapturedAttributeMagnitude(DamageStatics().DamageDef, EvaluationParameters, Damage); 65 | // Add SetByCaller damage if it exists 66 | Damage += FMath::Max(Spec.GetSetByCallerMagnitude(FGameplayTag::RequestGameplayTag(FName("Data.Damage")), false, -1.0f), 0.0f); 67 | 68 | float UnmitigatedDamage = Damage; // Can multiply any damage boosters here 69 | 70 | float MitigatedDamage = (UnmitigatedDamage) * (100 / (100 + Armor)); 71 | 72 | if (MitigatedDamage > 0.f) 73 | { 74 | // Set the Target's damage meta attribute 75 | OutExecutionOutput.AddOutputModifier(FGameplayModifierEvaluatedData(DamageStatics().DamageProperty, EGameplayModOp::Additive, MitigatedDamage)); 76 | } 77 | 78 | // Broadcast damages to Target ASC 79 | UGDAbilitySystemComponent* TargetASC = Cast(TargetAbilitySystemComponent); 80 | if (TargetASC) 81 | { 82 | UGDAbilitySystemComponent* SourceASC = Cast(SourceAbilitySystemComponent); 83 | TargetASC->ReceiveDamage(SourceASC, UnmitigatedDamage, MitigatedDamage); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/GDGA_CharacterJump.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/GDGA_CharacterJump.h" 5 | #include "Characters/GDCharacterBase.h" 6 | #include "GASDocumentation/GASDocumentation.h" 7 | 8 | UGDGA_CharacterJump::UGDGA_CharacterJump() 9 | { 10 | AbilityInputID = EGDAbilityInputID::Jump; 11 | InstancingPolicy = EGameplayAbilityInstancingPolicy::NonInstanced; 12 | AbilityTags.AddTag(FGameplayTag::RequestGameplayTag(FName("Ability.Jump"))); 13 | 14 | } 15 | 16 | void UGDGA_CharacterJump::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo * ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData * TriggerEventData) 17 | { 18 | if (HasAuthorityOrPredictionKey(ActorInfo, &ActivationInfo)) 19 | { 20 | if (!CommitAbility(Handle, ActorInfo, ActivationInfo)) 21 | { 22 | EndAbility(Handle, ActorInfo, ActivationInfo, true, true); 23 | } 24 | 25 | ACharacter * Character = CastChecked(ActorInfo->AvatarActor.Get()); 26 | Character->Jump(); 27 | } 28 | } 29 | 30 | bool UGDGA_CharacterJump::CanActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo * ActorInfo, const FGameplayTagContainer * SourceTags, const FGameplayTagContainer * TargetTags, OUT FGameplayTagContainer * OptionalRelevantTags) const 31 | { 32 | if (!Super::CanActivateAbility(Handle, ActorInfo, SourceTags, TargetTags, OptionalRelevantTags)) 33 | { 34 | return false; 35 | } 36 | 37 | const AGDCharacterBase* Character = CastChecked(ActorInfo->AvatarActor.Get(), ECastCheckedType::NullAllowed); 38 | return Character && Character->CanJump(); 39 | } 40 | 41 | void UGDGA_CharacterJump::InputReleased(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo * ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) 42 | { 43 | if (ActorInfo != NULL && ActorInfo->AvatarActor != NULL) 44 | { 45 | CancelAbility(Handle, ActorInfo, ActivationInfo, true); 46 | } 47 | } 48 | 49 | // Epic's comment 50 | /** 51 | * Canceling an non instanced ability is tricky. Right now this works for Jump since there is nothing that can go wrong by calling 52 | * StopJumping() if you aren't already jumping. If we had a montage playing non instanced ability, it would need to make sure the 53 | * Montage that *it* played was still playing, and if so, to cancel it. If this is something we need to support, we may need some 54 | * light weight data structure to represent 'non intanced abilities in action' with a way to cancel/end them. 55 | */ 56 | void UGDGA_CharacterJump::CancelAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo * ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateCancelAbility) 57 | { 58 | if (ScopeLockCount > 0) 59 | { 60 | WaitingToExecute.Add(FPostLockDelegate::CreateUObject(this, &UGDGA_CharacterJump::CancelAbility, Handle, ActorInfo, ActivationInfo, bReplicateCancelAbility)); 61 | return; 62 | } 63 | 64 | Super::CancelAbility(Handle, ActorInfo, ActivationInfo, bReplicateCancelAbility); 65 | 66 | ACharacter * Character = CastChecked(ActorInfo->AvatarActor.Get()); 67 | Character->StopJumping(); 68 | } -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Abilities/GDGameplayAbility.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Abilities/GDGameplayAbility.h" 5 | #include "AbilitySystemComponent.h" 6 | #include "GameplayTagContainer.h" 7 | 8 | UGDGameplayAbility::UGDGameplayAbility() 9 | { 10 | // Default to Instance Per Actor 11 | InstancingPolicy = EGameplayAbilityInstancingPolicy::InstancedPerActor; 12 | 13 | // Default tags that block this ability from activating 14 | ActivationBlockedTags.AddTag(FGameplayTag::RequestGameplayTag(FName("State.Dead"))); 15 | ActivationBlockedTags.AddTag(FGameplayTag::RequestGameplayTag(FName("State.Debuff.Stun"))); 16 | } 17 | 18 | void UGDGameplayAbility::OnAvatarSet(const FGameplayAbilityActorInfo * ActorInfo, const FGameplayAbilitySpec & Spec) 19 | { 20 | Super::OnAvatarSet(ActorInfo, Spec); 21 | 22 | if (ActivateAbilityOnGranted) 23 | { 24 | ActorInfo->AbilitySystemComponent->TryActivateAbility(Spec.Handle, false); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/GDCharacterMovementComponent.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/GDCharacterMovementComponent.h" 5 | #include "AbilitySystemComponent.h" 6 | #include "Characters/GDCharacterBase.h" 7 | #include "GameplayTagContainer.h" 8 | 9 | UGDCharacterMovementComponent::UGDCharacterMovementComponent() 10 | { 11 | SprintSpeedMultiplier = 1.4f; 12 | ADSSpeedMultiplier = 0.5f; 13 | } 14 | 15 | float UGDCharacterMovementComponent::GetMaxSpeed() const 16 | { 17 | AGDCharacterBase* Owner = Cast(GetOwner()); 18 | if (!Owner) 19 | { 20 | UE_LOG(LogTemp, Error, TEXT("%s() No Owner"), *FString(__FUNCTION__)); 21 | return Super::GetMaxSpeed(); 22 | } 23 | 24 | if (!Owner->IsAlive()) 25 | { 26 | return 0.0f; 27 | } 28 | 29 | if (Owner->GetAbilitySystemComponent()->HasMatchingGameplayTag(FGameplayTag::RequestGameplayTag(FName("State.Debuff.Stun")))) 30 | { 31 | return 0.0f; 32 | } 33 | 34 | if (RequestToStartSprinting) 35 | { 36 | return Owner->GetMoveSpeed() * SprintSpeedMultiplier; 37 | } 38 | 39 | if (RequestToStartADS) 40 | { 41 | return Owner->GetMoveSpeed() * ADSSpeedMultiplier; 42 | } 43 | 44 | return Owner->GetMoveSpeed(); 45 | } 46 | 47 | void UGDCharacterMovementComponent::UpdateFromCompressedFlags(uint8 Flags) 48 | { 49 | Super::UpdateFromCompressedFlags(Flags); 50 | 51 | //The Flags parameter contains the compressed input flags that are stored in the saved move. 52 | //UpdateFromCompressed flags simply copies the flags from the saved move into the movement component. 53 | //It basically just resets the movement component to the state when the move was made so it can simulate from there. 54 | RequestToStartSprinting = (Flags & FSavedMove_Character::FLAG_Custom_0) != 0; 55 | 56 | RequestToStartADS = (Flags & FSavedMove_Character::FLAG_Custom_1) != 0; 57 | } 58 | 59 | FNetworkPredictionData_Client * UGDCharacterMovementComponent::GetPredictionData_Client() const 60 | { 61 | check(PawnOwner != NULL); 62 | 63 | if (!ClientPredictionData) 64 | { 65 | UGDCharacterMovementComponent* MutableThis = const_cast(this); 66 | 67 | MutableThis->ClientPredictionData = new FGDNetworkPredictionData_Client(*this); 68 | MutableThis->ClientPredictionData->MaxSmoothNetUpdateDist = 92.f; 69 | MutableThis->ClientPredictionData->NoSmoothNetUpdateDist = 140.f; 70 | } 71 | 72 | return ClientPredictionData; 73 | } 74 | 75 | void UGDCharacterMovementComponent::StartSprinting() 76 | { 77 | RequestToStartSprinting = true; 78 | } 79 | 80 | void UGDCharacterMovementComponent::StopSprinting() 81 | { 82 | RequestToStartSprinting = false; 83 | } 84 | 85 | void UGDCharacterMovementComponent::StartAimDownSights() 86 | { 87 | RequestToStartADS = true; 88 | } 89 | 90 | void UGDCharacterMovementComponent::StopAimDownSights() 91 | { 92 | RequestToStartADS = false; 93 | } 94 | 95 | void UGDCharacterMovementComponent::FGDSavedMove::Clear() 96 | { 97 | Super::Clear(); 98 | 99 | SavedRequestToStartSprinting = false; 100 | SavedRequestToStartADS = false; 101 | } 102 | 103 | uint8 UGDCharacterMovementComponent::FGDSavedMove::GetCompressedFlags() const 104 | { 105 | uint8 Result = Super::GetCompressedFlags(); 106 | 107 | if (SavedRequestToStartSprinting) 108 | { 109 | Result |= FLAG_Custom_0; 110 | } 111 | 112 | if (SavedRequestToStartADS) 113 | { 114 | Result |= FLAG_Custom_1; 115 | } 116 | 117 | return Result; 118 | } 119 | 120 | bool UGDCharacterMovementComponent::FGDSavedMove::CanCombineWith(const FSavedMovePtr & NewMove, ACharacter * Character, float MaxDelta) const 121 | { 122 | //Set which moves can be combined together. This will depend on the bit flags that are used. 123 | if (SavedRequestToStartSprinting != ((FGDSavedMove*)&NewMove)->SavedRequestToStartSprinting) 124 | { 125 | return false; 126 | } 127 | 128 | if (SavedRequestToStartADS != ((FGDSavedMove*)&NewMove)->SavedRequestToStartADS) 129 | { 130 | return false; 131 | } 132 | 133 | return Super::CanCombineWith(NewMove, Character, MaxDelta); 134 | } 135 | 136 | void UGDCharacterMovementComponent::FGDSavedMove::SetMoveFor(ACharacter * Character, float InDeltaTime, FVector const & NewAccel, FNetworkPredictionData_Client_Character & ClientData) 137 | { 138 | Super::SetMoveFor(Character, InDeltaTime, NewAccel, ClientData); 139 | 140 | UGDCharacterMovementComponent* CharacterMovement = Cast(Character->GetCharacterMovement()); 141 | if (CharacterMovement) 142 | { 143 | SavedRequestToStartSprinting = CharacterMovement->RequestToStartSprinting; 144 | SavedRequestToStartADS = CharacterMovement->RequestToStartADS; 145 | } 146 | } 147 | 148 | void UGDCharacterMovementComponent::FGDSavedMove::PrepMoveFor(ACharacter * Character) 149 | { 150 | Super::PrepMoveFor(Character); 151 | 152 | UGDCharacterMovementComponent* CharacterMovement = Cast(Character->GetCharacterMovement()); 153 | if (CharacterMovement) 154 | { 155 | } 156 | } 157 | 158 | UGDCharacterMovementComponent::FGDNetworkPredictionData_Client::FGDNetworkPredictionData_Client(const UCharacterMovementComponent & ClientMovement) 159 | : Super(ClientMovement) 160 | { 161 | } 162 | 163 | FSavedMovePtr UGDCharacterMovementComponent::FGDNetworkPredictionData_Client::AllocateNewMove() 164 | { 165 | return FSavedMovePtr(new FGDSavedMove()); 166 | } 167 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/GDProjectile.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/GDProjectile.h" 5 | #include "GameFramework/ProjectileMovementComponent.h" 6 | 7 | // Sets default values 8 | AGDProjectile::AGDProjectile() 9 | { 10 | // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. 11 | PrimaryActorTick.bCanEverTick = true; 12 | 13 | bReplicates = true; 14 | 15 | ProjectileMovement = CreateDefaultSubobject(FName("ProjectileMovement")); 16 | } 17 | 18 | // Called when the game starts or when spawned 19 | void AGDProjectile::BeginPlay() 20 | { 21 | Super::BeginPlay(); 22 | 23 | } 24 | 25 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Heroes/Abilities/GDGA_FireGun.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Heroes/Abilities/GDGA_FireGun.h" 5 | #include "AbilitySystemComponent.h" 6 | #include "Camera/CameraComponent.h" 7 | #include "Characters/Heroes/GDHeroCharacter.h" 8 | #include "GameFramework/SpringArmComponent.h" 9 | #include "Kismet/KismetMathLibrary.h" 10 | 11 | UGDGA_FireGun::UGDGA_FireGun() 12 | { 13 | InstancingPolicy = EGameplayAbilityInstancingPolicy::InstancedPerActor; 14 | 15 | FGameplayTag Ability1Tag = FGameplayTag::RequestGameplayTag(FName("Ability.Skill.Ability1")); 16 | AbilityTags.AddTag(Ability1Tag); 17 | ActivationOwnedTags.AddTag(Ability1Tag); 18 | 19 | ActivationBlockedTags.AddTag(FGameplayTag::RequestGameplayTag(FName("Ability.Skill"))); 20 | 21 | Range = 1000.0f; 22 | Damage = 12.0f; 23 | } 24 | 25 | void UGDGA_FireGun::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo * ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData * TriggerEventData) 26 | { 27 | if (!CommitAbility(Handle, ActorInfo, ActivationInfo)) 28 | { 29 | EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, true); 30 | } 31 | 32 | UAnimMontage* MontageToPlay = FireHipMontage; 33 | 34 | if (GetAbilitySystemComponentFromActorInfo()->HasMatchingGameplayTag(FGameplayTag::RequestGameplayTag(FName("State.AimDownSights"))) && 35 | !GetAbilitySystemComponentFromActorInfo()->HasMatchingGameplayTag(FGameplayTag::RequestGameplayTag(FName("State.AimDownSights.Removal")))) 36 | { 37 | MontageToPlay = FireIronsightsMontage; 38 | } 39 | 40 | // Play fire montage and wait for event telling us to spawn the projectile 41 | UGDAT_PlayMontageAndWaitForEvent* Task = UGDAT_PlayMontageAndWaitForEvent::PlayMontageAndWaitForEvent(this, NAME_None, MontageToPlay, FGameplayTagContainer(), 1.0f, NAME_None, false, 1.0f); 42 | Task->OnBlendOut.AddDynamic(this, &UGDGA_FireGun::OnCompleted); 43 | Task->OnCompleted.AddDynamic(this, &UGDGA_FireGun::OnCompleted); 44 | Task->OnInterrupted.AddDynamic(this, &UGDGA_FireGun::OnCancelled); 45 | Task->OnCancelled.AddDynamic(this, &UGDGA_FireGun::OnCancelled); 46 | Task->EventReceived.AddDynamic(this, &UGDGA_FireGun::EventReceived); 47 | // ReadyForActivation() is how you activate the AbilityTask in C++. Blueprint has magic from K2Node_LatentGameplayTaskCall that will automatically call ReadyForActivation(). 48 | Task->ReadyForActivation(); 49 | } 50 | 51 | void UGDGA_FireGun::OnCancelled(FGameplayTag EventTag, FGameplayEventData EventData) 52 | { 53 | EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, true); 54 | } 55 | 56 | void UGDGA_FireGun::OnCompleted(FGameplayTag EventTag, FGameplayEventData EventData) 57 | { 58 | EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, false); 59 | } 60 | 61 | void UGDGA_FireGun::EventReceived(FGameplayTag EventTag, FGameplayEventData EventData) 62 | { 63 | // Montage told us to end the ability before the montage finished playing. 64 | // Montage was set to continue playing animation even after ability ends so this is okay. 65 | if (EventTag == FGameplayTag::RequestGameplayTag(FName("Event.Montage.EndAbility"))) 66 | { 67 | EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, false); 68 | return; 69 | } 70 | 71 | // Only spawn projectiles on the Server. 72 | // Predicting projectiles is an advanced topic not covered in this example. 73 | if (GetOwningActorFromActorInfo()->GetLocalRole() == ROLE_Authority && EventTag == FGameplayTag::RequestGameplayTag(FName("Event.Montage.SpawnProjectile"))) 74 | { 75 | AGDHeroCharacter* Hero = Cast(GetAvatarActorFromActorInfo()); 76 | if (!Hero) 77 | { 78 | EndAbility(CurrentSpecHandle, CurrentActorInfo, CurrentActivationInfo, true, true); 79 | } 80 | 81 | FVector Start = Hero->GetGunComponent()->GetSocketLocation(FName("Muzzle")); 82 | FVector End = Hero->GetCameraBoom()->GetComponentLocation() + Hero->GetFollowCamera()->GetForwardVector() * Range; 83 | FRotator Rotation = UKismetMathLibrary::FindLookAtRotation(Start, End); 84 | 85 | FGameplayEffectSpecHandle DamageEffectSpecHandle = MakeOutgoingGameplayEffectSpec(DamageGameplayEffect, GetAbilityLevel()); 86 | 87 | // Pass the damage to the Damage Execution Calculation through a SetByCaller value on the GameplayEffectSpec 88 | DamageEffectSpecHandle.Data.Get()->SetSetByCallerMagnitude(FGameplayTag::RequestGameplayTag(FName("Data.Damage")), Damage); 89 | 90 | FTransform MuzzleTransform = Hero->GetGunComponent()->GetSocketTransform(FName("Muzzle")); 91 | MuzzleTransform.SetRotation(Rotation.Quaternion()); 92 | MuzzleTransform.SetScale3D(FVector(1.0f)); 93 | 94 | FActorSpawnParameters SpawnParameters; 95 | SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; 96 | 97 | AGDProjectile* Projectile = GetWorld()->SpawnActorDeferred(ProjectileClass, MuzzleTransform, GetOwningActorFromActorInfo(), 98 | Hero, ESpawnActorCollisionHandlingMethod::AlwaysSpawn); 99 | Projectile->DamageEffectSpecHandle = DamageEffectSpecHandle; 100 | Projectile->Range = Range; 101 | Projectile->FinishSpawning(MuzzleTransform); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Characters/Minions/GDMinionCharacter.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Characters/Minions/GDMinionCharacter.h" 5 | #include "Characters/Abilities/GDAbilitySystemComponent.h" 6 | #include "Characters/Abilities/AttributeSets/GDAttributeSetBase.h" 7 | #include "Components/CapsuleComponent.h" 8 | #include "Components/WidgetComponent.h" 9 | #include "Kismet/GameplayStatics.h" 10 | #include "UI/GDFloatingStatusBarWidget.h" 11 | 12 | AGDMinionCharacter::AGDMinionCharacter(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) 13 | { 14 | // Create ability system component, and set it to be explicitly replicated 15 | HardRefAbilitySystemComponent = CreateDefaultSubobject(TEXT("AbilitySystemComponent")); 16 | HardRefAbilitySystemComponent->SetIsReplicated(true); 17 | 18 | // Minimal Mode means that no GameplayEffects will replicate. They will only live on the Server. Attributes, GameplayTags, and GameplayCues will still replicate to us. 19 | HardRefAbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Minimal); 20 | 21 | // Set our parent's TWeakObjectPtr 22 | AbilitySystemComponent = HardRefAbilitySystemComponent; 23 | 24 | // Create the attribute set, this replicates by default 25 | // Adding it as a subobject of the owning actor of an AbilitySystemComponent 26 | // automatically registers the AttributeSet with the AbilitySystemComponent 27 | HardRefAttributeSetBase = CreateDefaultSubobject(TEXT("AttributeSetBase")); 28 | 29 | // Set our parent's TWeakObjectPtr 30 | AttributeSetBase = HardRefAttributeSetBase; 31 | 32 | GetCapsuleComponent()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); 33 | 34 | UIFloatingStatusBarComponent = CreateDefaultSubobject(FName("UIFloatingStatusBarComponent")); 35 | UIFloatingStatusBarComponent->SetupAttachment(RootComponent); 36 | UIFloatingStatusBarComponent->SetRelativeLocation(FVector(0, 0, 120)); 37 | UIFloatingStatusBarComponent->SetWidgetSpace(EWidgetSpace::Screen); 38 | UIFloatingStatusBarComponent->SetDrawSize(FVector2D(500, 500)); 39 | 40 | UIFloatingStatusBarClass = StaticLoadClass(UObject::StaticClass(), nullptr, TEXT("/Game/GASDocumentation/UI/UI_FloatingStatusBar_Minion.UI_FloatingStatusBar_Minion_C")); 41 | if (!UIFloatingStatusBarClass) 42 | { 43 | UE_LOG(LogTemp, Error, TEXT("%s() Failed to find UIFloatingStatusBarClass. If it was moved, please update the reference location in C++."), *FString(__FUNCTION__)); 44 | } 45 | } 46 | 47 | void AGDMinionCharacter::BeginPlay() 48 | { 49 | Super::BeginPlay(); 50 | 51 | if (AbilitySystemComponent.IsValid()) 52 | { 53 | AbilitySystemComponent->InitAbilityActorInfo(this, this); 54 | InitializeAttributes(); 55 | AddStartupEffects(); 56 | AddCharacterAbilities(); 57 | 58 | // Setup FloatingStatusBar UI for Locally Owned Players only, not AI or the server's copy of the PlayerControllers 59 | APlayerController* PC = UGameplayStatics::GetPlayerController(GetWorld(), 0); 60 | if (PC && PC->IsLocalPlayerController()) 61 | { 62 | if (UIFloatingStatusBarClass) 63 | { 64 | UIFloatingStatusBar = CreateWidget(PC, UIFloatingStatusBarClass); 65 | if (UIFloatingStatusBar && UIFloatingStatusBarComponent) 66 | { 67 | UIFloatingStatusBarComponent->SetWidget(UIFloatingStatusBar); 68 | 69 | // Setup the floating status bar 70 | UIFloatingStatusBar->SetHealthPercentage(GetHealth() / GetMaxHealth()); 71 | 72 | UIFloatingStatusBar->SetCharacterName(CharacterName); 73 | } 74 | } 75 | } 76 | 77 | // Attribute change callbacks 78 | HealthChangedDelegateHandle = AbilitySystemComponent->GetGameplayAttributeValueChangeDelegate(AttributeSetBase->GetHealthAttribute()).AddUObject(this, &AGDMinionCharacter::HealthChanged); 79 | 80 | // Tag change callbacks 81 | AbilitySystemComponent->RegisterGameplayTagEvent(FGameplayTag::RequestGameplayTag(FName("State.Debuff.Stun")), EGameplayTagEventType::NewOrRemoved).AddUObject(this, &AGDMinionCharacter::StunTagChanged); 82 | } 83 | } 84 | 85 | void AGDMinionCharacter::HealthChanged(const FOnAttributeChangeData & Data) 86 | { 87 | float Health = Data.NewValue; 88 | 89 | // Update floating status bar 90 | if (UIFloatingStatusBar) 91 | { 92 | UIFloatingStatusBar->SetHealthPercentage(Health / GetMaxHealth()); 93 | } 94 | 95 | // If the minion died, handle death 96 | if (!IsAlive() && !AbilitySystemComponent->HasMatchingGameplayTag(DeadTag)) 97 | { 98 | Die(); 99 | } 100 | } 101 | 102 | void AGDMinionCharacter::StunTagChanged(const FGameplayTag CallbackTag, int32 NewCount) 103 | { 104 | if (NewCount > 0) 105 | { 106 | FGameplayTagContainer AbilityTagsToCancel; 107 | AbilityTagsToCancel.AddTag(FGameplayTag::RequestGameplayTag(FName("Ability"))); 108 | 109 | FGameplayTagContainer AbilityTagsToIgnore; 110 | AbilityTagsToIgnore.AddTag(FGameplayTag::RequestGameplayTag(FName("Ability.NotCanceledByStun"))); 111 | 112 | AbilitySystemComponent->CancelAbilities(&AbilityTagsToCancel, &AbilityTagsToIgnore); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/GDBlueprintLibrary.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "GDBlueprintLibrary.h" 5 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/GDEngineSubsystem.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "GDEngineSubsystem.h" 5 | #include "AbilitySystemGlobals.h" 6 | 7 | void UGDEngineSubsystem::Initialize(FSubsystemCollectionBase& Collection) 8 | { 9 | Super::Initialize(Collection); 10 | } 11 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/Player/GDPlayerController.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "Player/GDPlayerController.h" 5 | #include "AbilitySystemComponent.h" 6 | #include "Characters/Heroes/GDHeroCharacter.h" 7 | #include "Player/GDPlayerState.h" 8 | #include "UI/GDDamageTextWidgetComponent.h" 9 | #include "UI/GDHUDWidget.h" 10 | 11 | void AGDPlayerController::CreateHUD() 12 | { 13 | // Only create once 14 | if (UIHUDWidget) 15 | { 16 | return; 17 | } 18 | 19 | if (!UIHUDWidgetClass) 20 | { 21 | UE_LOG(LogTemp, Error, TEXT("%s() Missing UIHUDWidgetClass. Please fill in on the Blueprint of the PlayerController."), *FString(__FUNCTION__)); 22 | return; 23 | } 24 | 25 | // Only create a HUD for local player 26 | if (!IsLocalPlayerController()) 27 | { 28 | return; 29 | } 30 | 31 | // Need a valid PlayerState to get attributes from 32 | AGDPlayerState* PS = GetPlayerState(); 33 | if (!PS) 34 | { 35 | return; 36 | } 37 | 38 | UIHUDWidget = CreateWidget(this, UIHUDWidgetClass); 39 | UIHUDWidget->AddToViewport(); 40 | 41 | // Set attributes 42 | UIHUDWidget->SetCurrentHealth(PS->GetHealth()); 43 | UIHUDWidget->SetMaxHealth(PS->GetMaxHealth()); 44 | UIHUDWidget->SetHealthPercentage(PS->GetHealth() / FMath::Max(PS->GetMaxHealth(), 1.f)); 45 | UIHUDWidget->SetCurrentMana(PS->GetMana()); 46 | UIHUDWidget->SetMaxMana(PS->GetMaxMana()); 47 | UIHUDWidget->SetManaPercentage(PS->GetMana() / FMath::Max(PS->GetMaxMana(), 1.f)); 48 | UIHUDWidget->SetHealthRegenRate(PS->GetHealthRegenRate()); 49 | UIHUDWidget->SetManaRegenRate(PS->GetManaRegenRate()); 50 | UIHUDWidget->SetCurrentStamina(PS->GetStamina()); 51 | UIHUDWidget->SetMaxStamina(PS->GetMaxStamina()); 52 | UIHUDWidget->SetStaminaPercentage(PS->GetStamina() / FMath::Max(PS->GetMaxStamina(), 1.f)); 53 | UIHUDWidget->SetStaminaRegenRate(PS->GetStaminaRegenRate()); 54 | UIHUDWidget->SetExperience(PS->GetXP()); 55 | UIHUDWidget->SetGold(PS->GetGold()); 56 | UIHUDWidget->SetHeroLevel(PS->GetCharacterLevel()); 57 | } 58 | 59 | UGDHUDWidget * AGDPlayerController::GetHUD() 60 | { 61 | return UIHUDWidget; 62 | } 63 | 64 | void AGDPlayerController::ShowDamageNumber_Implementation(float DamageAmount, AGDCharacterBase* TargetCharacter) 65 | { 66 | if (TargetCharacter && DamageNumberClass) 67 | { 68 | UGDDamageTextWidgetComponent* DamageText = NewObject(TargetCharacter, DamageNumberClass); 69 | DamageText->RegisterComponent(); 70 | DamageText->AttachToComponent(TargetCharacter->GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform); 71 | DamageText->SetDamageText(DamageAmount); 72 | } 73 | } 74 | 75 | bool AGDPlayerController::ShowDamageNumber_Validate(float DamageAmount, AGDCharacterBase* TargetCharacter) 76 | { 77 | return true; 78 | } 79 | 80 | void AGDPlayerController::SetRespawnCountdown_Implementation(float RespawnTimeRemaining) 81 | { 82 | if (UIHUDWidget) 83 | { 84 | UIHUDWidget->SetRespawnCountdown(RespawnTimeRemaining); 85 | } 86 | } 87 | 88 | bool AGDPlayerController::SetRespawnCountdown_Validate(float RespawnTimeRemaining) 89 | { 90 | return true; 91 | } 92 | 93 | // Server only 94 | void AGDPlayerController::OnPossess(APawn* InPawn) 95 | { 96 | Super::OnPossess(InPawn); 97 | 98 | AGDPlayerState* PS = GetPlayerState(); 99 | if (PS) 100 | { 101 | // Init ASC with PS (Owner) and our new Pawn (AvatarActor) 102 | PS->GetAbilitySystemComponent()->InitAbilityActorInfo(PS, InPawn); 103 | } 104 | } 105 | 106 | void AGDPlayerController::OnRep_PlayerState() 107 | { 108 | Super::OnRep_PlayerState(); 109 | 110 | // For edge cases where the PlayerState is repped before the Hero is possessed. 111 | CreateHUD(); 112 | } 113 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/UI/GDDamageTextWidgetComponent.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "UI/GDDamageTextWidgetComponent.h" 5 | 6 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/UI/GDFloatingStatusBarWidget.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "UI/GDFloatingStatusBarWidget.h" 5 | 6 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Private/UI/GDHUDWidget.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | 4 | #include "UI/GDHUDWidget.h" 5 | 6 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/AI/GDHeroAIController.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "AIController.h" 7 | #include "GDHeroAIController.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API AGDHeroAIController : public AAIController 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | AGDHeroAIController(); 19 | }; 20 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/AbilityTasks/GDAT_PlayMontageAndWaitForEvent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Abilities/Tasks/AbilityTask.h" 7 | #include "GDAT_PlayMontageAndWaitForEvent.generated.h" 8 | 9 | class UGDAbilitySystemComponent; 10 | 11 | /** Delegate type used, EventTag and Payload may be empty if it came from the montage callbacks */ 12 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FGDPlayMontageAndWaitForEventDelegate, FGameplayTag, EventTag, FGameplayEventData, EventData); 13 | 14 | /** 15 | * This task combines PlayMontageAndWait and WaitForEvent into one task, so you can wait for multiple types of activations such as from a melee combo 16 | * Much of this code is copied from one of those two ability tasks 17 | * This is a good task to look at as an example when creating game-specific tasks 18 | * It is expected that each game will have a set of game-specific tasks to do what they want 19 | */ 20 | UCLASS() 21 | class GASDOCUMENTATION_API UGDAT_PlayMontageAndWaitForEvent : public UAbilityTask 22 | { 23 | GENERATED_BODY() 24 | 25 | public: 26 | // Constructor and overrides 27 | UGDAT_PlayMontageAndWaitForEvent(const FObjectInitializer& ObjectInitializer); 28 | 29 | /** 30 | * The Blueprint node for this task, PlayMontageAndWaitForEvent, has some black magic from the plugin that automagically calls Activate() 31 | * inside of K2Node_LatentAbilityCall as stated in the AbilityTask.h. Ability logic written in C++ probably needs to call Activate() itself manually. 32 | */ 33 | virtual void Activate() override; 34 | virtual void ExternalCancel() override; 35 | virtual FString GetDebugString() const override; 36 | virtual void OnDestroy(bool AbilityEnded) override; 37 | 38 | /** The montage completely finished playing */ 39 | UPROPERTY(BlueprintAssignable) 40 | FGDPlayMontageAndWaitForEventDelegate OnCompleted; 41 | 42 | /** The montage started blending out */ 43 | UPROPERTY(BlueprintAssignable) 44 | FGDPlayMontageAndWaitForEventDelegate OnBlendOut; 45 | 46 | /** The montage was interrupted */ 47 | UPROPERTY(BlueprintAssignable) 48 | FGDPlayMontageAndWaitForEventDelegate OnInterrupted; 49 | 50 | /** The ability task was explicitly cancelled by another ability */ 51 | UPROPERTY(BlueprintAssignable) 52 | FGDPlayMontageAndWaitForEventDelegate OnCancelled; 53 | 54 | /** One of the triggering gameplay events happened */ 55 | UPROPERTY(BlueprintAssignable) 56 | FGDPlayMontageAndWaitForEventDelegate EventReceived; 57 | 58 | /** 59 | * Play a montage and wait for it end. If a gameplay event happens that matches EventTags (or EventTags is empty), the EventReceived delegate will fire with a tag and event data. 60 | * If StopWhenAbilityEnds is true, this montage will be aborted if the ability ends normally. It is always stopped when the ability is explicitly cancelled. 61 | * On normal execution, OnBlendOut is called when the montage is blending out, and OnCompleted when it is completely done playing 62 | * OnInterrupted is called if another montage overwrites this, and OnCancelled is called if the ability or task is cancelled 63 | * 64 | * @param TaskInstanceName Set to override the name of this task, for later querying 65 | * @param MontageToPlay The montage to play on the character 66 | * @param EventTags Any gameplay events matching this tag will activate the EventReceived callback. If empty, all events will trigger callback 67 | * @param Rate Change to play the montage faster or slower 68 | * @param bStopWhenAbilityEnds If true, this montage will be aborted if the ability ends normally. It is always stopped when the ability is explicitly cancelled 69 | * @param AnimRootMotionTranslationScale Change to modify size of root motion or set to 0 to block it entirely 70 | */ 71 | UFUNCTION(BlueprintCallable, Category = "Ability|Tasks", meta = (HidePin = "OwningAbility", DefaultToSelf = "OwningAbility", BlueprintInternalUseOnly = "TRUE")) 72 | static UGDAT_PlayMontageAndWaitForEvent* PlayMontageAndWaitForEvent( 73 | UGameplayAbility* OwningAbility, 74 | FName TaskInstanceName, 75 | UAnimMontage* MontageToPlay, 76 | FGameplayTagContainer EventTags, 77 | float Rate = 1.f, 78 | FName StartSection = NAME_None, 79 | bool bStopWhenAbilityEnds = true, 80 | float AnimRootMotionTranslationScale = 1.f); 81 | 82 | private: 83 | /** Montage that is playing */ 84 | UPROPERTY() 85 | UAnimMontage* MontageToPlay; 86 | 87 | /** List of tags to match against gameplay events */ 88 | UPROPERTY() 89 | FGameplayTagContainer EventTags; 90 | 91 | /** Playback rate */ 92 | UPROPERTY() 93 | float Rate; 94 | 95 | /** Section to start montage from */ 96 | UPROPERTY() 97 | FName StartSection; 98 | 99 | /** Modifies how root motion movement to apply */ 100 | UPROPERTY() 101 | float AnimRootMotionTranslationScale; 102 | 103 | /** Rather montage should be aborted if ability ends */ 104 | UPROPERTY() 105 | bool bStopWhenAbilityEnds; 106 | 107 | /** Checks if the ability is playing a montage and stops that montage, returns true if a montage was stopped, false if not. */ 108 | bool StopPlayingMontage(); 109 | 110 | void OnMontageBlendingOut(UAnimMontage* Montage, bool bInterrupted); 111 | void OnAbilityCancelled(); 112 | void OnMontageEnded(UAnimMontage* Montage, bool bInterrupted); 113 | void OnGameplayEvent(FGameplayTag EventTag, const FGameplayEventData* Payload); 114 | 115 | FOnMontageBlendingOutStarted BlendingOutDelegate; 116 | FOnMontageEnded MontageEndedDelegate; 117 | FDelegateHandle CancelledHandle; 118 | FDelegateHandle EventHandle; 119 | 120 | }; 121 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/AbilityTasks/GDAT_WaitReceiveDamage.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Abilities/Tasks/AbilityTask.h" 7 | #include "GDAT_WaitReceiveDamage.generated.h" 8 | 9 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FWaitReceiveDamageDelegate, class UGDAbilitySystemComponent*, SourceASC, float, UnmitigatedDamage, float, MitigatedDamage); 10 | 11 | /** 12 | * Waits until the Ability Owner receives damage. 13 | */ 14 | UCLASS() 15 | class GASDOCUMENTATION_API UGDAT_WaitReceiveDamage : public UAbilityTask 16 | { 17 | GENERATED_UCLASS_BODY() 18 | 19 | UPROPERTY(BlueprintAssignable) 20 | FWaitReceiveDamageDelegate OnDamage; 21 | 22 | virtual void Activate() override; 23 | 24 | UFUNCTION() 25 | void OnDamageReceived(class UGDAbilitySystemComponent* SourceASC, float UnmitigatedDamage, float MitigatedDamage); 26 | 27 | // Wait until the ability owner receives damage. 28 | UFUNCTION(BlueprintCallable, Category = "Ability|Tasks", meta = (HidePin = "OwningAbility", DefaultToSelf = "OwningAbility", BlueprintInternalUseOnly = "TRUE")) 29 | static UGDAT_WaitReceiveDamage* WaitReceiveDamage(UGameplayAbility* OwningAbility, bool TriggerOnce); 30 | 31 | protected: 32 | bool TriggerOnce; 33 | 34 | virtual void OnDestroy(bool AbilityIsEnding) override; 35 | }; 36 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/AsyncTaskAttributeChanged.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Kismet/BlueprintAsyncActionBase.h" 7 | #include "AbilitySystemComponent.h" 8 | #include "AsyncTaskAttributeChanged.generated.h" 9 | 10 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOnAttributeChanged, FGameplayAttribute, Attribute, float, NewValue, float, OldValue); 11 | 12 | /** 13 | * Blueprint node to automatically register a listener for all attribute changes in an AbilitySystemComponent. 14 | * Useful to use in UI. 15 | */ 16 | UCLASS(BlueprintType, meta=(ExposedAsyncProxy = AsyncTask)) 17 | class GASDOCUMENTATION_API UAsyncTaskAttributeChanged : public UBlueprintAsyncActionBase 18 | { 19 | GENERATED_BODY() 20 | 21 | public: 22 | UPROPERTY(BlueprintAssignable) 23 | FOnAttributeChanged OnAttributeChanged; 24 | 25 | // Listens for an attribute changing. 26 | UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) 27 | static UAsyncTaskAttributeChanged* ListenForAttributeChange(UAbilitySystemComponent* AbilitySystemComponent, FGameplayAttribute Attribute); 28 | 29 | // Listens for an attribute changing. 30 | // Version that takes in an array of Attributes. Check the Attribute output for which Attribute changed. 31 | UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) 32 | static UAsyncTaskAttributeChanged* ListenForAttributesChange(UAbilitySystemComponent* AbilitySystemComponent, TArray Attributes); 33 | 34 | // You must call this function manually when you want the AsyncTask to end. 35 | // For UMG Widgets, you would call it in the Widget's Destruct event. 36 | UFUNCTION(BlueprintCallable) 37 | void EndTask(); 38 | 39 | protected: 40 | UPROPERTY() 41 | UAbilitySystemComponent* ASC; 42 | 43 | FGameplayAttribute AttributeToListenFor; 44 | TArray AttributesToListenFor; 45 | 46 | void AttributeChanged(const FOnAttributeChangeData& Data); 47 | }; 48 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/AsyncTaskCooldownChanged.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Kismet/BlueprintAsyncActionBase.h" 7 | #include "AbilitySystemComponent.h" 8 | #include "GameplayTagContainer.h" 9 | #include "AsyncTaskCooldownChanged.generated.h" 10 | 11 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOnCooldownChanged, FGameplayTag, CooldownTag, float, TimeRemaining, float, Duration); 12 | 13 | /** 14 | * Blueprint node to automatically register a listener for changes (Begin and End) to an array of Cooldown tags. 15 | * Useful to use in UI. 16 | */ 17 | UCLASS(BlueprintType, meta = (ExposedAsyncProxy = AsyncTask)) 18 | class GASDOCUMENTATION_API UAsyncTaskCooldownChanged : public UBlueprintAsyncActionBase 19 | { 20 | GENERATED_BODY() 21 | 22 | public: 23 | UPROPERTY(BlueprintAssignable) 24 | FOnCooldownChanged OnCooldownBegin; 25 | 26 | UPROPERTY(BlueprintAssignable) 27 | FOnCooldownChanged OnCooldownEnd; 28 | 29 | // Listens for changes (Begin and End) to cooldown GameplayEffects based on the cooldown tag. 30 | // UseServerCooldown determines if the Sever's cooldown is returned in addition to the local predicted cooldown. 31 | // If using ServerCooldown, TimeRemaining and Duration will return -1 to signal local predicted cooldown has begun. 32 | UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) 33 | static UAsyncTaskCooldownChanged* ListenForCooldownChange(UAbilitySystemComponent* AbilitySystemComponent, FGameplayTagContainer CooldownTags, bool UseServerCooldown); 34 | 35 | // You must call this function manually when you want the AsyncTask to end. 36 | // For UMG Widgets, you would call it in the Widget's Destruct event. 37 | UFUNCTION(BlueprintCallable) 38 | void EndTask(); 39 | 40 | protected: 41 | UPROPERTY() 42 | UAbilitySystemComponent* ASC; 43 | 44 | FGameplayTagContainer CooldownTags; 45 | 46 | bool UseServerCooldown; 47 | 48 | virtual void OnActiveGameplayEffectAddedCallback(UAbilitySystemComponent* Target, const FGameplayEffectSpec& SpecApplied, FActiveGameplayEffectHandle ActiveHandle); 49 | virtual void CooldownTagChanged(const FGameplayTag CooldownTag, int32 NewCount); 50 | 51 | bool GetCooldownRemainingForTag(FGameplayTagContainer CooldownTags, float& TimeRemaining, float& CooldownDuration); 52 | }; 53 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/AsyncTaskEffectStackChanged.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Kismet/BlueprintAsyncActionBase.h" 7 | #include "AbilitySystemComponent.h" 8 | #include "AsyncTaskEffectStackChanged.generated.h" 9 | 10 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOnGameplayEffectStackChanged, FGameplayTag, EffectGameplayTag, FActiveGameplayEffectHandle, Handle, int32, NewStackCount, int32, OldStackCount); 11 | 12 | /** 13 | * Blueprint node to automatically register a listener for changes to a GameplayEffect's stack count based on an Asset or Granted tag on the Effect. 14 | * Useful to use in UI. 15 | */ 16 | UCLASS(BlueprintType, meta = (ExposedAsyncProxy = AsyncTask)) 17 | class GASDOCUMENTATION_API UAsyncTaskEffectStackChanged : public UBlueprintAsyncActionBase 18 | { 19 | GENERATED_BODY() 20 | 21 | UPROPERTY(BlueprintAssignable) 22 | FOnGameplayEffectStackChanged OnGameplayEffectStackChange; 23 | 24 | UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true")) 25 | static UAsyncTaskEffectStackChanged* ListenForGameplayEffectStackChange(UAbilitySystemComponent* AbilitySystemComponent, FGameplayTag EffectGameplayTag); 26 | 27 | // You must call this function manually when you want the AsyncTask to end. 28 | // For UMG Widgets, you would call it in the Widget's Destruct event. 29 | UFUNCTION(BlueprintCallable) 30 | void EndTask(); 31 | 32 | protected: 33 | UPROPERTY() 34 | UAbilitySystemComponent* ASC; 35 | 36 | FGameplayTag EffectGameplayTag; 37 | 38 | FActiveGameplayEffectHandle ActiveEffectHandle; 39 | 40 | virtual void OnActiveGameplayEffectAddedCallback(UAbilitySystemComponent* Target, const FGameplayEffectSpec& SpecApplied, FActiveGameplayEffectHandle ActiveHandle); 41 | virtual void OnRemoveGameplayEffectCallback(const FActiveGameplayEffect& EffectRemoved); 42 | 43 | virtual void GameplayEffectStackChanged(FActiveGameplayEffectHandle EffectHandle, int32 NewStackCount, int32 PreviousStackCount); 44 | }; 45 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/AttributeSets/GDAttributeSetBase.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "AttributeSet.h" 7 | #include "AbilitySystemComponent.h" 8 | #include "GDAttributeSetBase.generated.h" 9 | 10 | // Uses macros from AttributeSet.h 11 | #define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \ 12 | GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \ 13 | GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ 14 | GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \ 15 | GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName) 16 | 17 | /** 18 | * 19 | */ 20 | UCLASS() 21 | class GASDOCUMENTATION_API UGDAttributeSetBase : public UAttributeSet 22 | { 23 | GENERATED_BODY() 24 | 25 | public: 26 | UGDAttributeSetBase(); 27 | 28 | // AttributeSet Overrides 29 | virtual void PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue) override; 30 | virtual void PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data) override; 31 | 32 | virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; 33 | 34 | // Current Health, when 0 we expect owner to die unless prevented by an ability. Capped by MaxHealth. 35 | // Positive changes can directly use this. 36 | // Negative changes to Health should go through Damage meta attribute. 37 | UPROPERTY(BlueprintReadOnly, Category = "Health", ReplicatedUsing = OnRep_Health) 38 | FGameplayAttributeData Health; 39 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, Health) 40 | 41 | // MaxHealth is its own attribute since GameplayEffects may modify it 42 | UPROPERTY(BlueprintReadOnly, Category = "Health", ReplicatedUsing = OnRep_MaxHealth) 43 | FGameplayAttributeData MaxHealth; 44 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, MaxHealth) 45 | 46 | // Health regen rate will passively increase Health every second 47 | UPROPERTY(BlueprintReadOnly, Category = "Health", ReplicatedUsing = OnRep_HealthRegenRate) 48 | FGameplayAttributeData HealthRegenRate; 49 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, HealthRegenRate) 50 | 51 | // Current Mana, used to execute special abilities. Capped by MaxMana. 52 | UPROPERTY(BlueprintReadOnly, Category = "Mana", ReplicatedUsing = OnRep_Mana) 53 | FGameplayAttributeData Mana; 54 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, Mana) 55 | 56 | // MaxMana is its own attribute since GameplayEffects may modify it 57 | UPROPERTY(BlueprintReadOnly, Category = "Mana", ReplicatedUsing = OnRep_MaxMana) 58 | FGameplayAttributeData MaxMana; 59 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, MaxMana) 60 | 61 | // Mana regen rate will passively increase Mana every second 62 | UPROPERTY(BlueprintReadOnly, Category = "Mana", ReplicatedUsing = OnRep_ManaRegenRate) 63 | FGameplayAttributeData ManaRegenRate; 64 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, ManaRegenRate) 65 | 66 | // Current stamina, used to execute special abilities. Capped by MaxStamina. 67 | UPROPERTY(BlueprintReadOnly, Category = "Stamina", ReplicatedUsing = OnRep_Stamina) 68 | FGameplayAttributeData Stamina; 69 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, Stamina) 70 | 71 | // MaxStamina is its own attribute since GameplayEffects may modify it 72 | UPROPERTY(BlueprintReadOnly, Category = "Stamina", ReplicatedUsing = OnRep_MaxStamina) 73 | FGameplayAttributeData MaxStamina; 74 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, MaxStamina) 75 | 76 | // Stamina regen rate will passively increase Stamina every second 77 | UPROPERTY(BlueprintReadOnly, Category = "Stamina", ReplicatedUsing = OnRep_StaminaRegenRate) 78 | FGameplayAttributeData StaminaRegenRate; 79 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, StaminaRegenRate) 80 | 81 | // Armor reduces the amount of damage done by attackers 82 | UPROPERTY(BlueprintReadOnly, Category = "Armor", ReplicatedUsing = OnRep_Armor) 83 | FGameplayAttributeData Armor; 84 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, Armor) 85 | 86 | // Damage is a meta attribute used by the DamageExecution to calculate final damage, which then turns into -Health 87 | // Temporary value that only exists on the Server. Not replicated. 88 | UPROPERTY(BlueprintReadOnly, Category = "Damage") 89 | FGameplayAttributeData Damage; 90 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, Damage) 91 | 92 | // MoveSpeed affects how fast characters can move. 93 | UPROPERTY(BlueprintReadOnly, Category = "MoveSpeed", ReplicatedUsing = OnRep_MoveSpeed) 94 | FGameplayAttributeData MoveSpeed; 95 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, MoveSpeed) 96 | 97 | UPROPERTY(BlueprintReadOnly, Category = "Character Level", ReplicatedUsing = OnRep_CharacterLevel) 98 | FGameplayAttributeData CharacterLevel; 99 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, CharacterLevel) 100 | 101 | // Experience points gained from killing enemies. Used to level up (not implemented in this project). 102 | UPROPERTY(BlueprintReadOnly, Category = "XP", ReplicatedUsing = OnRep_XP) 103 | FGameplayAttributeData XP; 104 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, XP) 105 | 106 | // Experience points awarded to the character's killers. Used to level up (not implemented in this project). 107 | UPROPERTY(BlueprintReadOnly, Category = "XP", ReplicatedUsing = OnRep_XPBounty) 108 | FGameplayAttributeData XPBounty; 109 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, XPBounty) 110 | 111 | // Gold gained from killing enemies. Used to purchase items (not implemented in this project). 112 | UPROPERTY(BlueprintReadOnly, Category = "Gold", ReplicatedUsing = OnRep_Gold) 113 | FGameplayAttributeData Gold; 114 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, Gold) 115 | 116 | // Gold awarded to the character's killer. Used to purchase items (not implemented in this project). 117 | UPROPERTY(BlueprintReadOnly, Category = "Gold", ReplicatedUsing = OnRep_GoldBounty) 118 | FGameplayAttributeData GoldBounty; 119 | ATTRIBUTE_ACCESSORS(UGDAttributeSetBase, GoldBounty) 120 | 121 | protected: 122 | // Helper function to proportionally adjust the value of an attribute when it's associated max attribute changes. 123 | // (i.e. When MaxHealth increases, Health increases by an amount that maintains the same percentage as before) 124 | void AdjustAttributeForMaxChange(FGameplayAttributeData& AffectedAttribute, const FGameplayAttributeData& MaxAttribute, float NewMaxValue, const FGameplayAttribute& AffectedAttributeProperty); 125 | 126 | /** 127 | * These OnRep functions exist to make sure that the ability system internal representations are synchronized properly during replication 128 | **/ 129 | 130 | UFUNCTION() 131 | virtual void OnRep_Health(const FGameplayAttributeData& OldHealth); 132 | 133 | UFUNCTION() 134 | virtual void OnRep_MaxHealth(const FGameplayAttributeData& OldMaxHealth); 135 | 136 | UFUNCTION() 137 | virtual void OnRep_HealthRegenRate(const FGameplayAttributeData& OldHealthRegenRate); 138 | 139 | UFUNCTION() 140 | virtual void OnRep_Mana(const FGameplayAttributeData& OldMana); 141 | 142 | UFUNCTION() 143 | virtual void OnRep_MaxMana(const FGameplayAttributeData& OldMaxMana); 144 | 145 | UFUNCTION() 146 | virtual void OnRep_ManaRegenRate(const FGameplayAttributeData& OldManaRegenRate); 147 | 148 | UFUNCTION() 149 | virtual void OnRep_Stamina(const FGameplayAttributeData& OldStamina); 150 | 151 | UFUNCTION() 152 | virtual void OnRep_MaxStamina(const FGameplayAttributeData& OldMaxStamina); 153 | 154 | UFUNCTION() 155 | virtual void OnRep_StaminaRegenRate(const FGameplayAttributeData& OldStaminaRegenRate); 156 | 157 | UFUNCTION() 158 | virtual void OnRep_Armor(const FGameplayAttributeData& OldArmor); 159 | 160 | UFUNCTION() 161 | virtual void OnRep_MoveSpeed(const FGameplayAttributeData& OldMoveSpeed); 162 | 163 | UFUNCTION() 164 | virtual void OnRep_CharacterLevel(const FGameplayAttributeData& OldCharacterLevel); 165 | 166 | UFUNCTION() 167 | virtual void OnRep_XP(const FGameplayAttributeData& OldXP); 168 | 169 | UFUNCTION() 170 | virtual void OnRep_XPBounty(const FGameplayAttributeData& OldXPBounty); 171 | 172 | UFUNCTION() 173 | virtual void OnRep_Gold(const FGameplayAttributeData& OldGold); 174 | 175 | UFUNCTION() 176 | virtual void OnRep_GoldBounty(const FGameplayAttributeData& OldGoldBounty); 177 | 178 | private: 179 | FGameplayTag HitDirectionFrontTag; 180 | FGameplayTag HitDirectionBackTag; 181 | FGameplayTag HitDirectionRightTag; 182 | FGameplayTag HitDirectionLeftTag; 183 | }; 184 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/GDAbilitySystemComponent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "AbilitySystemComponent.h" 7 | #include "GDAbilitySystemComponent.generated.h" 8 | 9 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FReceivedDamageDelegate, UGDAbilitySystemComponent*, SourceASC, float, UnmitigatedDamage, float, MitigatedDamage); 10 | 11 | /** 12 | * 13 | */ 14 | UCLASS() 15 | class GASDOCUMENTATION_API UGDAbilitySystemComponent : public UAbilitySystemComponent 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | bool bCharacterAbilitiesGiven = false; 21 | bool bStartupEffectsApplied = false; 22 | 23 | FReceivedDamageDelegate ReceivedDamage; 24 | 25 | // Called from GDDamageExecCalculation. Broadcasts on ReceivedDamage whenever this ASC receives damage. 26 | virtual void ReceiveDamage(UGDAbilitySystemComponent* SourceASC, float UnmitigatedDamage, float MitigatedDamage); 27 | }; 28 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/GDDamageExecCalculation.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameplayEffectExecutionCalculation.h" 7 | #include "GDDamageExecCalculation.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API UGDDamageExecCalculation : public UGameplayEffectExecutionCalculation 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | UGDDamageExecCalculation(); 19 | 20 | virtual void Execute_Implementation(const FGameplayEffectCustomExecutionParameters& ExecutionParams, OUT FGameplayEffectCustomExecutionOutput& OutExecutionOutput) const override; 21 | }; 22 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/GDGA_CharacterJump.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Characters/Abilities/GDGameplayAbility.h" 7 | #include "GDGA_CharacterJump.generated.h" 8 | 9 | /** 10 | * Makes the Character try to jump using the standard Character->Jump. This is an example of a non-instanced ability. 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API UGDGA_CharacterJump : public UGDGameplayAbility 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | UGDGA_CharacterJump(); 19 | 20 | virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData) override; 21 | 22 | virtual bool CanActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayTagContainer* SourceTags = nullptr, const FGameplayTagContainer* TargetTags = nullptr, OUT FGameplayTagContainer* OptionalRelevantTags = nullptr) const override; 23 | 24 | virtual void InputReleased(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo) override; 25 | 26 | virtual void CancelAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateCancelAbility) override; 27 | }; 28 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Abilities/GDGameplayAbility.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Abilities/GameplayAbility.h" 7 | #include "GASDocumentation/GASDocumentation.h" 8 | #include "GDGameplayAbility.generated.h" 9 | 10 | /** 11 | * 12 | */ 13 | UCLASS() 14 | class GASDOCUMENTATION_API UGDGameplayAbility : public UGameplayAbility 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | UGDGameplayAbility(); 20 | 21 | // Abilities with this set will automatically activate when the input is pressed 22 | UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "Ability") 23 | EGDAbilityInputID AbilityInputID = EGDAbilityInputID::None; 24 | 25 | // Value to associate an ability with an slot without tying it to an automatically activated input. 26 | // Passive abilities won't be tied to an input so we need a way to generically associate abilities with slots. 27 | UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "Ability") 28 | EGDAbilityInputID AbilityID = EGDAbilityInputID::None; 29 | 30 | // Tells an ability to activate immediately when its granted. Used for passive abilities and abilities forced on others. 31 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Ability") 32 | bool ActivateAbilityOnGranted = false; 33 | 34 | // If an ability is marked as 'ActivateAbilityOnGranted', activate them immediately when given here 35 | // Epic's comment: Projects may want to initiate passives or do other "BeginPlay" type of logic here. 36 | virtual void OnAvatarSet(const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilitySpec& Spec) override; 37 | }; 38 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/GDCharacterBase.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Character.h" 7 | #include "AbilitySystemInterface.h" 8 | #include "GameplayTagContainer.h" 9 | #include "GASDocumentation/GASDocumentation.h" 10 | #include "GDCharacterBase.generated.h" 11 | 12 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FCharacterBaseHitReactDelegate, EGDHitReactDirection, Direction); 13 | DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FCharacterDiedDelegate, AGDCharacterBase*, Character); 14 | 15 | /** 16 | * The base Character class for the game. Everything with an AbilitySystemComponent in this game will inherit from this class. 17 | * This class should not be instantiated and instead subclassed. 18 | */ 19 | UCLASS() 20 | class GASDOCUMENTATION_API AGDCharacterBase : public ACharacter, public IAbilitySystemInterface 21 | { 22 | GENERATED_BODY() 23 | 24 | public: 25 | // Sets default values for this character's properties 26 | AGDCharacterBase(const class FObjectInitializer& ObjectInitializer); 27 | 28 | // Set the Hit React direction in the Animation Blueprint 29 | UPROPERTY(BlueprintAssignable, Category = "GASDocumentation|GDCharacter") 30 | FCharacterBaseHitReactDelegate ShowHitReact; 31 | 32 | UPROPERTY(BlueprintAssignable, Category = "GASDocumentation|GDCharacter") 33 | FCharacterDiedDelegate OnCharacterDied; 34 | 35 | // Implement IAbilitySystemInterface 36 | virtual class UAbilitySystemComponent* GetAbilitySystemComponent() const override; 37 | 38 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter") 39 | virtual bool IsAlive() const; 40 | 41 | // Switch on AbilityID to return individual ability levels. Hardcoded to 1 for every ability in this project. 42 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter") 43 | virtual int32 GetAbilityLevel(EGDAbilityInputID AbilityID) const; 44 | 45 | // Removes all CharacterAbilities. Can only be called by the Server. Removing on the Server will remove from Client too. 46 | virtual void RemoveCharacterAbilities(); 47 | 48 | UFUNCTION(BlueprintCallable) 49 | EGDHitReactDirection GetHitReactDirection(const FVector& ImpactPoint); 50 | 51 | UFUNCTION(NetMulticast, Reliable, WithValidation) 52 | virtual void PlayHitReact(FGameplayTag HitDirection, AActor* DamageCauser); 53 | virtual void PlayHitReact_Implementation(FGameplayTag HitDirection, AActor* DamageCauser); 54 | virtual bool PlayHitReact_Validate(FGameplayTag HitDirection, AActor* DamageCauser); 55 | 56 | 57 | /** 58 | * Getters for attributes from GDAttributeSetBase 59 | **/ 60 | 61 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 62 | int32 GetCharacterLevel() const; 63 | 64 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 65 | float GetHealth() const; 66 | 67 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 68 | float GetMaxHealth() const; 69 | 70 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 71 | float GetMana() const; 72 | 73 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 74 | float GetMaxMana() const; 75 | 76 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 77 | float GetStamina() const; 78 | 79 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 80 | float GetMaxStamina() const; 81 | 82 | // Gets the Current value of MoveSpeed 83 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 84 | float GetMoveSpeed() const; 85 | 86 | // Gets the Base value of MoveSpeed 87 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter|Attributes") 88 | float GetMoveSpeedBaseValue() const; 89 | 90 | 91 | virtual void Die(); 92 | 93 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDCharacter") 94 | virtual void FinishDying(); 95 | 96 | protected: 97 | // Called when the game starts or when spawned 98 | virtual void BeginPlay() override; 99 | 100 | // Instead of TWeakObjectPtrs, you could just have UPROPERTY() hard references or no references at all and just call 101 | // GetAbilitySystem() and make a GetAttributeSetBase() that can read from the PlayerState or from child classes. 102 | // Just make sure you test if the pointer is valid before using. 103 | // I opted for TWeakObjectPtrs because I didn't want a shared hard reference here and I didn't want an extra function call of getting 104 | // the ASC/AttributeSet from the PlayerState or child classes every time I referenced them in this base class. 105 | 106 | TWeakObjectPtr AbilitySystemComponent; 107 | TWeakObjectPtr AttributeSetBase; 108 | 109 | FGameplayTag HitDirectionFrontTag; 110 | FGameplayTag HitDirectionBackTag; 111 | FGameplayTag HitDirectionRightTag; 112 | FGameplayTag HitDirectionLeftTag; 113 | FGameplayTag DeadTag; 114 | FGameplayTag EffectRemoveOnDeathTag; 115 | 116 | UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "GASDocumentation|GDCharacter") 117 | FText CharacterName; 118 | 119 | // Death Animation 120 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "GASDocumentation|Animation") 121 | UAnimMontage* DeathMontage; 122 | 123 | // Default abilities for this Character. These will be removed on Character death and regiven if Character respawns. 124 | UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "GASDocumentation|Abilities") 125 | TArray> CharacterAbilities; 126 | 127 | // Default attributes for a character for initializing on spawn/respawn. 128 | // This is an instant GE that overrides the values for attributes that get reset on spawn/respawn. 129 | UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "GASDocumentation|Abilities") 130 | TSubclassOf DefaultAttributes; 131 | 132 | // These effects are only applied one time on startup 133 | UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "GASDocumentation|Abilities") 134 | TArray> StartupEffects; 135 | 136 | // Grant abilities on the Server. The Ability Specs will be replicated to the owning client. 137 | virtual void AddCharacterAbilities(); 138 | 139 | // Initialize the Character's attributes. Must run on Server but we run it on Client too 140 | // so that we don't have to wait. The Server's replication to the Client won't matter since 141 | // the values should be the same. 142 | virtual void InitializeAttributes(); 143 | 144 | virtual void AddStartupEffects(); 145 | 146 | 147 | /** 148 | * Setters for Attributes. Only use these in special cases like Respawning, otherwise use a GE to change Attributes. 149 | * These change the Attribute's Base Value. 150 | */ 151 | 152 | virtual void SetHealth(float Health); 153 | virtual void SetMana(float Mana); 154 | virtual void SetStamina(float Stamina); 155 | }; 156 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/GDCharacterMovementComponent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/CharacterMovementComponent.h" 7 | #include "GDCharacterMovementComponent.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API UGDCharacterMovementComponent : public UCharacterMovementComponent 14 | { 15 | GENERATED_BODY() 16 | 17 | class FGDSavedMove : public FSavedMove_Character 18 | { 19 | public: 20 | 21 | typedef FSavedMove_Character Super; 22 | 23 | ///@brief Resets all saved variables. 24 | virtual void Clear() override; 25 | 26 | ///@brief Store input commands in the compressed flags. 27 | virtual uint8 GetCompressedFlags() const override; 28 | 29 | ///@brief This is used to check whether or not two moves can be combined into one. 30 | ///Basically you just check to make sure that the saved variables are the same. 31 | virtual bool CanCombineWith(const FSavedMovePtr& NewMove, ACharacter* Character, float MaxDelta) const override; 32 | 33 | ///@brief Sets up the move before sending it to the server. 34 | virtual void SetMoveFor(ACharacter* Character, float InDeltaTime, FVector const& NewAccel, class FNetworkPredictionData_Client_Character & ClientData) override; 35 | ///@brief Sets variables on character movement component before making a predictive correction. 36 | virtual void PrepMoveFor(class ACharacter* Character) override; 37 | 38 | // Sprint 39 | uint8 SavedRequestToStartSprinting : 1; 40 | 41 | // Aim Down Sights 42 | uint8 SavedRequestToStartADS : 1; 43 | }; 44 | 45 | class FGDNetworkPredictionData_Client : public FNetworkPredictionData_Client_Character 46 | { 47 | public: 48 | FGDNetworkPredictionData_Client(const UCharacterMovementComponent& ClientMovement); 49 | 50 | typedef FNetworkPredictionData_Client_Character Super; 51 | 52 | ///@brief Allocates a new copy of our custom saved move 53 | virtual FSavedMovePtr AllocateNewMove() override; 54 | }; 55 | 56 | public: 57 | UGDCharacterMovementComponent(); 58 | 59 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Sprint") 60 | float SprintSpeedMultiplier; 61 | 62 | UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Aim Down Sights") 63 | float ADSSpeedMultiplier; 64 | 65 | uint8 RequestToStartSprinting : 1; 66 | uint8 RequestToStartADS : 1; 67 | 68 | virtual float GetMaxSpeed() const override; 69 | virtual void UpdateFromCompressedFlags(uint8 Flags) override; 70 | virtual class FNetworkPredictionData_Client* GetPredictionData_Client() const override; 71 | 72 | // Sprint 73 | UFUNCTION(BlueprintCallable, Category = "Sprint") 74 | void StartSprinting(); 75 | UFUNCTION(BlueprintCallable, Category = "Sprint") 76 | void StopSprinting(); 77 | 78 | // Aim Down Sights 79 | UFUNCTION(BlueprintCallable, Category = "Aim Down Sights") 80 | void StartAimDownSights(); 81 | UFUNCTION(BlueprintCallable, Category = "Aim Down Sights") 82 | void StopAimDownSights(); 83 | }; 84 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/GDProjectile.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "GameplayEffect.h" 8 | #include "GDProjectile.generated.h" 9 | 10 | UCLASS() 11 | class GASDOCUMENTATION_API AGDProjectile : public AActor 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | // Sets default values for this actor's properties 17 | AGDProjectile(); 18 | 19 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Meta = (ExposeOnSpawn = true)) 20 | float Range; 21 | 22 | UPROPERTY(BlueprintReadWrite, Meta = (ExposeOnSpawn = true)) 23 | FGameplayEffectSpecHandle DamageEffectSpecHandle; 24 | 25 | UPROPERTY(BlueprintReadOnly, VisibleAnywhere) 26 | class UProjectileMovementComponent* ProjectileMovement; 27 | 28 | protected: 29 | // Called when the game starts or when spawned 30 | virtual void BeginPlay() override; 31 | }; 32 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Heroes/Abilities/GDGA_FireGun.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Characters/Abilities/GDGameplayAbility.h" 7 | #include "Characters/Abilities/AbilityTasks/GDAT_PlayMontageAndWaitForEvent.h" 8 | #include "Characters/GDProjectile.h" 9 | #include "GDGA_FireGun.generated.h" 10 | 11 | /** 12 | * 13 | */ 14 | UCLASS() 15 | class GASDOCUMENTATION_API UGDGA_FireGun : public UGDGameplayAbility 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | UGDGA_FireGun(); 21 | 22 | UPROPERTY(BlueprintReadOnly, EditAnywhere) 23 | UAnimMontage* FireHipMontage; 24 | 25 | UPROPERTY(BlueprintReadOnly, EditAnywhere) 26 | UAnimMontage* FireIronsightsMontage; 27 | 28 | UPROPERTY(BlueprintReadOnly, EditAnywhere) 29 | TSubclassOf ProjectileClass; 30 | 31 | UPROPERTY(BlueprintReadOnly, EditAnywhere) 32 | TSubclassOf DamageGameplayEffect; 33 | 34 | /** Actually activate ability, do not call this directly. We'll call it from APAHeroCharacter::ActivateAbilitiesWithTags(). */ 35 | virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData) override; 36 | 37 | protected: 38 | UPROPERTY(BlueprintReadOnly, EditAnywhere) 39 | float Range; 40 | 41 | UPROPERTY(BlueprintReadOnly, EditAnywhere) 42 | float Damage; 43 | 44 | UFUNCTION() 45 | void OnCancelled(FGameplayTag EventTag, FGameplayEventData EventData); 46 | 47 | UFUNCTION() 48 | void OnCompleted(FGameplayTag EventTag, FGameplayEventData EventData); 49 | 50 | UFUNCTION() 51 | void EventReceived(FGameplayTag EventTag, FGameplayEventData EventData); 52 | }; 53 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Heroes/GDHeroCharacter.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Characters/GDCharacterBase.h" 7 | #include "GDHeroCharacter.generated.h" 8 | 9 | /** 10 | * A player or AI controlled hero character. 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API AGDHeroCharacter : public AGDCharacterBase 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | AGDHeroCharacter(const class FObjectInitializer& ObjectInitializer); 19 | 20 | // Called to bind functionality to input 21 | virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; 22 | 23 | // Only called on the Server. Calls before Server's AcknowledgePossession. 24 | virtual void PossessedBy(AController* NewController) override; 25 | 26 | class USpringArmComponent* GetCameraBoom(); 27 | 28 | class UCameraComponent* GetFollowCamera(); 29 | 30 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|Camera") 31 | float GetStartingCameraBoomArmLength(); 32 | 33 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|Camera") 34 | FVector GetStartingCameraBoomLocation(); 35 | 36 | class UGDFloatingStatusBarWidget* GetFloatingStatusBar(); 37 | 38 | USkeletalMeshComponent* GetGunComponent() const; 39 | 40 | virtual void FinishDying() override; 41 | 42 | protected: 43 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "GASDocumentation|Camera") 44 | float BaseTurnRate = 45.0f; 45 | 46 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "GASDocumentation|Camera") 47 | float BaseLookUpRate = 45.0f; 48 | 49 | UPROPERTY(BlueprintReadOnly, Category = "GASDocumentation|Camera") 50 | float StartingCameraBoomArmLength; 51 | 52 | UPROPERTY(BlueprintReadOnly, Category = "GASDocumentation|Camera") 53 | FVector StartingCameraBoomLocation; 54 | 55 | UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "GASDocumentation|Camera") 56 | class USpringArmComponent* CameraBoom; 57 | 58 | UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "GASDocumentation|Camera") 59 | class UCameraComponent* FollowCamera; 60 | 61 | UPROPERTY(BlueprintReadOnly, VisibleAnywhere) 62 | USkeletalMeshComponent* GunComponent; 63 | 64 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "GASDocumentation|UI") 65 | TSubclassOf UIFloatingStatusBarClass; 66 | 67 | UPROPERTY() 68 | class UGDFloatingStatusBarWidget* UIFloatingStatusBar; 69 | 70 | UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "GASDocumentation|UI") 71 | class UWidgetComponent* UIFloatingStatusBarComponent; 72 | 73 | bool ASCInputBound = false; 74 | 75 | FGameplayTag DeadTag; 76 | 77 | // Called when the game starts or when spawned 78 | virtual void BeginPlay() override; 79 | 80 | virtual void PostInitializeComponents() override; 81 | 82 | // Mouse 83 | void LookUp(float Value); 84 | 85 | // Gamepad 86 | void LookUpRate(float Value); 87 | 88 | // Mouse 89 | void Turn(float Value); 90 | 91 | // Gamepad 92 | void TurnRate(float Value); 93 | 94 | // Mouse + Gamepad 95 | void MoveForward(float Value); 96 | 97 | // Mouse + Gamepad 98 | void MoveRight(float Value); 99 | 100 | // Creates and initializes the floating status bar for heroes. 101 | // Safe to call many times because it checks to make sure it only executes once. 102 | UFUNCTION() 103 | void InitializeFloatingStatusBar(); 104 | 105 | // Client only 106 | virtual void OnRep_PlayerState() override; 107 | 108 | // Called from both SetupPlayerInputComponent and OnRep_PlayerState because of a potential race condition where the PlayerController might 109 | // call ClientRestart which calls SetupPlayerInputComponent before the PlayerState is repped to the client so the PlayerState would be null in SetupPlayerInputComponent. 110 | // Conversely, the PlayerState might be repped before the PlayerController calls ClientRestart so the Actor's InputComponent would be null in OnRep_PlayerState. 111 | void BindASCInput(); 112 | }; 113 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Characters/Minions/GDMinionCharacter.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Characters/GDCharacterBase.h" 7 | #include "GameplayEffectTypes.h" 8 | #include "GDMinionCharacter.generated.h" 9 | 10 | /** 11 | * An AI controlled minion character. 12 | */ 13 | UCLASS() 14 | class GASDOCUMENTATION_API AGDMinionCharacter : public AGDCharacterBase 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | AGDMinionCharacter(const class FObjectInitializer& ObjectInitializer); 20 | 21 | protected: 22 | 23 | // Actual hard pointer to AbilitySystemComponent 24 | UPROPERTY() 25 | class UGDAbilitySystemComponent* HardRefAbilitySystemComponent; 26 | 27 | // Actual hard pointer to AttributeSetBase 28 | UPROPERTY() 29 | class UGDAttributeSetBase* HardRefAttributeSetBase; 30 | 31 | virtual void BeginPlay() override; 32 | 33 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "GASDocumentation|UI") 34 | TSubclassOf UIFloatingStatusBarClass; 35 | 36 | UPROPERTY() 37 | class UGDFloatingStatusBarWidget* UIFloatingStatusBar; 38 | 39 | UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Category = "GASDocumentation|UI") 40 | class UWidgetComponent* UIFloatingStatusBarComponent; 41 | 42 | FDelegateHandle HealthChangedDelegateHandle; 43 | 44 | // Attribute changed callbacks 45 | virtual void HealthChanged(const FOnAttributeChangeData& Data); 46 | 47 | // Tag change callbacks 48 | virtual void StunTagChanged(const FGameplayTag CallbackTag, int32 NewCount); 49 | }; 50 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/GDBlueprintLibrary.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Kismet/BlueprintFunctionLibrary.h" 7 | #include "GameplayEffect.h" 8 | #include "GDBlueprintLibrary.generated.h" 9 | 10 | /** 11 | * 12 | */ 13 | UCLASS() 14 | class GASDOCUMENTATION_API UGDBlueprintLibrary : public UBlueprintFunctionLibrary 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | 20 | }; 21 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/GDEngineSubsystem.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Subsystems/EngineSubsystem.h" 7 | #include "GDEngineSubsystem.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API UGDEngineSubsystem : public UEngineSubsystem 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | virtual void Initialize(FSubsystemCollectionBase& Collection) override; 19 | }; 20 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Player/GDPlayerController.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/PlayerController.h" 7 | #include "Characters/GDCharacterBase.h" 8 | #include "GDPlayerController.generated.h" 9 | 10 | /** 11 | * 12 | */ 13 | UCLASS() 14 | class GASDOCUMENTATION_API AGDPlayerController : public APlayerController 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | void CreateHUD(); 20 | 21 | UPROPERTY(EditAnywhere, Category = "GASDocumentation|UI") 22 | TSubclassOf DamageNumberClass; 23 | 24 | class UGDHUDWidget* GetHUD(); 25 | 26 | UFUNCTION(Client, Reliable, WithValidation) 27 | void ShowDamageNumber(float DamageAmount, AGDCharacterBase* TargetCharacter); 28 | void ShowDamageNumber_Implementation(float DamageAmount, AGDCharacterBase* TargetCharacter); 29 | bool ShowDamageNumber_Validate(float DamageAmount, AGDCharacterBase* TargetCharacter); 30 | 31 | // Simple way to RPC to the client the countdown until they respawn from the GameMode. Will be latency amount of out sync with the Server. 32 | UFUNCTION(Client, Reliable, WithValidation) 33 | void SetRespawnCountdown(float RespawnTimeRemaining); 34 | void SetRespawnCountdown_Implementation(float RespawnTimeRemaining); 35 | bool SetRespawnCountdown_Validate(float RespawnTimeRemaining); 36 | 37 | protected: 38 | UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "GASDocumentation|UI") 39 | TSubclassOf UIHUDWidgetClass; 40 | 41 | UPROPERTY(BlueprintReadWrite, Category = "GASDocumentation|UI") 42 | class UGDHUDWidget* UIHUDWidget; 43 | 44 | // Server only 45 | virtual void OnPossess(APawn* InPawn) override; 46 | 47 | virtual void OnRep_PlayerState() override; 48 | }; 49 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/Player/GDPlayerState.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/PlayerState.h" 7 | #include "AbilitySystemInterface.h" 8 | #include "GameplayEffectTypes.h" 9 | #include "GDPlayerState.generated.h" 10 | 11 | /** 12 | * 13 | */ 14 | UCLASS() 15 | class GASDOCUMENTATION_API AGDPlayerState : public APlayerState, public IAbilitySystemInterface 16 | { 17 | GENERATED_BODY() 18 | 19 | public: 20 | AGDPlayerState(); 21 | 22 | // Implement IAbilitySystemInterface 23 | class UAbilitySystemComponent* GetAbilitySystemComponent() const override; 24 | 25 | class UGDAttributeSetBase* GetAttributeSetBase() const; 26 | 27 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState") 28 | bool IsAlive() const; 29 | 30 | UFUNCTION(BlueprintCallable, Category = "GASDocumenation|GDPlayerState|UI") 31 | void ShowAbilityConfirmCancelText(bool ShowText); 32 | 33 | 34 | /** 35 | * Getters for attributes from GDAttributeSetBase. Returns Current Value unless otherwise specified. 36 | */ 37 | 38 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 39 | float GetHealth() const; 40 | 41 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 42 | float GetMaxHealth() const; 43 | 44 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 45 | float GetHealthRegenRate() const; 46 | 47 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 48 | float GetMana() const; 49 | 50 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 51 | float GetMaxMana() const; 52 | 53 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 54 | float GetManaRegenRate() const; 55 | 56 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 57 | float GetStamina() const; 58 | 59 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 60 | float GetMaxStamina() const; 61 | 62 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 63 | float GetStaminaRegenRate() const; 64 | 65 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 66 | float GetArmor() const; 67 | 68 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 69 | float GetMoveSpeed() const; 70 | 71 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 72 | int32 GetCharacterLevel() const; 73 | 74 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 75 | int32 GetXP() const; 76 | 77 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 78 | int32 GetXPBounty() const; 79 | 80 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 81 | int32 GetGold() const; 82 | 83 | UFUNCTION(BlueprintCallable, Category = "GASDocumentation|GDPlayerState|Attributes") 84 | int32 GetGoldBounty() const; 85 | 86 | protected: 87 | UPROPERTY() 88 | class UGDAbilitySystemComponent* AbilitySystemComponent; 89 | 90 | UPROPERTY() 91 | class UGDAttributeSetBase* AttributeSetBase; 92 | 93 | FGameplayTag DeadTag; 94 | 95 | FDelegateHandle HealthChangedDelegateHandle; 96 | FDelegateHandle MaxHealthChangedDelegateHandle; 97 | FDelegateHandle HealthRegenRateChangedDelegateHandle; 98 | FDelegateHandle ManaChangedDelegateHandle; 99 | FDelegateHandle MaxManaChangedDelegateHandle; 100 | FDelegateHandle ManaRegenRateChangedDelegateHandle; 101 | FDelegateHandle StaminaChangedDelegateHandle; 102 | FDelegateHandle MaxStaminaChangedDelegateHandle; 103 | FDelegateHandle StaminaRegenRateChangedDelegateHandle; 104 | FDelegateHandle XPChangedDelegateHandle; 105 | FDelegateHandle GoldChangedDelegateHandle; 106 | FDelegateHandle CharacterLevelChangedDelegateHandle; 107 | 108 | // Called when the game starts or when spawned 109 | virtual void BeginPlay() override; 110 | 111 | // Attribute changed callbacks 112 | virtual void HealthChanged(const FOnAttributeChangeData& Data); 113 | virtual void MaxHealthChanged(const FOnAttributeChangeData& Data); 114 | virtual void HealthRegenRateChanged(const FOnAttributeChangeData& Data); 115 | virtual void ManaChanged(const FOnAttributeChangeData& Data); 116 | virtual void MaxManaChanged(const FOnAttributeChangeData& Data); 117 | virtual void ManaRegenRateChanged(const FOnAttributeChangeData& Data); 118 | virtual void StaminaChanged(const FOnAttributeChangeData& Data); 119 | virtual void MaxStaminaChanged(const FOnAttributeChangeData& Data); 120 | virtual void StaminaRegenRateChanged(const FOnAttributeChangeData& Data); 121 | virtual void XPChanged(const FOnAttributeChangeData& Data); 122 | virtual void GoldChanged(const FOnAttributeChangeData& Data); 123 | virtual void CharacterLevelChanged(const FOnAttributeChangeData& Data); 124 | 125 | // Tag change callbacks 126 | virtual void StunTagChanged(const FGameplayTag CallbackTag, int32 NewCount); 127 | }; 128 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/UI/GDDamageTextWidgetComponent.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Components/WidgetComponent.h" 7 | #include "GDDamageTextWidgetComponent.generated.h" 8 | 9 | /** 10 | * For the floating Damage Numbers when a Character receives damage. 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API UGDDamageTextWidgetComponent : public UWidgetComponent 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 19 | void SetDamageText(float Damage); 20 | }; 21 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/UI/GDFloatingStatusBarWidget.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Blueprint/UserWidget.h" 7 | #include "GDFloatingStatusBarWidget.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API UGDFloatingStatusBarWidget : public UUserWidget 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 19 | void SetHealthPercentage(float HealthPercentage); 20 | 21 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 22 | void SetManaPercentage(float ManaPercentage); 23 | 24 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 25 | void SetCharacterName(const FText& NewName); 26 | }; 27 | -------------------------------------------------------------------------------- /Source/GASDocumentation/Public/UI/GDHUDWidget.h: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Blueprint/UserWidget.h" 7 | #include "GDHUDWidget.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class GASDOCUMENTATION_API UGDHUDWidget : public UUserWidget 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 19 | void ShowAbilityConfirmCancelText(bool ShowText); 20 | 21 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 22 | void SetRespawnCountdown(float RespawnTimeRemaining); 23 | 24 | 25 | /** 26 | * Attribute setters 27 | */ 28 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 29 | void SetMaxHealth(float MaxHealth); 30 | 31 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 32 | void SetCurrentHealth(float CurrentHealth); 33 | 34 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 35 | void SetHealthPercentage(float HealthPercentage); 36 | 37 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 38 | void SetHealthRegenRate(float HealthRegenRate); 39 | 40 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 41 | void SetMaxStamina(float MaxStamina); 42 | 43 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 44 | void SetCurrentStamina(float CurrentStamina); 45 | 46 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 47 | void SetStaminaPercentage(float StaminaPercentage); 48 | 49 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 50 | void SetStaminaRegenRate(float StaminaRegenRate); 51 | 52 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 53 | void SetMaxMana(float MaxMana); 54 | 55 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 56 | void SetCurrentMana(float CurrentMana); 57 | 58 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 59 | void SetManaPercentage(float ManaPercentage); 60 | 61 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 62 | void SetManaRegenRate(float ManaRegenRate); 63 | 64 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 65 | void SetExperience(int32 Experience); 66 | 67 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 68 | void SetHeroLevel(int32 HeroLevel); 69 | 70 | UFUNCTION(BlueprintImplementableEvent, BlueprintCallable) 71 | void SetGold(int32 Gold); 72 | }; 73 | -------------------------------------------------------------------------------- /Source/GASDocumentationEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Dan Kestranek. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class GASDocumentationEditorTarget : TargetRules 7 | { 8 | public GASDocumentationEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | DefaultBuildSettings = BuildSettingsVersion.Latest; 12 | IncludeOrderVersion = EngineIncludeOrderVersion.Latest; 13 | ExtraModuleNames.Add("GASDocumentation"); 14 | } 15 | } 16 | --------------------------------------------------------------------------------