├── .gitignore ├── AISense ├── AISenseConfig_Aquaphobia.cpp ├── AISenseConfig_Aquaphobia.h ├── AISense_Aquaphobia.cpp ├── AISense_Aquaphobia.h ├── Blueprints │ └── BP_AICon.uasset └── README.md ├── AutomationPost ├── AutomationPost.sln ├── AutomationPost.uproject ├── Config │ ├── DefaultEditor.ini │ ├── DefaultEditorPerProjectUserSettings.ini │ ├── DefaultEngine.ini │ ├── DefaultGame.ini │ └── DefaultInput.ini ├── Content │ ├── Geometry │ │ └── Meshes │ │ │ ├── 1M_Cube.uasset │ │ │ ├── 1M_Cube_Chamfer.uasset │ │ │ ├── CubeMaterial.uasset │ │ │ └── TemplateFloor.uasset │ ├── Mannequin │ │ ├── Animations │ │ │ ├── ThirdPersonIdle.uasset │ │ │ ├── ThirdPersonJump_End.uasset │ │ │ ├── ThirdPersonJump_Loop.uasset │ │ │ ├── ThirdPersonJump_Start.uasset │ │ │ ├── ThirdPersonRun.uasset │ │ │ ├── ThirdPersonWalk.uasset │ │ │ ├── ThirdPerson_AnimBP.uasset │ │ │ ├── ThirdPerson_IdleRun_2D.uasset │ │ │ └── ThirdPerson_Jump.uasset │ │ └── Character │ │ │ ├── Materials │ │ │ ├── MI_Female_Body.uasset │ │ │ ├── M_Male_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_Female.uasset │ │ │ ├── SK_Mannequin_Female_PhysicsAsset.uasset │ │ │ ├── SK_Mannequin_PhysicsAsset.uasset │ │ │ └── UE4_Mannequin_Skeleton.uasset │ │ │ └── Textures │ │ │ ├── T_Female_Mask.uasset │ │ │ ├── T_Female_N.uasset │ │ │ ├── T_Male_Mask.uasset │ │ │ ├── T_Male_N.uasset │ │ │ ├── T_UE4Logo_Mask.uasset │ │ │ └── T_UE4Logo_N.uasset │ ├── ThirdPerson │ │ └── Meshes │ │ │ ├── Bump_StaticMesh.uasset │ │ │ ├── LeftArm_StaticMesh.uasset │ │ │ ├── Linear_Stair_StaticMesh.uasset │ │ │ ├── RampMaterial.uasset │ │ │ ├── Ramp_StaticMesh.uasset │ │ │ └── RightArm_StaticMesh.uasset │ └── ThirdPersonCPP │ │ ├── Blueprints │ │ └── ThirdPersonCharacter.uasset │ │ └── Maps │ │ ├── ThirdPersonExampleMap.umap │ │ └── ThirdPersonExampleMap_BuiltData.uasset ├── README.md └── Source │ ├── AutomationPost.Target.cs │ ├── AutomationPost │ ├── AutomationPost.Build.cs │ ├── AutomationPost.cpp │ ├── AutomationPost.h │ ├── AutomationPostCharacter.cpp │ ├── AutomationPostCharacter.h │ ├── AutomationPostGameMode.cpp │ ├── AutomationPostGameMode.h │ ├── Private │ │ └── Tests │ │ │ ├── ComplexTest.cpp │ │ │ ├── LevelTests.cpp │ │ │ ├── MathTests.cpp │ │ │ └── PlayerMovementFunctionalTest.cpp │ ├── Public │ │ └── Tests │ │ │ ├── ComplexTest.h │ │ │ ├── LevelTests.h │ │ │ ├── MathTests.h │ │ │ └── PlayerMovementFunctionalTest.h │ ├── TestClass.cpp │ └── TestClass.h │ └── AutomationPostEditor.Target.cs ├── ComboSystem ├── MeleeCombatSystem.h ├── MeleeCombatSystemCharacter.cpp ├── MyAnimInstance.cpp ├── MyAnimInstance.h └── README.md ├── CoverSystem ├── 1M_Cube_Chamfer.uasset ├── CoverActor.cpp ├── CoverActor.h ├── CoverSystemCharacter.cpp ├── CoverSystemCharacter.h ├── README.md └── ThirdPerson_AnimBP.uasset ├── CustomDetailsPanel ├── BP_FancyCube.uasset ├── BlogpostModule │ ├── BlogpostModule.Build.cs │ ├── Private │ │ ├── BlogpostModule.cpp │ │ ├── CustomDetailsPanel.cpp │ │ └── FancyCube.cpp │ └── Public │ │ ├── BlogpostModule.h │ │ ├── CustomDetailsPanel.h │ │ └── FancyCube.h ├── FancyDetailsPanel.Target.cs ├── FancyDetailsPanel │ ├── FancyDetailsPanel.Build.cs │ ├── FancyDetailsPanel.cpp │ ├── FancyDetailsPanel.h │ ├── FancyDetailsPanelGameModeBase.cpp │ └── FancyDetailsPanelGameModeBase.h ├── FancyDetailsPanelEditor.Target.cs ├── M_Cube.uasset └── README.md ├── CustomEditorAssets ├── Plugins │ └── OrfeasPlugin │ │ ├── Binaries │ │ └── Win64 │ │ │ ├── UE4Editor-OrfeasPlugin-4006.pdb │ │ │ ├── UE4Editor-OrfeasPlugin.pdb │ │ │ └── UE4Editor.modules │ │ ├── Intermediate │ │ └── Build │ │ │ └── Win64 │ │ │ └── UE4Editor │ │ │ └── Development │ │ │ ├── OrfeasPlugin │ │ │ ├── Definitions.OrfeasPlugin.h │ │ │ ├── Module.OrfeasPlugin.cpp │ │ │ └── Module.OrfeasPlugin.cpp.obj.response │ │ │ ├── UE4Editor-OrfeasPlugin-4006.dll.response │ │ │ ├── UE4Editor-OrfeasPlugin-4006.exp │ │ │ ├── UE4Editor-OrfeasPlugin-4006.lib.response │ │ │ ├── UE4Editor-OrfeasPlugin-4006.suppressed.exp │ │ │ ├── UE4Editor-OrfeasPlugin.dll.response │ │ │ ├── UE4Editor-OrfeasPlugin.exp │ │ │ ├── UE4Editor-OrfeasPlugin.lib.response │ │ │ └── UE4Editor-OrfeasPlugin.suppressed.exp │ │ ├── OrfeasPlugin.uplugin │ │ ├── Resources │ │ └── Icon128.png │ │ └── Source │ │ └── OrfeasPlugin │ │ ├── OrfeasPlugin.Build.cs │ │ ├── Private │ │ └── OrfeasPlugin.cpp │ │ └── Public │ │ └── OrfeasPlugin.h ├── README.md └── Source │ ├── CustomAsset.Target.cs │ ├── CustomAsset │ ├── CustomAsset.Build.cs │ ├── CustomAsset.cpp │ ├── CustomAsset.h │ ├── OrfeasCustomAsset.cpp │ ├── OrfeasCustomAsset.h │ ├── OrfeasFactory.cpp │ └── OrfeasFactory.h │ └── CustomAssetEditor.Target.cs ├── DialogSystem ├── AICharacter.cpp ├── AICharacter.h ├── Dialog.cpp ├── Dialog.h ├── DialogSystem.Build.cs ├── DialogSystem.cpp ├── DialogSystem.h ├── DialogSystemCharacter.cpp ├── DialogSystemCharacter.h ├── DialogSystemGameMode.cpp ├── DialogSystemGameMode.h ├── DialogUI.cpp ├── DialogUI.h ├── README.md ├── Subtitle.cpp └── Subtitle.h ├── EQS_Contexts ├── FindEnemyQueryContext.cpp ├── FindEnemyQueryContext.h ├── FindHidingSpot.uasset ├── MyAIController.cpp ├── MyAIController.h └── README.md ├── EQS_Generators ├── EnvQueryGenerator_Cone.cpp ├── EnvQueryGenerator_Cone.h └── README.md ├── FilePicker ├── DummyTextFiles │ ├── DummyFile1.txt │ └── DummyFile2.txt ├── FilePicker.Build.cs ├── FilePickerCharacter.cpp ├── FilePickerCharacter.h └── README.md ├── FlightPathSystem ├── FlightStop.cpp ├── FlightStop.h ├── README.md ├── WoWFlightCharacter.cpp └── WoWFlightCharacter.h ├── Functional_Tests ├── PlayerMovementFunctionalTest.cpp ├── PlayerMovementFunctionalTest.h └── README.md ├── GameplayDebugger ├── GDBlogPost.Build.cs ├── GDBlogPost │ ├── GDBlogPostCharacter.cpp │ └── GDBlogPostCharacter.h ├── OrfeasModule │ ├── OrfeasModule.Build.cs │ ├── Private │ │ ├── CustomGameplayDebugger.cpp │ │ └── OrfeasModule.cpp │ └── Public │ │ ├── CustomGameplayDebugger.h │ │ └── OrfeasModule.h └── README.md ├── HttpCalls ├── HttpCalls.Build.cs ├── HttpCallsCharacter.cpp ├── HttpCallsCharacter.h └── README.md ├── InventorySystem ├── InventorySlotWidget.cpp ├── InventorySlotWidget.h ├── InventorySystem.Build.cs ├── InventorySystem.cpp ├── InventorySystem.h ├── InventorySystemCharacter.cpp ├── InventorySystemCharacter.h ├── InventoryWidget.cpp ├── InventoryWidget.h ├── MyPlayerController.cpp ├── MyPlayerController.h ├── Pickup.cpp ├── Pickup.h └── README.md ├── JsonParsing ├── Config │ ├── DefaultEditor.ini │ ├── DefaultEngine.ini │ └── DefaultGame.ini ├── Content │ ├── BP_JsonParser.uasset │ ├── JsonFiles │ │ └── randomgenerated.json │ └── Untitled.umap ├── JsonParsing.uproject ├── README.md └── Source │ ├── JsonParsing.Target.cs │ ├── JsonParsing │ ├── JsonParser.cpp │ ├── JsonParser.h │ ├── JsonParsing.Build.cs │ ├── JsonParsing.cpp │ ├── JsonParsing.h │ ├── JsonParsingGameModeBase.cpp │ └── JsonParsingGameModeBase.h │ └── JsonParsingEditor.Target.cs ├── LICENSE ├── LatentNodes ├── BPAsyncActionBase.cpp ├── BPAsyncActionBase.h ├── MyBPFunctionLibrary.cpp ├── MyBPFunctionLibrary.h ├── PingPongAction.cpp ├── PingPongAction.h └── README.md ├── Lib_Dll_Linking ├── LibrariesLinking.Build.cs ├── LibrariesLinking.cpp ├── LibrariesLinking.h ├── Libraries_Repos │ ├── MathIsFunDll │ │ ├── .vs │ │ │ └── MathIsFunDll │ │ │ │ └── v16 │ │ │ │ ├── .suo │ │ │ │ └── Browse.VC.db │ │ ├── Debug │ │ │ ├── MATHISFUNDLL.exp │ │ │ ├── MATHISFUNDLL.ilk │ │ │ └── MATHISFUNDLL.pdb │ │ ├── MathIsFunDll.sln │ │ ├── MathIsFunDll │ │ │ ├── Debug │ │ │ │ ├── MathIsFunDll.log │ │ │ │ ├── MathIsFunDll.tlog │ │ │ │ │ ├── CL.command.1.tlog │ │ │ │ │ ├── CL.read.1.tlog │ │ │ │ │ ├── CL.write.1.tlog │ │ │ │ │ ├── MathIsFunDll.lastbuildstate │ │ │ │ │ ├── MathIsFunDll.write.1u.tlog │ │ │ │ │ ├── link.command.1.tlog │ │ │ │ │ ├── link.read.1.tlog │ │ │ │ │ └── link.write.1.tlog │ │ │ │ ├── vc142.idb │ │ │ │ └── vc142.pdb │ │ │ ├── MathIsFunDll.cpp │ │ │ ├── MathIsFunDll.h │ │ │ ├── MathIsFunDll.vcxproj │ │ │ ├── MathIsFunDll.vcxproj.filters │ │ │ ├── MathIsFunDll.vcxproj.user │ │ │ ├── cpp.hint │ │ │ ├── dllmain.cpp │ │ │ ├── framework.h │ │ │ ├── pch.cpp │ │ │ ├── pch.h │ │ │ └── x64 │ │ │ │ └── Release │ │ │ │ ├── MathIsFunDll.log │ │ │ │ ├── MathIsFunDll.tlog │ │ │ │ ├── CL.command.1.tlog │ │ │ │ ├── CL.read.1.tlog │ │ │ │ ├── CL.write.1.tlog │ │ │ │ ├── MathIsFunDll.lastbuildstate │ │ │ │ ├── MathIsFunDll.write.1u.tlog │ │ │ │ ├── link.command.1.tlog │ │ │ │ ├── link.delete.1.tlog │ │ │ │ ├── link.read.1.tlog │ │ │ │ └── link.write.1.tlog │ │ │ │ └── vc142.pdb │ │ └── x64 │ │ │ └── Release │ │ │ ├── MATHISFUNDLL.exp │ │ │ ├── MATHISFUNDLL.iobj │ │ │ ├── MATHISFUNDLL.ipdb │ │ │ └── MATHISFUNDLL.pdb │ └── OrfeasStaticLibrary │ │ ├── .vs │ │ └── OrfeasStaticLibrary │ │ │ └── v16 │ │ │ ├── .suo │ │ │ └── Browse.VC.db │ │ ├── Debug │ │ └── OrfeasStaticLibrary.pdb │ │ ├── OrfeasStaticLibrary.sln │ │ └── OrfeasStaticLibrary │ │ ├── Debug │ │ ├── OrfeasSt.9665AFC6.tlog │ │ │ ├── CL.command.1.tlog │ │ │ ├── CL.read.1.tlog │ │ │ ├── CL.write.1.tlog │ │ │ ├── Lib-link.read.1.tlog │ │ │ ├── Lib-link.write.1.tlog │ │ │ ├── Lib.command.1.tlog │ │ │ └── OrfeasStaticLibrary.lastbuildstate │ │ ├── OrfeasStaticLibrary.idb │ │ ├── OrfeasStaticLibrary.log │ │ ├── OrfeasStaticLibrary.pdb │ │ └── OrfeasStaticLibrary.vcxproj.FileListAbsolute.txt │ │ ├── OrfeasMathLibrary.h │ │ ├── OrfeasStaticLibrary.cpp │ │ ├── OrfeasStaticLibrary.vcxproj │ │ ├── OrfeasStaticLibrary.vcxproj.filters │ │ ├── OrfeasStaticLibrary.vcxproj.user │ │ ├── framework.h │ │ ├── pch.cpp │ │ ├── pch.h │ │ └── x64 │ │ └── Release │ │ ├── OrfeasSt.9665AFC6.tlog │ │ ├── CL.command.1.tlog │ │ ├── CL.read.1.tlog │ │ ├── CL.write.1.tlog │ │ ├── Lib-link.read.1.tlog │ │ ├── Lib-link.write.1.tlog │ │ ├── Lib.command.1.tlog │ │ └── OrfeasStaticLibrary.lastbuildstate │ │ ├── OrfeasStaticLibrary.log │ │ └── OrfeasStaticLibrary.pdb └── README.md ├── Networking ├── Bomb.cpp ├── Bomb.h ├── NetworkingTut.h ├── NetworkingTutCharacter.cpp ├── NetworkingTutCharacter.h └── README.md ├── ProceduralMesh ├── BP_ProcMeshActor.uasset ├── M_RuntimeMesh.uasset ├── MyActor.cpp ├── MyActor.h ├── ProceduralMesh.Build.cs ├── ProceduralMesh.uproject └── README.md ├── Profiling_Code ├── Config │ ├── DefaultEditor.ini │ ├── DefaultEditorPerProjectUserSettings.ini │ ├── DefaultEngine.ini │ ├── DefaultGame.ini │ └── DefaultInput.ini ├── Content │ ├── Geometry │ │ └── Meshes │ │ │ ├── 1M_Cube.uasset │ │ │ ├── 1M_Cube_Chamfer.uasset │ │ │ ├── CubeMaterial.uasset │ │ │ └── TemplateFloor.uasset │ ├── Mannequin │ │ ├── Animations │ │ │ ├── ThirdPersonIdle.uasset │ │ │ ├── ThirdPersonJump_End.uasset │ │ │ ├── ThirdPersonJump_Loop.uasset │ │ │ ├── ThirdPersonJump_Start.uasset │ │ │ ├── ThirdPersonRun.uasset │ │ │ ├── ThirdPersonWalk.uasset │ │ │ ├── ThirdPerson_AnimBP.uasset │ │ │ ├── ThirdPerson_IdleRun_2D.uasset │ │ │ └── ThirdPerson_Jump.uasset │ │ └── Character │ │ │ ├── Materials │ │ │ ├── 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 │ ├── ThirdPerson │ │ └── Meshes │ │ │ ├── Bump_StaticMesh.uasset │ │ │ ├── LeftArm_StaticMesh.uasset │ │ │ ├── Linear_Stair_StaticMesh.uasset │ │ │ ├── RampMaterial.uasset │ │ │ ├── Ramp_StaticMesh.uasset │ │ │ └── RightArm_StaticMesh.uasset │ └── ThirdPersonCPP │ │ ├── Blueprints │ │ └── ThirdPersonCharacter.uasset │ │ └── Maps │ │ ├── ThirdPersonExampleMap.umap │ │ └── ThirdPersonExampleMap_BuiltData.uasset ├── ProfilingBlocks.sln ├── ProfilingBlocks.uproject ├── README.md └── Source │ ├── ProfilingBlocks.Target.cs │ ├── ProfilingBlocks │ ├── HeavyComp.cpp │ ├── HeavyComp.h │ ├── ProfilingBlocks.Build.cs │ ├── ProfilingBlocks.cpp │ ├── ProfilingBlocks.h │ ├── ProfilingBlocksCharacter.cpp │ ├── ProfilingBlocksCharacter.h │ ├── ProfilingBlocksGameMode.cpp │ └── ProfilingBlocksGameMode.h │ └── ProfilingBlocksEditor.Target.cs ├── README.md ├── Radar ├── MinimapHUD.cpp ├── MinimapHUD.h └── README.md ├── RuntimeVertexPainting ├── BP_Cube.uasset ├── M_VertexColor.uasset ├── README.md ├── VertexPainting.Build.cs ├── VertexPaintingFunctionLibrary.cpp └── VertexPaintingFunctionLibrary.h ├── Save_Load ├── README.md ├── SaveActor.cpp ├── SaveActor.h ├── TP_ThirdPersonCharacter.cpp └── TP_ThirdPersonCharacter.h ├── SkillsTree ├── README.md ├── Skill.cpp ├── Skill.h ├── SkillsComponent.cpp ├── SkillsComponent.h ├── TLSkillsTreeCharacter.cpp ├── TLSkillsTreeCharacter.h ├── character_bp_1.png ├── character_bp_2.png ├── character_springArms.png ├── fireball_bp.png ├── skillWidget_designer.png ├── skillWidget_graph.png ├── skillscomp_properties_updated.png ├── skillspanel_designer.png ├── skillspanel_graph_1.png ├── skillspanel_graph_2.png └── waterblob_bp.png ├── SniperElitesCameras ├── DummyEnemyCharacter.cpp ├── DummyEnemyCharacter.h ├── README.md ├── SELethalShotCharacter.cpp ├── SELethalShotCharacter.h ├── SELethalShotProjectile.cpp └── SELethalShotProjectile.h ├── SteamIntegration ├── README.md ├── SteamAchievements │ ├── DefaultEngine.ini │ ├── README.md │ ├── SteamIntegrationTut.Build.cs │ ├── SteamIntegrationTut.Target.cs │ ├── SteamIntegrationTut.cpp │ ├── SteamIntegrationTut.h │ ├── SteamIntegrationTutCharacter.cpp │ ├── SteamIntegrationTutCharacter.h │ ├── SteamIntegrationTutEditor.Target.cs │ ├── SteamIntegrationTutGameMode.cpp │ └── SteamIntegrationTutGameMode.h └── SteamIntegrationTut │ ├── .vs │ └── SteamIntegrationTut │ │ └── v14 │ │ └── .suo │ ├── Build │ └── WindowsNoEditor │ │ └── FileOpenOrder │ │ ├── CookerOpenOrder.log │ │ └── EditorOpenOrder.log │ ├── Config │ ├── DefaultEditor.ini │ ├── DefaultEditorPerProjectUserSettings.ini │ ├── DefaultEngine.ini │ ├── DefaultGame.ini │ └── DefaultInput.ini │ ├── Content │ ├── Geometry │ │ └── Meshes │ │ │ ├── 1M_Cube.uasset │ │ │ ├── 1M_Cube_Chamfer.uasset │ │ │ ├── CubeMaterial.uasset │ │ │ └── TemplateFloor.uasset │ ├── Mannequin │ │ ├── Animations │ │ │ ├── ThirdPersonIdle.uasset │ │ │ ├── ThirdPersonJump_End.uasset │ │ │ ├── ThirdPersonJump_Loop.uasset │ │ │ ├── ThirdPersonJump_Start.uasset │ │ │ ├── ThirdPersonRun.uasset │ │ │ ├── ThirdPersonWalk.uasset │ │ │ ├── ThirdPerson_AnimBP.uasset │ │ │ ├── ThirdPerson_IdleRun_2D.uasset │ │ │ └── ThirdPerson_Jump.uasset │ │ └── Character │ │ │ ├── Materials │ │ │ ├── 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 │ ├── ThirdPerson │ │ └── Meshes │ │ │ ├── Bump_StaticMesh.uasset │ │ │ ├── CubeMaterial.uasset │ │ │ ├── LeftArm_StaticMesh.uasset │ │ │ ├── Linear_Stair_StaticMesh.uasset │ │ │ ├── RampMaterial.uasset │ │ │ ├── Ramp_StaticMesh.uasset │ │ │ └── RightArm_StaticMesh.uasset │ └── ThirdPersonCPP │ │ ├── Blueprints │ │ └── ThirdPersonCharacter.uasset │ │ └── Maps │ │ ├── ThirdPersonExampleMap.umap │ │ └── ThirdPersonExampleMap_BuiltData.uasset │ ├── Intermediate │ └── CachedAssetRegistry.bin │ ├── Source │ ├── SteamIntegrationTut.Target.cs │ ├── SteamIntegrationTut │ │ ├── SteamIntegrationTut.Build.cs │ │ ├── SteamIntegrationTut.cpp │ │ ├── SteamIntegrationTut.h │ │ ├── SteamIntegrationTutCharacter.cpp │ │ ├── SteamIntegrationTutCharacter.h │ │ ├── SteamIntegrationTutGameMode.cpp │ │ ├── SteamIntegrationTutGameMode.h │ │ ├── WinTrigger.cpp │ │ └── WinTrigger.h │ └── SteamIntegrationTutEditor.Target.cs │ ├── SteamIntegrationTut.sln │ └── SteamIntegrationTut.uproject └── Unit_Tests ├── Private └── Tests │ ├── ComplexTest.cpp │ ├── LevelTests.cpp │ └── MathTests.cpp ├── Public └── Tests │ ├── ComplexTest.h │ ├── LevelTests.h │ └── MathTests.h ├── README.md ├── TestClass.cpp └── TestClass.h /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | -------------------------------------------------------------------------------- /AISense/AISenseConfig_Aquaphobia.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "AISenseConfig_Aquaphobia.h" 4 | #include "AISense_Aquaphobia.h" 5 | 6 | 7 | 8 | 9 | UAISenseConfig_Aquaphobia::UAISenseConfig_Aquaphobia(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) 10 | { 11 | DebugColor = FColor::Blue; 12 | Implementation = GetSenseImplementation(); 13 | } 14 | 15 | TSubclassOf UAISenseConfig_Aquaphobia::GetSenseImplementation() const 16 | { 17 | return *Implementation; 18 | } 19 | -------------------------------------------------------------------------------- /AISense/AISenseConfig_Aquaphobia.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Perception/AISenseConfig.h" 7 | #include "AISense_Aquaphobia.h" 8 | #include "AISenseConfig_Aquaphobia.generated.h" 9 | 10 | /** 11 | * 12 | */ 13 | UCLASS(meta = (DisplayName = "AI Aquaphobia Config")) 14 | class CUSTOMAISENSE_API UAISenseConfig_Aquaphobia : public UAISenseConfig 15 | { 16 | GENERATED_BODY() 17 | 18 | public: 19 | 20 | /*The class reference which contains the logic for this sense config */ 21 | UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Sense", NoClear, config) 22 | TSubclassOf Implementation; 23 | 24 | /* The radius around the pawn that we're checking for "water resources" */ 25 | UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Sense", config, meta = (UIMin = 0.0, ClampMin = 0.0)) 26 | float PhobiaRadius; 27 | 28 | /* True if you want to display the debug sphere around the pawn */ 29 | UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Sense", config) 30 | bool bDisplayDebugSphere; 31 | 32 | UAISenseConfig_Aquaphobia(const FObjectInitializer& ObjectInitializer); 33 | 34 | /* The editor will call this when we're about to assign an implementation for this config */ 35 | virtual TSubclassOf GetSenseImplementation() const override; 36 | }; 37 | -------------------------------------------------------------------------------- /AISense/Blueprints/BP_AICon.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AISense/Blueprints/BP_AICon.uasset -------------------------------------------------------------------------------- /AISense/README.md: -------------------------------------------------------------------------------- 1 | # Custom AI Sense 2 | 3 | Read the full tutorial here: https://wp.me/p6hvtS-sj -------------------------------------------------------------------------------- /AutomationPost/AutomationPost.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.26", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "AutomationPost", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "FunctionalTesting" 13 | ] 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /AutomationPost/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 -------------------------------------------------------------------------------- /AutomationPost/Config/DefaultEditorPerProjectUserSettings.ini: -------------------------------------------------------------------------------- 1 | [ContentBrowser] 2 | ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonCPP -------------------------------------------------------------------------------- /AutomationPost/Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GameMapsSettings] 2 | GameDefaultMap=/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap 3 | EditorStartupMap=/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap 4 | GlobalDefaultGameMode="/Script/AutomationPost.AutomationPostGameMode" 5 | 6 | [/Script/IOSRuntimeSettings.IOSRuntimeSettings] 7 | MinimumiOSVersion=IOS_12 8 | 9 | [/Script/HardwareTargeting.HardwareTargetingSettings] 10 | TargetedHardwareClass=Desktop 11 | AppliedTargetedHardwareClass=Desktop 12 | DefaultGraphicsPerformance=Maximum 13 | AppliedDefaultGraphicsPerformance=Maximum 14 | 15 | [/Script/Engine.Engine] 16 | +ActiveGameNameRedirects=(OldGameName="TP_ThirdPerson",NewGameName="/Script/AutomationPost") 17 | +ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPerson",NewGameName="/Script/AutomationPost") 18 | +ActiveClassRedirects=(OldClassName="TP_ThirdPersonGameMode",NewClassName="AutomationPostGameMode") 19 | +ActiveClassRedirects=(OldClassName="TP_ThirdPersonCharacter",NewClassName="AutomationPostCharacter") 20 | 21 | -------------------------------------------------------------------------------- /AutomationPost/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GeneralProjectSettings] 2 | ProjectID=B170F63D4471758C725FA593024BE25B 3 | ProjectName=Third Person Game Template 4 | -------------------------------------------------------------------------------- /AutomationPost/Content/Geometry/Meshes/1M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Geometry/Meshes/1M_Cube.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Geometry/Meshes/1M_Cube_Chamfer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Geometry/Meshes/1M_Cube_Chamfer.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Geometry/Meshes/CubeMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Geometry/Meshes/CubeMaterial.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Geometry/Meshes/TemplateFloor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Geometry/Meshes/TemplateFloor.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPersonIdle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPersonIdle.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPersonJump_End.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPersonJump_End.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPersonJump_Loop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPersonJump_Loop.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPersonJump_Start.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPersonJump_Start.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPersonRun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPersonRun.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPersonWalk.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPersonWalk.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Animations/ThirdPerson_Jump.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Animations/ThirdPerson_Jump.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MI_Female_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MI_Female_Body.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/M_Male_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/M_Male_Body.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin_Female.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin_Female.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin_Female_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin_Female_PhysicsAsset.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Textures/T_Female_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Textures/T_Female_Mask.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Textures/T_Female_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Textures/T_Female_N.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Textures/T_Male_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Textures/T_Male_Mask.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Textures/T_Male_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Textures/T_Male_N.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Textures/T_UE4Logo_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Textures/T_UE4Logo_Mask.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/Mannequin/Character/Textures/T_UE4Logo_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/Mannequin/Character/Textures/T_UE4Logo_N.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPerson/Meshes/Bump_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPerson/Meshes/Bump_StaticMesh.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPerson/Meshes/RampMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPerson/Meshes/RampMaterial.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPerson/Meshes/Ramp_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPerson/Meshes/Ramp_StaticMesh.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPerson/Meshes/RightArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPerson/Meshes/RightArm_StaticMesh.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap -------------------------------------------------------------------------------- /AutomationPost/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap_BuiltData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/AutomationPost/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap_BuiltData.uasset -------------------------------------------------------------------------------- /AutomationPost/README.md: -------------------------------------------------------------------------------- 1 | # Complete project for Unit + Functional Testing 2 | 3 | Unit Testing post: https://www.orfeasel.com/unit-testing/ 4 | Functional test post: https://www.orfeasel.com/functional-tests/ -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class AutomationPostTarget : TargetRules 7 | { 8 | public AutomationPostTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | ExtraModuleNames.Add("AutomationPost"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/AutomationPost.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class AutomationPost : ModuleRules 6 | { 7 | public AutomationPost(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "UnrealEd", "Engine", "InputCore", "HeadMountedDisplay" }); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/AutomationPost.cpp: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "AutomationPost.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, AutomationPost, "AutomationPost" ); 7 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/AutomationPost.h: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/AutomationPostGameMode.cpp: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "AutomationPostGameMode.h" 4 | #include "AutomationPostCharacter.h" 5 | #include "UObject/ConstructorHelpers.h" 6 | 7 | AAutomationPostGameMode::AAutomationPostGameMode() 8 | { 9 | // set default pawn class to our Blueprinted character 10 | static ConstructorHelpers::FClassFinder PlayerPawnBPClass(TEXT("/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter")); 11 | if (PlayerPawnBPClass.Class != NULL) 12 | { 13 | DefaultPawnClass = PlayerPawnBPClass.Class; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/AutomationPostGameMode.h: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "AutomationPostGameMode.generated.h" 8 | 9 | UCLASS(minimalapi) 10 | class AAutomationPostGameMode : public AGameModeBase 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | AAutomationPostGameMode(); 16 | }; 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/Private/Tests/LevelTests.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "Tests/LevelTests.h" 5 | #include "Misc/AutomationTest.h" 6 | #include "Tests/AutomationEditorCommon.h" 7 | #include "Editor.h" 8 | #include "GameFramework/Character.h" 9 | #include "Kismet/GameplayStatics.h" 10 | #include "AutomationPost/AutomationPostCharacter.h" 11 | 12 | #if WITH_DEV_AUTOMATION_TESTS 13 | 14 | IMPLEMENT_SIMPLE_AUTOMATION_TEST(FValidPlayerLevelTest, "TestCategory.LevelRelated.Check for Valid Players", EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::EngineFilter) 15 | 16 | bool FValidPlayerLevelTest::RunTest(const FString& Parameters) 17 | { 18 | //Checking if there is at least one player placed in the world 19 | 20 | UWorld* World = GEditor->GetWorld(); 21 | { 22 | if (World) 23 | { 24 | ACharacter* PlayerChar = UGameplayStatics::GetPlayerCharacter(World,0); 25 | 26 | //For more tests check AutomationTest.h (lines 1347 - 1639) 27 | TestNotNull(TEXT("Testing if there is a player actor in level"),PlayerChar); 28 | } 29 | } 30 | 31 | return true; 32 | } 33 | 34 | #endif //WITH_DEV_AUTOMATION_TESTS -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/Private/Tests/MathTests.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "Tests/MathTests.h" 5 | #include "AutomationPost/TestClass.h" //Contains FMathStruct 6 | #include "Misc/AutomationTest.h" 7 | 8 | 9 | #if WITH_DEV_AUTOMATION_TESTS 10 | 11 | IMPLEMENT_SIMPLE_AUTOMATION_TEST(FMathStructTest, "MathTests",EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::SmokeFilter) 12 | 13 | 14 | bool FMathStructTest::RunTest(const FString& Parameters) 15 | { 16 | //Addition tests 17 | { 18 | int32 ResultA = FMathStruct::Add(5,15); 19 | int32 ExpectedResultA = 19; 20 | float ResultB = FMathStruct::Add(3.5f,1.5f); 21 | float ExpectedResultB = 5.f; 22 | 23 | TestEqual(TEXT("Testing sum in integers"), ResultA, ExpectedResultA); 24 | TestEqual(TEXT("Testing sum in floats"),ResultB, ExpectedResultB); 25 | } 26 | 27 | return true; 28 | } 29 | 30 | 31 | #endif //WITH_DEV_AUTOMATION_TESTS -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/Private/Tests/PlayerMovementFunctionalTest.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "Tests/PlayerMovementFunctionalTest.h" 5 | #include "GameFramework/Character.h" 6 | #include "Kismet/GameplayStatics.h" 7 | #include "Kismet/KismetSystemLibrary.h" 8 | 9 | void APlayerMovementFunctionalTest::BeginPlay() 10 | { 11 | Super::BeginPlay(); 12 | 13 | 14 | Player = UGameplayStatics::GetPlayerCharacter(GetWorld(),0); 15 | 16 | if (Player) 17 | { 18 | InitialLocation = Player->GetActorLocation(); 19 | } 20 | } 21 | 22 | void APlayerMovementFunctionalTest::Tick(float DeltaSeconds) 23 | { 24 | Super::Tick(DeltaSeconds); 25 | 26 | if (Player) 27 | { 28 | //Go forward until we reach our destination 29 | Player->AddMovementInput(Player->GetActorForwardVector()); 30 | if (TraveledTotalDistance()) 31 | { 32 | FinishTest(EFunctionalTestResult::Succeeded,FString("Traveled required units!")); 33 | UKismetSystemLibrary::QuitGame(GetWorld(),UGameplayStatics::GetPlayerController(GetWorld(),0),EQuitPreference::Quit,false); 34 | } 35 | } 36 | else 37 | { 38 | FinishTest(EFunctionalTestResult::Failed, FString("Invalid player character!")); 39 | } 40 | } 41 | 42 | bool APlayerMovementFunctionalTest::TraveledTotalDistance() const 43 | { 44 | return (Player) ? (FVector::Distance(Player->GetActorLocation(), InitialLocation + Player->GetActorForwardVector() * MovementDistance) <= DistanceThreshold) : false; 45 | } 46 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/Public/Tests/ComplexTest.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Misc/AutomationTest.h" //For IAutomationLatentCommand 7 | 8 | /** 9 | * A command that gets completed after a random delay 10 | */ 11 | class FRandomDelayCommand : public IAutomationLatentCommand 12 | { 13 | 14 | private: 15 | 16 | /* Min delay in seconds */ 17 | float MinDelay; 18 | 19 | /* Max delay in seconds */ 20 | float MaxDelay; 21 | 22 | /* False by default, true when we have started the test */ 23 | bool bTestStarted; 24 | 25 | /* The actual time in seconds we're going to delay */ 26 | float Delay; 27 | 28 | /* Stores the time we have started our test */ 29 | FDateTime StartedTime; 30 | 31 | public: 32 | 33 | FRandomDelayCommand(float Min, float Max) : MinDelay(Min), MaxDelay(Max), bTestStarted(false), Delay(0.f) {} 34 | 35 | /** 36 | * Will execute each frame and will stop once we return true 37 | */ 38 | virtual bool Update() override; 39 | }; -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/Public/Tests/LevelTests.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/Public/Tests/MathTests.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | /** 8 | * 9 | */ 10 | //class AUTOMATIONPOST_API MathTests 11 | //{ 12 | //public: 13 | // MathTests(); 14 | // ~MathTests(); 15 | //}; 16 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/Public/Tests/PlayerMovementFunctionalTest.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "FunctionalTest.h" 7 | #include "PlayerMovementFunctionalTest.generated.h" 8 | 9 | /** 10 | * A functional test that moves the player character forward 11 | */ 12 | UCLASS() 13 | class AUTOMATIONPOST_API APlayerMovementFunctionalTest : public AFunctionalTest 14 | { 15 | GENERATED_BODY() 16 | 17 | private: 18 | 19 | /* Reference of main player */ 20 | class ACharacter* Player; 21 | 22 | /* Initial location of the player */ 23 | FVector InitialLocation; 24 | 25 | protected: 26 | 27 | virtual void BeginPlay() override; 28 | 29 | /* Total movement distance */ 30 | UPROPERTY(EditAnywhere) 31 | float MovementDistance = 350.f; 32 | 33 | /* Distance threshold in order to get for target location */ 34 | UPROPERTY(EditAnywhere) 35 | float DistanceThreshold=55.f; 36 | 37 | public: 38 | 39 | virtual void Tick(float DeltaSeconds) override; 40 | 41 | /** 42 | * Returns true when the player has traveled MovementDistance - DistanceThreshold 43 | */ 44 | bool TraveledTotalDistance() const; 45 | 46 | }; 47 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/TestClass.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "TestClass.h" 5 | 6 | int32 FMathStruct::Add(int32 A, int32 B) 7 | { 8 | return A+B; 9 | } 10 | 11 | float FMathStruct::Add(float A, float B) 12 | { 13 | return A+B; 14 | } 15 | -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPost/TestClass.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | struct FMathStruct 8 | { 9 | static int32 Add(int32 A, int32 B); 10 | 11 | static float Add(float A, float B); 12 | }; -------------------------------------------------------------------------------- /AutomationPost/Source/AutomationPostEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class AutomationPostEditorTarget : TargetRules 7 | { 8 | public AutomationPostEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | ExtraModuleNames.Add("AutomationPost"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ComboSystem/MeleeCombatSystem.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. 2 | 3 | #ifndef __MELEECOMBATSYSTEM_H__ 4 | #define __MELEECOMBATSYSTEM_H__ 5 | 6 | #include "EngineMinimal.h" 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /ComboSystem/MyAnimInstance.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "MeleeCombatSystem.h" 4 | #include "MyAnimInstance.h" 5 | 6 | 7 | void UMyAnimInstance::UpdateMovementSpeed() 8 | { 9 | //Get the pawn and if it's valid, update the movement speed to update 10 | //the movement animation 11 | APawn* Pawn = TryGetPawnOwner(); 12 | 13 | if (Pawn) 14 | { 15 | MovementSpeed = Pawn->GetVelocity().Size(); 16 | } 17 | } 18 | 19 | void UMyAnimInstance::Attack() 20 | { 21 | if (MeleeAttackMontage) 22 | { 23 | FName CurrentSection = Montage_GetCurrentSection(MeleeAttackMontage); 24 | 25 | //Determine which section is currently playing and jump to the next section 26 | //is possible 27 | 28 | if (CurrentSection.IsNone()) 29 | { 30 | Montage_Play(MeleeAttackMontage); 31 | } 32 | else if (CurrentSection.IsEqual("FirstAttack") && bAcceptsSecondAttackInput) 33 | { 34 | Montage_JumpToSection(FName("SecondAttack"), MeleeAttackMontage); 35 | } 36 | else if (CurrentSection.IsEqual("SecondAttack") && bAcceptsThirdAttackInput) 37 | { 38 | Montage_JumpToSection(FName("ThirdAttack"), MeleeAttackMontage); 39 | } 40 | 41 | } 42 | } 43 | 44 | -------------------------------------------------------------------------------- /ComboSystem/MyAnimInstance.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "Animation/AnimInstance.h" 6 | #include "MyAnimInstance.generated.h" 7 | 8 | /** 9 | * 10 | */ 11 | UCLASS() 12 | class MELEECOMBATSYSTEM_API UMyAnimInstance : public UAnimInstance 13 | { 14 | GENERATED_BODY() 15 | 16 | protected: 17 | 18 | /*Holds a reference to the character's movement speed*/ 19 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly) 20 | float MovementSpeed; 21 | 22 | /*The attack montage*/ 23 | UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) 24 | UAnimMontage* MeleeAttackMontage; 25 | 26 | /*Updates the Movement Speed variable*/ 27 | UFUNCTION(BlueprintCallable, Category = "AnimationUpdates") 28 | void UpdateMovementSpeed(); 29 | 30 | /*True if the character can perform a second attack*/ 31 | UPROPERTY(VisibleAnywhere, BlueprintReadWrite) 32 | bool bAcceptsSecondAttackInput; 33 | 34 | /*Ture if the character can perform a third attack*/ 35 | UPROPERTY(VisibleAnywhere, BlueprintReadWrite) 36 | bool bAcceptsThirdAttackInput; 37 | 38 | public: 39 | /*Determines which attack animation will be played*/ 40 | void Attack(); 41 | }; 42 | -------------------------------------------------------------------------------- /ComboSystem/README.md: -------------------------------------------------------------------------------- 1 | Melee Combo System 2 | 3 | You can see the end result here: https://youtu.be/WwKzgdeJLZA 4 | 5 | Read the full tutorial here: http://wp.me/p6hvtS-cO -------------------------------------------------------------------------------- /CoverSystem/1M_Cube_Chamfer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CoverSystem/1M_Cube_Chamfer.uasset -------------------------------------------------------------------------------- /CoverSystem/README.md: -------------------------------------------------------------------------------- 1 | Cover System Tutorial 2 | 3 | Check the end result here: https://youtu.be/imTTYF9eoNc 4 | 5 | Read the full tutorial here: http://wp.me/p6hvtS-i7 -------------------------------------------------------------------------------- /CoverSystem/ThirdPerson_AnimBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CoverSystem/ThirdPerson_AnimBP.uasset -------------------------------------------------------------------------------- /CustomDetailsPanel/BP_FancyCube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomDetailsPanel/BP_FancyCube.uasset -------------------------------------------------------------------------------- /CustomDetailsPanel/BlogpostModule/BlogpostModule.Build.cs: -------------------------------------------------------------------------------- 1 | using UnrealBuildTool; 2 | 3 | public class BlogpostModule : ModuleRules 4 | { 5 | public BlogpostModule(ReadOnlyTargetRules Target) : base(Target) 6 | { 7 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 8 | 9 | //Public module names that this module uses. 10 | //In case you would like to add various classes that you're going to use in your game 11 | //you should add the core,coreuobject and engine dependencies. 12 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine","PropertyEditor","Slate","SlateCore"}); 13 | 14 | //The path for the header files 15 | PublicIncludePaths.AddRange(new string[] {"BlogpostModule/Public"}); 16 | 17 | //The path for the source files 18 | PrivateIncludePaths.AddRange(new string[] {"BlogpostModule/Private"}); 19 | } 20 | } -------------------------------------------------------------------------------- /CustomDetailsPanel/BlogpostModule/Private/BlogpostModule.cpp: -------------------------------------------------------------------------------- 1 | #include "BlogpostModule.h" 2 | #include "FancyCube.h" 3 | #include "CustomDetailsPanel.h" 4 | #include "PropertyEditorModule.h" 5 | 6 | DEFINE_LOG_CATEGORY(BlogpostModule); 7 | 8 | #define LOCTEXT_NAMESPACE "FBlogpostModule" 9 | 10 | void FBlogpostModule::StartupModule() 11 | { 12 | UE_LOG(BlogpostModule, Warning, TEXT("BlogpostModule module has started!")); 13 | //Get the property module 14 | FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked("PropertyEditor"); 15 | //Register the custom details panel we have created 16 | PropertyModule.RegisterCustomClassLayout(AFancyCube::StaticClass()->GetFName(), FOnGetDetailCustomizationInstance::CreateStatic(&FCustomDetailsPanel::MakeInstance)); 17 | } 18 | 19 | void FBlogpostModule::ShutdownModule() 20 | { 21 | UE_LOG(BlogpostModule, Warning, TEXT("BlogpostModule module has shut down")); 22 | } 23 | 24 | #undef LOCTEXT_NAMESPACE 25 | 26 | IMPLEMENT_MODULE(FBlogpostModule,BlogpostModule) -------------------------------------------------------------------------------- /CustomDetailsPanel/BlogpostModule/Private/FancyCube.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "FancyCube.h" 4 | 5 | 6 | // Sets default values 7 | AFancyCube::AFancyCube() 8 | { 9 | // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. 10 | PrimaryActorTick.bCanEverTick = true; 11 | CubeSM = CreateDefaultSubobject("CubeSM"); 12 | } 13 | 14 | void AFancyCube::AssignColor(FLinearColor NewColor) 15 | { 16 | if (CubeSM) 17 | { 18 | UMaterialInstanceDynamic* MID = CubeSM->CreateAndSetMaterialInstanceDynamic(0); 19 | MID->SetVectorParameterValue("BaseColor", NewColor); 20 | } 21 | 22 | } 23 | 24 | // Called when the game starts or when spawned 25 | void AFancyCube::BeginPlay() 26 | { 27 | Super::BeginPlay(); 28 | 29 | } 30 | 31 | // Called every frame 32 | void AFancyCube::Tick(float DeltaTime) 33 | { 34 | Super::Tick(DeltaTime); 35 | 36 | } 37 | 38 | -------------------------------------------------------------------------------- /CustomDetailsPanel/BlogpostModule/Public/BlogpostModule.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ModuleManager.h" 4 | 5 | DECLARE_LOG_CATEGORY_EXTERN(BlogpostModule, All, All); 6 | 7 | class FBlogpostModule : public IModuleInterface 8 | { 9 | public: 10 | 11 | /* This will get called when the editor loads the module */ 12 | virtual void StartupModule() override; 13 | 14 | /* This will get called when the editor unloads the module */ 15 | virtual void ShutdownModule() override; 16 | }; -------------------------------------------------------------------------------- /CustomDetailsPanel/BlogpostModule/Public/CustomDetailsPanel.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Input/Reply.h" 7 | #include "IDetailCustomization.h" 8 | 9 | class FCustomDetailsPanel : public IDetailCustomization 10 | { 11 | 12 | private: 13 | 14 | /* Contains references to all selected objects inside in the viewport */ 15 | TArray> SelectedObjects; 16 | 17 | public: 18 | 19 | /* Makes a new instance of this detail layout class for a specific detail view requesting it */ 20 | static TSharedRef MakeInstance(); 21 | 22 | /* IDetalCustomization interface */ 23 | virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; 24 | 25 | /* The code that fires when we click the "ChangeColor" button */ 26 | FReply ClickedOnButton(); 27 | 28 | }; -------------------------------------------------------------------------------- /CustomDetailsPanel/BlogpostModule/Public/FancyCube.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "FancyCube.generated.h" 8 | 9 | UCLASS() 10 | class BLOGPOSTMODULE_API AFancyCube : public AActor 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | // Sets default values for this actor's properties 16 | AFancyCube(); 17 | 18 | void AssignColor(FLinearColor NewColor); 19 | 20 | protected: 21 | // Called when the game starts or when spawned 22 | virtual void BeginPlay() override; 23 | 24 | UPROPERTY(VisibleAnywhere) 25 | UStaticMeshComponent* CubeSM; 26 | 27 | public: 28 | // Called every frame 29 | virtual void Tick(float DeltaTime) override; 30 | 31 | 32 | 33 | }; 34 | -------------------------------------------------------------------------------- /CustomDetailsPanel/FancyDetailsPanel.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class FancyDetailsPanelTarget : TargetRules 7 | { 8 | public FancyDetailsPanelTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "FancyDetailsPanel" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CustomDetailsPanel/FancyDetailsPanel/FancyDetailsPanel.Build.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class FancyDetailsPanel : ModuleRules 6 | { 7 | public FancyDetailsPanel(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore","BlogpostModule" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { }); 14 | 15 | // Uncomment if you are using Slate UI 16 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 17 | 18 | // Uncomment if you are using online features 19 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 20 | 21 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /CustomDetailsPanel/FancyDetailsPanel/FancyDetailsPanel.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "FancyDetailsPanel.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, FancyDetailsPanel, "FancyDetailsPanel" ); 7 | -------------------------------------------------------------------------------- /CustomDetailsPanel/FancyDetailsPanel/FancyDetailsPanel.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /CustomDetailsPanel/FancyDetailsPanel/FancyDetailsPanelGameModeBase.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "FancyDetailsPanelGameModeBase.h" 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CustomDetailsPanel/FancyDetailsPanel/FancyDetailsPanelGameModeBase.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "FancyDetailsPanelGameModeBase.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class FANCYDETAILSPANEL_API AFancyDetailsPanelGameModeBase : public AGameModeBase 14 | { 15 | GENERATED_BODY() 16 | 17 | 18 | 19 | 20 | }; 21 | -------------------------------------------------------------------------------- /CustomDetailsPanel/FancyDetailsPanelEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class FancyDetailsPanelEditorTarget : TargetRules 7 | { 8 | public FancyDetailsPanelEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "FancyDetailsPanel" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CustomDetailsPanel/M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomDetailsPanel/M_Cube.uasset -------------------------------------------------------------------------------- /CustomDetailsPanel/README.md: -------------------------------------------------------------------------------- 1 | # Custom Details Panel 2 | 3 | Read the full tutorial here: https://wp.me/p6hvtS-s3 4 | -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Binaries/Win64/UE4Editor-OrfeasPlugin-4006.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomEditorAssets/Plugins/OrfeasPlugin/Binaries/Win64/UE4Editor-OrfeasPlugin-4006.pdb -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Binaries/Win64/UE4Editor-OrfeasPlugin.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomEditorAssets/Plugins/OrfeasPlugin/Binaries/Win64/UE4Editor-OrfeasPlugin.pdb -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Binaries/Win64/UE4Editor.modules: -------------------------------------------------------------------------------- 1 | { 2 | "Changelist" : 3514769, 3 | "CompatibleChangelist" : 3452394, 4 | "BuildId" : "9d235d2e-0699-4a67-a724-267cd6977962", 5 | "Modules" : 6 | { 7 | "OrfeasPlugin" : "UE4Editor-OrfeasPlugin-4006.dll" 8 | } 9 | } -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/OrfeasPlugin/Module.OrfeasPlugin.cpp: -------------------------------------------------------------------------------- 1 | // This file is automatically generated at compile-time to include some subset of the user-created cpp files. 2 | #include "I:\Unreal Projects\V416\CustomAsset\Plugins\OrfeasPlugin\Source\OrfeasPlugin\Private\OrfeasPlugin.cpp" 3 | -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin-4006.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin-4006.exp -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin-4006.lib.response: -------------------------------------------------------------------------------- 1 | /NOLOGO 2 | /errorReport:prompt 3 | /MACHINE:x64 4 | /SUBSYSTEM:WINDOWS 5 | /DEF 6 | /NAME:"UE4Editor-OrfeasPlugin-4006.dll" 7 | /IGNORE:4221 8 | /NODEFAULTLIB 9 | "I:\Epic Games\UE_4.16\Engine\Intermediate\Build\Win64\UE4Editor\Development\Engine\SharedPCH.Engine.h.obj" 10 | "I:\Unreal Projects\V416\CustomAsset\Plugins\OrfeasPlugin\Intermediate\Build\Win64\UE4Editor\Development\OrfeasPlugin\Module.OrfeasPlugin.cpp.obj" 11 | "I:\Epic Games\UE_4.16\Engine\Intermediate\Build\Win64\UE4Editor\Development\OrfeasPlugin\PCLaunch.rc.res" 12 | "I:\Epic Games\UE_4.16\Engine\Intermediate\Build\Win64\UE4Editor\Development\ModuleVersionResource.rc.inl.res" 13 | /OUT:"I:\Unreal Projects\V416\CustomAsset\Plugins\OrfeasPlugin\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OrfeasPlugin-4006.lib" -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin-4006.suppressed.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin-4006.suppressed.exp -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin.exp -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin.lib.response: -------------------------------------------------------------------------------- 1 | /NOLOGO 2 | /errorReport:prompt 3 | /MACHINE:x64 4 | /SUBSYSTEM:WINDOWS 5 | /DEF 6 | /NAME:"UE4Editor-OrfeasPlugin.dll" 7 | /IGNORE:4221 8 | /NODEFAULTLIB 9 | "I:\Epic Games\UE_4.16\Engine\Intermediate\Build\Win64\UE4Editor\Development\Engine\SharedPCH.Engine.h.obj" 10 | "I:\Unreal Projects\V416\CustomAsset\Plugins\OrfeasPlugin\Intermediate\Build\Win64\UE4Editor\Development\OrfeasPlugin\Module.OrfeasPlugin.cpp.obj" 11 | "I:\Epic Games\UE_4.16\Engine\Intermediate\Build\Win64\UE4Editor\Development\OrfeasPlugin\PCLaunch.rc.res" 12 | "I:\Epic Games\UE_4.16\Engine\Intermediate\Build\Win64\UE4Editor\Development\ModuleVersionResource.rc.inl.res" 13 | /OUT:"I:\Unreal Projects\V416\CustomAsset\Plugins\OrfeasPlugin\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OrfeasPlugin.lib" -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin.suppressed.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomEditorAssets/Plugins/OrfeasPlugin/Intermediate/Build/Win64/UE4Editor/Development/UE4Editor-OrfeasPlugin.suppressed.exp -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/OrfeasPlugin.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.0", 5 | "FriendlyName": "OrfeasPlugin", 6 | "Description": "", 7 | "Category": "Other", 8 | "CreatedBy": "Orfeas", 9 | "CreatedByURL": "", 10 | "DocsURL": "", 11 | "MarketplaceURL": "", 12 | "SupportURL": "", 13 | "CanContainContent": true, 14 | "IsBetaVersion": false, 15 | "Installed": false, 16 | "Modules": [ 17 | { 18 | "Name": "OrfeasPlugin", 19 | "Type": "Runtime", 20 | "LoadingPhase": "Default" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/CustomEditorAssets/Plugins/OrfeasPlugin/Resources/Icon128.png -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Source/OrfeasPlugin/OrfeasPlugin.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class OrfeasPlugin : ModuleRules 6 | { 7 | public OrfeasPlugin(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicIncludePaths.AddRange( 12 | new string[] { 13 | "OrfeasPlugin/Public" 14 | // ... add public include paths required here ... 15 | } 16 | ); 17 | 18 | 19 | PrivateIncludePaths.AddRange( 20 | new string[] { 21 | "OrfeasPlugin/Private", 22 | // ... add other private include paths required here ... 23 | } 24 | ); 25 | 26 | 27 | PublicDependencyModuleNames.AddRange( 28 | new string[] 29 | { 30 | "Core", 31 | // ... add other public dependencies that you statically link with here ... 32 | } 33 | ); 34 | 35 | 36 | PrivateDependencyModuleNames.AddRange( 37 | new string[] 38 | { 39 | "CoreUObject", 40 | "Engine", 41 | "Slate", 42 | "SlateCore", 43 | "Projects" 44 | // ... add private dependencies that you statically link with here ... 45 | } 46 | ); 47 | 48 | 49 | DynamicallyLoadedModuleNames.AddRange( 50 | new string[] 51 | { 52 | // ... add any modules that your module loads dynamically here ... 53 | } 54 | ); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /CustomEditorAssets/Plugins/OrfeasPlugin/Source/OrfeasPlugin/Public/OrfeasPlugin.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "ModuleManager.h" 7 | 8 | #include "SlateStyle.h" 9 | 10 | class FOrfeasPluginModule : public IModuleInterface 11 | { 12 | public: 13 | 14 | TSharedPtr StyleSet; 15 | 16 | /** IModuleInterface implementation */ 17 | virtual void StartupModule() override; 18 | virtual void ShutdownModule() override; 19 | }; -------------------------------------------------------------------------------- /CustomEditorAssets/README.md: -------------------------------------------------------------------------------- 1 | Custom Editor Assets 2 | 3 | Read the full tutorial here: http://wp.me/p6hvtS-nv -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class CustomAssetTarget : TargetRules 7 | { 8 | public CustomAssetTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "CustomAsset" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset/CustomAsset.Build.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class CustomAsset : ModuleRules 6 | { 7 | public CustomAsset(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "AssetTools" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { }); 14 | 15 | // Uncomment if you are using Slate UI 16 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 17 | 18 | // Uncomment if you are using online features 19 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 20 | 21 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset/CustomAsset.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "CustomAsset.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, CustomAsset, "CustomAsset" ); 7 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset/CustomAsset.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset/OrfeasCustomAsset.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "OrfeasCustomAsset.h" 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset/OrfeasCustomAsset.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "UObject/NoExportTypes.h" 7 | #include "OrfeasCustomAsset.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class CUSTOMASSET_API UOrfeasCustomAsset : public UObject 14 | { 15 | GENERATED_BODY() 16 | 17 | 18 | protected: 19 | 20 | //Just some properties to display on the Editor 21 | 22 | UPROPERTY(EditAnywhere) 23 | FString Description; 24 | 25 | UPROPERTY(EditAnywhere) 26 | int32 BonusCoins; 27 | 28 | }; 29 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset/OrfeasFactory.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "OrfeasFactory.h" 4 | //The asset header file that we wish to create 5 | #include "OrfeasCustomAsset.h" 6 | //The asset type categories will let us access the various asset categories inside the Editor 7 | #include "AssetTypeCategories.h" 8 | 9 | 10 | UOrfeasFactory::UOrfeasFactory() 11 | { 12 | bCreateNew = true; 13 | bEditAfterNew = true; 14 | //Configure the class that this factory creates 15 | SupportedClass = UOrfeasCustomAsset::StaticClass(); 16 | } 17 | 18 | uint32 UOrfeasFactory::GetMenuCategories() const 19 | { 20 | //Let's place this asset in the Blueprints category in the Editor 21 | return EAssetTypeCategories::Blueprint; 22 | } 23 | 24 | UObject* UOrfeasFactory::FactoryCreateNew(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) 25 | { 26 | //Create the editor asset 27 | UOrfeasCustomAsset* OrfeasEditorAsset = NewObject(InParent, InClass, InName, Flags); 28 | return OrfeasEditorAsset; 29 | } 30 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAsset/OrfeasFactory.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Factories/Factory.h" 7 | #include "OrfeasFactory.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class CUSTOMASSET_API UOrfeasFactory : public UFactory 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | 19 | UOrfeasFactory(); 20 | 21 | /* New assets that don't override this function are automatically placed into the "Miscellaneous" category in the editor */ 22 | virtual uint32 GetMenuCategories() const override; 23 | 24 | 25 | /* Creates the asset inside the UE4 Editor */ 26 | virtual UObject* FactoryCreateNew(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override; 27 | 28 | }; 29 | -------------------------------------------------------------------------------- /CustomEditorAssets/Source/CustomAssetEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class CustomAssetEditorTarget : TargetRules 7 | { 8 | public CustomAssetEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "CustomAsset" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /DialogSystem/Dialog.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "DialogSystem.h" 4 | #include "Dialog.h" 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /DialogSystem/Dialog.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "Object.h" 6 | #include "Engine/DataTable.h" 7 | #include "Subtitle.h" 8 | #include "Dialog.generated.h" 9 | 10 | /** 11 | * 12 | */ 13 | //UCLASS() 14 | //class DIALOGSYSTEM_API UDialog : public UObject 15 | //{ 16 | // GENERATED_BODY() 17 | // 18 | // 19 | // 20 | // 21 | //}; 22 | USTRUCT(BlueprintType) 23 | struct FDialog : public FTableRowBase 24 | { 25 | GENERATED_USTRUCT_BODY() 26 | 27 | /*The question's excerpt - this will be shown inside our UI*/ 28 | UPROPERTY(EditAnywhere) 29 | FString QuestionExcerpt; 30 | 31 | /*The actual SFX that we're going to play*/ 32 | UPROPERTY(EditAnywhere) 33 | USoundBase* SFX; 34 | 35 | /*An array of the associated subtitles*/ 36 | UPROPERTY(EditAnywhere) 37 | TArray Subtitles; 38 | 39 | /*True if we want to wait for the AI to respond*/ 40 | UPROPERTY(EditAnywhere) 41 | bool bShouldAIAnswer; 42 | }; -------------------------------------------------------------------------------- /DialogSystem/DialogSystem.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class DialogSystem : ModuleRules 6 | { 7 | public DialogSystem(TargetInfo Target) 8 | { 9 | //PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 10 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG", "Slate", "SlateCore" }); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /DialogSystem/DialogSystem.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "DialogSystem.h" 4 | 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, DialogSystem, "DialogSystem" ); 7 | -------------------------------------------------------------------------------- /DialogSystem/DialogSystem.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #ifndef __DIALOGSYSTEM_H__ 4 | #define __DIALOGSYSTEM_H__ 5 | 6 | #include "EngineMinimal.h" 7 | #include "Runtime/UMG/Public/UMG.h" 8 | #include "Runtime/UMG/Public/UMGStyle.h" 9 | #include "Runtime/UMG/Public/Blueprint/UserWidget.h" 10 | #include "Runtime/UMG/Public/Slate/SObjectWidget.h" 11 | #include "Runtime/UMG/Public/IUMGModule.h" 12 | #endif 13 | -------------------------------------------------------------------------------- /DialogSystem/DialogSystemGameMode.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "DialogSystem.h" 4 | #include "DialogSystemGameMode.h" 5 | #include "DialogSystemCharacter.h" 6 | 7 | ADialogSystemGameMode::ADialogSystemGameMode() 8 | { 9 | // set default pawn class to our Blueprinted character 10 | static ConstructorHelpers::FClassFinder PlayerPawnBPClass(TEXT("/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter")); 11 | if (PlayerPawnBPClass.Class != NULL) 12 | { 13 | DefaultPawnClass = PlayerPawnBPClass.Class; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /DialogSystem/DialogSystemGameMode.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | #pragma once 3 | #include "GameFramework/GameMode.h" 4 | #include "DialogSystemGameMode.generated.h" 5 | 6 | UCLASS(minimalapi) 7 | class ADialogSystemGameMode : public AGameMode 8 | { 9 | GENERATED_BODY() 10 | 11 | public: 12 | ADialogSystemGameMode(); 13 | }; 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /DialogSystem/DialogUI.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "DialogSystem.h" 4 | #include "DialogUI.h" 5 | 6 | 7 | 8 | void UDialogUI::UpdateSubtitles(TArray Subtitles) 9 | { 10 | if (!Subtitles.IsValidIndex(0)) return; 11 | 12 | //Start a background task in a low priority thread 13 | (new FAutoDeleteAsyncTask(Subtitles, this))->StartBackgroundTask(); 14 | } 15 | -------------------------------------------------------------------------------- /DialogSystem/README.md: -------------------------------------------------------------------------------- 1 | Dialog System 2 | 3 | You can see the end result here: https://youtu.be/R9UfHJ_u4Zs 4 | 5 | Read the full tutorial here: http://orfeasel.com/implementing-a-basic-dialog-system-in-c/ -------------------------------------------------------------------------------- /DialogSystem/Subtitle.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "DialogSystem.h" 4 | #include "Subtitle.h" 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /DialogSystem/Subtitle.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "Object.h" 6 | #include "Engine/DataTable.h" 7 | #include "Subtitle.generated.h" 8 | 9 | ///** 10 | // * 11 | // */ 12 | //UCLASS() 13 | //class DIALOGSYSTEM_API USubtitle : public UObject 14 | //{ 15 | // GENERATED_BODY() 16 | // 17 | // 18 | // 19 | // 20 | //}; 21 | 22 | USTRUCT(BlueprintType) 23 | struct FSubtitle : public FTableRowBase 24 | { 25 | GENERATED_USTRUCT_BODY() 26 | 27 | /*The subtitle that will be displayed for a specific period of time in our UI*/ 28 | UPROPERTY(EditAnywhere) 29 | FString Subtitle; 30 | 31 | /*The relative time in seconds, that the subtitle will appear*/ 32 | UPROPERTY(EditAnywhere) 33 | float AssociatedTime; 34 | }; -------------------------------------------------------------------------------- /EQS_Contexts/FindEnemyQueryContext.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "EqsTut.h" 4 | #include "FindEnemyQueryContext.h" 5 | #include "EnvironmentQuery/EnvQueryTypes.h" 6 | #include "EnvironmentQuery/Items/EnvQueryItemType_Actor.h" 7 | #include "EqsTutCharacter.h" 8 | #include "MyAIController.h" 9 | 10 | void UFindEnemyQueryContext::ProvideContext(FEnvQueryInstance& QueryInstance, FEnvQueryContextData& ContextData) const 11 | { 12 | Super::ProvideContext(QueryInstance, ContextData); 13 | 14 | //Get the Owner of this Query and cast it to an actor 15 | //Then, get the actor's controller and cast to it our AIController 16 | //This code works for our case but avoid that many casts and one-liners in cpp. 17 | AMyAIController* AICon = Cast((Cast((QueryInstance.Owner).Get())->GetInstigatorController())); 18 | 19 | if (AICon && AICon->GetSeeingPawn()) 20 | { 21 | //Set the context SeeingPawn to the provided context data 22 | UEnvQueryItemType_Actor::SetContextHelper(ContextData, AICon->GetSeeingPawn()); 23 | } 24 | } -------------------------------------------------------------------------------- /EQS_Contexts/FindEnemyQueryContext.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "EnvironmentQuery/EnvQueryContext.h" 6 | #include "FindEnemyQueryContext.generated.h" 7 | 8 | /** 9 | * 10 | */ 11 | UCLASS() 12 | class EQSTUT_API UFindEnemyQueryContext : public UEnvQueryContext 13 | { 14 | GENERATED_BODY() 15 | 16 | virtual void ProvideContext(FEnvQueryInstance& QueryInstance, FEnvQueryContextData& ContextData) const override; 17 | 18 | 19 | }; 20 | -------------------------------------------------------------------------------- /EQS_Contexts/FindHidingSpot.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/EQS_Contexts/FindHidingSpot.uasset -------------------------------------------------------------------------------- /EQS_Contexts/MyAIController.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "AIController.h" 6 | #include "Perception/AIPerceptionComponent.h" 7 | #include "Perception/AISenseConfig_Sight.h" 8 | #include "MyAIController.generated.h" 9 | 10 | /** 11 | * 12 | */ 13 | UCLASS() 14 | class EQSTUT_API AMyAIController : public AAIController 15 | { 16 | GENERATED_BODY() 17 | 18 | private: 19 | 20 | /** BlackboardComponent - used to initialize blackboard values and set/get values from a blackboard asset */ 21 | UBlackboardComponent* BlackboardComp; 22 | 23 | /** BehaviorTreeComponent - used to start a behavior tree */ 24 | UBehaviorTreeComponent* BehaviorTreeComp; 25 | 26 | /** Blackboard Key Value Name */ 27 | const FName BlackboardEnemyKey = FName("Enemy"); 28 | 29 | /** The function that fires when the perception of our AI gets updated */ 30 | UFUNCTION() 31 | void OnPerceptionUpdated(TArray UpdatedActors); 32 | 33 | /** A Sight Sense config for our AI */ 34 | UAISenseConfig_Sight* Sight; 35 | 36 | protected: 37 | 38 | /** The Behavior Tree that contains the logic of our AI */ 39 | UPROPERTY(EditAnywhere) 40 | UBehaviorTree* BehaviorTree; 41 | 42 | /** The Perception Component of our AI */ 43 | UPROPERTY(VisibleAnywhere) 44 | UAIPerceptionComponent* AIPerceptionComponent; 45 | 46 | public: 47 | 48 | AMyAIController(); 49 | 50 | virtual void Possess(APawn* InPawn) override; 51 | 52 | /** Returns the seeing pawn. Returns null, if our AI has no target */ 53 | AActor* GetSeeingPawn(); 54 | 55 | }; 56 | -------------------------------------------------------------------------------- /EQS_Contexts/README.md: -------------------------------------------------------------------------------- 1 | EQS Context Tutorial 2 | 3 | Check the end result here: https://youtu.be/bhPkA2klS6c 4 | 5 | Read the full tutorial here: http://wp.me/p6hvtS-hy -------------------------------------------------------------------------------- /EQS_Generators/EnvQueryGenerator_Cone.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "EnvironmentQuery/Generators/EnvQueryGenerator_ProjectedPoints.h" 6 | #include "EnvQueryGenerator_Cone.generated.h" 7 | 8 | /** 9 | * 10 | */ 11 | UCLASS() 12 | class EQSTUT_API UEnvQueryGenerator_Cone : public UEnvQueryGenerator_ProjectedPoints 13 | { 14 | GENERATED_BODY() 15 | 16 | /** Generates items in a cone and places them in the environemtn */ 17 | virtual void GenerateItems(FEnvQueryInstance& QueryInstance) const override; 18 | 19 | /* The distance between each point of the same Angle */ 20 | UPROPERTY(EditAnywhere, Category = ConeProperties) 21 | float PointsDistance = 50.f; 22 | 23 | /* The maximum degrees of the generated cone */ 24 | UPROPERTY(EditAnywhere, Category = ConeProperties) 25 | float ConeDegrees = 20.f; 26 | 27 | /* Angle Step is the step that the angles increase. A small value means that more item will get generated */ 28 | UPROPERTY(EditAnywhere, Category = ConeProperties) 29 | float AngleStep; 30 | 31 | /* The radius of our cone */ 32 | UPROPERTY(EditAnywhere, Category = ConeProperties) 33 | float ConeRadius = 150.f; 34 | }; 35 | -------------------------------------------------------------------------------- /EQS_Generators/README.md: -------------------------------------------------------------------------------- 1 | EQS Generator Tutorial 2 | 3 | Check the end result here: https://youtu.be/imTTYF9eoNc 4 | 5 | Read the full tutorial here: http://wp.me/p6hvtS-hV -------------------------------------------------------------------------------- /FilePicker/DummyTextFiles/DummyFile1.txt: -------------------------------------------------------------------------------- 1 | This is the first line of DummyFile1.txt 2 | This is a nice line! -------------------------------------------------------------------------------- /FilePicker/DummyTextFiles/DummyFile2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/FilePicker/DummyTextFiles/DummyFile2.txt -------------------------------------------------------------------------------- /FilePicker/FilePicker.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2018 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class FilePicker : ModuleRules 6 | { 7 | public FilePicker(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay","SlateCore" }); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /FilePicker/README.md: -------------------------------------------------------------------------------- 1 | # File picker tutorial 2 | 3 | Read the full tutorial here: https://wp.me/p6hvtS-ry -------------------------------------------------------------------------------- /FlightPathSystem/FlightStop.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "WoWFlight.h" 4 | #include "FlightStop.h" 5 | 6 | 7 | // Sets default values 8 | AFlightStop::AFlightStop() 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 | SM = CreateDefaultSubobject(FName("SM")); 14 | SetRootComponent(SM); 15 | 16 | //Init splines 17 | NextFlightStop = CreateDefaultSubobject(FName("SplineComp")); 18 | PreviousFlightStop = CreateDefaultSubobject(FName("PreviousFlightStop")); 19 | 20 | //Attach them to root component 21 | NextFlightStop->SetupAttachment(SM); 22 | PreviousFlightStop->SetupAttachment(SM); 23 | } 24 | -------------------------------------------------------------------------------- /FlightPathSystem/README.md: -------------------------------------------------------------------------------- 1 | Flight Path System 2 | 3 | You can see the end result here: https://youtu.be/oB7dcdie9ro 4 | 5 | Read the full tutorial here: http://wp.me/p6hvtS-hb -------------------------------------------------------------------------------- /Functional_Tests/PlayerMovementFunctionalTest.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "Tests/PlayerMovementFunctionalTest.h" 5 | #include "GameFramework/Character.h" 6 | #include "Kismet/GameplayStatics.h" 7 | #include "Kismet/KismetSystemLibrary.h" 8 | 9 | void APlayerMovementFunctionalTest::BeginPlay() 10 | { 11 | Super::BeginPlay(); 12 | 13 | 14 | Player = UGameplayStatics::GetPlayerCharacter(GetWorld(),0); 15 | 16 | if (Player) 17 | { 18 | InitialLocation = Player->GetActorLocation(); 19 | } 20 | } 21 | 22 | void APlayerMovementFunctionalTest::Tick(float DeltaSeconds) 23 | { 24 | Super::Tick(DeltaSeconds); 25 | 26 | if (Player) 27 | { 28 | //Go forward until we reach our destination 29 | Player->AddMovementInput(Player->GetActorForwardVector()); 30 | if (TraveledTotalDistance()) 31 | { 32 | FinishTest(EFunctionalTestResult::Succeeded,FString("Traveled required units!")); 33 | UKismetSystemLibrary::QuitGame(GetWorld(),UGameplayStatics::GetPlayerController(GetWorld(),0),EQuitPreference::Quit,false); 34 | } 35 | } 36 | else 37 | { 38 | FinishTest(EFunctionalTestResult::Failed, FString("Invalid player character!")); 39 | } 40 | } 41 | 42 | bool APlayerMovementFunctionalTest::TraveledTotalDistance() const 43 | { 44 | return (Player) ? (FVector::Distance(Player->GetActorLocation(), InitialLocation + Player->GetActorForwardVector() * MovementDistance) <= DistanceThreshold) : false; 45 | } 46 | -------------------------------------------------------------------------------- /Functional_Tests/PlayerMovementFunctionalTest.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "FunctionalTest.h" 7 | #include "PlayerMovementFunctionalTest.generated.h" 8 | 9 | /** 10 | * A functional test that moves the player character forward 11 | */ 12 | UCLASS() 13 | class AUTOMATIONPOST_API APlayerMovementFunctionalTest : public AFunctionalTest 14 | { 15 | GENERATED_BODY() 16 | 17 | private: 18 | 19 | /* Reference of main player */ 20 | class ACharacter* Player; 21 | 22 | /* Initial location of the player */ 23 | FVector InitialLocation; 24 | 25 | protected: 26 | 27 | virtual void BeginPlay() override; 28 | 29 | /* Total movement distance */ 30 | UPROPERTY(EditAnywhere) 31 | float MovementDistance = 350.f; 32 | 33 | /* Distance threshold in order to get for target location */ 34 | UPROPERTY(EditAnywhere) 35 | float DistanceThreshold=55.f; 36 | 37 | public: 38 | 39 | virtual void Tick(float DeltaSeconds) override; 40 | 41 | /** 42 | * Returns true when the player has traveled MovementDistance - DistanceThreshold 43 | */ 44 | bool TraveledTotalDistance() const; 45 | 46 | }; 47 | -------------------------------------------------------------------------------- /Functional_Tests/README.md: -------------------------------------------------------------------------------- 1 | # Functional Tests in UE4 2 | 3 | Functional test post: https://www.orfeasel.com/functional-tests/ 4 | -------------------------------------------------------------------------------- /GameplayDebugger/GDBlogPost.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class GDBlogPost : ModuleRules 6 | { 7 | public GDBlogPost(TargetInfo Target) 8 | { 9 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "OrfeasModule" }); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /GameplayDebugger/OrfeasModule/OrfeasModule.Build.cs: -------------------------------------------------------------------------------- 1 | using UnrealBuildTool; 2 | 3 | public class OrfeasModule : ModuleRules 4 | { 5 | public OrfeasModule(TargetInfo Target) 6 | { 7 | PublicIncludePaths.AddRange(new string[] { "OrfeasModule/Public" }); 8 | 9 | PrivateIncludePaths.AddRange(new string[] { "OrfeasModule/Private" }); 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "GDBlogPost" }); 12 | 13 | if (UEBuildConfiguration.bBuildDeveloperTools || (Target.Configuration != UnrealTargetConfiguration.Shipping && Target.Configuration != UnrealTargetConfiguration.Test)) 14 | { 15 | PrivateDependencyModuleNames.Add("GameplayDebugger"); 16 | Definitions.Add("WITH_GAMEPLAY_DEBUGGER=1"); 17 | } 18 | else 19 | { 20 | Definitions.Add("WITH_GAMEPLAY_DEBUGGER=0"); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /GameplayDebugger/OrfeasModule/Private/CustomGameplayDebugger.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "OrfeasModule.h" 4 | #include "CustomGameplayDebugger.h" 5 | #include "GDBlogPostCharacter.h" 6 | 7 | #if WITH_GAMEPLAY_DEBUGGER 8 | 9 | #include "DebugRenderSceneProxy.h" 10 | 11 | FGameplayDebuggerCategory_Orfeas::FGameplayDebuggerCategory_Orfeas() 12 | { 13 | bShowOnlyWithDebugActor = false; 14 | } 15 | 16 | TSharedRef FGameplayDebuggerCategory_Orfeas::MakeInstance() 17 | { 18 | return MakeShareable(new FGameplayDebuggerCategory_Orfeas()); 19 | } 20 | 21 | void FGameplayDebuggerCategory_Orfeas::CollectData(APlayerController* OwnerPC, AActor* DebugActor) 22 | { 23 | 24 | if (DebugActor) 25 | { 26 | AGDBlogPostCharacter* Char = Cast(DebugActor); 27 | 28 | if (Char) 29 | { 30 | //Store the data to our struct 31 | Data.HP = Char->Health; 32 | Data.Damage = Char->MaxDamage; 33 | } 34 | } 35 | } 36 | 37 | void FGameplayDebuggerCategory_Orfeas::DrawData(APlayerController* OwnerPC, FGameplayDebuggerCanvasContext& CanvasContext) 38 | { 39 | //Test print with white text 40 | CanvasContext.Printf(TEXT("Test Print")); 41 | 42 | CanvasContext.Printf(FColor::Yellow, TEXT("Yet again another print!")); 43 | 44 | //Print the health data with green color 45 | CanvasContext.Printf(TEXT("{green}HP: %s"), *FString::SanitizeFloat(Data.HP)); 46 | 47 | //Print the damage data with red color 48 | CanvasContext.Printf(TEXT("{red}Damage: %s"), *FString::SanitizeFloat(Data.Damage)); 49 | } 50 | 51 | #endif -------------------------------------------------------------------------------- /GameplayDebugger/OrfeasModule/Private/OrfeasModule.cpp: -------------------------------------------------------------------------------- 1 | #include "OrfeasModule.h" 2 | 3 | DEFINE_LOG_CATEGORY(OrfeasModule); 4 | 5 | #if WITH_GAMEPLAY_DEBUGGER 6 | #include "GameplayDebugger.h" 7 | #include "CustomGameplayDebugger.h" 8 | #endif 9 | 10 | 11 | #define LOCTEXT_NAMESPACE "FOrfeasModule" 12 | 13 | void FOrfeasModule::StartupModule() 14 | { 15 | UE_LOG(OrfeasModule, Warning, TEXT("Orfeas module has started!")); 16 | 17 | #if WITH_GAMEPLAY_DEBUGGER 18 | 19 | //If the gameplay debugger is available, register the category and notify the editor about the changes 20 | IGameplayDebugger& GameplayDebuggerModule = IGameplayDebugger::Get(); 21 | 22 | GameplayDebuggerModule.RegisterCategory("OrfeasCustomCategory", IGameplayDebugger::FOnGetCategory::CreateStatic(&FGameplayDebuggerCategory_Orfeas::MakeInstance), EGameplayDebuggerCategoryState::EnabledInGameAndSimulate); 23 | 24 | GameplayDebuggerModule.NotifyCategoriesChanged(); 25 | 26 | #endif 27 | } 28 | 29 | void FOrfeasModule::ShutdownModule() 30 | { 31 | UE_LOG(OrfeasModule, Warning, TEXT("Orfeas module has shut down")); 32 | 33 | #if WITH_GAMEPLAY_DEBUGGER 34 | //If the gameplay debugger is available, unregister the category 35 | if (IGameplayDebugger::IsAvailable()) 36 | { 37 | IGameplayDebugger& GameplayDebuggerModule = IGameplayDebugger::Get(); 38 | GameplayDebuggerModule.UnregisterCategory("OrfeasCustomCategory"); 39 | } 40 | #endif 41 | } 42 | 43 | #undef LOCTEXT_NAMESPACE 44 | 45 | IMPLEMENT_MODULE(FOrfeasModule,OrfeasModule) -------------------------------------------------------------------------------- /GameplayDebugger/OrfeasModule/Public/CustomGameplayDebugger.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | #if WITH_GAMEPLAY_DEBUGGER 8 | 9 | #include "GameplayDebuggerCategory.h" 10 | 11 | //Forward declarations 12 | class AActor; 13 | class APlayerController; 14 | class FGameplayDebuggerCanvasContext; 15 | 16 | //The data we're going to print inside the viewport 17 | struct FDataToPrint 18 | { 19 | float HP; 20 | float Damage; 21 | }; 22 | 23 | //The class of our custom gameplay debugger category 24 | class ORFEASMODULE_API FGameplayDebuggerCategory_Orfeas : public FGameplayDebuggerCategory 25 | { 26 | 27 | protected: 28 | 29 | //The data that we're going to print 30 | FDataToPrint Data; 31 | 32 | public: 33 | 34 | FGameplayDebuggerCategory_Orfeas(); 35 | 36 | /** Creates an instance of this category - will be used on module startup to include our category in the Editor */ 37 | static TSharedRef MakeInstance(); 38 | 39 | /** Collects the data we would like to print */ 40 | virtual void CollectData(APlayerController* OwnerPC, AActor* DebugActor) override; 41 | 42 | /** Displays the data we collected in the CollectData function */ 43 | virtual void DrawData(APlayerController* OwnerPC, FGameplayDebuggerCanvasContext& CanvasContext) override; 44 | }; 45 | 46 | #endif -------------------------------------------------------------------------------- /GameplayDebugger/OrfeasModule/Public/OrfeasModule.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ModuleManager.h" 4 | 5 | DECLARE_LOG_CATEGORY_EXTERN(OrfeasModule, All, All); 6 | 7 | class FOrfeasModule : public IModuleInterface 8 | { 9 | public: 10 | 11 | /* This will get called when the editor loads the module */ 12 | virtual void StartupModule() override; 13 | 14 | /* This will get called when the editor unloads the module */ 15 | virtual void ShutdownModule() override; 16 | }; -------------------------------------------------------------------------------- /GameplayDebugger/README.md: -------------------------------------------------------------------------------- 1 | Gameplay Debugger 2 | 3 | Read the full tutorial here: http://wp.me/p6hvtS-n1 -------------------------------------------------------------------------------- /HttpCalls/HttpCalls.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2018 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class HttpCalls : ModuleRules 6 | { 7 | public HttpCalls(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "HTTP" }); 12 | 13 | //PublicDependencyModuleNames.AddRange("HTTP"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /HttpCalls/README.md: -------------------------------------------------------------------------------- 1 | # Http calls tut 2 | 3 | Read the full tutorial here: https://wp.me/p6hvtS-rp -------------------------------------------------------------------------------- /InventorySystem/InventorySlotWidget.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "InventorySystem.h" 4 | #include "InventorySlotWidget.h" 5 | #include "InventorySystemCharacter.h" 6 | 7 | 8 | 9 | void UInventorySlotWidget::SetEquippedItem() 10 | { 11 | AInventorySystemCharacter* Char = Cast(UGameplayStatics::GetPlayerCharacter(GetWorld(), 0)); 12 | if (Char) 13 | { 14 | Char->SetEquippedItem(ItemTexture); 15 | } 16 | } 17 | 18 | void UInventorySlotWidget::SetItemTexture(APickup* Item) 19 | { 20 | //If the item is valid update the widget's texture. 21 | //If not, assign a null ptr to it so the widget won't broadcast wrong information to the player 22 | (Item) ? ItemTexture = Item->GetPickupTexture() : ItemTexture = nullptr; 23 | } -------------------------------------------------------------------------------- /InventorySystem/InventorySlotWidget.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "Blueprint/UserWidget.h" 6 | #include "Pickup.h" 7 | #include "InventorySlotWidget.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class INVENTORYSYSTEM_API UInventorySlotWidget : public UUserWidget 14 | { 15 | GENERATED_BODY() 16 | 17 | protected: 18 | /*Holds a reference to the item texture*/ 19 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly) 20 | UTexture2D* ItemTexture; 21 | 22 | /*Tells the player the equip the represented item from this widget*/ 23 | UFUNCTION(BlueprintCallable, Category = UI) 24 | void SetEquippedItem(); 25 | 26 | public: 27 | /*Sets the item texture*/ 28 | UFUNCTION(BlueprintCallable, Category = UI) 29 | void SetItemTexture(APickup* Item); 30 | 31 | 32 | }; 33 | -------------------------------------------------------------------------------- /InventorySystem/InventorySystem.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class InventorySystem : ModuleRules 6 | { 7 | public InventorySystem(TargetInfo Target) 8 | { 9 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG", "Slate", "SlateCore" }); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /InventorySystem/InventorySystem.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "InventorySystem.h" 4 | 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, InventorySystem, "InventorySystem" ); 7 | -------------------------------------------------------------------------------- /InventorySystem/InventorySystem.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. 2 | 3 | #ifndef __INVENTORYSYSTEM_H__ 4 | #define __INVENTORYSYSTEM_H__ 5 | 6 | #include "EngineMinimal.h" 7 | #include "Runtime/UMG/Public/UMG.h" 8 | #include "Runtime/UMG/Public/UMGStyle.h" 9 | #include "Runtime/UMG/Public/Blueprint/UserWidget.h" 10 | #include "Runtime/UMG/Public/Slate/SObjectWidget.h" 11 | #include "Runtime/UMG/Public/IUMGModule.h" 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /InventorySystem/InventoryWidget.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "InventorySystem.h" 4 | #include "InventoryWidget.h" 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /InventorySystem/InventoryWidget.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "Blueprint/UserWidget.h" 6 | #include "Pickup.h" 7 | #include "InventoryWidget.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class INVENTORYSYSTEM_API UInventoryWidget : public UUserWidget 14 | { 15 | GENERATED_BODY() 16 | 17 | 18 | 19 | public: 20 | /*Adds the widget into the viewport and populates the inventory slots*/ 21 | UFUNCTION(BlueprintImplementableEvent, Category = Animations) 22 | void Show(); 23 | 24 | /*Stores a reference in order to bind information on inventory slots*/ 25 | UPROPERTY(VisibleAnywhere, BlueprintReadOnly) 26 | TArray ItemsArray; 27 | 28 | }; 29 | -------------------------------------------------------------------------------- /InventorySystem/MyPlayerController.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "GameFramework/PlayerController.h" 6 | #include "InventoryWidget.h" 7 | #include "MyPlayerController.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class INVENTORYSYSTEM_API AMyPlayerController : public APlayerController 14 | { 15 | GENERATED_BODY() 16 | 17 | private: 18 | /*InventoryWidget reference*/ 19 | UInventoryWidget* InventoryWidgetRef; 20 | 21 | /*True if the inventory is currently open*/ 22 | bool bIsInventoryOpen; 23 | 24 | protected: 25 | /*InventoryWidget Blueprint reference*/ 26 | UPROPERTY(EditDefaultsOnly) 27 | TSubclassOf InventoryWidgetBP; 28 | 29 | 30 | public: 31 | virtual void Possess(APawn* InPawn) override; 32 | 33 | /*Opens or closes the inventory*/ 34 | void HandleInventoryInput(); 35 | 36 | }; 37 | -------------------------------------------------------------------------------- /InventorySystem/Pickup.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "InventorySystem.h" 4 | #include "Pickup.h" 5 | 6 | 7 | // Sets default values 8 | APickup::APickup() 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 | //Initializing our properties 14 | PickupSM = CreateDefaultSubobject(FName("PickupSM")); 15 | 16 | PickupTexture = CreateDefaultSubobject(FName("ItemTexture")); 17 | } 18 | 19 | // Called when the game starts or when spawned 20 | void APickup::BeginPlay() 21 | { 22 | Super::BeginPlay(); 23 | 24 | } 25 | 26 | // Called every frame 27 | void APickup::Tick( float DeltaTime ) 28 | { 29 | Super::Tick( DeltaTime ); 30 | 31 | } 32 | 33 | void APickup::SetGlowEffect(bool Status) 34 | { 35 | PickupSM->SetRenderCustomDepth(Status); 36 | } -------------------------------------------------------------------------------- /InventorySystem/Pickup.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "GameFramework/Actor.h" 6 | #include "Pickup.generated.h" 7 | 8 | UCLASS() 9 | class INVENTORYSYSTEM_API APickup : public AActor 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | // Sets default values for this actor's properties 15 | APickup(); 16 | 17 | // Called when the game starts or when spawned 18 | virtual void BeginPlay() override; 19 | 20 | // Called every frame 21 | virtual void Tick( float DeltaSeconds ) override; 22 | 23 | public: 24 | /*Enables/Disables the glow effect on the pickup*/ 25 | void SetGlowEffect(bool Status); 26 | 27 | /*Returns the Texture of our Pickup*/ 28 | FORCEINLINE UTexture2D* GetPickupTexture() { return PickupTexture; } 29 | 30 | protected: 31 | /*The Static Mesh of the pickup*/ 32 | UPROPERTY(VisibleAnywhere) 33 | UStaticMeshComponent* PickupSM; 34 | 35 | /*The Texture of the item in case we want to add it in the secrets or inventory*/ 36 | UPROPERTY(EditAnywhere, Category = "PickupProperties") 37 | UTexture2D* PickupTexture; 38 | 39 | /*The name of the item*/ 40 | UPROPERTY(EditAnywhere, Category = "PickupProperties") 41 | FString ItemName; 42 | 43 | 44 | }; 45 | -------------------------------------------------------------------------------- /InventorySystem/README.md: -------------------------------------------------------------------------------- 1 | Inventory System 2 | 3 | You can see the end result here: https://youtu.be/qLYcgBzfLiw 4 | 5 | Read the full tutorial here: http://orfeasel.com/implementing-inventory-system/ -------------------------------------------------------------------------------- /JsonParsing/Config/DefaultEditor.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/JsonParsing/Config/DefaultEditor.ini -------------------------------------------------------------------------------- /JsonParsing/Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | [URL] 2 | 3 | [/Script/HardwareTargeting.HardwareTargetingSettings] 4 | TargetedHardwareClass=Desktop 5 | AppliedTargetedHardwareClass=Desktop 6 | DefaultGraphicsPerformance=Maximum 7 | AppliedDefaultGraphicsPerformance=Maximum 8 | 9 | [/Script/Engine.PhysicsSettings] 10 | DefaultGravityZ=-980.000000 11 | DefaultTerminalVelocity=4000.000000 12 | DefaultFluidFriction=0.300000 13 | SimulateScratchMemorySize=262144 14 | RagdollAggregateThreshold=4 15 | TriangleMeshTriangleMinAreaThreshold=5.000000 16 | bEnableAsyncScene=False 17 | bEnableShapeSharing=False 18 | bEnablePCM=True 19 | bEnableStabilization=False 20 | bWarnMissingLocks=True 21 | bEnable2DPhysics=False 22 | LockedAxis=Invalid 23 | DefaultDegreesOfFreedom=Full3D 24 | BounceThresholdVelocity=200.000000 25 | FrictionCombineMode=Average 26 | RestitutionCombineMode=Average 27 | MaxAngularVelocity=3600.000000 28 | MaxDepenetrationVelocity=0.000000 29 | ContactOffsetMultiplier=0.020000 30 | MinContactOffset=2.000000 31 | MaxContactOffset=8.000000 32 | bSimulateSkeletalMeshOnDedicatedServer=True 33 | DefaultShapeComplexity=CTF_UseSimpleAndComplex 34 | bDefaultHasComplexCollision=True 35 | bSuppressFaceRemapTable=False 36 | bSupportUVFromHitResults=False 37 | bDisableActiveActors=False 38 | bDisableCCD=False 39 | bEnableEnhancedDeterminism=False 40 | MaxPhysicsDeltaTime=0.033333 41 | bSubstepping=False 42 | bSubsteppingAsync=False 43 | MaxSubstepDeltaTime=0.016667 44 | MaxSubsteps=6 45 | SyncSceneSmoothingFactor=0.000000 46 | AsyncSceneSmoothingFactor=0.990000 47 | InitialAverageFrameRate=0.016667 48 | PhysXTreeRebuildRate=10 49 | 50 | 51 | -------------------------------------------------------------------------------- /JsonParsing/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GeneralProjectSettings] 2 | ProjectID=8913BD6C4AE3CE4F30AE27B75F4BDFE6 3 | 4 | [/Script/Engine.AssetManagerSettings] 5 | -PrimaryAssetTypesToScan=(PrimaryAssetType="Map",AssetBaseClass=/Script/Engine.World,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game/Maps"))) 6 | -PrimaryAssetTypesToScan=(PrimaryAssetType="PrimaryAssetLabel",AssetBaseClass=/Script/Engine.PrimaryAssetLabel,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game"))) 7 | +PrimaryAssetTypesToScan=(PrimaryAssetType="Map",AssetBaseClass=/Script/Engine.World,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game/Maps")),SpecificAssets=,Rules=(Priority=-1,bApplyRecursively=True,ChunkId=-1,CookRule=Unknown)) 8 | +PrimaryAssetTypesToScan=(PrimaryAssetType="PrimaryAssetLabel",AssetBaseClass=/Script/Engine.PrimaryAssetLabel,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game")),SpecificAssets=,Rules=(Priority=-1,bApplyRecursively=True,ChunkId=-1,CookRule=Unknown)) 9 | bOnlyCookProductionAssets=False 10 | bShouldGuessTypeAndNameInEditor=True 11 | bShouldAcquireMissingChunksOnLoad=False 12 | 13 | [/Script/UnrealEd.ProjectPackagingSettings] 14 | bCookAll=True 15 | 16 | -------------------------------------------------------------------------------- /JsonParsing/Content/BP_JsonParser.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/JsonParsing/Content/BP_JsonParser.uasset -------------------------------------------------------------------------------- /JsonParsing/Content/JsonFiles/randomgenerated.json: -------------------------------------------------------------------------------- 1 | { 2 | "Person": { 3 | "_id": "5aa416eb517758cfe840035d", 4 | "index": 0, 5 | "guid": "e617dc7d-47e2-4a5c-a5cb-b5a580c94b90", 6 | "isActive": true, 7 | "balance": "$3,352.85", 8 | "picture": "http://placehold.it/32x32", 9 | "age": 20, 10 | "eyeColor": "green", 11 | "name": "Ortiz Ochoa", 12 | "gender": "male", 13 | "company": "PETICULAR", 14 | "email": "ortizochoa@peticular.com", 15 | "latitude": -53.214897, 16 | "longitude": -156.96938, 17 | "family": [ 18 | "Orfeas", 19 | "Kostas", 20 | "Vasilis" 21 | ] 22 | } 23 | } -------------------------------------------------------------------------------- /JsonParsing/Content/Untitled.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/JsonParsing/Content/Untitled.umap -------------------------------------------------------------------------------- /JsonParsing/JsonParsing.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.18", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "JsonParsing", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "Engine" 13 | ] 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /JsonParsing/README.md: -------------------------------------------------------------------------------- 1 | Json Parsing tut 2 | 3 | Read the full tutorial here: https://wp.me/p6hvtS-pk -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsing.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class JsonParsingTarget : TargetRules 7 | { 8 | public JsonParsingTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "JsonParsing" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsing/JsonParser.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "JsonParser.generated.h" 8 | 9 | UCLASS() 10 | class JSONPARSING_API AJsonParser : public AActor 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | // Sets default values for this actor's properties 16 | AJsonParser(); 17 | 18 | protected: 19 | // Called when the game starts or when spawned 20 | virtual void BeginPlay() override; 21 | 22 | 23 | public: 24 | // Called every frame 25 | virtual void Tick(float DeltaTime) override; 26 | 27 | 28 | 29 | }; 30 | -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsing/JsonParsing.Build.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class JsonParsing : ModuleRules 6 | { 7 | public JsonParsing(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 12 | 13 | PublicDependencyModuleNames.AddRange(new string[] { "Json", "JsonUtilities" }); 14 | 15 | PrivateDependencyModuleNames.AddRange(new string[] { }); 16 | 17 | // Uncomment if you are using Slate UI 18 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 19 | 20 | // Uncomment if you are using online features 21 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 22 | 23 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsing/JsonParsing.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "JsonParsing.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, JsonParsing, "JsonParsing" ); 7 | -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsing/JsonParsing.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsing/JsonParsingGameModeBase.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "JsonParsingGameModeBase.h" 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsing/JsonParsingGameModeBase.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "JsonParsingGameModeBase.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class JSONPARSING_API AJsonParsingGameModeBase : public AGameModeBase 14 | { 15 | GENERATED_BODY() 16 | 17 | 18 | 19 | 20 | }; 21 | -------------------------------------------------------------------------------- /JsonParsing/Source/JsonParsingEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class JsonParsingEditorTarget : TargetRules 7 | { 8 | public JsonParsingEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | 12 | ExtraModuleNames.AddRange( new string[] { "JsonParsing" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Orfeas Eleftheriou 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 | -------------------------------------------------------------------------------- /LatentNodes/MyBPFunctionLibrary.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "MyBPFunctionLibrary.h" 5 | #include "GameFramework/Actor.h" 6 | #include "Engine/Engine.h" 7 | #include "Engine/LatentActionManager.h" 8 | #include "PingPongAction.h" 9 | 10 | 11 | void UMyBPFunctionLibrary::PingPong(AActor* InActor, FVector LocA, FVector LocB, TEnumAsByte PingPongStatus, FLatentActionInfo LatentInfo) 12 | { 13 | if (UWorld* World = GEngine->GetWorldFromContextObjectChecked(InActor)) 14 | { 15 | FLatentActionManager& LatentActionManager = World->GetLatentActionManager(); 16 | 17 | FPingPongAction* PingPongAction = LatentActionManager.FindExistingAction(LatentInfo.CallbackTarget,LatentInfo.UUID); 18 | 19 | //If not currently running 20 | if (!PingPongAction) 21 | { 22 | if (PingPongStatus == EPingPongStatus::Start) 23 | { 24 | PingPongAction = new FPingPongAction(InActor,LocA,LocB, LatentInfo); 25 | 26 | LatentActionManager.AddNewAction(LatentInfo.CallbackTarget, LatentInfo.UUID, PingPongAction); 27 | } 28 | } 29 | else 30 | { 31 | if (PingPongStatus == EPingPongStatus::Stop) 32 | { 33 | PingPongAction->bComplete=true; 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LatentNodes/MyBPFunctionLibrary.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Kismet/BlueprintFunctionLibrary.h" 7 | #include "MyBPFunctionLibrary.generated.h" 8 | 9 | class AActor; 10 | 11 | UENUM() 12 | namespace EPingPongStatus 13 | { 14 | enum Type 15 | { 16 | Start, 17 | Stop 18 | }; 19 | } 20 | 21 | /** 22 | * 23 | */ 24 | UCLASS() 25 | class LATENTNODES_API UMyBPFunctionLibrary : public UBlueprintFunctionLibrary 26 | { 27 | GENERATED_BODY() 28 | 29 | public: 30 | 31 | /** 32 | * Interpolates the given actor between the given locations 33 | * @param InActor - the actor to interpolate 34 | * @param LocA - the starting location of the interpolation 35 | * @param LocB - the target location of the interpolation 36 | * @param PingPongStatus - the status of the ping pong 37 | * @param LatentInfo - the latent info to handle the progress in the background 38 | */ 39 | UFUNCTION(BlueprintCallable, meta = (Latent, LatentInfo = "LatentInfo", WorldContext = "WorldContextObject", ExpandEnumAsExecs = "PingPongStatus"), Category = "MyBPFunctions") 40 | static void PingPong(AActor* InActor, FVector LocA, FVector LocB, TEnumAsByte PingPongStatus, FLatentActionInfo LatentInfo); 41 | 42 | }; 43 | -------------------------------------------------------------------------------- /LatentNodes/PingPongAction.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "PingPongAction.h" 5 | -------------------------------------------------------------------------------- /LatentNodes/README.md: -------------------------------------------------------------------------------- 1 | # Latent Nodes tutorial 2 | 3 | Latent nodes tutorial: https://www.orfeasel.com/creating-latent-blueprint-nodes-with-multiple-execution-pins/ 4 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/LibrariesLinking.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class LibrariesLinking : ModuleRules 6 | { 7 | public LibrariesLinking(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 | 15 | //Change this to match your lib file's path 16 | PublicAdditionalLibraries.Add(@"C:/Users/Orfeas/source/repos/OrfeasStaticLibrary/x64/Release/OrfeasStaticLibrary.lib"); 17 | 18 | // Uncomment if you are using Slate UI 19 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 20 | 21 | // Uncomment if you are using online features 22 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 23 | 24 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/LibrariesLinking.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "LibrariesLinking.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, LibrariesLinking, "LibrariesLinking" ); 7 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/LibrariesLinking.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/.vs/MathIsFunDll/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/.vs/MathIsFunDll/v16/.suo -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/.vs/MathIsFunDll/v16/Browse.VC.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/.vs/MathIsFunDll/v16/Browse.VC.db -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/Debug/MATHISFUNDLL.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/Debug/MATHISFUNDLL.exp -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/Debug/MATHISFUNDLL.ilk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/Debug/MATHISFUNDLL.ilk -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/Debug/MATHISFUNDLL.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/Debug/MATHISFUNDLL.pdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29926.136 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MathIsFunDll", "MathIsFunDll\MathIsFunDll.vcxproj", "{AB357013-84D5-4A71-9FDB-C87D87B83E1B}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Debug|x64.ActiveCfg = Debug|x64 17 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Debug|x64.Build.0 = Debug|x64 18 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Debug|x86.ActiveCfg = Debug|Win32 19 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Debug|x86.Build.0 = Debug|Win32 20 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Release|x64.ActiveCfg = Release|x64 21 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Release|x64.Build.0 = Release|x64 22 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Release|x86.ActiveCfg = Release|Win32 23 | {AB357013-84D5-4A71-9FDB-C87D87B83E1B}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {47C78285-056A-4116-B9E4-A627826F3607} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.log: -------------------------------------------------------------------------------- 1 |  pch.cpp 2 | dllmain.cpp 3 | MathIsFunDll.cpp 4 | Generating Code... 5 | Creating library C:\Users\Orfeas\source\repos\MathIsFunDll\Debug\MATHISFUNDLL.lib and object C:\Users\Orfeas\source\repos\MathIsFunDll\Debug\MATHISFUNDLL.exp 6 | MathIsFunDll.vcxproj -> C:\Users\Orfeas\source\repos\MathIsFunDll\Debug\MATHISFUNDLL.dll 7 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/MathIsFunDll.lastbuildstate: -------------------------------------------------------------------------------- 1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.25.28610:TargetPlatformVersion=10.0.18362.0: 2 | Debug|Win32|C:\Users\Orfeas\source\repos\MathIsFunDll\| 3 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/MathIsFunDll.write.1u.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/MathIsFunDll.write.1u.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/MathIsFunDll.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/vc142.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/vc142.idb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/vc142.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/Debug/vc142.pdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/MathIsFunDll.cpp: -------------------------------------------------------------------------------- 1 | // MathIsFunDll.cpp : Defines the exported functions for the DLL. 2 | // 3 | 4 | #include "pch.h" 5 | #include "framework.h" 6 | #include "MathIsFunDll.h" 7 | 8 | 9 | MATHISFUNDLL_API float Sum(float a, float b) 10 | { 11 | return a+b; 12 | } 13 | 14 | MATHISFUNDLL_API int GetFibonacciNTerm(int Term) 15 | { 16 | //https://www.mathsisfun.com/numbers/fibonacci-sequence.html 17 | //Recursive way of calculating fibonacci term. Not the best algorithm in terms of efficiency but it works in our case :) 18 | if (Term == 0) 19 | { 20 | return 0; 21 | } 22 | else if (Term == 1) 23 | { 24 | return 1; 25 | } 26 | else return GetFibonacciNTerm(Term - 1) + GetFibonacciNTerm(Term - 2); 27 | } -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/MathIsFunDll.h: -------------------------------------------------------------------------------- 1 | // The following ifdef block is the standard way of creating macros which make exporting 2 | // from a DLL simpler. All files within this DLL are compiled with the MATHISFUNDLL_EXPORTS 3 | // symbol defined on the command line. This symbol should not be defined on any project 4 | // that uses this DLL. This way any other project whose source files include this file see 5 | // MATHISFUNDLL_API functions as being imported from a DLL, whereas this DLL sees symbols 6 | // defined with this macro as being exported. 7 | #ifdef MATHISFUNDLL_EXPORTS 8 | #define MATHISFUNDLL_API __declspec(dllexport) 9 | #else 10 | #define MATHISFUNDLL_API __declspec(dllimport) 11 | #endif 12 | 13 | //By default C++ is performing name mangling of types. 14 | //This means that if we have a function named "Sum" the compiler may internally generate a different name for it eg __Sum_ or something different 15 | //By including the following ifdef we're telling the compiler "In case you're compiling C++ language, make sure the method names have C linkage (ie don't change their names) 16 | //For more information: https://stackoverflow.com/questions/1041866/what-is-the-effect-of-extern-c-in-c 17 | #ifdef __cplusplus 18 | extern "C" 19 | { 20 | #endif 21 | 22 | MATHISFUNDLL_API float Sum(float a, float b); 23 | MATHISFUNDLL_API int GetFibonacciNTerm(int Term); 24 | #ifdef __cplusplus 25 | } 26 | #endif -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/MathIsFunDll.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/cpp.hint: -------------------------------------------------------------------------------- 1 | #define MATHISFUNDLL_API __declspec(dllexport) 2 | #define MATHISFUNDLL_API __declspec(dllimport) 3 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // dllmain.cpp : Defines the entry point for the DLL application. 2 | #include "pch.h" 3 | 4 | BOOL APIENTRY DllMain( HMODULE hModule, 5 | DWORD ul_reason_for_call, 6 | LPVOID lpReserved 7 | ) 8 | { 9 | switch (ul_reason_for_call) 10 | { 11 | case DLL_PROCESS_ATTACH: 12 | case DLL_THREAD_ATTACH: 13 | case DLL_THREAD_DETACH: 14 | case DLL_PROCESS_DETACH: 15 | break; 16 | } 17 | return TRUE; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 4 | // Windows Header Files 5 | #include 6 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: source file corresponding to the pre-compiled header 2 | 3 | #include "pch.h" 4 | 5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed. 6 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: This is a precompiled header file. 2 | // Files listed below are compiled only once, improving build performance for future builds. 3 | // This also affects IntelliSense performance, including code completion and many code browsing features. 4 | // However, files listed here are ALL re-compiled if any one of them is updated between builds. 5 | // Do not add files here that you will be updating frequently as this negates the performance advantage. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // add headers that you want to pre-compile here 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.log: -------------------------------------------------------------------------------- 1 |  MathIsFunDll.cpp 2 | Creating library C:\Users\Orfeas\source\repos\MathIsFunDll\x64\Release\MATHISFUNDLL.lib and object C:\Users\Orfeas\source\repos\MathIsFunDll\x64\Release\MATHISFUNDLL.exp 3 | Generating code 4 | 1 of 3 functions (33.3%) were compiled, the rest were copied from previous compilation. 5 | 1 functions were new in current compilation 6 | 0 functions had inline decision re-evaluated but remain unchanged 7 | Finished generating code 8 | MathIsFunDll.vcxproj -> C:\Users\Orfeas\source\repos\MathIsFunDll\x64\Release\MATHISFUNDLL.dll 9 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/MathIsFunDll.lastbuildstate: -------------------------------------------------------------------------------- 1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.25.28610:TargetPlatformVersion=10.0.18362.0: 2 | Release|x64|C:\Users\Orfeas\source\repos\MathIsFunDll\| 3 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/MathIsFunDll.write.1u.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/MathIsFunDll.write.1u.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.delete.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.delete.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/MathIsFunDll.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/vc142.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/MathIsFunDll/x64/Release/vc142.pdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.exp -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.iobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.iobj -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.ipdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.ipdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/MathIsFunDll/x64/Release/MATHISFUNDLL.pdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/.vs/OrfeasStaticLibrary/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/.vs/OrfeasStaticLibrary/v16/.suo -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/.vs/OrfeasStaticLibrary/v16/Browse.VC.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/.vs/OrfeasStaticLibrary/v16/Browse.VC.db -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.pdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/Lib-link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/Lib-link.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/Lib-link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/Lib-link.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/Lib.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/Lib.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasSt.9665AFC6.tlog/OrfeasStaticLibrary.lastbuildstate: -------------------------------------------------------------------------------- 1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.25.28610:TargetPlatformVersion=10.0.18362.0: 2 | Debug|Win32|C:\Users\Orfeas\source\repos\OrfeasStaticLibrary\| 3 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.idb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.log: -------------------------------------------------------------------------------- 1 |  OrfeasStaticLibrary.cpp 2 | OrfeasStaticLibrary.vcxproj -> C:\Users\Orfeas\source\repos\OrfeasStaticLibrary\Debug\OrfeasStaticLibrary.lib 3 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.pdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/Debug/OrfeasStaticLibrary.vcxproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\Orfeas\source\repos\OrfeasStaticLibrary\Debug\OrfeasStaticLibrary.pdb 2 | C:\Users\Orfeas\source\repos\OrfeasStaticLibrary\OrfeasStaticLibrary\Debug\OrfeasStaticLibrary.pdb 3 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/OrfeasMathLibrary.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | namespace OrfeasMathLibrary 5 | { 6 | class Arithmetic 7 | { 8 | public: 9 | 10 | // Returns a + b 11 | static double Add(double a, double b); 12 | 13 | // Returns a - b 14 | static double Subtract(double a, double b); 15 | 16 | // Returns a * b 17 | static double Multiply(double a, double b); 18 | 19 | // Returns a / b 20 | static double Divide(double a, double b); 21 | }; 22 | } -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/OrfeasStaticLibrary.cpp: -------------------------------------------------------------------------------- 1 | // OrfeasStaticLibrary.cpp : Defines the functions for the static library. 2 | // 3 | 4 | #include "pch.h" 5 | #include "framework.h" 6 | #include "OrfeasMathLibrary.h" 7 | 8 | // TODO: This is an example of a library function 9 | void fnOrfeasStaticLibrary() 10 | { 11 | //TODO: implement 12 | } 13 | 14 | namespace OrfeasMathLibrary 15 | { 16 | double Arithmetic::Add(double a, double b) 17 | { 18 | return a + b; 19 | } 20 | 21 | double Arithmetic::Subtract(double a, double b) 22 | { 23 | return a - b; 24 | } 25 | 26 | double Arithmetic::Multiply(double a, double b) 27 | { 28 | return a * b; 29 | } 30 | 31 | double Arithmetic::Divide(double a, double b) 32 | { 33 | return a / b; 34 | } 35 | } -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/OrfeasStaticLibrary.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Header Files 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | 30 | Source Files 31 | 32 | 33 | Source Files 34 | 35 | 36 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/OrfeasStaticLibrary.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 4 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: source file corresponding to the pre-compiled header 2 | 3 | #include "pch.h" 4 | 5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed. 6 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: This is a precompiled header file. 2 | // Files listed below are compiled only once, improving build performance for future builds. 3 | // This also affects IntelliSense performance, including code completion and many code browsing features. 4 | // However, files listed here are ALL re-compiled if any one of them is updated between builds. 5 | // Do not add files here that you will be updating frequently as this negates the performance advantage. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // add headers that you want to pre-compile here 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/Lib-link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/Lib-link.read.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/Lib-link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/Lib-link.write.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/Lib.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/Lib.command.1.tlog -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasSt.9665AFC6.tlog/OrfeasStaticLibrary.lastbuildstate: -------------------------------------------------------------------------------- 1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.25.28610:TargetPlatformVersion=10.0.18362.0: 2 | Release|x64|C:\Users\Orfeas\source\repos\OrfeasStaticLibrary\| 3 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasStaticLibrary.log: -------------------------------------------------------------------------------- 1 |  pch.cpp 2 | OrfeasStaticLibrary.cpp 3 | OrfeasStaticLibrary.vcxproj -> C:\Users\Orfeas\source\repos\OrfeasStaticLibrary\x64\Release\OrfeasStaticLibrary.lib 4 | -------------------------------------------------------------------------------- /Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasStaticLibrary.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Lib_Dll_Linking/Libraries_Repos/OrfeasStaticLibrary/OrfeasStaticLibrary/x64/Release/OrfeasStaticLibrary.pdb -------------------------------------------------------------------------------- /Lib_Dll_Linking/README.md: -------------------------------------------------------------------------------- 1 | # Lib and Dll file linking in ue4 2 | 3 | Read the full tutorial here: https://www.orfeasel.com/consuming-lib-and-dll-files/ -------------------------------------------------------------------------------- /Networking/NetworkingTut.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #ifndef __NETWORKINGTUT_H__ 4 | #define __NETWORKINGTUT_H__ 5 | 6 | #include "EngineMinimal.h" 7 | #include "Net/UnrealNetwork.h" 8 | #endif 9 | -------------------------------------------------------------------------------- /Networking/README.md: -------------------------------------------------------------------------------- 1 | Networking functionality written in C++ for UE4 2 | 3 | You can see the end result here: https://youtu.be/nFN_tL_Thrk 4 | 5 | Read the full tutorial here: http://wp.me/p6hvtS-jx -------------------------------------------------------------------------------- /ProceduralMesh/BP_ProcMeshActor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/ProceduralMesh/BP_ProcMeshActor.uasset -------------------------------------------------------------------------------- /ProceduralMesh/M_RuntimeMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/ProceduralMesh/M_RuntimeMesh.uasset -------------------------------------------------------------------------------- /ProceduralMesh/MyActor.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "ProceduralMeshComponent.h" 8 | #include "MyActor.generated.h" 9 | 10 | UCLASS() 11 | class PROCEDURALMESH_API AMyActor : public AActor 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | // Sets default values for this actor's properties 17 | AMyActor(); 18 | 19 | protected: 20 | // Called when the game starts or when spawned 21 | virtual void BeginPlay() override; 22 | 23 | UPROPERTY(VisibleAnywhere,BlueprintReadWrite) 24 | UProceduralMeshComponent* CustomMesh; 25 | 26 | /* The vertices of the mesh */ 27 | TArray Vertices; 28 | 29 | /* The triangles of the mesh */ 30 | TArray Triangles; 31 | 32 | /* Creates a triangle that connects the given vertices */ 33 | void AddTriangle(int32 V1, int32 V2, int32 V3); 34 | 35 | void GenerateCubeMesh(); 36 | 37 | public: 38 | 39 | // Called every frame 40 | virtual void Tick(float DeltaTime) override; 41 | 42 | }; 43 | -------------------------------------------------------------------------------- /ProceduralMesh/ProceduralMesh.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2017 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class ProceduralMesh : ModuleRules 6 | { 7 | public ProceduralMesh(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "ProceduralMeshComponent" }); 12 | //PrivateDependencyModuleNames.AddRange(new string[] { "ProceduralMeshComponent" }); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ProceduralMesh/ProceduralMesh.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.18", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "ProceduralMesh", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "Engine", 13 | "ProceduralMeshComponent" 14 | ] 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /ProceduralMesh/README.md: -------------------------------------------------------------------------------- 1 | # Procedural mesh tutorial 2 | 3 | Read the full tutorial here: https://wp.me/p6hvtS-pE 4 | -------------------------------------------------------------------------------- /Profiling_Code/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 -------------------------------------------------------------------------------- /Profiling_Code/Config/DefaultEditorPerProjectUserSettings.ini: -------------------------------------------------------------------------------- 1 | [ContentBrowser] 2 | ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonCPP -------------------------------------------------------------------------------- /Profiling_Code/Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GameMapsSettings] 2 | GameDefaultMap=/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap 3 | EditorStartupMap=/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap 4 | GlobalDefaultGameMode="/Script/ProfilingBlocks.ProfilingBlocksGameMode" 5 | 6 | [/Script/IOSRuntimeSettings.IOSRuntimeSettings] 7 | MinimumiOSVersion=IOS_11 8 | 9 | [/Script/Engine.Engine] 10 | +ActiveGameNameRedirects=(OldGameName="TP_ThirdPerson",NewGameName="/Script/ProfilingBlocks") 11 | +ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPerson",NewGameName="/Script/ProfilingBlocks") 12 | +ActiveClassRedirects=(OldClassName="TP_ThirdPersonGameMode",NewClassName="ProfilingBlocksGameMode") 13 | +ActiveClassRedirects=(OldClassName="TP_ThirdPersonCharacter",NewClassName="ProfilingBlocksCharacter") 14 | 15 | [/Script/HardwareTargeting.HardwareTargetingSettings] 16 | TargetedHardwareClass=Desktop 17 | AppliedTargetedHardwareClass=Desktop 18 | DefaultGraphicsPerformance=Maximum 19 | AppliedDefaultGraphicsPerformance=Maximum 20 | 21 | 22 | -------------------------------------------------------------------------------- /Profiling_Code/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GeneralProjectSettings] 2 | ProjectID=A24BC0AB4A8B4802F984D68073B692D0 3 | ProjectName=Third Person Game Template 4 | -------------------------------------------------------------------------------- /Profiling_Code/Content/Geometry/Meshes/1M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Geometry/Meshes/1M_Cube.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Geometry/Meshes/1M_Cube_Chamfer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Geometry/Meshes/1M_Cube_Chamfer.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Geometry/Meshes/CubeMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Geometry/Meshes/CubeMaterial.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Geometry/Meshes/TemplateFloor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Geometry/Meshes/TemplateFloor.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPersonIdle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPersonIdle.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPersonJump_End.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPersonJump_End.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPersonJump_Loop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPersonJump_Loop.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPersonJump_Start.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPersonJump_Start.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPersonRun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPersonRun.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPersonWalk.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPersonWalk.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Animations/ThirdPerson_Jump.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Animations/ThirdPerson_Jump.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/M_UE4Man_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/M_UE4Man_Body.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Mesh/SK_Mannequin.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Mesh/SK_Mannequin.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Textures/UE4Man_Logo_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Textures/UE4Man_Logo_N.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Textures/UE4_LOGO_CARD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Textures/UE4_LOGO_CARD.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Textures/UE4_Mannequin_MAT_MASKA.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Textures/UE4_Mannequin_MAT_MASKA.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/Mannequin/Character/Textures/UE4_Mannequin__normals.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/Mannequin/Character/Textures/UE4_Mannequin__normals.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPerson/Meshes/Bump_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPerson/Meshes/Bump_StaticMesh.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPerson/Meshes/RampMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPerson/Meshes/RampMaterial.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPerson/Meshes/Ramp_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPerson/Meshes/Ramp_StaticMesh.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPerson/Meshes/RightArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPerson/Meshes/RightArm_StaticMesh.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap -------------------------------------------------------------------------------- /Profiling_Code/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap_BuiltData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/Profiling_Code/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap_BuiltData.uasset -------------------------------------------------------------------------------- /Profiling_Code/ProfilingBlocks.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.24", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "ProfilingBlocks", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "Engine" 13 | ] 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Profiling_Code/README.md: -------------------------------------------------------------------------------- 1 | # Profiling Code using the Unreal Engine Profiler Tool 2 | 3 | Read the full tutorial here: https://www.orfeasel.com/profiling-code-blocks/ -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocks.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class ProfilingBlocksTarget : TargetRules 7 | { 8 | public ProfilingBlocksTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | ExtraModuleNames.Add("ProfilingBlocks"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocks/HeavyComp.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Components/ActorComponent.h" 7 | #include "HeavyComp.generated.h" 8 | 9 | 10 | UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) 11 | class PROFILINGBLOCKS_API UHeavyComp : public UActorComponent 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | // Sets default values for this component's properties 17 | UHeavyComp(); 18 | 19 | protected: 20 | // Called when the game starts 21 | virtual void BeginPlay() override; 22 | 23 | UPROPERTY(EditAnywhere) 24 | int32 PrimeNumbersToFind=5000; 25 | 26 | public: 27 | // Called every frame 28 | virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; 29 | 30 | UFUNCTION(BlueprintCallable) 31 | TArray FindPrimeNumbers(); 32 | }; 33 | -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocks/ProfilingBlocks.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class ProfilingBlocks : ModuleRules 6 | { 7 | public ProfilingBlocks(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay" }); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocks/ProfilingBlocks.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "ProfilingBlocks.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, ProfilingBlocks, "ProfilingBlocks" ); 7 | -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocks/ProfilingBlocks.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocks/ProfilingBlocksGameMode.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "ProfilingBlocksGameMode.h" 4 | #include "ProfilingBlocksCharacter.h" 5 | #include "UObject/ConstructorHelpers.h" 6 | 7 | AProfilingBlocksGameMode::AProfilingBlocksGameMode() 8 | { 9 | // set default pawn class to our Blueprinted character 10 | static ConstructorHelpers::FClassFinder PlayerPawnBPClass(TEXT("/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter")); 11 | if (PlayerPawnBPClass.Class != NULL) 12 | { 13 | DefaultPawnClass = PlayerPawnBPClass.Class; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocks/ProfilingBlocksGameMode.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "ProfilingBlocksGameMode.generated.h" 8 | 9 | UCLASS(minimalapi) 10 | class AProfilingBlocksGameMode : public AGameModeBase 11 | { 12 | GENERATED_BODY() 13 | 14 | public: 15 | AProfilingBlocksGameMode(); 16 | }; 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Profiling_Code/Source/ProfilingBlocksEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class ProfilingBlocksEditorTarget : TargetRules 7 | { 8 | public ProfilingBlocksEditorTarget(TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | ExtraModuleNames.Add("ProfilingBlocks"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Radar/README.md: -------------------------------------------------------------------------------- 1 | Radar System 2 | 3 | You can see the end result here: https://youtu.be/pAkldAb9Fvw 4 | 5 | Read the full tutorial here: http://orfeasel.com/cpp-radar/ -------------------------------------------------------------------------------- /RuntimeVertexPainting/BP_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/RuntimeVertexPainting/BP_Cube.uasset -------------------------------------------------------------------------------- /RuntimeVertexPainting/M_VertexColor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/RuntimeVertexPainting/M_VertexColor.uasset -------------------------------------------------------------------------------- /RuntimeVertexPainting/README.md: -------------------------------------------------------------------------------- 1 | # Runtime Vertex Painting 2 | 3 | Read the full tutorial here: https://wp.me/p6hvtS-rh 4 | -------------------------------------------------------------------------------- /RuntimeVertexPainting/VertexPainting.Build.cs: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class VertexPainting : ModuleRules 6 | { 7 | public VertexPainting(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "RenderCore" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { }); 14 | 15 | // Uncomment if you are using Slate UI 16 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 17 | 18 | // Uncomment if you are using online features 19 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 20 | 21 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /RuntimeVertexPainting/VertexPaintingFunctionLibrary.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Kismet/BlueprintFunctionLibrary.h" 7 | #include "VertexPaintingFunctionLibrary.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class VERTEXPAINTING_API UVertexPaintingFunctionLibrary : public UBlueprintFunctionLibrary 14 | { 15 | GENERATED_BODY() 16 | 17 | public: 18 | 19 | UFUNCTION(BlueprintCallable, Category = VertexPainting) 20 | static void PaintSMVertices(UStaticMeshComponent* SMComp); 21 | 22 | 23 | }; 24 | -------------------------------------------------------------------------------- /Save_Load/README.md: -------------------------------------------------------------------------------- 1 | Save / Load in UE4 2 | 3 | Read the full tutorial here: http://orfeasel.com/saving-and-loading-your-progress/ -------------------------------------------------------------------------------- /Save_Load/SaveActor.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "SaveLoadPost.h" 4 | #include "SaveActor.h" 5 | 6 | 7 | // Sets default values 8 | ASaveActor::ASaveActor() 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 | } 14 | 15 | // Called when the game starts or when spawned 16 | void ASaveActor::BeginPlay() 17 | { 18 | Super::BeginPlay(); 19 | 20 | } 21 | 22 | // Called every frame 23 | void ASaveActor::Tick(float DeltaTime) 24 | { 25 | Super::Tick(DeltaTime); 26 | 27 | } 28 | 29 | FArchive & operator<<(FArchive & Ar, ASaveActor & SaveActorRef) 30 | { 31 | Ar << SaveActorRef.Health; 32 | 33 | return Ar; 34 | } 35 | -------------------------------------------------------------------------------- /Save_Load/SaveActor.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "GameFramework/Actor.h" 6 | #include "SaveActor.generated.h" 7 | 8 | UCLASS() 9 | class SAVELOADPOST_API ASaveActor : public AActor 10 | { 11 | GENERATED_BODY() 12 | 13 | public: 14 | // Sets default values for this actor's properties 15 | ASaveActor(); 16 | 17 | protected: 18 | // Called when the game starts or when spawned 19 | virtual void BeginPlay() override; 20 | 21 | public: 22 | // Called every frame 23 | virtual void Tick(float DeltaTime) override; 24 | 25 | friend FArchive& operator<<(FArchive& Ar, ASaveActor& SaveActorRef); 26 | 27 | UPROPERTY(EditAnywhere) 28 | float Health; 29 | }; 30 | -------------------------------------------------------------------------------- /SkillsTree/README.md: -------------------------------------------------------------------------------- 1 | Skills Tree System 2 | 3 | You can see the end result here: https://youtu.be/iSxWvJQ5Hmo 4 | 5 | This system requires some Blueprint logic. Check out my post here: http://wp.me/p6hvtS-fM -------------------------------------------------------------------------------- /SkillsTree/character_bp_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/character_bp_1.png -------------------------------------------------------------------------------- /SkillsTree/character_bp_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/character_bp_2.png -------------------------------------------------------------------------------- /SkillsTree/character_springArms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/character_springArms.png -------------------------------------------------------------------------------- /SkillsTree/fireball_bp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/fireball_bp.png -------------------------------------------------------------------------------- /SkillsTree/skillWidget_designer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/skillWidget_designer.png -------------------------------------------------------------------------------- /SkillsTree/skillWidget_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/skillWidget_graph.png -------------------------------------------------------------------------------- /SkillsTree/skillscomp_properties_updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/skillscomp_properties_updated.png -------------------------------------------------------------------------------- /SkillsTree/skillspanel_designer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/skillspanel_designer.png -------------------------------------------------------------------------------- /SkillsTree/skillspanel_graph_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/skillspanel_graph_1.png -------------------------------------------------------------------------------- /SkillsTree/skillspanel_graph_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/skillspanel_graph_2.png -------------------------------------------------------------------------------- /SkillsTree/waterblob_bp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SkillsTree/waterblob_bp.png -------------------------------------------------------------------------------- /SniperElitesCameras/DummyEnemyCharacter.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "GameFramework/Character.h" 6 | #include "DummyEnemyCharacter.generated.h" 7 | 8 | UCLASS() 9 | class SELETHALSHOT_API ADummyEnemyCharacter : public ACharacter 10 | { 11 | GENERATED_BODY() 12 | 13 | protected: 14 | 15 | /*The blend time in seconds, from the projectile's camera to corresponding death camera*/ 16 | UPROPERTY(EditAnywhere) 17 | float DeathCameraBlendTime = 0.05f; 18 | 19 | UPROPERTY(VisibleAnywhere) 20 | USpringArmComponent* DeathSpringArmComp; 21 | 22 | UPROPERTY(VisibleAnywhere) 23 | UCameraComponent* DeathCameraComp; 24 | 25 | public: 26 | 27 | /*Transitions the active camera to the corresponding death camera*/ 28 | void EnableCameraTransition(); 29 | 30 | protected: 31 | 32 | /*The delay the camera will be reset right after the death of the enemy*/ 33 | UPROPERTY(EditAnywhere) 34 | float CameraResetDelay = 1.f; 35 | 36 | public: 37 | 38 | /*Kills the character and activates the FirstPerson camera again*/ 39 | void Die(); 40 | 41 | public: 42 | // Sets default values for this character's properties 43 | ADummyEnemyCharacter(); 44 | 45 | 46 | 47 | 48 | }; 49 | -------------------------------------------------------------------------------- /SniperElitesCameras/README.md: -------------------------------------------------------------------------------- 1 | Sniper Elite Killshot system 2 | 3 | You can see the end result here: https://youtu.be/cXkSgngFAdg 4 | 5 | Read the full tutorial here: http://wp.me/p6hvtS-gU -------------------------------------------------------------------------------- /SteamIntegration/README.md: -------------------------------------------------------------------------------- 1 | # Steam Sample projects 2 | 3 | Steam Integration: http://wp.me/p6hvtS-jJ 4 | Steam Achievements: http://wp.me/p6hvtS-jU -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/README.md: -------------------------------------------------------------------------------- 1 | # Steam Achievements project 2 | 3 | Read the full tutorial here: http://wp.me/p6hvtS-jU -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/SteamIntegrationTut.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class SteamIntegrationTut : ModuleRules 6 | { 7 | public SteamIntegrationTut(TargetInfo Target) 8 | { 9 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay" }); 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" }); 12 | 13 | DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/SteamIntegrationTut.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class SteamIntegrationTutTarget : TargetRules 7 | { 8 | public SteamIntegrationTutTarget(TargetInfo Target) 9 | { 10 | Type = TargetType.Game; 11 | bUsesSteam = true; 12 | } 13 | 14 | // 15 | // TargetRules interface. 16 | // 17 | 18 | public override void SetupBinaries( 19 | TargetInfo Target, 20 | ref List OutBuildBinaryConfigurations, 21 | ref List OutExtraModuleNames 22 | ) 23 | { 24 | OutExtraModuleNames.Add("SteamIntegrationTut"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/SteamIntegrationTut.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "SteamIntegrationTut.h" 4 | 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, SteamIntegrationTut, "SteamIntegrationTut" ); 7 | -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/SteamIntegrationTut.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #ifndef __STEAMINTEGRATIONTUT_H__ 4 | #define __STEAMINTEGRATIONTUT_H__ 5 | 6 | #include "EngineMinimal.h" 7 | #endif 8 | -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/SteamIntegrationTutEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class SteamIntegrationTutEditorTarget : TargetRules 7 | { 8 | public SteamIntegrationTutEditorTarget(TargetInfo Target) 9 | { 10 | Type = TargetType.Editor; 11 | } 12 | 13 | // 14 | // TargetRules interface. 15 | // 16 | 17 | public override void SetupBinaries( 18 | TargetInfo Target, 19 | ref List OutBuildBinaryConfigurations, 20 | ref List OutExtraModuleNames 21 | ) 22 | { 23 | OutExtraModuleNames.Add("SteamIntegrationTut"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/SteamIntegrationTutGameMode.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "SteamIntegrationTut.h" 4 | #include "SteamIntegrationTutGameMode.h" 5 | #include "SteamIntegrationTutCharacter.h" 6 | 7 | ASteamIntegrationTutGameMode::ASteamIntegrationTutGameMode() 8 | { 9 | // set default pawn class to our Blueprinted character 10 | static ConstructorHelpers::FClassFinder PlayerPawnBPClass(TEXT("/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter")); 11 | if (PlayerPawnBPClass.Class != NULL) 12 | { 13 | DefaultPawnClass = PlayerPawnBPClass.Class; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SteamIntegration/SteamAchievements/SteamIntegrationTutGameMode.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | #pragma once 3 | #include "GameFramework/GameModeBase.h" 4 | #include "SteamIntegrationTutGameMode.generated.h" 5 | 6 | UCLASS(minimalapi) 7 | class ASteamIntegrationTutGameMode : public AGameModeBase 8 | { 9 | GENERATED_BODY() 10 | 11 | public: 12 | ASteamIntegrationTutGameMode(); 13 | }; 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/.vs/SteamIntegrationTut/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/.vs/SteamIntegrationTut/v14/.suo -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/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 -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Config/DefaultEditorPerProjectUserSettings.ini: -------------------------------------------------------------------------------- 1 | [ContentBrowser] 2 | ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonCPP -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | [/Script/EngineSettings.GeneralProjectSettings] 2 | ProjectID=15D66C5E473FAC89ED3925BF7B0E309E 3 | ProjectName=Third Person Game Template 4 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Config/DefaultInput.ini: -------------------------------------------------------------------------------- 1 | [/Script/Engine.InputSettings] 2 | +ActionMappings=(ActionName="Jump", Key=SpaceBar) 3 | +ActionMappings=(ActionName="Jump", Key=Gamepad_FaceButton_Bottom) 4 | 5 | +AxisMappings=(AxisName="MoveForward", Key=W, Scale=1.f) 6 | +AxisMappings=(AxisName="MoveForward", Key=S, Scale=-1.f) 7 | +AxisMappings=(AxisName="MoveForward", Key=Up, Scale=1.f) 8 | +AxisMappings=(AxisName="MoveForward", Key=Down, Scale=-1.f) 9 | +AxisMappings=(AxisName="MoveForward", Key=Gamepad_LeftY, Scale=1.f) 10 | 11 | +AxisMappings=(AxisName="MoveRight", Key=A, Scale=-1.f) 12 | +AxisMappings=(AxisName="MoveRight", Key=D, Scale=1.f) 13 | +AxisMappings=(AxisName="MoveRight", Key=Gamepad_LeftX, Scale=1.f) 14 | 15 | +AxisMappings=(AxisName="TurnRate", Key=Gamepad_RightX, Scale=1.f) 16 | +AxisMappings=(AxisName="TurnRate", Key=Left, Scale=-1.f) 17 | +AxisMappings=(AxisName="TurnRate", Key=Right, Scale=1.f) 18 | +AxisMappings=(AxisName="Turn", Key=MouseX, Scale=1.f) 19 | 20 | +AxisMappings=(AxisName="LookUpRate", Key=Gamepad_RightY, Scale=1.f) 21 | +AxisMappings=(AxisName="LookUp", Key=MouseY, Scale=-1.f) 22 | 23 | +ActionMappings=(ActionName="ResetVR", Key=R) 24 | +ActionMappings=(ActionName="ResetVR",Key=MotionController_Left_Grip1,bShift=False,bCtrl=False,bAlt=False,bCmd=False) 25 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/1M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/1M_Cube.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/1M_Cube_Chamfer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/1M_Cube_Chamfer.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/CubeMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/CubeMaterial.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/TemplateFloor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Geometry/Meshes/TemplateFloor.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonIdle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonIdle.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonJump_End.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonJump_End.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonJump_Loop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonJump_Loop.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonJump_Start.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonJump_Start.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonRun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonRun.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonWalk.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPersonWalk.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPerson_AnimBP.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPerson_Jump.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Animations/ThirdPerson_Jump.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/M_UE4Man_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/M_UE4Man_Body.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Mesh/SK_Mannequin.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Mesh/SK_Mannequin.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4Man_Logo_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4Man_Logo_N.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4_LOGO_CARD.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4_LOGO_CARD.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4_Mannequin_MAT_MASKA.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4_Mannequin_MAT_MASKA.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4_Mannequin__normals.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/Mannequin/Character/Textures/UE4_Mannequin__normals.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/Bump_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/Bump_StaticMesh.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/CubeMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/CubeMaterial.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/RampMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/RampMaterial.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/Ramp_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/Ramp_StaticMesh.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/RightArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPerson/Meshes/RightArm_StaticMesh.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap_BuiltData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap_BuiltData.uasset -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Intermediate/CachedAssetRegistry.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/orfeasel/UE4-Cpp-Tutorials/2a7912d54a9c2c158b54ecd5512b5610cdd8aeaf/SteamIntegration/SteamIntegrationTut/Intermediate/CachedAssetRegistry.bin -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class SteamIntegrationTutTarget : TargetRules 7 | { 8 | public SteamIntegrationTutTarget(TargetInfo Target) 9 | { 10 | Type = TargetType.Game; 11 | bUsesSteam = true; 12 | } 13 | 14 | // 15 | // TargetRules interface. 16 | // 17 | 18 | public override void SetupBinaries( 19 | TargetInfo Target, 20 | ref List OutBuildBinaryConfigurations, 21 | ref List OutExtraModuleNames 22 | ) 23 | { 24 | OutExtraModuleNames.Add("SteamIntegrationTut"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut/SteamIntegrationTut.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class SteamIntegrationTut : ModuleRules 6 | { 7 | public SteamIntegrationTut(TargetInfo Target) 8 | { 9 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay" }); 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" }); 12 | 13 | DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut/SteamIntegrationTut.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "SteamIntegrationTut.h" 4 | 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, SteamIntegrationTut, "SteamIntegrationTut" ); 7 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut/SteamIntegrationTut.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #ifndef __STEAMINTEGRATIONTUT_H__ 4 | #define __STEAMINTEGRATIONTUT_H__ 5 | 6 | #include "EngineMinimal.h" 7 | #endif 8 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut/SteamIntegrationTutGameMode.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "SteamIntegrationTut.h" 4 | #include "SteamIntegrationTutGameMode.h" 5 | #include "SteamIntegrationTutCharacter.h" 6 | 7 | ASteamIntegrationTutGameMode::ASteamIntegrationTutGameMode() 8 | { 9 | // set default pawn class to our Blueprinted character 10 | static ConstructorHelpers::FClassFinder PlayerPawnBPClass(TEXT("/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter")); 11 | if (PlayerPawnBPClass.Class != NULL) 12 | { 13 | DefaultPawnClass = PlayerPawnBPClass.Class; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut/SteamIntegrationTutGameMode.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | #pragma once 3 | #include "GameFramework/GameModeBase.h" 4 | #include "SteamIntegrationTutGameMode.generated.h" 5 | 6 | UCLASS(minimalapi) 7 | class ASteamIntegrationTutGameMode : public AGameModeBase 8 | { 9 | GENERATED_BODY() 10 | 11 | public: 12 | ASteamIntegrationTutGameMode(); 13 | }; 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut/WinTrigger.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #include "SteamIntegrationTut.h" 4 | #include "WinTrigger.h" 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTut/WinTrigger.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "Engine/TriggerBox.h" 6 | #include "WinTrigger.generated.h" 7 | 8 | /** 9 | * 10 | */ 11 | UCLASS() 12 | class STEAMINTEGRATIONTUT_API AWinTrigger : public ATriggerBox 13 | { 14 | GENERATED_BODY() 15 | 16 | 17 | 18 | 19 | }; 20 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/Source/SteamIntegrationTutEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class SteamIntegrationTutEditorTarget : TargetRules 7 | { 8 | public SteamIntegrationTutEditorTarget(TargetInfo Target) 9 | { 10 | Type = TargetType.Editor; 11 | } 12 | 13 | // 14 | // TargetRules interface. 15 | // 16 | 17 | public override void SetupBinaries( 18 | TargetInfo Target, 19 | ref List OutBuildBinaryConfigurations, 20 | ref List OutExtraModuleNames 21 | ) 22 | { 23 | OutExtraModuleNames.Add("SteamIntegrationTut"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /SteamIntegration/SteamIntegrationTut/SteamIntegrationTut.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.14", 4 | "Category": "", 5 | "Description": "", 6 | "Modules": [ 7 | { 8 | "Name": "SteamIntegrationTut", 9 | "Type": "Runtime", 10 | "LoadingPhase": "Default", 11 | "AdditionalDependencies": [ 12 | "Engine" 13 | ] 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /Unit_Tests/Private/Tests/LevelTests.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "Tests/LevelTests.h" 5 | #include "Misc/AutomationTest.h" 6 | #include "Tests/AutomationEditorCommon.h" 7 | #include "Editor.h" 8 | #include "GameFramework/Character.h" 9 | #include "Kismet/GameplayStatics.h" 10 | #include "AutomationPost/AutomationPostCharacter.h" 11 | 12 | #if WITH_DEV_AUTOMATION_TESTS 13 | 14 | IMPLEMENT_SIMPLE_AUTOMATION_TEST(FValidPlayerLevelTest, "TestCategory.LevelRelated.Check for Valid Players", EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::EngineFilter) 15 | 16 | bool FValidPlayerLevelTest::RunTest(const FString& Parameters) 17 | { 18 | //Checking if there is at least one player placed in the world 19 | 20 | UWorld* World = GEditor->GetWorld(); 21 | { 22 | if (World) 23 | { 24 | ACharacter* PlayerChar = UGameplayStatics::GetPlayerCharacter(World,0); 25 | 26 | //For more tests check AutomationTest.h (lines 1347 - 1639) 27 | TestNotNull(TEXT("Testing if there is a player actor in level"),PlayerChar); 28 | } 29 | } 30 | 31 | return true; 32 | } 33 | 34 | #endif //WITH_DEV_AUTOMATION_TESTS -------------------------------------------------------------------------------- /Unit_Tests/Private/Tests/MathTests.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "Tests/MathTests.h" 5 | #include "AutomationPost/TestClass.h" //Contains FMathStruct 6 | #include "Misc/AutomationTest.h" 7 | 8 | 9 | #if WITH_DEV_AUTOMATION_TESTS 10 | 11 | IMPLEMENT_SIMPLE_AUTOMATION_TEST(FMathStructTest, "MathTests",EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::SmokeFilter) 12 | 13 | 14 | bool FMathStructTest::RunTest(const FString& Parameters) 15 | { 16 | //Addition tests 17 | { 18 | int32 ResultA = FMathStruct::Add(5,15); 19 | int32 ExpectedResultA = 19; 20 | float ResultB = FMathStruct::Add(3.5f,1.5f); 21 | float ExpectedResultB = 5.f; 22 | 23 | TestEqual(TEXT("Testing sum in integers"), ResultA, ExpectedResultA); 24 | TestEqual(TEXT("Testing sum in floats"),ResultB, ExpectedResultB); 25 | } 26 | 27 | return true; 28 | } 29 | 30 | 31 | #endif //WITH_DEV_AUTOMATION_TESTS -------------------------------------------------------------------------------- /Unit_Tests/Public/Tests/ComplexTest.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Misc/AutomationTest.h" //For IAutomationLatentCommand 7 | 8 | /** 9 | * A command that gets completed after a random delay 10 | */ 11 | class FRandomDelayCommand : public IAutomationLatentCommand 12 | { 13 | 14 | private: 15 | 16 | /* Min delay in seconds */ 17 | float MinDelay; 18 | 19 | /* Max delay in seconds */ 20 | float MaxDelay; 21 | 22 | /* False by default, true when we have started the test */ 23 | bool bTestStarted; 24 | 25 | /* The actual time in seconds we're going to delay */ 26 | float Delay; 27 | 28 | /* Stores the time we have started our test */ 29 | FDateTime StartedTime; 30 | 31 | public: 32 | 33 | FRandomDelayCommand(float Min, float Max) : MinDelay(Min), MaxDelay(Max), bTestStarted(false), Delay(0.f) {} 34 | 35 | /** 36 | * Will execute each frame and will stop once we return true 37 | */ 38 | virtual bool Update() override; 39 | }; -------------------------------------------------------------------------------- /Unit_Tests/Public/Tests/LevelTests.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | -------------------------------------------------------------------------------- /Unit_Tests/Public/Tests/MathTests.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | /** 8 | * 9 | */ 10 | //class AUTOMATIONPOST_API MathTests 11 | //{ 12 | //public: 13 | // MathTests(); 14 | // ~MathTests(); 15 | //}; 16 | -------------------------------------------------------------------------------- /Unit_Tests/README.md: -------------------------------------------------------------------------------- 1 | # Unit Testing in UE4 2 | 3 | Unit Testing post: https://www.orfeasel.com/unit-testing/ -------------------------------------------------------------------------------- /Unit_Tests/TestClass.cpp: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | 4 | #include "TestClass.h" 5 | 6 | int32 FMathStruct::Add(int32 A, int32 B) 7 | { 8 | return A+B; 9 | } 10 | 11 | float FMathStruct::Add(float A, float B) 12 | { 13 | return A+B; 14 | } 15 | -------------------------------------------------------------------------------- /Unit_Tests/TestClass.h: -------------------------------------------------------------------------------- 1 | // Fill out your copyright notice in the Description page of Project Settings. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | struct FMathStruct 8 | { 9 | static int32 Add(int32 A, int32 B); 10 | 11 | static float Add(float A, float B); 12 | }; --------------------------------------------------------------------------------