From 232a87f02617d782a6c33bcbb59a4ef0c69c8a5d Mon Sep 17 00:00:00 2001 From: CatChow0 Date: Mon, 13 Oct 2025 13:01:09 +0200 Subject: [PATCH] Adds initial project structure and core classes Sets up the initial Unreal Engine project structure. Includes the creation of core classes such as: - A custom GameMode - A PlayerController - A PlayerPawn - A Centipede Pawn Also configures Git integration and includes a default level. --- .idea/.idea.M4_CPP.dir/.idea/vcs.xml | 6 +++ Content/CTP/L_Default.umap | Bin 0 -> 48404 bytes Source/M4_CPP/{ => private}/M4_CPP.cpp | 3 ++ Source/M4_CPP/private/M4_Centipede.cpp | 32 +++++++++++++ Source/M4_CPP/private/M4_Gamemode.cpp | 14 ++++++ Source/M4_CPP/private/M4_PlayerController.cpp | 18 +++++++ Source/M4_CPP/private/M4_PlayerPawn.cpp | 44 ++++++++++++++++++ Source/M4_CPP/{ => public}/M4_CPP.h | 0 Source/M4_CPP/public/M4_Centipede.h | 28 +++++++++++ Source/M4_CPP/public/M4_Gamemode.h | 24 ++++++++++ Source/M4_CPP/public/M4_LOG.h | 5 ++ Source/M4_CPP/public/M4_PlayerController.h | 28 +++++++++++ Source/M4_CPP/public/M4_PlayerPawn.h | 43 +++++++++++++++++ 13 files changed, 245 insertions(+) create mode 100644 .idea/.idea.M4_CPP.dir/.idea/vcs.xml create mode 100644 Content/CTP/L_Default.umap rename Source/M4_CPP/{ => private}/M4_CPP.cpp (78%) create mode 100644 Source/M4_CPP/private/M4_Centipede.cpp create mode 100644 Source/M4_CPP/private/M4_Gamemode.cpp create mode 100644 Source/M4_CPP/private/M4_PlayerController.cpp create mode 100644 Source/M4_CPP/private/M4_PlayerPawn.cpp rename Source/M4_CPP/{ => public}/M4_CPP.h (100%) create mode 100644 Source/M4_CPP/public/M4_Centipede.h create mode 100644 Source/M4_CPP/public/M4_Gamemode.h create mode 100644 Source/M4_CPP/public/M4_LOG.h create mode 100644 Source/M4_CPP/public/M4_PlayerController.h create mode 100644 Source/M4_CPP/public/M4_PlayerPawn.h diff --git a/.idea/.idea.M4_CPP.dir/.idea/vcs.xml b/.idea/.idea.M4_CPP.dir/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/.idea.M4_CPP.dir/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Content/CTP/L_Default.umap b/Content/CTP/L_Default.umap new file mode 100644 index 0000000000000000000000000000000000000000..ae213e21e858bd77bd85e750aa72508a3decd734 GIT binary patch literal 48404 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 G#s7bo_;I)Z literal 0 HcmV?d00001 diff --git a/Source/M4_CPP/M4_CPP.cpp b/Source/M4_CPP/private/M4_CPP.cpp similarity index 78% rename from Source/M4_CPP/M4_CPP.cpp rename to Source/M4_CPP/private/M4_CPP.cpp index 190f4da..fe42e6d 100644 --- a/Source/M4_CPP/M4_CPP.cpp +++ b/Source/M4_CPP/private/M4_CPP.cpp @@ -2,5 +2,8 @@ #include "M4_CPP.h" #include "Modules/ModuleManager.h" +#include "M4_LOG.h" + +DEFINE_LOG_CATEGORY(M4_CPP) IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, M4_CPP, "M4_CPP" ); diff --git a/Source/M4_CPP/private/M4_Centipede.cpp b/Source/M4_CPP/private/M4_Centipede.cpp new file mode 100644 index 0000000..2c3949f --- /dev/null +++ b/Source/M4_CPP/private/M4_Centipede.cpp @@ -0,0 +1,32 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "M4_Centipede.h" + + +// Sets default values +AM4_Centipede::AM4_Centipede() +{ + // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; +} + +// Called when the game starts or when spawned +void AM4_Centipede::BeginPlay() +{ + Super::BeginPlay(); + +} + +// Called every frame +void AM4_Centipede::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); +} + +// Called to bind functionality to input +void AM4_Centipede::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); +} + diff --git a/Source/M4_CPP/private/M4_Gamemode.cpp b/Source/M4_CPP/private/M4_Gamemode.cpp new file mode 100644 index 0000000..b16f27c --- /dev/null +++ b/Source/M4_CPP/private/M4_Gamemode.cpp @@ -0,0 +1,14 @@ +// Fill out your copyright notice in the Description page of Project Settings. +#include "M4_Gamemode.h" + +AM4_Gamemode::AM4_Gamemode() +{ + // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = false; + +} + +void AM4_Gamemode::BeginPlay() +{ + Super::BeginPlay(); +} \ No newline at end of file diff --git a/Source/M4_CPP/private/M4_PlayerController.cpp b/Source/M4_CPP/private/M4_PlayerController.cpp new file mode 100644 index 0000000..2f53180 --- /dev/null +++ b/Source/M4_CPP/private/M4_PlayerController.cpp @@ -0,0 +1,18 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "M4_PlayerController.h" + +AM4_PlayerController::AM4_PlayerController() +{ +} + +void AM4_PlayerController::BeginPlay() +{ + Super::BeginPlay(); +} + +void AM4_PlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); +} \ No newline at end of file diff --git a/Source/M4_CPP/private/M4_PlayerPawn.cpp b/Source/M4_CPP/private/M4_PlayerPawn.cpp new file mode 100644 index 0000000..697bd76 --- /dev/null +++ b/Source/M4_CPP/private/M4_PlayerPawn.cpp @@ -0,0 +1,44 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "M4_PlayerPawn.h" + +AM4_PlayerPawn::AM4_PlayerPawn() +{ + PrimaryActorTick.bCanEverTick = true; + PrimaryActorTick.bStartWithTickEnabled = true; + + SpawnCollisionHandlingMethod = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; + + RootComponent = CreateDefaultSubobject(TEXT("RootComponent")); + + MeshComponent = CreateDefaultSubobject(TEXT("MeshComponent")); + + MeshComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + MeshComponent->SetCollisionProfileName(UCollisionProfile::Pawn_ProfileName); + MeshComponent->SetRelativeScale3D(FVector(1.0f, 1.0f, 1.0f)); + MeshComponent->SetupAttachment(RootComponent); +} +void AM4_PlayerPawn::BeginPlay() +{ + Super::BeginPlay(); + +} +void AM4_PlayerPawn::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + +void AM4_PlayerPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); + + if (UEnhancedInputComponent* EnhancedInputComponent = CastChecked(PlayerInputComponent)) + { + if (MoveAction) + { + EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AM4_PlayerPawn::Move); + } + } +} \ No newline at end of file diff --git a/Source/M4_CPP/M4_CPP.h b/Source/M4_CPP/public/M4_CPP.h similarity index 100% rename from Source/M4_CPP/M4_CPP.h rename to Source/M4_CPP/public/M4_CPP.h diff --git a/Source/M4_CPP/public/M4_Centipede.h b/Source/M4_CPP/public/M4_Centipede.h new file mode 100644 index 0000000..57afb88 --- /dev/null +++ b/Source/M4_CPP/public/M4_Centipede.h @@ -0,0 +1,28 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Pawn.h" +#include "M4_Centipede.generated.h" + +UCLASS() +class M4_CPP_API AM4_Centipede : public APawn +{ + GENERATED_BODY() + +public: + // Sets default values for this pawn's properties + AM4_Centipede(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + // Called to bind functionality to input + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; +}; diff --git a/Source/M4_CPP/public/M4_Gamemode.h b/Source/M4_CPP/public/M4_Gamemode.h new file mode 100644 index 0000000..576a910 --- /dev/null +++ b/Source/M4_CPP/public/M4_Gamemode.h @@ -0,0 +1,24 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameModeBase.h" +#include "M4_Gamemode.generated.h" + +/** + * + */ +UCLASS() +class M4_CPP_API AM4_Gamemode : public AGameModeBase +{ + GENERATED_BODY() + +public: + + AM4_Gamemode(); + + virtual void BeginPlay() override; + + +}; diff --git a/Source/M4_CPP/public/M4_LOG.h b/Source/M4_CPP/public/M4_LOG.h new file mode 100644 index 0000000..d9600e7 --- /dev/null +++ b/Source/M4_CPP/public/M4_LOG.h @@ -0,0 +1,5 @@ +#pragma once + +#include "CoreMinimal.h" + +DECLARE_LOG_CATEGORY_EXTERN(M4_CPP, Log, All); \ No newline at end of file diff --git a/Source/M4_CPP/public/M4_PlayerController.h b/Source/M4_CPP/public/M4_PlayerController.h new file mode 100644 index 0000000..26c6590 --- /dev/null +++ b/Source/M4_CPP/public/M4_PlayerController.h @@ -0,0 +1,28 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/PlayerController.h" +#include "M4_PlayerController.generated.h" + +/** + * + */ +UCLASS() +class M4_CPP_API AM4_PlayerController : public APlayerController +{ + GENERATED_BODY() + +public: + AM4_PlayerController(); + + virtual void BeginPlay() override; + +protected: + virtual void SetupInputComponent() override; + virtual void OnPossess(); + +private: + +}; diff --git a/Source/M4_CPP/public/M4_PlayerPawn.h b/Source/M4_CPP/public/M4_PlayerPawn.h new file mode 100644 index 0000000..481a906 --- /dev/null +++ b/Source/M4_CPP/public/M4_PlayerPawn.h @@ -0,0 +1,43 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Pawn.h" +#include "InputAction.h" +#include "Components/StaticMeshComponent.h" +#include "EnhancedInputComponent.h" +#include "EnhancedInputSubsystems.h" +#include "M4_PlayerPawn.generated.h" + +/** + * + */ +UCLASS() +class M4_CPP_API AM4_PlayerPawn : public APawn +{ + GENERATED_BODY() + +public : + AM4_PlayerPawn(); + + virtual void Tick(float DeltaTime) override; + + UStaticMeshComponent* GetMeshComponent() const { return MeshComponent; } + + virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; + + UPROPERTY(EditAnywhere, Category="centipede") + TObjectPtr MoveAction; + +protected: + virtual void BeginPlay() override; + +private: + + UPROPERTY(Category = "Centipede", VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) + TObjectPtr MeshComponent; + + + +};