├── ExampleProject └── FixedCameraSystemExample │ ├── .gitignore │ ├── Config │ ├── DefaultEditor.ini │ ├── DefaultEngine.ini │ └── DefaultGame.ini │ ├── FixedCameraSystemExample.uproject │ └── Plugins │ └── FixedCameraSystem │ ├── Content │ ├── Blueprints │ │ ├── FixedCamera.uasset │ │ ├── FixedCameraRail.uasset │ │ ├── FixedCameraTrigger.uasset │ │ └── Visuals │ │ │ └── BP_Backdrop.uasset │ ├── Demo │ │ ├── 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_Female_Skeleton.uasset │ │ │ │ ├── SK_Mannequin_PhysicsAsset.uasset │ │ │ │ ├── SK_Mannequin_Skeleton.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 │ │ └── ThirdPersonBP │ │ │ ├── Blueprints │ │ │ ├── FixedCameraSystemCharacter.uasset │ │ │ ├── FixedCameraSystemGameMode.uasset │ │ │ └── FixedCameraSystemPlayerController.uasset │ │ │ ├── Maps │ │ │ └── FixedCameraSystemShowcase.umap │ │ │ └── ThirdPersonOverview.uasset │ ├── Materials │ │ ├── M_FixedCameraTrigger_Blue.uasset │ │ └── M_FixedCameraTrigger_Orange.uasset │ └── Textures │ │ ├── ButtonIcon_40x.uasset │ │ ├── CameraIcon.uasset │ │ ├── FixedCameraIcon_80x.uasset │ │ └── FixedCamera_Icon.uasset │ ├── FixedCameraSystem.uplugin │ ├── Resources │ ├── ButtonIcon_40x.png │ ├── FixedCameraSystem_Cover.png │ ├── FixedCamera_Thumbnail.png │ ├── Icon128.png │ ├── Spline_Thumbnail.png │ ├── Target_Thumbnail.png │ └── Trigger_Thumbnail.png │ └── Source │ └── FixedCameraSystem │ ├── FixedCameraSystem.Build.cs │ ├── Private │ ├── FixedCameraActor.cpp │ ├── FixedCameraPath.cpp │ ├── FixedCameraSystem.cpp │ └── FixedCameraTrigger.cpp │ └── Public │ ├── FixedCameraActor.h │ ├── FixedCameraPath.h │ ├── FixedCameraSystem.h │ └── FixedCameraTrigger.h ├── FixedCameraSystem ├── .gitignore ├── Content │ ├── Blueprints │ │ ├── FixedCamera.uasset │ │ ├── FixedCameraRail.uasset │ │ ├── FixedCameraTrigger.uasset │ │ └── Visuals │ │ │ └── BP_Backdrop.uasset │ ├── Demo │ │ ├── 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_Female_Skeleton.uasset │ │ │ │ ├── SK_Mannequin_PhysicsAsset.uasset │ │ │ │ ├── SK_Mannequin_Skeleton.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 │ │ └── ThirdPersonBP │ │ │ ├── Blueprints │ │ │ ├── FixedCameraSystemCharacter.uasset │ │ │ ├── FixedCameraSystemGameMode.uasset │ │ │ └── FixedCameraSystemPlayerController.uasset │ │ │ ├── Maps │ │ │ └── FixedCameraSystemShowcase.umap │ │ │ └── ThirdPersonOverview.uasset │ ├── Materials │ │ ├── M_FixedCameraTrigger_Blue.uasset │ │ └── M_FixedCameraTrigger_Orange.uasset │ └── Textures │ │ ├── ButtonIcon_40x.uasset │ │ ├── CameraIcon.uasset │ │ ├── FixedCameraIcon_80x.uasset │ │ └── FixedCamera_Icon.uasset ├── FixedCameraSystem.uplugin ├── Resources │ ├── ButtonIcon_40x.png │ ├── FixedCameraSystem_Cover.png │ ├── FixedCamera_Thumbnail.png │ ├── Icon128.png │ ├── Spline_Thumbnail.png │ ├── Target_Thumbnail.png │ └── Trigger_Thumbnail.png └── Source │ └── FixedCameraSystem │ ├── FixedCameraSystem.Build.cs │ ├── Private │ ├── FixedCameraActor.cpp │ ├── FixedCameraPath.cpp │ ├── FixedCameraSystem.cpp │ └── FixedCameraTrigger.cpp │ └── Public │ ├── FixedCameraActor.h │ ├── FixedCameraPath.h │ ├── FixedCameraSystem.h │ └── FixedCameraTrigger.h ├── LICENSE └── README.md /ExampleProject/FixedCameraSystemExample/.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio 2015 user specific files 2 | .vs/ 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | 22 | # Compiled Static libraries 23 | *.lai 24 | *.la 25 | *.a 26 | *.lib 27 | 28 | # Executables 29 | *.exe 30 | *.out 31 | *.app 32 | *.ipa 33 | 34 | # These project files can be generated by the engine 35 | *.xcodeproj 36 | *.xcworkspace 37 | *.sln 38 | *.suo 39 | *.opensdf 40 | *.sdf 41 | *.VC.db 42 | *.VC.opendb 43 | 44 | # Precompiled Assets 45 | SourceArt/**/*.png 46 | SourceArt/**/*.tga 47 | 48 | # Binary Files 49 | Binaries/* 50 | Plugins/*/Binaries/* 51 | 52 | # Builds 53 | Build/* 54 | 55 | # Whitelist PakBlacklist-.txt files 56 | !Build/*/ 57 | Build/*/** 58 | !Build/*/PakBlacklist*.txt 59 | 60 | # Don't ignore icon files in Build 61 | !Build/**/*.ico 62 | 63 | # Built data for maps 64 | *_BuiltData.uasset 65 | 66 | # Configuration files generated by the Editor 67 | Saved/* 68 | 69 | # Compiled source files for the engine to use 70 | Intermediate/* 71 | Plugins/*/Intermediate/* 72 | 73 | # Cache files for the editor to use 74 | DerivedDataCache/* 75 | -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Config/DefaultEditor.ini: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GameMapsSettings] 4 | GameDefaultMap=/FixedCameraSystem/Demo/ThirdPersonBP/Maps/FixedCameraSystemShowcase.FixedCameraSystemShowcase 5 | EditorStartupMap=/FixedCameraSystem/Demo/ThirdPersonBP/Maps/FixedCameraSystemShowcase.FixedCameraSystemShowcase 6 | 7 | [/Script/HardwareTargeting.HardwareTargetingSettings] 8 | TargetedHardwareClass=Desktop 9 | AppliedTargetedHardwareClass=Desktop 10 | DefaultGraphicsPerformance=Maximum 11 | AppliedDefaultGraphicsPerformance=Maximum 12 | 13 | [/Script/Engine.Engine] 14 | +ActiveGameNameRedirects=(OldGameName="TP_BlankBP",NewGameName="/Script/MyProject") 15 | +ActiveGameNameRedirects=(OldGameName="/Script/TP_BlankBP",NewGameName="/Script/MyProject") 16 | 17 | -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GeneralProjectSettings] 4 | ProjectID=C017E1AD48FC33355011E9BBF2AA8E8F 5 | CopyrightNotice=Copyright © 2023 Gerlogu 6 | 7 | -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/FixedCameraSystemExample.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "4.27", 4 | "Category": "", 5 | "Description": "" 6 | } -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/FixedCamera.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/FixedCamera.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/FixedCameraRail.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/FixedCameraRail.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/FixedCameraTrigger.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/FixedCameraTrigger.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/Visuals/BP_Backdrop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Blueprints/Visuals/BP_Backdrop.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube_Chamfer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube_Chamfer.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/CubeMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/CubeMaterial.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/TemplateFloor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Geometry/Meshes/TemplateFloor.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonIdle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonIdle.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_End.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_End.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Loop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Loop.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Start.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Start.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonRun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonRun.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonWalk.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonWalk.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_AnimBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_AnimBP.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_Jump.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_Jump.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MI_Female_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MI_Female_Body.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_Male_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_Male_Body.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_PhysicsAsset.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_Skeleton.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_Mask.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_N.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_Mask.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_N.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_Mask.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_N.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Bump_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Bump_StaticMesh.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RampMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RampMaterial.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Ramp_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Ramp_StaticMesh.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RightArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RightArm_StaticMesh.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemCharacter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemCharacter.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemGameMode.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemGameMode.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemPlayerController.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemPlayerController.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Maps/FixedCameraSystemShowcase.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/Maps/FixedCameraSystemShowcase.umap -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/ThirdPersonOverview.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Demo/ThirdPersonBP/ThirdPersonOverview.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Blue.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Blue.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Orange.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Orange.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/ButtonIcon_40x.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/ButtonIcon_40x.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/CameraIcon.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/CameraIcon.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/FixedCameraIcon_80x.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/FixedCameraIcon_80x.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/FixedCamera_Icon.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Content/Textures/FixedCamera_Icon.uasset -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/FixedCameraSystem.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.0", 5 | "FriendlyName": "Fixed Camera System", 6 | "Description": "Add fixed cameras to your levels.", 7 | "Category": "Other", 8 | "CreatedBy": "German Lopez", 9 | "CreatedByURL": "https://www.gerlogu.com", 10 | "DocsURL": "https://gerlogu.com/wp-content/uploads/2023/02/Fixed-Camera-System-Users-Manual.pdf", 11 | "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/f05ebeac98e64ad9ab12b1c41ecbf35e", 12 | "SupportURL": "https://gerlogu.com/", 13 | "CanContainContent": true, 14 | "IsBetaVersion": false, 15 | "IsExperimentalVersion": false, 16 | "Installed": false, 17 | "Modules": [ 18 | { 19 | "Name": "FixedCameraSystem", 20 | "Type": "Editor", 21 | "LoadingPhase": "PostEngineInit", 22 | "WhitelistPlatforms": [ "Win64", "Win32", "Mac", "IOS", "Android", "HTML5", "Linux", "XboxOne", "PS4", "Switch" ] 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/ButtonIcon_40x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/ButtonIcon_40x.png -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/FixedCameraSystem_Cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/FixedCameraSystem_Cover.png -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/FixedCamera_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/FixedCamera_Thumbnail.png -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Icon128.png -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Spline_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Spline_Thumbnail.png -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Target_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Target_Thumbnail.png -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Trigger_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Resources/Trigger_Thumbnail.png -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/FixedCameraSystem.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class FixedCameraSystem : ModuleRules 6 | { 7 | public FixedCameraSystem(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicIncludePaths.AddRange( 12 | new string[] { 13 | // ... add public include paths required here ... 14 | } 15 | ); 16 | 17 | 18 | PrivateIncludePaths.AddRange( 19 | new string[] { 20 | // ... add other private include paths required here ... 21 | } 22 | ); 23 | 24 | 25 | PublicDependencyModuleNames.AddRange( 26 | new string[] 27 | { 28 | "Core", 29 | // ... add other public dependencies that you statically link with here ... 30 | } 31 | ); 32 | 33 | 34 | PrivateDependencyModuleNames.AddRange( 35 | new string[] 36 | { 37 | "Projects", 38 | "InputCore", 39 | "UnrealEd", 40 | "ToolMenus", 41 | "CoreUObject", 42 | "Engine", 43 | "Slate", 44 | "SlateCore", 45 | // ... add private dependencies that you statically link with here ... 46 | } 47 | ); 48 | 49 | 50 | DynamicallyLoadedModuleNames.AddRange( 51 | new string[] 52 | { 53 | // ... add any modules that your module loads dynamically here ... 54 | } 55 | ); 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraActor.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraActor.h" 4 | 5 | #include "UObject/ConstructorHelpers.h" 6 | #include "Kismet/GameplayStatics.h" 7 | #include "Kismet/KismetMathLibrary.h" 8 | #include "GameFramework/PlayerController.h" 9 | #include "GameFramework/Character.h" 10 | #include "Math/UnrealMathVectorCommon.h" 11 | #include "Misc/MessageDialog.h" 12 | #include "Kismet/KismetSystemLibrary.h" 13 | #include "Math/Rotator.h" 14 | #include "Math/UnrealMathVectorCommon.h" 15 | #include "Math/Quat.h" 16 | 17 | #define LOCTEXT_NAMESPACE "FixedCameraSystem" 18 | 19 | #pragma region UNREAL_ENGINE_EVENTS 20 | /// 21 | /// Sets default values for this actor's properties. 22 | /// 23 | AFixedCameraActor::AFixedCameraActor() 24 | { 25 | PrimaryActorTick.bCanEverTick = true; 26 | 27 | Camera = CreateDefaultSubobject("Camera"); 28 | RootComponent = Camera; 29 | 30 | SetActorTickEnabled(false); 31 | } 32 | 33 | /// 34 | /// Called on Editor. 35 | /// 36 | /// Actor transform. 37 | void AFixedCameraActor::OnConstruction(const FTransform& Transform) 38 | { 39 | Super::OnConstruction(Transform); 40 | 41 | if (CameraType == ECameraType::Rail && CameraRail) 42 | { 43 | SetActorLocation(CameraRail->GetInitialLocation()); 44 | } 45 | } 46 | 47 | /// 48 | /// Called when the game starts or when spawned 49 | /// 50 | void AFixedCameraActor::BeginPlay() 51 | { 52 | Super::BeginPlay(); 53 | 54 | PlayerCharacterActorReference = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); 55 | 56 | SetActorTickEnabled(false); 57 | 58 | if (bDefaultCamera) 59 | { 60 | Cast(UGameplayStatics::GetPlayerController(GetWorld(), 0))->SetViewTarget(this); 61 | Camera->SetActive(true); 62 | } 63 | else 64 | { 65 | Camera->SetActive(false); 66 | } 67 | 68 | FText DialogText; 69 | 70 | switch (CameraType) 71 | { 72 | case ECameraType::Rail: 73 | if (!CameraRail) 74 | { 75 | DialogText = FText::Format( 76 | LOCTEXT("FFixedCameraActor", "ON RAIL CAMERA MODE\n------------------------\nPlease, ensure that a {0} reference is set in {1}."), 77 | FText::FromString(TEXT("Rail")), 78 | FText::FromString(UKismetSystemLibrary::GetDisplayName(this)) 79 | ); 80 | FMessageDialog::Open(EAppMsgType::Ok, DialogText); 81 | UKismetSystemLibrary::QuitGame(GetWorld(), UGameplayStatics::GetPlayerController(GetWorld(), 0), EQuitPreference::Quit, false); 82 | return; 83 | } 84 | break; 85 | default: 86 | break; 87 | } 88 | 89 | switch (CameraFocus) 90 | { 91 | case ECameraFocus::FocusOnObject: 92 | if (!FocusTarget) 93 | { 94 | DialogText = FText::Format( 95 | LOCTEXT("FFixedCameraActor", "FOCUS ON TARGET MODE\n--------------------------\nPlease, ensure that a {0} reference is set in {1}."), 96 | FText::FromString(TEXT("Target")), 97 | FText::FromString(UKismetSystemLibrary::GetDisplayName(this)) 98 | ); 99 | FMessageDialog::Open(EAppMsgType::Ok, DialogText); 100 | UKismetSystemLibrary::QuitGame(GetWorld(), UGameplayStatics::GetPlayerController(GetWorld(), 0), EQuitPreference::Quit, false); 101 | return; 102 | } 103 | break; 104 | case ECameraFocus::MiddleLocationPlayerAndObject: 105 | if (!FocusTarget) 106 | { 107 | DialogText = FText::Format( 108 | LOCTEXT("FFixedCameraActor", "FOCUS ON MIDDLE LOCATION BETWEEN PLAYER AND TARGET MODE\n--------------------------------------------------------------------\nPlease, ensure that a {0} reference is set in {1}."), 109 | FText::FromString(TEXT("Target")), 110 | FText::FromString(UKismetSystemLibrary::GetDisplayName(this)) 111 | ); 112 | FMessageDialog::Open(EAppMsgType::Ok, DialogText); 113 | UKismetSystemLibrary::QuitGame(GetWorld(), UGameplayStatics::GetPlayerController(GetWorld(), 0), EQuitPreference::Quit, false); 114 | return; 115 | } 116 | break; 117 | default: 118 | break; 119 | } 120 | 121 | SetActorTickEnabled(true); 122 | originalCameraRotation = Camera->GetComponentRotation(); 123 | } 124 | 125 | /// 126 | /// Called every frame. 127 | /// 128 | /// Time between frames. 129 | void AFixedCameraActor::Tick(float DeltaTime) 130 | { 131 | Super::Tick(DeltaTime); 132 | 133 | // Find player in case that the reference is not set. 134 | if (!PlayerCharacterActorReference) 135 | { 136 | PlayerCharacterActorReference = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); 137 | return; 138 | } 139 | 140 | // Calculate rail movement. 141 | if (CameraType == ECameraType::Rail) 142 | { 143 | if (bSmoothMovement) 144 | SetActorLocation(FMath::Lerp(GetActorLocation(), CameraRail->GetLocationAlongRail(CameraRail->GetRailLength() * FMath::Clamp(FVector::Distance(PlayerCharacterActorReference->GetActorLocation(), GetActorLocation()) / fRailTravellingDistance, 0.f, 1.f)), GetWorld()->GetDeltaSeconds() * fSmoothMovementSpeed)); 145 | else 146 | SetActorLocation(CameraRail->GetLocationAlongRail(CameraRail->GetRailLength() * FMath::Clamp(FVector::Distance(PlayerCharacterActorReference->GetActorLocation(), GetActorLocation()) / fRailTravellingDistance, 0.f, 1.f))); 147 | } 148 | 149 | // Stop event if no focus is selected. 150 | if (CameraFocus == ECameraFocus::NoFocus) 151 | { 152 | return; 153 | } 154 | 155 | FRotator targetRotation; 156 | 157 | // Calculate rotation. 158 | switch (CameraFocus) 159 | { 160 | case ECameraFocus::FocusOnPlayer: 161 | targetRotation = UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), PlayerCharacterActorReference->GetActorLocation()); 162 | break; 163 | case ECameraFocus::FocusOnObject: 164 | targetRotation = UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), FocusTarget->GetActorLocation()); 165 | break; 166 | case ECameraFocus::MiddleLocationPlayerAndInitialFocus: 167 | targetRotation = FRotator(FQuat::Slerp(FQuat(originalCameraRotation), FQuat(UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), PlayerCharacterActorReference->GetActorLocation())), fMiddlePointAlpha)); 168 | break; 169 | case ECameraFocus::MiddleLocationPlayerAndObject: 170 | targetRotation = FRotator(FQuat::Slerp(FQuat(UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), FocusTarget->GetActorLocation())), FQuat(UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), PlayerCharacterActorReference->GetActorLocation())), fMiddlePointAlpha)); 171 | break; 172 | default: 173 | break; 174 | } 175 | 176 | // Rotation smoothness. 177 | if (bSmoothRotation) 178 | Camera->SetWorldRotation(FMath::Lerp(Camera->GetComponentRotation(), targetRotation, GetWorld()->GetDeltaSeconds() * fSmoothRotationSpeed)); 179 | else 180 | Camera->SetWorldRotation(targetRotation); 181 | } 182 | #pragma endregion 183 | 184 | #pragma region CLASS_EVENTS 185 | /// 186 | /// Activates the camera actor. 187 | /// 188 | /// Smoothness quantity. 189 | /// Smoothness type. 190 | /// Smoothness blend exponent. 191 | void AFixedCameraActor::ActivateFixedCamera(float fSmoothTransition, TEnumAsByte BlendFunction, float fBlendExponent) 192 | { 193 | SetActorTickEnabled(true); 194 | Camera->SetActive(true); 195 | UGameplayStatics::GetPlayerController(this, 0)->SetViewTargetWithBlend(this, fSmoothTransition, BlendFunction, fBlendExponent); 196 | } 197 | 198 | /// 199 | /// Deactivates the camera actor. 200 | /// 201 | void AFixedCameraActor::DeactivateFixedCamera() 202 | { 203 | if(bAutoDeactivateTickMethod) 204 | SetActorTickEnabled(false); 205 | 206 | Camera->SetActive(false); 207 | } 208 | #pragma endregion -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraPath.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraPath.h" 4 | 5 | #pragma region UNREAL_ENGINE_EVENTS 6 | /// 7 | /// Sets default values for this actor's properties. 8 | /// 9 | AFixedCameraPath::AFixedCameraPath() 10 | { 11 | // Disable Tick for Optimization 12 | PrimaryActorTick.bCanEverTick = false; 13 | 14 | // Camera Rail Configuration 15 | CameraPath = CreateDefaultSubobject("Camera Path"); 16 | CameraPath->SetSelectedSplineSegmentColor(FColor::Green); 17 | CameraPath->SetUnselectedSplineSegmentColor(FColor::Green); 18 | CameraPath->SetTangentColor(FColor::Green); 19 | CameraPath->bVisualizeComponent = true; 20 | CameraPath->bShouldVisualizeScale = true; 21 | CameraPath->ScaleVisualizationWidth = 10; 22 | CameraPath->bAllowDiscontinuousSpline = false; 23 | 24 | // Setup Root Component 25 | RootComponent = CameraPath; 26 | } 27 | 28 | /// 29 | /// Called when the game starts or when spawned. 30 | /// 31 | void AFixedCameraPath::BeginPlay() 32 | { 33 | Super::BeginPlay(); 34 | } 35 | 36 | /// 37 | /// Called every frame 38 | /// 39 | /// Time between frames. 40 | void AFixedCameraPath::Tick(float DeltaTime) 41 | { 42 | Super::Tick(DeltaTime); 43 | } 44 | #pragma endregion 45 | 46 | #pragma region CLASS_EVENTS 47 | /// 48 | /// Returns rail length. 49 | /// 50 | float AFixedCameraPath::GetRailLength() 51 | { 52 | return CameraPath->GetSplineLength(); 53 | } 54 | 55 | /// 56 | /// Returns Location Along Rail. 57 | /// 58 | /// Travelling distance. 59 | /// 60 | FVector AFixedCameraPath::GetLocationAlongRail(float TravellingDistance) 61 | { 62 | return CameraPath->GetLocationAtDistanceAlongSpline(TravellingDistance, ESplineCoordinateSpace::World); 63 | } 64 | 65 | /// 66 | /// Returns first spline point location. 67 | /// 68 | FVector AFixedCameraPath::GetInitialLocation() 69 | { 70 | return CameraPath->GetLocationAtSplinePoint(0, ESplineCoordinateSpace::World); 71 | } 72 | #pragma endregion -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraSystem.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraSystem.h" 4 | #include "PlacementMode/Public/IPlacementModeModule.h" 5 | #include "ActorFactories/ActorFactoryBlueprint.h" 6 | #include "Interfaces/IPluginManager.h" 7 | #include "Runtime/Launch/Resources/Version.h" 8 | #include "Styling/SlateStyleRegistry.h" 9 | #include "Styling/SlateTypes.h" 10 | 11 | #define LOCTEXT_NAMESPACE "FixedCameraSystem" 12 | 13 | /// 14 | /// Executed during module initialization. 15 | /// 16 | void FFixedCameraSystemModule::StartupModule() 17 | { 18 | int Priority = 41; 19 | FPlacementCategoryInfo FixedCameraSystem( LOCTEXT("FixedCamera", "Fixed Camera"), "FixedCamera", TEXT("FixedCamera"), Priority); 20 | IPlacementModeModule::Get().RegisterPlacementCategory(FixedCameraSystem); 21 | 22 | // Find and register actors to category 23 | UBlueprint* FixedCamera = Cast(FSoftObjectPath(TEXT("/FixedCameraSystem/Blueprints/FixedCamera.FixedCamera")).TryLoad()); 24 | if (FixedCamera) 25 | { 26 | IPlacementModeModule::Get().RegisterPlaceableItem(FixedCameraSystem.UniqueHandle, MakeShareable(new FPlaceableItem( 27 | *UActorFactory::StaticClass(), 28 | FAssetData(FixedCamera, true), 29 | FName("FixedCamera_Thumbnail"), 30 | #if ENGINE_MAJOR_VERSION == 5 31 | FName("FixedCamera_Icon"), 32 | #endif 33 | TOptional(), 34 | TOptional(), 35 | NSLOCTEXT("PlacementMode", "Fixed Camera", "Fixed Camera") 36 | ))); 37 | } 38 | 39 | UBlueprint* FixedCameraPath = Cast(FSoftObjectPath(TEXT("/FixedCameraSystem/Blueprints/FixedCameraRail.FixedCameraRail")).TryLoad()); 40 | if (FixedCameraPath) 41 | { 42 | IPlacementModeModule::Get().RegisterPlaceableItem(FixedCameraSystem.UniqueHandle, MakeShareable(new FPlaceableItem( 43 | *UActorFactory::StaticClass(), 44 | FAssetData(FixedCameraPath, true), 45 | FName("Spline_Thumbnail"), 46 | #if ENGINE_MAJOR_VERSION == 5 47 | FName("Spline_Icon"), 48 | #endif 49 | TOptional(), 50 | TOptional(), 51 | NSLOCTEXT("PlacementMode", "Fixed Camera | Path", "Fixed Camera | Path") 52 | ))); 53 | } 54 | 55 | UBlueprint* FixedCameraTrigger = Cast(FSoftObjectPath(TEXT("/FixedCameraSystem/Blueprints/FixedCameraTrigger.FixedCameraTrigger")).TryLoad()); 56 | if (FixedCameraTrigger) 57 | { 58 | IPlacementModeModule::Get().RegisterPlaceableItem(FixedCameraSystem.UniqueHandle, MakeShareable(new FPlaceableItem( 59 | *UActorFactory::StaticClass(), 60 | FAssetData(FixedCameraTrigger, true), 61 | FName("Trigger_Thumbnail"), 62 | #if ENGINE_MAJOR_VERSION == 5 63 | FName("Trigger_Icon"), 64 | #endif 65 | TOptional(), 66 | TOptional(), 67 | NSLOCTEXT("PlacementMode", "Fixed Camera | Trigger", "Fixed Camera | Trigger") 68 | ))); 69 | } 70 | 71 | StyleSet = MakeShareable(new FSlateStyleSet("FixedCameraSystemStyle")); 72 | 73 | FString CameraIconPath = IPluginManager::Get().FindPlugin(TEXT("FixedCameraSystem"))->GetBaseDir() + TEXT("/Resources/"); 74 | 75 | StyleSet->Set("FixedCamera_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("FixedCamera_Thumbnail.png"), FVector2D(64.f, 64.f))); 76 | StyleSet->Set("Spline_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("Spline_Thumbnail.png"), FVector2D(64.f, 64.f))); 77 | StyleSet->Set("Trigger_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("Trigger_Thumbnail.png"), FVector2D(64.f, 64.f))); 78 | StyleSet->Set("Target_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("Target_Thumbnail.png"), FVector2D(64.f, 64.f))); 79 | 80 | FSlateStyleRegistry::RegisterSlateStyle(*StyleSet.Get()); 81 | } 82 | 83 | /// 84 | /// Executed during module shutdown. 85 | /// 86 | void FFixedCameraSystemModule::ShutdownModule() 87 | { 88 | if (IPlacementModeModule::IsAvailable()) 89 | { 90 | IPlacementModeModule::Get().UnregisterPlacementCategory("FixedCameraSystem"); 91 | } 92 | 93 | FSlateStyleRegistry::UnRegisterSlateStyle(*StyleSet.Get()); 94 | StyleSet.Reset(); 95 | } 96 | 97 | #undef LOCTEXT_NAMESPACE 98 | 99 | IMPLEMENT_MODULE(FFixedCameraSystemModule, FixedCameraSystem) -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraTrigger.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraTrigger.h" 4 | #include "UObject/ConstructorHelpers.h" 5 | 6 | #pragma region UNREAL_ENGINE_EVENTS 7 | /// 8 | /// Sets default values for this actor's properties. 9 | /// 10 | AFixedCameraTrigger::AFixedCameraTrigger() 11 | { 12 | PrimaryActorTick.bCanEverTick = false; 13 | 14 | Root = CreateDefaultSubobject("Root Component"); 15 | 16 | RootComponent = Root; 17 | 18 | Trigger1 = CreateDefaultSubobject("Trigger 1"); 19 | Trigger1->SetupAttachment(RootComponent); 20 | Trigger2 = CreateDefaultSubobject("Trigger 2"); 21 | Trigger2->SetupAttachment(RootComponent); 22 | 23 | DebugCollider1 = CreateDefaultSubobject("Debug Collider 1"); 24 | DebugCollider1->SetupAttachment(RootComponent); 25 | 26 | DebugCollider2 = CreateDefaultSubobject("Debug Collider 2"); 27 | DebugCollider2->SetupAttachment(RootComponent); 28 | 29 | #if WITH_EDITOR 30 | if (GEngine) 31 | { 32 | static ConstructorHelpers::FObjectFinder DebugMeshRef(TEXT("StaticMesh'/Engine/BasicShapes/Cube.Cube'")); 33 | if (DebugMeshRef.Object != nullptr && GEngine) 34 | DebugCollider1->SetStaticMesh(DebugMeshRef.Object); 35 | 36 | static ConstructorHelpers::FObjectFinder DebugMeshMaterialRef(TEXT("Material'/FixedCameraSystem/Materials/M_FixedCameraTrigger_Blue.M_FixedCameraTrigger_Blue'")); 37 | if (DebugMeshMaterialRef.Object != nullptr) 38 | { 39 | UMaterial* M = (UMaterial*)DebugMeshMaterialRef.Object; 40 | DebugCollider1->SetMaterial(0, M); 41 | } 42 | 43 | if (DebugMeshRef.Object != nullptr && GEngine) 44 | DebugCollider2->SetStaticMesh(DebugMeshRef.Object); 45 | 46 | static ConstructorHelpers::FObjectFinder DebugMeshMaterialRef2(TEXT("Material'/FixedCameraSystem/Materials/M_FixedCameraTrigger_Orange.M_FixedCameraTrigger_Orange'")); 47 | if (DebugMeshMaterialRef2.Object != nullptr) 48 | { 49 | UMaterial* M = (UMaterial*)DebugMeshMaterialRef2.Object; 50 | DebugCollider2->SetMaterial(0, M); 51 | } 52 | } 53 | #endif 54 | 55 | SetActorScale3D(FVector(1.f, 5, 5)); 56 | 57 | Trigger1->OnComponentBeginOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerBeginOverlap1); 58 | Trigger2->OnComponentBeginOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerBeginOverlap2); 59 | 60 | Trigger1->OnComponentEndOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerEndOverlap1); 61 | Trigger2->OnComponentEndOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerEndOverlap2); 62 | 63 | } 64 | 65 | /// 66 | /// Called in Editor. 67 | /// 68 | /// 69 | void AFixedCameraTrigger::OnConstruction(const FTransform& Transform) 70 | { 71 | SetActorScale3D(FVector(.1f, GetActorScale3D().Y, GetActorScale3D().Z)); 72 | 73 | Trigger1->SetRelativeLocation(FVector(-Trigger1->GetCollisionShape().GetExtent().X / GetActorScale3D().X, Trigger1->GetCollisionShape().GetExtent().Y / GetActorScale3D().Y, Trigger1->GetCollisionShape().GetExtent().Z / GetActorScale3D().Z)); 74 | Trigger2->SetRelativeLocation(FVector(Trigger2->GetCollisionShape().GetExtent().X / GetActorScale3D().X, Trigger1->GetCollisionShape().GetExtent().Y / GetActorScale3D().Y, Trigger2->GetCollisionShape().GetExtent().Z / GetActorScale3D().Z)); 75 | #if WITH_EDITOR 76 | if (GEngine) 77 | { 78 | DebugCollider1->SetWorldLocation(Trigger1->GetComponentLocation()); 79 | DebugCollider1->SetWorldRotation(Trigger1->GetComponentRotation()); 80 | DebugCollider1->SetWorldScale3D((Trigger1->GetCollisionShape().GetExtent() / 40.f) / 1.25f); 81 | 82 | DebugCollider2->SetWorldLocation(Trigger2->GetComponentLocation()); 83 | DebugCollider2->SetWorldRotation(Trigger2->GetComponentRotation()); 84 | DebugCollider2->SetWorldScale3D((Trigger2->GetCollisionShape().GetExtent() / 40.f) / 1.25f); 85 | } 86 | #endif 87 | 88 | DebugCollider1->SetCollisionEnabled(ECollisionEnabled::NoCollision); 89 | DebugCollider1->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore); 90 | 91 | DebugCollider2->SetCollisionEnabled(ECollisionEnabled::NoCollision); 92 | DebugCollider2->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore); 93 | } 94 | 95 | /// 96 | /// Called when the game starts or when spawned. 97 | /// 98 | void AFixedCameraTrigger::BeginPlay() 99 | { 100 | Super::BeginPlay(); 101 | 102 | DebugCollider1->SetVisibility(false); 103 | DebugCollider2->SetVisibility(false); 104 | } 105 | 106 | /// 107 | /// Called every frame. 108 | /// 109 | /// 110 | void AFixedCameraTrigger::Tick(float DeltaTime) 111 | { 112 | Super::Tick(DeltaTime); 113 | } 114 | #pragma endregion 115 | 116 | #pragma region CLASS_EVENTS 117 | /// 118 | /// Overlap event - Trigger 1. 119 | /// 120 | /// 121 | /// 122 | /// 123 | /// 124 | /// 125 | /// 126 | void AFixedCameraTrigger::OnTriggerBeginOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) 127 | { 128 | // Fill with custom code. 129 | } 130 | 131 | /// 132 | /// Overlap event - Trigger 2. 133 | /// 134 | /// 135 | /// 136 | /// 137 | /// 138 | /// 139 | /// 140 | void AFixedCameraTrigger::OnTriggerBeginOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) 141 | { 142 | // Fill with custom code. 143 | } 144 | 145 | /// 146 | /// End overlap event - Trigger 1. 147 | /// 148 | /// 149 | /// 150 | /// 151 | /// 152 | void AFixedCameraTrigger::OnTriggerEndOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) 153 | { 154 | if (!Camera1) 155 | return; 156 | 157 | if (Trigger2->IsOverlappingComponent(OtherComp)) 158 | { 159 | return; 160 | } 161 | 162 | Camera2->DeactivateFixedCamera(); 163 | Camera1->ActivateFixedCamera(fSmoothTransition1, BlendFunc1, fBlendExp1); 164 | } 165 | 166 | /// 167 | /// End overlap event - Trigger 2. 168 | /// 169 | /// 170 | /// 171 | /// 172 | /// 173 | void AFixedCameraTrigger::OnTriggerEndOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) 174 | { 175 | if (!Camera2) 176 | return; 177 | 178 | if (Trigger1->IsOverlappingComponent(OtherComp)) 179 | { 180 | return; 181 | } 182 | 183 | Camera1->DeactivateFixedCamera(); 184 | Camera2->ActivateFixedCamera(fSmoothTransition2, BlendFunc2, fBlendExp2); 185 | } 186 | #pragma endregion -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraActor.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "Components/SplineComponent.h" 8 | #include "Camera/CameraComponent.h" 9 | #include "Components/SceneComponent.h" 10 | #include "Components/BillboardComponent.h" 11 | #include "FixedCameraPath.h" 12 | #include "Camera/PlayerCameraManager.h" 13 | #include "FixedCameraActor.generated.h" 14 | 15 | UENUM() 16 | enum class ECameraFocus 17 | { 18 | NoFocus UMETA(DisplayName = "No Focus"), 19 | FocusOnPlayer UMETA(DisplayName = "Focus on Player"), 20 | FocusOnObject UMETA(DisplayName = "Focus on Target"), 21 | MiddleLocationPlayerAndInitialFocus UMETA(DisplayName = "Middle location (Player and Initial Focus)"), 22 | MiddleLocationPlayerAndObject UMETA(DisplayName = "Middle location (Player and Target)"), 23 | }; 24 | 25 | UENUM() 26 | enum class ECameraType 27 | { 28 | Static UMETA(DisplayName = "Static Camera"), 29 | Rail UMETA(DisplayName = "On Rail Camera") 30 | }; 31 | 32 | 33 | UCLASS() 34 | class FIXEDCAMERASYSTEM_API AFixedCameraActor : public AActor 35 | { 36 | GENERATED_BODY() 37 | public: 38 | /// 39 | /// Initializes this camera by default. 40 | /// 41 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Activate on Play", Tooltip = "Initializes this camera by default.")) 42 | bool bDefaultCamera; 43 | 44 | /// 45 | /// Defines the type of camera: Static or On Rail. 46 | /// 47 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", InlineCategoryProperty, Tooltip = "Defines the type of camera: Static or On Rail.")) 48 | ECameraType CameraType; 49 | 50 | /// 51 | /// Fixed Camera Rail actor reference. 52 | /// 53 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", EditCondition = "CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Fixed Camera Rail actor reference.")) 54 | class AFixedCameraPath* CameraRail; 55 | 56 | /// 57 | /// Distance to reach the last point of the rail. 58 | /// 59 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Rail Travelling Distance", EditCondition = "CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Distance to reach the last point of the rail.")) 60 | float fRailTravellingDistance = 2000.f; 61 | 62 | /// 63 | /// Determines if smooth movement will be used. 64 | /// 65 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Smooth Movement", EditCondition = "CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Determines if smooth movement will be used.")) 66 | bool bSmoothMovement = true; 67 | 68 | /// 69 | /// Smoothness movement velocity. 70 | /// 71 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Smooth Movement Speed", EditCondition = "bSmoothMovement && CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Smoothness movement velocity.", ClampMin = "0.0")) 72 | float fSmoothMovementSpeed = 3.f; 73 | 74 | /// 75 | /// Camera focus type. 76 | /// 77 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", Tooltip = "Camera focus type.")) 78 | ECameraFocus CameraFocus; 79 | 80 | /// 81 | /// Focus target actor reference. 82 | /// 83 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", EditCondition = "CameraFocus == ECameraFocus::FocusOnObject || CameraFocus == ECameraFocus::MiddleLocationPlayerAndObject", EditConditionHides, Tooltip = "Focus target actor reference.")) 84 | class AActor* FocusTarget; 85 | 86 | /// 87 | /// Middle point alpha (0 to 1). 88 | /// 89 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", EditCondition = "CameraFocus == ECameraFocus::MiddleLocationPlayerAndObject || CameraFocus == ECameraFocus::MiddleLocationPlayerAndInitialFocus", EditConditionHides, Tooltip = "Middle point alpha (0 to 1).", DisplayName = "Middle Point Alpha", ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0")) 90 | float fMiddlePointAlpha = 0.25f; 91 | 92 | /// 93 | /// Determines if smooth rotation will be used. 94 | /// 95 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", DisplayName = "Smooth Rotation", EditCondition = "CameraFocus != ECameraFocus::NoFocus", EditConditionHides, Tooltip = "Determines if smooth rotation will be used.")) 96 | bool bSmoothRotation = true; 97 | 98 | /// 99 | /// Smoothness rotation velocity. 100 | /// 101 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", DisplayName = "Smooth Rotation Speed", EditCondition = "bSmoothRotation && CameraFocus != ECameraFocus::NoFocus", EditConditionHides, Tooltip = "Smoothness rotation velocity.", ClampMin = "0.0")) 102 | float fSmoothRotationSpeed = 3.f; 103 | 104 | /// 105 | /// Auto-Disables tick after deactivating the camera. 106 | /// 107 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Optimization", DisplayName = "Auto-Deactivate Tick Method", Tooltip = "Auto-Disables tick after deactivating the camera.")) 108 | bool bAutoDeactivateTickMethod; 109 | 110 | /// 111 | /// Camera component (Root). 112 | /// 113 | UPROPERTY(VisibleDefaultsOnly, Category = FixedCamera) 114 | UCameraComponent* Camera; 115 | 116 | private: 117 | /// 118 | /// First frame camera rotation. 119 | /// 120 | FRotator originalCameraRotation; 121 | 122 | /// 123 | /// Player character reference. 124 | /// 125 | AActor* PlayerCharacterActorReference; 126 | 127 | public: 128 | 129 | /// 130 | /// Sets default values for this actor's properties. 131 | /// 132 | AFixedCameraActor(); 133 | 134 | protected: 135 | /// 136 | /// Called on Editor. 137 | /// 138 | /// Actor transform. 139 | virtual void OnConstruction(const FTransform& Transform) override; 140 | 141 | /// 142 | /// Called when the game starts or when spawned 143 | /// 144 | virtual void BeginPlay() override; 145 | 146 | public: 147 | /// 148 | /// Called every frame. 149 | /// 150 | /// Time between frames. 151 | virtual void Tick(float DeltaTime) override; 152 | 153 | /// 154 | /// Activates the camera actor. 155 | /// 156 | /// Smoothness quantity. 157 | /// Smoothness type. 158 | /// Smoothness blend exponent. 159 | void ActivateFixedCamera(float fSmoothTransition, TEnumAsByte BlendFunction, float fBlendExponent); 160 | 161 | /// 162 | /// Deactivates the camera actor. 163 | /// 164 | void DeactivateFixedCamera(); 165 | }; 166 | -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraPath.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "Components/SplineComponent.h" 8 | #include "FixedCameraPath.generated.h" 9 | 10 | UCLASS() 11 | class FIXEDCAMERASYSTEM_API AFixedCameraPath : public AActor 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | /// 17 | /// Camera Rail Path. 18 | /// 19 | UPROPERTY(VisibleAnywhere, meta = (Category = "Fixed Camera Path", Tooltip = "Camera Rail Path.")) 20 | USplineComponent* CameraPath; 21 | 22 | public: 23 | /// 24 | /// Sets default values for this actor's properties. 25 | /// 26 | AFixedCameraPath(); 27 | 28 | /// 29 | /// Returns rail length. 30 | /// 31 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Path", Tooltip = "Returns rail length.")) 32 | float GetRailLength(); 33 | 34 | /// 35 | /// Returns first spline point location. 36 | /// 37 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Path", Tooltip = "Returns first spline point location.")) 38 | FVector GetInitialLocation(); 39 | 40 | 41 | /// 42 | /// Returns Location Along Rail. 43 | /// 44 | /// Travelling distance. 45 | /// 46 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Path", Tooltip = "Returns Location Along Rail.")) 47 | FVector GetLocationAlongRail(float TravellingDistance); 48 | 49 | /// 50 | /// Called every frame 51 | /// 52 | /// Time between frames. 53 | virtual void Tick(float DeltaTime) override; 54 | 55 | protected: 56 | /// 57 | /// Called when the game starts or when spawned. 58 | /// 59 | virtual void BeginPlay() override; 60 | }; 61 | -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraSystem.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Modules/ModuleManager.h" 7 | #include "Templates/SubclassOf.h" 8 | #include "Styling/SlateStyle.h" 9 | 10 | class FFixedCameraSystemModule : public IModuleInterface 11 | { 12 | public: 13 | virtual void StartupModule() override; 14 | virtual void ShutdownModule() override; 15 | 16 | TSharedPtr StyleSet; 17 | }; -------------------------------------------------------------------------------- /ExampleProject/FixedCameraSystemExample/Plugins/FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraTrigger.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "Components/StaticMeshComponent.h" 8 | #include "Components/BoxComponent.h" 9 | #include "Components/SceneComponent.h" 10 | #include "FixedCameraActor.h" 11 | #include "Camera/PlayerCameraManager.h" 12 | #include "Components/BillboardComponent.h" 13 | #include "FixedCameraTrigger.generated.h" 14 | 15 | UCLASS() 16 | class FIXEDCAMERASYSTEM_API AFixedCameraTrigger : public AActor 17 | { 18 | GENERATED_BODY() 19 | 20 | private: 21 | /// 22 | /// Debug collider 1 (just for Editor). 23 | /// 24 | UStaticMeshComponent* DebugCollider1; 25 | 26 | /// 27 | /// Debug collider 2 (just for Editor). 28 | /// 29 | UStaticMeshComponent* DebugCollider2; 30 | 31 | /// 32 | /// Box collision trigger component 1. 33 | /// 34 | UBoxComponent* Trigger1; 35 | 36 | /// 37 | /// Box collision trigger component 2. 38 | /// 39 | UBoxComponent* Trigger2; 40 | 41 | public: 42 | /// 43 | /// Root scene component. 44 | /// 45 | UPROPERTY(VisibleDefaultsOnly, meta = (Category = "Fixed Camera Trigger")) 46 | USceneComponent* Root; 47 | 48 | /// 49 | /// Fixed camera actor reference 2. (Names are swapped in C++ to simplify the code). 50 | /// 51 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Camera 1 (Orange Trigger)", Tooltip = "Fixed camera actor reference 1.")) 52 | class AFixedCameraActor* Camera2; 53 | 54 | /// 55 | /// Smoothness transition quantity 2. 56 | /// 57 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Smooth Transition (Camera 1)", EditCondition = "Camera2 != nullptr", EditConditionHides, ClampMin=0.f, Tooltip = "Smoothness transition quantity 1.")) 58 | float fSmoothTransition2; 59 | 60 | /// 61 | /// Smoothness blend type 2. 62 | /// 63 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Type (Camera 1)", EditCondition = "Camera2 != nullptr && fSmoothTransition2 != 0", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness blend type 1.")) 64 | TEnumAsByte BlendFunc2; 65 | 66 | /// 67 | /// Smoothness blend exponent 2. 68 | /// 69 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Exponent (Camera 1)", EditCondition = "Camera2 != nullptr && fSmoothTransition2 != 0", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness blend exponent 1.")) 70 | float fBlendExp2; 71 | 72 | /// 73 | /// Fixed camera actor reference 1. 74 | /// 75 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Camera 2 (Blue Trigger)", Tooltip = "Fixed camera actor reference 2.")) 76 | class AFixedCameraActor* Camera1; 77 | 78 | /// 79 | /// Smoothness transition quantity 1. 80 | /// 81 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Smooth Transition (Camera 2)", EditCondition = "Camera1 != nullptr", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness transition quantity 2.")) 82 | float fSmoothTransition1; 83 | 84 | /// 85 | /// Smoothness blend type 1. 86 | /// 87 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Type (Camera 2)", EditCondition = "Camera1 != nullptr && fSmoothTransition1 != 0", EditConditionHides, Tooltip = "Smoothness blend type 2.")) 88 | TEnumAsByte BlendFunc1; 89 | 90 | /// 91 | /// Smoothness blend exponent 1. 92 | /// 93 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Exponent (Camera 2)", EditCondition = "Camera1 != nullptr && fSmoothTransition1 != 0", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness blend exponent 2.")) 94 | float fBlendExp1; 95 | 96 | public: 97 | /// 98 | /// Sets default values for this actor's properties. 99 | /// 100 | AFixedCameraTrigger(); 101 | 102 | private: 103 | /// 104 | /// Overlap event - Trigger 1. 105 | /// 106 | /// 107 | /// 108 | /// 109 | /// 110 | /// 111 | /// 112 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "Overlap event - Trigger 1.")) 113 | void OnTriggerBeginOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); 114 | 115 | /// 116 | /// Overlap event - Trigger 2. 117 | /// 118 | /// 119 | /// 120 | /// 121 | /// 122 | /// 123 | /// 124 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "Overlap event - Trigger 2.")) 125 | void OnTriggerBeginOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); 126 | 127 | /// 128 | /// End overlap event - Trigger 1. 129 | /// 130 | /// 131 | /// 132 | /// 133 | /// 134 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "End overlap event - Trigger 1.")) 135 | void OnTriggerEndOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); 136 | 137 | /// 138 | /// End overlap event - Trigger 2. 139 | /// 140 | /// 141 | /// 142 | /// 143 | /// 144 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "End overlap event - Trigger 2.")) 145 | void OnTriggerEndOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); 146 | 147 | protected: 148 | /// 149 | /// Called when the game starts or when spawned. 150 | /// 151 | virtual void BeginPlay() override; 152 | 153 | /// 154 | /// Called in Editor. 155 | /// 156 | /// 157 | virtual void OnConstruction(const FTransform& Transform) override; 158 | public: 159 | /// 160 | /// Called every frame. 161 | /// 162 | /// 163 | virtual void Tick(float DeltaTime) override; 164 | }; 165 | -------------------------------------------------------------------------------- /FixedCameraSystem/.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio 2015 user specific files 2 | .vs/ 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | 22 | # Compiled Static libraries 23 | *.lai 24 | *.la 25 | *.a 26 | *.lib 27 | 28 | # Executables 29 | *.exe 30 | *.out 31 | *.app 32 | *.ipa 33 | 34 | # These project files can be generated by the engine 35 | *.xcodeproj 36 | *.xcworkspace 37 | *.sln 38 | *.suo 39 | *.opensdf 40 | *.sdf 41 | *.VC.db 42 | *.VC.opendb 43 | 44 | # Precompiled Assets 45 | SourceArt/**/*.png 46 | SourceArt/**/*.tga 47 | 48 | # Binary Files 49 | Binaries/* 50 | Plugins/*/Binaries/* 51 | 52 | # Builds 53 | Build/* 54 | 55 | # Whitelist PakBlacklist-.txt files 56 | !Build/*/ 57 | Build/*/** 58 | !Build/*/PakBlacklist*.txt 59 | 60 | # Don't ignore icon files in Build 61 | !Build/**/*.ico 62 | 63 | # Built data for maps 64 | *_BuiltData.uasset 65 | 66 | # Configuration files generated by the Editor 67 | Saved/* 68 | 69 | # Compiled source files for the engine to use 70 | Intermediate/* 71 | Plugins/*/Intermediate/* 72 | 73 | # Cache files for the editor to use 74 | DerivedDataCache/* 75 | -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Blueprints/FixedCamera.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Blueprints/FixedCamera.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Blueprints/FixedCameraRail.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Blueprints/FixedCameraRail.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Blueprints/FixedCameraTrigger.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Blueprints/FixedCameraTrigger.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Blueprints/Visuals/BP_Backdrop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Blueprints/Visuals/BP_Backdrop.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube_Chamfer.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Geometry/Meshes/1M_Cube_Chamfer.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Geometry/Meshes/CubeMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Geometry/Meshes/CubeMaterial.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Geometry/Meshes/TemplateFloor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Geometry/Meshes/TemplateFloor.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonIdle.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonIdle.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_End.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_End.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Loop.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Loop.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Start.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonJump_Start.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonRun.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonRun.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonWalk.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPersonWalk.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_AnimBP.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_AnimBP.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_IdleRun_2D.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_Jump.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Animations/ThirdPerson_Jump.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MI_Female_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MI_Female_Body.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_Male_Body.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_Male_Body.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/M_UE4Man_ChestLogo.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_Plastic_Shiny_Beige_LOGO.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_PhysicsAsset.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Female_Skeleton.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_PhysicsAsset.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/SK_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Mesh/UE4_Mannequin_Skeleton.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_Mask.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Female_N.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_Mask.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_Male_N.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_Mask.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_Mask.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_N.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/Mannequin/Character/Textures/T_UE4Logo_N.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Bump_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Bump_StaticMesh.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/LeftArm_StaticMesh.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Linear_Stair_StaticMesh.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RampMaterial.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RampMaterial.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Ramp_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/Ramp_StaticMesh.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RightArm_StaticMesh.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPerson/Meshes/RightArm_StaticMesh.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemCharacter.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemCharacter.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemGameMode.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemGameMode.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemPlayerController.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPersonBP/Blueprints/FixedCameraSystemPlayerController.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPersonBP/Maps/FixedCameraSystemShowcase.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPersonBP/Maps/FixedCameraSystemShowcase.umap -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Demo/ThirdPersonBP/ThirdPersonOverview.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Demo/ThirdPersonBP/ThirdPersonOverview.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Blue.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Blue.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Orange.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Materials/M_FixedCameraTrigger_Orange.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Textures/ButtonIcon_40x.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Textures/ButtonIcon_40x.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Textures/CameraIcon.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Textures/CameraIcon.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Textures/FixedCameraIcon_80x.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Textures/FixedCameraIcon_80x.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/Content/Textures/FixedCamera_Icon.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Content/Textures/FixedCamera_Icon.uasset -------------------------------------------------------------------------------- /FixedCameraSystem/FixedCameraSystem.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.0", 5 | "FriendlyName": "Fixed Camera System", 6 | "Description": "Add fixed cameras to your levels.", 7 | "Category": "Other", 8 | "CreatedBy": "German Lopez", 9 | "CreatedByURL": "https://www.gerlogu.com", 10 | "DocsURL": "https://gerlogu.com/wp-content/uploads/2023/02/Fixed-Camera-System-Users-Manual.pdf", 11 | "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/f05ebeac98e64ad9ab12b1c41ecbf35e", 12 | "SupportURL": "https://gerlogu.com/", 13 | "CanContainContent": true, 14 | "IsBetaVersion": false, 15 | "IsExperimentalVersion": false, 16 | "Installed": false, 17 | "Modules": [ 18 | { 19 | "Name": "FixedCameraSystem", 20 | "Type": "Editor", 21 | "LoadingPhase": "PostEngineInit", 22 | "WhitelistPlatforms": [ "Win64", "Win32", "Mac", "IOS", "Android", "Linux", "XboxOne", "PS4", "Switch" ] 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /FixedCameraSystem/Resources/ButtonIcon_40x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Resources/ButtonIcon_40x.png -------------------------------------------------------------------------------- /FixedCameraSystem/Resources/FixedCameraSystem_Cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Resources/FixedCameraSystem_Cover.png -------------------------------------------------------------------------------- /FixedCameraSystem/Resources/FixedCamera_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Resources/FixedCamera_Thumbnail.png -------------------------------------------------------------------------------- /FixedCameraSystem/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Resources/Icon128.png -------------------------------------------------------------------------------- /FixedCameraSystem/Resources/Spline_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Resources/Spline_Thumbnail.png -------------------------------------------------------------------------------- /FixedCameraSystem/Resources/Target_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Resources/Target_Thumbnail.png -------------------------------------------------------------------------------- /FixedCameraSystem/Resources/Trigger_Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gerlogu/FixedCameraSystem/577dbbe36eae984c392de0c4d79a73361e126b89/FixedCameraSystem/Resources/Trigger_Thumbnail.png -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/FixedCameraSystem.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class FixedCameraSystem : ModuleRules 6 | { 7 | public FixedCameraSystem(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicIncludePaths.AddRange( 12 | new string[] { 13 | // ... add public include paths required here ... 14 | } 15 | ); 16 | 17 | 18 | PrivateIncludePaths.AddRange( 19 | new string[] { 20 | // ... add other private include paths required here ... 21 | } 22 | ); 23 | 24 | 25 | PublicDependencyModuleNames.AddRange( 26 | new string[] 27 | { 28 | "Core", 29 | // ... add other public dependencies that you statically link with here ... 30 | } 31 | ); 32 | 33 | 34 | PrivateDependencyModuleNames.AddRange( 35 | new string[] 36 | { 37 | "Projects", 38 | "InputCore", 39 | "UnrealEd", 40 | "ToolMenus", 41 | "CoreUObject", 42 | "Engine", 43 | "Slate", 44 | "SlateCore", 45 | // ... add private dependencies that you statically link with here ... 46 | } 47 | ); 48 | 49 | 50 | DynamicallyLoadedModuleNames.AddRange( 51 | new string[] 52 | { 53 | // ... add any modules that your module loads dynamically here ... 54 | } 55 | ); 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraActor.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraActor.h" 4 | 5 | #include "UObject/ConstructorHelpers.h" 6 | #include "Kismet/GameplayStatics.h" 7 | #include "Kismet/KismetMathLibrary.h" 8 | #include "GameFramework/PlayerController.h" 9 | #include "GameFramework/Character.h" 10 | #include "Math/UnrealMathVectorCommon.h" 11 | #include "Misc/MessageDialog.h" 12 | #include "Kismet/KismetSystemLibrary.h" 13 | #include "Math/Rotator.h" 14 | #include "Math/UnrealMathVectorCommon.h" 15 | #include "Math/Quat.h" 16 | 17 | #define LOCTEXT_NAMESPACE "FixedCameraSystem" 18 | 19 | #pragma region UNREAL_ENGINE_EVENTS 20 | /// 21 | /// Sets default values for this actor's properties. 22 | /// 23 | AFixedCameraActor::AFixedCameraActor() 24 | { 25 | PrimaryActorTick.bCanEverTick = true; 26 | 27 | Camera = CreateDefaultSubobject("Camera"); 28 | RootComponent = Camera; 29 | 30 | SetActorTickEnabled(false); 31 | } 32 | 33 | /// 34 | /// Called on Editor. 35 | /// 36 | /// Actor transform. 37 | void AFixedCameraActor::OnConstruction(const FTransform& Transform) 38 | { 39 | Super::OnConstruction(Transform); 40 | 41 | if (CameraType == ECameraType::Rail && CameraRail) 42 | { 43 | SetActorLocation(CameraRail->GetInitialLocation()); 44 | } 45 | } 46 | 47 | /// 48 | /// Called when the game starts or when spawned 49 | /// 50 | void AFixedCameraActor::BeginPlay() 51 | { 52 | Super::BeginPlay(); 53 | 54 | PlayerCharacterActorReference = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); 55 | 56 | SetActorTickEnabled(false); 57 | 58 | if (bDefaultCamera) 59 | { 60 | Cast(UGameplayStatics::GetPlayerController(GetWorld(), 0))->SetViewTarget(this); 61 | Camera->SetActive(true); 62 | } 63 | else 64 | { 65 | Camera->SetActive(false); 66 | } 67 | 68 | FText DialogText; 69 | 70 | switch (CameraType) 71 | { 72 | case ECameraType::Rail: 73 | if (!CameraRail) 74 | { 75 | DialogText = FText::Format( 76 | LOCTEXT("FFixedCameraActor", "ON RAIL CAMERA MODE\n------------------------\nPlease, ensure that a {0} reference is set in {1}."), 77 | FText::FromString(TEXT("Rail")), 78 | FText::FromString(UKismetSystemLibrary::GetDisplayName(this)) 79 | ); 80 | FMessageDialog::Open(EAppMsgType::Ok, DialogText); 81 | UKismetSystemLibrary::QuitGame(GetWorld(), UGameplayStatics::GetPlayerController(GetWorld(), 0), EQuitPreference::Quit, false); 82 | return; 83 | } 84 | break; 85 | default: 86 | break; 87 | } 88 | 89 | switch (CameraFocus) 90 | { 91 | case ECameraFocus::FocusOnObject: 92 | if (!FocusTarget) 93 | { 94 | DialogText = FText::Format( 95 | LOCTEXT("FFixedCameraActor", "FOCUS ON TARGET MODE\n--------------------------\nPlease, ensure that a {0} reference is set in {1}."), 96 | FText::FromString(TEXT("Target")), 97 | FText::FromString(UKismetSystemLibrary::GetDisplayName(this)) 98 | ); 99 | FMessageDialog::Open(EAppMsgType::Ok, DialogText); 100 | UKismetSystemLibrary::QuitGame(GetWorld(), UGameplayStatics::GetPlayerController(GetWorld(), 0), EQuitPreference::Quit, false); 101 | return; 102 | } 103 | break; 104 | case ECameraFocus::MiddleLocationPlayerAndObject: 105 | if (!FocusTarget) 106 | { 107 | DialogText = FText::Format( 108 | LOCTEXT("FFixedCameraActor", "FOCUS ON MIDDLE LOCATION BETWEEN PLAYER AND TARGET MODE\n--------------------------------------------------------------------\nPlease, ensure that a {0} reference is set in {1}."), 109 | FText::FromString(TEXT("Target")), 110 | FText::FromString(UKismetSystemLibrary::GetDisplayName(this)) 111 | ); 112 | FMessageDialog::Open(EAppMsgType::Ok, DialogText); 113 | UKismetSystemLibrary::QuitGame(GetWorld(), UGameplayStatics::GetPlayerController(GetWorld(), 0), EQuitPreference::Quit, false); 114 | return; 115 | } 116 | break; 117 | default: 118 | break; 119 | } 120 | 121 | SetActorTickEnabled(true); 122 | originalCameraRotation = Camera->GetComponentRotation(); 123 | } 124 | 125 | /// 126 | /// Called every frame. 127 | /// 128 | /// Time between frames. 129 | void AFixedCameraActor::Tick(float DeltaTime) 130 | { 131 | Super::Tick(DeltaTime); 132 | 133 | // Find player in case that the reference is not set. 134 | if (!PlayerCharacterActorReference) 135 | { 136 | PlayerCharacterActorReference = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0); 137 | return; 138 | } 139 | 140 | // Calculate rail movement. 141 | if (CameraType == ECameraType::Rail) 142 | { 143 | if (bSmoothMovement) 144 | SetActorLocation(FMath::Lerp(GetActorLocation(), CameraRail->GetLocationAlongRail(CameraRail->GetRailLength() * FMath::Clamp(FVector::Distance(PlayerCharacterActorReference->GetActorLocation(), GetActorLocation()) / fRailTravellingDistance, 0.f, 1.f)), GetWorld()->GetDeltaSeconds() * fSmoothMovementSpeed)); 145 | else 146 | SetActorLocation(CameraRail->GetLocationAlongRail(CameraRail->GetRailLength() * FMath::Clamp(FVector::Distance(PlayerCharacterActorReference->GetActorLocation(), GetActorLocation()) / fRailTravellingDistance, 0.f, 1.f))); 147 | } 148 | 149 | // Stop event if no focus is selected. 150 | if (CameraFocus == ECameraFocus::NoFocus) 151 | { 152 | return; 153 | } 154 | 155 | FRotator targetRotation; 156 | 157 | // Calculate rotation. 158 | switch (CameraFocus) 159 | { 160 | case ECameraFocus::FocusOnPlayer: 161 | targetRotation = UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), PlayerCharacterActorReference->GetActorLocation()); 162 | break; 163 | case ECameraFocus::FocusOnObject: 164 | targetRotation = UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), FocusTarget->GetActorLocation()); 165 | break; 166 | case ECameraFocus::MiddleLocationPlayerAndInitialFocus: 167 | targetRotation = FRotator(FQuat::Slerp(FQuat(originalCameraRotation), FQuat(UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), PlayerCharacterActorReference->GetActorLocation())), fMiddlePointAlpha)); 168 | break; 169 | case ECameraFocus::MiddleLocationPlayerAndObject: 170 | targetRotation = FRotator(FQuat::Slerp(FQuat(UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), FocusTarget->GetActorLocation())), FQuat(UKismetMathLibrary::FindLookAtRotation(Camera->GetComponentLocation(), PlayerCharacterActorReference->GetActorLocation())), fMiddlePointAlpha)); 171 | break; 172 | default: 173 | break; 174 | } 175 | 176 | // Rotation smoothness. 177 | if (bSmoothRotation) 178 | Camera->SetWorldRotation(FMath::Lerp(Camera->GetComponentRotation(), targetRotation, GetWorld()->GetDeltaSeconds() * fSmoothRotationSpeed)); 179 | else 180 | Camera->SetWorldRotation(targetRotation); 181 | } 182 | #pragma endregion 183 | 184 | #pragma region CLASS_EVENTS 185 | /// 186 | /// Activates the camera actor. 187 | /// 188 | /// Smoothness quantity. 189 | /// Smoothness type. 190 | /// Smoothness blend exponent. 191 | void AFixedCameraActor::ActivateFixedCamera(float fSmoothTransition, TEnumAsByte BlendFunction, float fBlendExponent) 192 | { 193 | SetActorTickEnabled(true); 194 | Camera->SetActive(true); 195 | UGameplayStatics::GetPlayerController(this, 0)->SetViewTargetWithBlend(this, fSmoothTransition, BlendFunction, fBlendExponent); 196 | } 197 | 198 | /// 199 | /// Deactivates the camera actor. 200 | /// 201 | void AFixedCameraActor::DeactivateFixedCamera() 202 | { 203 | if(bAutoDeactivateTickMethod) 204 | SetActorTickEnabled(false); 205 | 206 | Camera->SetActive(false); 207 | } 208 | #pragma endregion -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraPath.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraPath.h" 4 | 5 | #pragma region UNREAL_ENGINE_EVENTS 6 | /// 7 | /// Sets default values for this actor's properties. 8 | /// 9 | AFixedCameraPath::AFixedCameraPath() 10 | { 11 | // Disable Tick for Optimization 12 | PrimaryActorTick.bCanEverTick = false; 13 | 14 | // Camera Rail Configuration 15 | CameraPath = CreateDefaultSubobject("Camera Path"); 16 | CameraPath->SetSelectedSplineSegmentColor(FColor::Green); 17 | CameraPath->SetUnselectedSplineSegmentColor(FColor::Green); 18 | CameraPath->SetTangentColor(FColor::Green); 19 | CameraPath->bVisualizeComponent = true; 20 | CameraPath->bShouldVisualizeScale = true; 21 | CameraPath->ScaleVisualizationWidth = 10; 22 | CameraPath->bAllowDiscontinuousSpline = false; 23 | 24 | // Setup Root Component 25 | RootComponent = CameraPath; 26 | } 27 | 28 | /// 29 | /// Called when the game starts or when spawned. 30 | /// 31 | void AFixedCameraPath::BeginPlay() 32 | { 33 | Super::BeginPlay(); 34 | } 35 | 36 | /// 37 | /// Called every frame 38 | /// 39 | /// Time between frames. 40 | void AFixedCameraPath::Tick(float DeltaTime) 41 | { 42 | Super::Tick(DeltaTime); 43 | } 44 | #pragma endregion 45 | 46 | #pragma region CLASS_EVENTS 47 | /// 48 | /// Returns rail length. 49 | /// 50 | float AFixedCameraPath::GetRailLength() 51 | { 52 | return CameraPath->GetSplineLength(); 53 | } 54 | 55 | /// 56 | /// Returns Location Along Rail. 57 | /// 58 | /// Travelling distance. 59 | /// 60 | FVector AFixedCameraPath::GetLocationAlongRail(float TravellingDistance) 61 | { 62 | return CameraPath->GetLocationAtDistanceAlongSpline(TravellingDistance, ESplineCoordinateSpace::World); 63 | } 64 | 65 | /// 66 | /// Returns first spline point location. 67 | /// 68 | FVector AFixedCameraPath::GetInitialLocation() 69 | { 70 | return CameraPath->GetLocationAtSplinePoint(0, ESplineCoordinateSpace::World); 71 | } 72 | #pragma endregion -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraSystem.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraSystem.h" 4 | #include "PlacementMode/Public/IPlacementModeModule.h" 5 | #include "ActorFactories/ActorFactoryBlueprint.h" 6 | #include "Interfaces/IPluginManager.h" 7 | #include "Runtime/Launch/Resources/Version.h" 8 | #include "Styling/SlateStyleRegistry.h" 9 | #include "Styling/SlateTypes.h" 10 | 11 | #define LOCTEXT_NAMESPACE "FixedCameraSystem" 12 | 13 | /// 14 | /// Executed during module initialization. 15 | /// 16 | void FFixedCameraSystemModule::StartupModule() 17 | { 18 | int Priority = 41; 19 | FPlacementCategoryInfo FixedCameraSystem( LOCTEXT("FixedCamera", "Fixed Camera"), "FixedCamera", TEXT("FixedCamera"), Priority); 20 | IPlacementModeModule::Get().RegisterPlacementCategory(FixedCameraSystem); 21 | 22 | // Find and register actors to category 23 | UBlueprint* FixedCamera = Cast(FSoftObjectPath(TEXT("/FixedCameraSystem/Blueprints/FixedCamera.FixedCamera")).TryLoad()); 24 | if (FixedCamera) 25 | { 26 | IPlacementModeModule::Get().RegisterPlaceableItem(FixedCameraSystem.UniqueHandle, MakeShareable(new FPlaceableItem( 27 | *UActorFactory::StaticClass(), 28 | FAssetData(FixedCamera, true), 29 | FName("FixedCamera_Thumbnail"), 30 | #if ENGINE_MAJOR_VERSION == 5 31 | FName("FixedCamera_Icon"), 32 | #endif 33 | TOptional(), 34 | TOptional(), 35 | NSLOCTEXT("PlacementMode", "Fixed Camera", "Fixed Camera") 36 | ))); 37 | } 38 | 39 | UBlueprint* FixedCameraPath = Cast(FSoftObjectPath(TEXT("/FixedCameraSystem/Blueprints/FixedCameraRail.FixedCameraRail")).TryLoad()); 40 | if (FixedCameraPath) 41 | { 42 | IPlacementModeModule::Get().RegisterPlaceableItem(FixedCameraSystem.UniqueHandle, MakeShareable(new FPlaceableItem( 43 | *UActorFactory::StaticClass(), 44 | FAssetData(FixedCameraPath, true), 45 | FName("Spline_Thumbnail"), 46 | #if ENGINE_MAJOR_VERSION == 5 47 | FName("Spline_Icon"), 48 | #endif 49 | TOptional(), 50 | TOptional(), 51 | NSLOCTEXT("PlacementMode", "Fixed Camera | Path", "Fixed Camera | Path") 52 | ))); 53 | } 54 | 55 | UBlueprint* FixedCameraTrigger = Cast(FSoftObjectPath(TEXT("/FixedCameraSystem/Blueprints/FixedCameraTrigger.FixedCameraTrigger")).TryLoad()); 56 | if (FixedCameraTrigger) 57 | { 58 | IPlacementModeModule::Get().RegisterPlaceableItem(FixedCameraSystem.UniqueHandle, MakeShareable(new FPlaceableItem( 59 | *UActorFactory::StaticClass(), 60 | FAssetData(FixedCameraTrigger, true), 61 | FName("Trigger_Thumbnail"), 62 | #if ENGINE_MAJOR_VERSION == 5 63 | FName("Trigger_Icon"), 64 | #endif 65 | TOptional(), 66 | TOptional(), 67 | NSLOCTEXT("PlacementMode", "Fixed Camera | Trigger", "Fixed Camera | Trigger") 68 | ))); 69 | } 70 | 71 | StyleSet = MakeShareable(new FSlateStyleSet("FixedCameraSystemStyle")); 72 | 73 | FString CameraIconPath = IPluginManager::Get().FindPlugin(TEXT("FixedCameraSystem"))->GetBaseDir() + TEXT("/Resources/"); 74 | 75 | StyleSet->Set("FixedCamera_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("FixedCamera_Thumbnail.png"), FVector2D(64.f, 64.f))); 76 | StyleSet->Set("Spline_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("Spline_Thumbnail.png"), FVector2D(64.f, 64.f))); 77 | StyleSet->Set("Trigger_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("Trigger_Thumbnail.png"), FVector2D(64.f, 64.f))); 78 | StyleSet->Set("Target_Thumbnail", new FSlateImageBrush(CameraIconPath + TEXT("Target_Thumbnail.png"), FVector2D(64.f, 64.f))); 79 | 80 | FSlateStyleRegistry::RegisterSlateStyle(*StyleSet.Get()); 81 | } 82 | 83 | /// 84 | /// Executed during module shutdown. 85 | /// 86 | void FFixedCameraSystemModule::ShutdownModule() 87 | { 88 | if (IPlacementModeModule::IsAvailable()) 89 | { 90 | IPlacementModeModule::Get().UnregisterPlacementCategory("FixedCameraSystem"); 91 | } 92 | 93 | FSlateStyleRegistry::UnRegisterSlateStyle(*StyleSet.Get()); 94 | StyleSet.Reset(); 95 | } 96 | 97 | #undef LOCTEXT_NAMESPACE 98 | 99 | IMPLEMENT_MODULE(FFixedCameraSystemModule, FixedCameraSystem) -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Private/FixedCameraTrigger.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #include "FixedCameraTrigger.h" 4 | #include "UObject/ConstructorHelpers.h" 5 | 6 | #pragma region UNREAL_ENGINE_EVENTS 7 | /// 8 | /// Sets default values for this actor's properties. 9 | /// 10 | AFixedCameraTrigger::AFixedCameraTrigger() 11 | { 12 | PrimaryActorTick.bCanEverTick = false; 13 | 14 | Root = CreateDefaultSubobject("Root Component"); 15 | 16 | RootComponent = Root; 17 | 18 | Trigger1 = CreateDefaultSubobject("Trigger 1"); 19 | Trigger1->SetupAttachment(RootComponent); 20 | Trigger2 = CreateDefaultSubobject("Trigger 2"); 21 | Trigger2->SetupAttachment(RootComponent); 22 | 23 | DebugCollider1 = CreateDefaultSubobject("Debug Collider 1"); 24 | DebugCollider1->SetupAttachment(RootComponent); 25 | 26 | DebugCollider2 = CreateDefaultSubobject("Debug Collider 2"); 27 | DebugCollider2->SetupAttachment(RootComponent); 28 | 29 | #if WITH_EDITOR 30 | if (GEngine) 31 | { 32 | static ConstructorHelpers::FObjectFinder DebugMeshRef(TEXT("StaticMesh'/Engine/BasicShapes/Cube.Cube'")); 33 | if (DebugMeshRef.Object != nullptr && GEngine) 34 | DebugCollider1->SetStaticMesh(DebugMeshRef.Object); 35 | 36 | static ConstructorHelpers::FObjectFinder DebugMeshMaterialRef(TEXT("Material'/FixedCameraSystem/Materials/M_FixedCameraTrigger_Blue.M_FixedCameraTrigger_Blue'")); 37 | if (DebugMeshMaterialRef.Object != nullptr) 38 | { 39 | UMaterial* M = (UMaterial*)DebugMeshMaterialRef.Object; 40 | DebugCollider1->SetMaterial(0, M); 41 | } 42 | 43 | if (DebugMeshRef.Object != nullptr && GEngine) 44 | DebugCollider2->SetStaticMesh(DebugMeshRef.Object); 45 | 46 | static ConstructorHelpers::FObjectFinder DebugMeshMaterialRef2(TEXT("Material'/FixedCameraSystem/Materials/M_FixedCameraTrigger_Orange.M_FixedCameraTrigger_Orange'")); 47 | if (DebugMeshMaterialRef2.Object != nullptr) 48 | { 49 | UMaterial* M = (UMaterial*)DebugMeshMaterialRef2.Object; 50 | DebugCollider2->SetMaterial(0, M); 51 | } 52 | } 53 | #endif 54 | 55 | SetActorScale3D(FVector(1.f, 5, 5)); 56 | 57 | Trigger1->OnComponentBeginOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerBeginOverlap1); 58 | Trigger2->OnComponentBeginOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerBeginOverlap2); 59 | 60 | Trigger1->OnComponentEndOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerEndOverlap1); 61 | Trigger2->OnComponentEndOverlap.AddDynamic(this, &AFixedCameraTrigger::OnTriggerEndOverlap2); 62 | 63 | } 64 | 65 | /// 66 | /// Called in Editor. 67 | /// 68 | /// 69 | void AFixedCameraTrigger::OnConstruction(const FTransform& Transform) 70 | { 71 | SetActorScale3D(FVector(.1f, GetActorScale3D().Y, GetActorScale3D().Z)); 72 | 73 | Trigger1->SetRelativeLocation(FVector(-Trigger1->GetCollisionShape().GetExtent().X / GetActorScale3D().X, Trigger1->GetCollisionShape().GetExtent().Y / GetActorScale3D().Y, Trigger1->GetCollisionShape().GetExtent().Z / GetActorScale3D().Z)); 74 | Trigger2->SetRelativeLocation(FVector(Trigger2->GetCollisionShape().GetExtent().X / GetActorScale3D().X, Trigger1->GetCollisionShape().GetExtent().Y / GetActorScale3D().Y, Trigger2->GetCollisionShape().GetExtent().Z / GetActorScale3D().Z)); 75 | #if WITH_EDITOR 76 | if (GEngine) 77 | { 78 | DebugCollider1->SetWorldLocation(Trigger1->GetComponentLocation()); 79 | DebugCollider1->SetWorldRotation(Trigger1->GetComponentRotation()); 80 | DebugCollider1->SetWorldScale3D((Trigger1->GetCollisionShape().GetExtent() / 40.f) / 1.25f); 81 | 82 | DebugCollider2->SetWorldLocation(Trigger2->GetComponentLocation()); 83 | DebugCollider2->SetWorldRotation(Trigger2->GetComponentRotation()); 84 | DebugCollider2->SetWorldScale3D((Trigger2->GetCollisionShape().GetExtent() / 40.f) / 1.25f); 85 | } 86 | #endif 87 | 88 | DebugCollider1->SetCollisionEnabled(ECollisionEnabled::NoCollision); 89 | DebugCollider1->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore); 90 | 91 | DebugCollider2->SetCollisionEnabled(ECollisionEnabled::NoCollision); 92 | DebugCollider2->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Ignore); 93 | } 94 | 95 | /// 96 | /// Called when the game starts or when spawned. 97 | /// 98 | void AFixedCameraTrigger::BeginPlay() 99 | { 100 | Super::BeginPlay(); 101 | 102 | DebugCollider1->SetVisibility(false); 103 | DebugCollider2->SetVisibility(false); 104 | } 105 | 106 | /// 107 | /// Called every frame. 108 | /// 109 | /// 110 | void AFixedCameraTrigger::Tick(float DeltaTime) 111 | { 112 | Super::Tick(DeltaTime); 113 | } 114 | #pragma endregion 115 | 116 | #pragma region CLASS_EVENTS 117 | /// 118 | /// Overlap event - Trigger 1. 119 | /// 120 | /// 121 | /// 122 | /// 123 | /// 124 | /// 125 | /// 126 | void AFixedCameraTrigger::OnTriggerBeginOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) 127 | { 128 | // Fill with custom code. 129 | } 130 | 131 | /// 132 | /// Overlap event - Trigger 2. 133 | /// 134 | /// 135 | /// 136 | /// 137 | /// 138 | /// 139 | /// 140 | void AFixedCameraTrigger::OnTriggerBeginOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) 141 | { 142 | // Fill with custom code. 143 | } 144 | 145 | /// 146 | /// End overlap event - Trigger 1. 147 | /// 148 | /// 149 | /// 150 | /// 151 | /// 152 | void AFixedCameraTrigger::OnTriggerEndOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) 153 | { 154 | if (!Camera1) 155 | return; 156 | 157 | if (Trigger2->IsOverlappingComponent(OtherComp)) 158 | { 159 | return; 160 | } 161 | 162 | Camera2->DeactivateFixedCamera(); 163 | Camera1->ActivateFixedCamera(fSmoothTransition1, BlendFunc1, fBlendExp1); 164 | } 165 | 166 | /// 167 | /// End overlap event - Trigger 2. 168 | /// 169 | /// 170 | /// 171 | /// 172 | /// 173 | void AFixedCameraTrigger::OnTriggerEndOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) 174 | { 175 | if (!Camera2) 176 | return; 177 | 178 | if (Trigger1->IsOverlappingComponent(OtherComp)) 179 | { 180 | return; 181 | } 182 | 183 | Camera1->DeactivateFixedCamera(); 184 | Camera2->ActivateFixedCamera(fSmoothTransition2, BlendFunc2, fBlendExp2); 185 | } 186 | #pragma endregion -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraActor.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "Components/SplineComponent.h" 8 | #include "Camera/CameraComponent.h" 9 | #include "Components/SceneComponent.h" 10 | #include "Components/BillboardComponent.h" 11 | #include "FixedCameraPath.h" 12 | #include "Camera/PlayerCameraManager.h" 13 | #include "FixedCameraActor.generated.h" 14 | 15 | UENUM() 16 | enum class ECameraFocus 17 | { 18 | NoFocus UMETA(DisplayName = "No Focus"), 19 | FocusOnPlayer UMETA(DisplayName = "Focus on Player"), 20 | FocusOnObject UMETA(DisplayName = "Focus on Target"), 21 | MiddleLocationPlayerAndInitialFocus UMETA(DisplayName = "Middle location (Player and Initial Focus)"), 22 | MiddleLocationPlayerAndObject UMETA(DisplayName = "Middle location (Player and Target)"), 23 | }; 24 | 25 | UENUM() 26 | enum class ECameraType 27 | { 28 | Static UMETA(DisplayName = "Static Camera"), 29 | Rail UMETA(DisplayName = "On Rail Camera") 30 | }; 31 | 32 | 33 | UCLASS() 34 | class FIXEDCAMERASYSTEM_API AFixedCameraActor : public AActor 35 | { 36 | GENERATED_BODY() 37 | public: 38 | /// 39 | /// Initializes this camera by default. 40 | /// 41 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Activate on Play", Tooltip = "Initializes this camera by default.")) 42 | bool bDefaultCamera; 43 | 44 | /// 45 | /// Defines the type of camera: Static or On Rail. 46 | /// 47 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", InlineCategoryProperty, Tooltip = "Defines the type of camera: Static or On Rail.")) 48 | ECameraType CameraType; 49 | 50 | /// 51 | /// Fixed Camera Rail actor reference. 52 | /// 53 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", EditCondition = "CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Fixed Camera Rail actor reference.")) 54 | class AFixedCameraPath* CameraRail; 55 | 56 | /// 57 | /// Distance to reach the last point of the rail. 58 | /// 59 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Rail Travelling Distance", EditCondition = "CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Distance to reach the last point of the rail.")) 60 | float fRailTravellingDistance = 2000.f; 61 | 62 | /// 63 | /// Determines if smooth movement will be used. 64 | /// 65 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Smooth Movement", EditCondition = "CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Determines if smooth movement will be used.")) 66 | bool bSmoothMovement = true; 67 | 68 | /// 69 | /// Smoothness movement velocity. 70 | /// 71 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings", DisplayName = "Smooth Movement Speed", EditCondition = "bSmoothMovement && CameraType == ECameraType::Rail", EditConditionHides, Tooltip = "Smoothness movement velocity.", ClampMin = "0.0")) 72 | float fSmoothMovementSpeed = 3.f; 73 | 74 | /// 75 | /// Camera focus type. 76 | /// 77 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", Tooltip = "Camera focus type.")) 78 | ECameraFocus CameraFocus; 79 | 80 | /// 81 | /// Focus target actor reference. 82 | /// 83 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", EditCondition = "CameraFocus == ECameraFocus::FocusOnObject || CameraFocus == ECameraFocus::MiddleLocationPlayerAndObject", EditConditionHides, Tooltip = "Focus target actor reference.")) 84 | class AActor* FocusTarget; 85 | 86 | /// 87 | /// Middle point alpha (0 to 1). 88 | /// 89 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", EditCondition = "CameraFocus == ECameraFocus::MiddleLocationPlayerAndObject || CameraFocus == ECameraFocus::MiddleLocationPlayerAndInitialFocus", EditConditionHides, Tooltip = "Middle point alpha (0 to 1).", DisplayName = "Middle Point Alpha", ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0")) 90 | float fMiddlePointAlpha = 0.25f; 91 | 92 | /// 93 | /// Determines if smooth rotation will be used. 94 | /// 95 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", DisplayName = "Smooth Rotation", EditCondition = "CameraFocus != ECameraFocus::NoFocus", EditConditionHides, Tooltip = "Determines if smooth rotation will be used.")) 96 | bool bSmoothRotation = true; 97 | 98 | /// 99 | /// Smoothness rotation velocity. 100 | /// 101 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Focus Parameters", DisplayName = "Smooth Rotation Speed", EditCondition = "bSmoothRotation && CameraFocus != ECameraFocus::NoFocus", EditConditionHides, Tooltip = "Smoothness rotation velocity.", ClampMin = "0.0")) 102 | float fSmoothRotationSpeed = 3.f; 103 | 104 | /// 105 | /// Auto-Disables tick after deactivating the camera. 106 | /// 107 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Settings|Optimization", DisplayName = "Auto-Deactivate Tick Method", Tooltip = "Auto-Disables tick after deactivating the camera.")) 108 | bool bAutoDeactivateTickMethod; 109 | 110 | /// 111 | /// Camera component (Root). 112 | /// 113 | UPROPERTY(VisibleDefaultsOnly, Category = FixedCamera) 114 | UCameraComponent* Camera; 115 | 116 | private: 117 | /// 118 | /// First frame camera rotation. 119 | /// 120 | FRotator originalCameraRotation; 121 | 122 | /// 123 | /// Player character reference. 124 | /// 125 | AActor* PlayerCharacterActorReference; 126 | 127 | public: 128 | 129 | /// 130 | /// Sets default values for this actor's properties. 131 | /// 132 | AFixedCameraActor(); 133 | 134 | protected: 135 | /// 136 | /// Called on Editor. 137 | /// 138 | /// Actor transform. 139 | virtual void OnConstruction(const FTransform& Transform) override; 140 | 141 | /// 142 | /// Called when the game starts or when spawned 143 | /// 144 | virtual void BeginPlay() override; 145 | 146 | public: 147 | /// 148 | /// Called every frame. 149 | /// 150 | /// Time between frames. 151 | virtual void Tick(float DeltaTime) override; 152 | 153 | /// 154 | /// Activates the camera actor. 155 | /// 156 | /// Smoothness quantity. 157 | /// Smoothness type. 158 | /// Smoothness blend exponent. 159 | void ActivateFixedCamera(float fSmoothTransition, TEnumAsByte BlendFunction, float fBlendExponent); 160 | 161 | /// 162 | /// Deactivates the camera actor. 163 | /// 164 | void DeactivateFixedCamera(); 165 | }; 166 | -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraPath.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "Components/SplineComponent.h" 8 | #include "FixedCameraPath.generated.h" 9 | 10 | UCLASS() 11 | class FIXEDCAMERASYSTEM_API AFixedCameraPath : public AActor 12 | { 13 | GENERATED_BODY() 14 | 15 | public: 16 | /// 17 | /// Camera Rail Path. 18 | /// 19 | UPROPERTY(VisibleAnywhere, meta = (Category = "Fixed Camera Path", Tooltip = "Camera Rail Path.")) 20 | USplineComponent* CameraPath; 21 | 22 | public: 23 | /// 24 | /// Sets default values for this actor's properties. 25 | /// 26 | AFixedCameraPath(); 27 | 28 | /// 29 | /// Returns rail length. 30 | /// 31 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Path", Tooltip = "Returns rail length.")) 32 | float GetRailLength(); 33 | 34 | /// 35 | /// Returns first spline point location. 36 | /// 37 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Path", Tooltip = "Returns first spline point location.")) 38 | FVector GetInitialLocation(); 39 | 40 | 41 | /// 42 | /// Returns Location Along Rail. 43 | /// 44 | /// Travelling distance. 45 | /// 46 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Path", Tooltip = "Returns Location Along Rail.")) 47 | FVector GetLocationAlongRail(float TravellingDistance); 48 | 49 | /// 50 | /// Called every frame 51 | /// 52 | /// Time between frames. 53 | virtual void Tick(float DeltaTime) override; 54 | 55 | protected: 56 | /// 57 | /// Called when the game starts or when spawned. 58 | /// 59 | virtual void BeginPlay() override; 60 | }; 61 | -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraSystem.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Modules/ModuleManager.h" 7 | #include "Templates/SubclassOf.h" 8 | #include "Styling/SlateStyle.h" 9 | 10 | class FFixedCameraSystemModule : public IModuleInterface 11 | { 12 | public: 13 | virtual void StartupModule() override; 14 | virtual void ShutdownModule() override; 15 | 16 | TSharedPtr StyleSet; 17 | }; -------------------------------------------------------------------------------- /FixedCameraSystem/Source/FixedCameraSystem/Public/FixedCameraTrigger.h: -------------------------------------------------------------------------------- 1 | // Copyright 2023 German Lopez. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/Actor.h" 7 | #include "Components/StaticMeshComponent.h" 8 | #include "Components/BoxComponent.h" 9 | #include "Components/SceneComponent.h" 10 | #include "FixedCameraActor.h" 11 | #include "Camera/PlayerCameraManager.h" 12 | #include "Components/BillboardComponent.h" 13 | #include "FixedCameraTrigger.generated.h" 14 | 15 | UCLASS() 16 | class FIXEDCAMERASYSTEM_API AFixedCameraTrigger : public AActor 17 | { 18 | GENERATED_BODY() 19 | 20 | private: 21 | /// 22 | /// Debug collider 1 (just for Editor). 23 | /// 24 | UStaticMeshComponent* DebugCollider1; 25 | 26 | /// 27 | /// Debug collider 2 (just for Editor). 28 | /// 29 | UStaticMeshComponent* DebugCollider2; 30 | 31 | /// 32 | /// Box collision trigger component 1. 33 | /// 34 | UBoxComponent* Trigger1; 35 | 36 | /// 37 | /// Box collision trigger component 2. 38 | /// 39 | UBoxComponent* Trigger2; 40 | 41 | public: 42 | /// 43 | /// Root scene component. 44 | /// 45 | UPROPERTY(VisibleDefaultsOnly, meta = (Category = "Fixed Camera Trigger")) 46 | USceneComponent* Root; 47 | 48 | /// 49 | /// Fixed camera actor reference 2. (Names are swapped in C++ to simplify the code). 50 | /// 51 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Camera 1 (Orange Trigger)", Tooltip = "Fixed camera actor reference 1.")) 52 | class AFixedCameraActor* Camera2; 53 | 54 | /// 55 | /// Smoothness transition quantity 2. 56 | /// 57 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Smooth Transition (Camera 1)", EditCondition = "Camera2 != nullptr", EditConditionHides, ClampMin=0.f, Tooltip = "Smoothness transition quantity 1.")) 58 | float fSmoothTransition2; 59 | 60 | /// 61 | /// Smoothness blend type 2. 62 | /// 63 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Type (Camera 1)", EditCondition = "Camera2 != nullptr && fSmoothTransition2 != 0", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness blend type 1.")) 64 | TEnumAsByte BlendFunc2; 65 | 66 | /// 67 | /// Smoothness blend exponent 2. 68 | /// 69 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Exponent (Camera 1)", EditCondition = "Camera2 != nullptr && fSmoothTransition2 != 0", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness blend exponent 1.")) 70 | float fBlendExp2; 71 | 72 | /// 73 | /// Fixed camera actor reference 1. 74 | /// 75 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Camera 2 (Blue Trigger)", Tooltip = "Fixed camera actor reference 2.")) 76 | class AFixedCameraActor* Camera1; 77 | 78 | /// 79 | /// Smoothness transition quantity 1. 80 | /// 81 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Smooth Transition (Camera 2)", EditCondition = "Camera1 != nullptr", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness transition quantity 2.")) 82 | float fSmoothTransition1; 83 | 84 | /// 85 | /// Smoothness blend type 1. 86 | /// 87 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Type (Camera 2)", EditCondition = "Camera1 != nullptr && fSmoothTransition1 != 0", EditConditionHides, Tooltip = "Smoothness blend type 2.")) 88 | TEnumAsByte BlendFunc1; 89 | 90 | /// 91 | /// Smoothness blend exponent 1. 92 | /// 93 | UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (Category = "Fixed Camera Trigger Settings", DisplayName = "Blend Exponent (Camera 2)", EditCondition = "Camera1 != nullptr && fSmoothTransition1 != 0", EditConditionHides, ClampMin = 0.f, Tooltip = "Smoothness blend exponent 2.")) 94 | float fBlendExp1; 95 | 96 | public: 97 | /// 98 | /// Sets default values for this actor's properties. 99 | /// 100 | AFixedCameraTrigger(); 101 | 102 | private: 103 | /// 104 | /// Overlap event - Trigger 1. 105 | /// 106 | /// 107 | /// 108 | /// 109 | /// 110 | /// 111 | /// 112 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "Overlap event - Trigger 1.")) 113 | void OnTriggerBeginOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); 114 | 115 | /// 116 | /// Overlap event - Trigger 2. 117 | /// 118 | /// 119 | /// 120 | /// 121 | /// 122 | /// 123 | /// 124 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "Overlap event - Trigger 2.")) 125 | void OnTriggerBeginOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); 126 | 127 | /// 128 | /// End overlap event - Trigger 1. 129 | /// 130 | /// 131 | /// 132 | /// 133 | /// 134 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "End overlap event - Trigger 1.")) 135 | void OnTriggerEndOverlap1(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); 136 | 137 | /// 138 | /// End overlap event - Trigger 2. 139 | /// 140 | /// 141 | /// 142 | /// 143 | /// 144 | UFUNCTION(BlueprintCallable, meta = (Category = "Fixed Camera Trigger", Tooltip = "End overlap event - Trigger 2.")) 145 | void OnTriggerEndOverlap2(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); 146 | 147 | protected: 148 | /// 149 | /// Called when the game starts or when spawned. 150 | /// 151 | virtual void BeginPlay() override; 152 | 153 | /// 154 | /// Called in Editor. 155 | /// 156 | /// 157 | virtual void OnConstruction(const FTransform& Transform) override; 158 | public: 159 | /// 160 | /// Called every frame. 161 | /// 162 | /// 163 | virtual void Tick(float DeltaTime) override; 164 | }; 165 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Germán López 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fixed Camera System 2 | ![Version](https://img.shields.io/badge/Version-1.0.3-3FB911?style=flat&logo&logoColor=white&labelColor=4d4d4d) 3 | ![Asset Type](https://img.shields.io/badge/Code_Plugin-d9ad00?style=flat) 4 | ![Asset Stars](https://img.shields.io/github/stars/gerlogu/FixedCameraSystem?style=social)
5 | Add cinematographic cameras by easily dragging them into the scene and use different tools to configure their style and path. 6 | 7 | ![Thumbnail](https://user-images.githubusercontent.com/55363746/223795282-e84bbf4b-81de-4f7c-919e-223c3363df94.png) 8 | 9 | #####
If you find this asset useful, please support it by giving a "★ Star" to the repository, thank you!
10 | 11 | ## Description 12 | ***Latest Update:*** _March 20th, 2023_ 13 | 14 | ***[Documentation](https://gerlogu.com/wp-content/uploads/2023/02/Fixed-Camera-System-Users-Manual.pdf) / [Official Website](https://gerlogu.com) / [GitHub Profile](https://github.com/gerlogu)*** 15 | 16 | 17 | ### 📚 Overview 18 | Fixed Camera System includes different tools and actors to easily configure a scene with static and on-rail cameras. If you need help in order to include the actors into a map, read the [User's Manual](https://gerlogu.com/wp-content/uploads/2023/02/Fixed-Camera-System-Users-Manual.pdf). 19 | 20 | ### 📣 Content 21 | 22 | This is what you can modify: 23 | 24 | - Tool parameters 25 | - Camera parameters 26 | - C++ classes 27 | 28 | ### 🛠 How to Use 29 | 30 | Read the manual here: [[ENGLISH](https://gerlogu.com/wp-content/uploads/2023/02/Fixed-Camera-System-Users-Manual.pdf)] 31 | 32 | ### 🗣 Contact 33 | 34 | If you have any questions, contact me and I will answer you and include your question into the User's Manual. 35 | 36 | - **OFFICIAL WEBSITE:** www.gerlogu.com 37 | - **CONTACT EMAIL:** contact@gerlogu.com 38 | 39 | 40 | ## Technical Information 41 | 42 | **Features:** 43 | 44 | - Easily add the various actors and tools by dragging them into the scene. 45 | - A custom tab has been added to the Editor to facilitate the placement of actors. 46 | - Example scene INCLUDED. 47 | - Open for future updates. 48 | 49 | **Code Modules:** 50 | - FFixedCameraSystemModule: Editor 51 | 52 | **Number of Blueprints:** 5 53 | 54 | **Number of C++ Classes:** 4 55 | 56 | **Input:** 57 | 58 | *Action Mappings* 59 | - Shoot: Gamepad Right Trigger | Space Bar 60 | 61 | *Axis Mappings* 62 | - HorizontalMovement: D (1.0) | A (-1.0) | Gamepad Left Thumbstick X-Axis (1.0)] 63 | - VerticalMovement: W (1.0) | S (-1.0) | Gamepad Left Thumbstick Y-Axis (1.0)] 64 | 65 | **Network Replicated:** No 66 | 67 | **Supported Development Platforms:** 68 | 69 | - Windows 70 | - Mac 71 | 72 | **Documentation:** [[ENGLISH](https://gerlogu.com/wp-content/uploads/2023/02/Fixed-Camera-System-Users-Manual.pdf)] 73 | 74 | **Important/Additional Notes:** In case you have any doubt, contact me and I will answer you and include your question into the User's Manual. 75 | --------------------------------------------------------------------------------