Skip to content

Commit

Permalink
Code refactoring, Overall improvement
Browse files Browse the repository at this point in the history
All codes reviewed and some codes modified to match Unreal Engine style
Eject empty shell while shooting fixed
New collision profiles for Weapon, Projectile, Magazine, and Empty shell
New animation for Guide widget
  • Loading branch information
DanialKama committed Jan 13, 2022
1 parent e77ac9e commit 31588bf
Show file tree
Hide file tree
Showing 118 changed files with 745 additions and 613 deletions.
7 changes: 6 additions & 1 deletion Config/DefaultEngine.ini
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,12 @@ bSmoothFrameRate=False
+Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ")
+Profiles=(Name="CollisionBound",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="CollisionBound",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Projectile",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Use for collision bounds like box collision that need to trigger only by the player")
+Profiles=(Name="FallCapsule",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="FallCapsule",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap),(Channel="Projectile",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Return overlap with other objects for measuring fall damage")
+Profiles=(Name="HolsterWeapon",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Enables weapon to stay attached to physics constraint when character holster it")
+Profiles=(Name="HolsterWeapon",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Enables weapon to stay attached to physics constraint when character holster it")
+Profiles=(Name="EmptyShell",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="EmptyShell",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Projectile",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Weapon empty shell")
+Profiles=(Name="Magazine",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Weapon magazine")
+Profiles=(Name="Projectile",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="Projectile",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="Projectile",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Weapon projectile")
+Profiles=(Name="Weapon",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Weapon profile")
+Profiles=(Name="Ammo",CollisionEnabled=QueryAndPhysics,bCanModify=True,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="FallCapsule",Response=ECR_Ignore)),HelpMessage="Pickup ammo")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="Projectile")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Ignore,bTraceType=False,bStaticObject=False,Name="EmptyShell")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel3,DefaultResponse=ECR_Ignore,bTraceType=False,bStaticObject=False,Name="CollisionBound")
Expand Down
Binary file modified Content/Art/Meshes/FieldSystem_Anchor.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/Blueprints/Projectiles/BP_Projectile_Shotgun_Normal.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/Blueprints/RelatedToWeapons/BP_Magazine_HeavyPistol.uasset
Binary file not shown.
Binary file modified Content/Blueprints/RelatedToWeapons/BP_Magazine_LightPistol.uasset
Binary file not shown.
Binary file modified Content/Blueprints/RelatedToWeapons/BP_Magazine_Shotgun.uasset
Binary file not shown.
Binary file modified Content/Characters/AI/BP_AICharacter_Enemy_1.uasset
Binary file not shown.
Binary file modified Content/Characters/AI/BP_AICharacter_Enemy_2.uasset
Binary file not shown.
Binary file modified Content/Characters/AI/BP_AICharacter_Friend_1.uasset
Binary file not shown.
Binary file modified Content/Characters/AI/BP_AICharacter_Friend_2.uasset
Binary file not shown.
Binary file modified Content/Characters/BP_PlayerCharacter.uasset
Binary file not shown.
Binary file modified Content/FPS_Weapon_Bundle/Weapons/Meshes/AR4/SM_AR4_Mag.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/FPS_Weapon_Bundle/Weapons/Meshes/Ka47/SM_KA47_Mag.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/Maps/TestMaps/Test_AI.umap
Binary file not shown.
Binary file modified Content/Maps/TestMaps/Test_AI_Chaos.umap
Binary file not shown.
Binary file modified Content/Maps/TestMaps/Test_Main.umap
Binary file not shown.
Binary file modified Content/Maps/TestMaps/Test_Simple.umap
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/AssaultRifleB_Ammo.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/Assault_Rifle_B_Mag.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/Assault_Rifle_B_Mag_Empty.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/Grenade_Launcher_B_Mag.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/PistolB_Ammo.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/Pistols_B_Mag.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/Pistols_B_Mag_Empty.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/ShotgunB_Ammo.uasset
Binary file not shown.
Binary file modified Content/MilitaryWeapDark/Weapons/SniperRifleB_Ammo.uasset
Binary file not shown.
Binary file modified Content/UI/WBP_Guide.uasset
Binary file not shown.
31 changes: 7 additions & 24 deletions Source/ThirdPersonShooter/Private/Actors/EmptyShell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,44 +10,27 @@ AEmptyShell::AEmptyShell()
PrimaryActorTick.bCanEverTick = false;
InitialLifeSpan = 3.0f;

// Create components
StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Empty Shell"));
ProjectileMovement = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("Projectile Movement"));

// Attach components
SetRootComponent(StaticMesh);

// Initialize components
StaticMesh->SetComponentTickEnabled(false);
StaticMesh->SetSimulatePhysics(true);
StaticMesh->bApplyImpulseOnDamage = false;
StaticMesh->CanCharacterStepUpOn = ECB_No;
StaticMesh->SetCollisionProfileName("EmptyShell");
StaticMesh->SetNotifyRigidBodyCollision(true);
StaticMesh->SetGenerateOverlapEvents(false);
StaticMesh->SetCollisionObjectType(ECC_GameTraceChannel2);
StaticMesh->OnComponentHit.AddDynamic(this, &AEmptyShell::OnHit);


ProjectileMovement = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("Projectile Movement"));
ProjectileMovement->InitialSpeed = 250.0f;
ProjectileMovement->MaxSpeed = 250.0f;
ProjectileMovement->ProjectileGravityScale = 2.0f;
ProjectileMovement->Velocity = FVector(-1.0f, 0.0f, 0.0f);

// Initialize variables
bDoOnce = true;
}

void AEmptyShell::BeginPlay()
{
Super::BeginPlay();

// Simulate physics with a small delay to not collide with weapon but collide with ground
FTimerHandle SimulatePhysicsTimer;
GetWorld()->GetTimerManager().SetTimer(SimulatePhysicsTimer, this, &AEmptyShell::StartPhysics, 0.2f);
StartPhysics();
}

void AEmptyShell::StartPhysics() const
{
StaticMesh->SetSimulatePhysics(true);
}

void AEmptyShell::OnHit(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit)
{
if (bDoOnce)
Expand Down
9 changes: 3 additions & 6 deletions Source/ThirdPersonShooter/Private/Actors/Magazine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,19 @@ AMagazine::AMagazine()
{
PrimaryActorTick.bCanEverTick = false;

// Create components
StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Magazine"));

// Attach components
SetRootComponent(StaticMesh);

// Initialize components
StaticMesh->SetComponentTickEnabled(false);
StaticMesh->bApplyImpulseOnDamage = false;
StaticMesh->SetNotifyRigidBodyCollision(true);
StaticMesh->SetCollisionProfileName("Magazine");
StaticMesh->CanCharacterStepUpOn = ECB_No;
StaticMesh->SetGenerateOverlapEvents(false);
StaticMesh->SetCollisionObjectType(ECC_WorldStatic);
StaticMesh->OnComponentHit.AddDynamic(this, &AMagazine::OnHit);

// Initialize variables
bDoOnce = true;
bMagazineIsEmpty = false;
}

void AMagazine::BeginPlay()
Expand Down
9 changes: 4 additions & 5 deletions Source/ThirdPersonShooter/Private/Actors/PatrolPathActor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@ APatrolPathActor::APatrolPathActor()
{
PrimaryActorTick.bCanEverTick = false;

// Create components
Billboard = CreateDefaultSubobject<UBillboardComponent>(TEXT("Billboard"));

// Attach components
SetRootComponent(Billboard);

// Initialize components
Billboard->SetComponentTickEnabled(false);
Billboard->bIsScreenSizeScaled = true;

// Initialize variables
bIsLooping = true;
WaitTime = 2.0f;
}
3 changes: 3 additions & 0 deletions Source/ThirdPersonShooter/Private/Actors/Pickup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
APickup::APickup()
{
PrimaryActorTick.bCanEverTick = false;

// Initialize variables
PickupType = EItemType::Weapon;
}

void APickup::SetPickupStatus(EPickupState PickupState)
Expand Down
31 changes: 16 additions & 15 deletions Source/ThirdPersonShooter/Private/Actors/PickupAmmo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,37 +10,38 @@

APickupAmmo::APickupAmmo()
{
// Create components
PrimaryActorTick.bCanEverTick = false;

StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
SphereCollision = CreateDefaultSubobject<USphereComponent>(TEXT("Collision"));
Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("Widget"));

// Attach components
SetRootComponent(StaticMesh);
SphereCollision->SetupAttachment(StaticMesh);
Widget->SetupAttachment(StaticMesh);

// Initialize components
StaticMesh->SetComponentTickEnabled(false);
StaticMesh->SetSimulatePhysics(true);
StaticMesh->bApplyImpulseOnDamage = false;
StaticMesh->SetGenerateOverlapEvents(false);
StaticMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
StaticMesh->SetCollisionObjectType(ECC_PhysicsBody);

StaticMesh->CanCharacterStepUpOn = ECB_No;
StaticMesh->SetCollisionProfileName("Ammo");

SphereCollision = CreateDefaultSubobject<USphereComponent>(TEXT("Collision"));
SphereCollision->SetupAttachment(StaticMesh);
SphereCollision->SetComponentTickEnabled(false);
SphereCollision->bApplyImpulseOnDamage = false;
SphereCollision->CanCharacterStepUpOn = ECB_No;
SphereCollision->SetCollisionProfileName("CollisionBound");
SphereCollision->OnComponentBeginOverlap.AddDynamic(this, &APickupAmmo::OnBoxBeginOverlap);
SphereCollision->OnComponentEndOverlap.AddDynamic(this, &APickupAmmo::OnBoxEndOverlap);


Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("Widget"));
Widget->SetupAttachment(StaticMesh);
Widget->SetComponentTickEnabled(false);
Widget->SetWidgetSpace(EWidgetSpace::Screen);
Widget->SetGenerateOverlapEvents(false);
Widget->SetCollisionEnabled(ECollisionEnabled::NoCollision);
Widget->CanCharacterStepUpOn = ECB_No;
Widget->SetVisibility(false);

// Initialize variables
PickupType = EItemType::Ammo;
AmmoType = static_cast<int32>(EAmmoType::None);
Amount = 1;
}

void APickupAmmo::BeginPlay()
Expand Down
49 changes: 25 additions & 24 deletions Source/ThirdPersonShooter/Private/Actors/PickupWeapon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,55 +22,56 @@

APickupWeapon::APickupWeapon()
{
// Create components
SkeletalMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("Weapon"));
BoxCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("Collision"));
MuzzleFlash = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("Muzzle Flash"));
FireSound = CreateDefaultSubobject<UAudioComponent>(TEXT("Fire Sound"));
Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("Widget"));
AmmoComponent = CreateDefaultSubobject<UAmmoComponent>(TEXT("Ammo Component"));
PrimaryActorTick.bCanEverTick = false;

// Attach components
SkeletalMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("Weapon"));
SetRootComponent(SkeletalMesh);
BoxCollision->SetupAttachment(SkeletalMesh);
MuzzleFlash->SetupAttachment(SkeletalMesh, TEXT("MuzzleFlashSocket"));
FireSound->SetupAttachment(SkeletalMesh);
Widget->SetupAttachment(SkeletalMesh);

// Initialize components
SkeletalMesh->SetComponentTickEnabled(false);
SkeletalMesh->SetAnimationMode(EAnimationMode::AnimationSingleNode);
SkeletalMesh->bApplyImpulseOnDamage = false;
SkeletalMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
SkeletalMesh->SetCollisionObjectType(ECC_PhysicsBody);
SkeletalMesh->SetCollisionResponseToAllChannels(ECR_Ignore);
SkeletalMesh->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Block);
SkeletalMesh->CanCharacterStepUpOn = ECB_No;
SkeletalMesh->SetCollisionProfileName("Weapon");

BoxCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("Collision"));
BoxCollision->SetupAttachment(SkeletalMesh);
BoxCollision->SetComponentTickEnabled(false);
BoxCollision->SetBoxExtent(FVector (8.0f, 50.0f, 20.0f));
BoxCollision->SetBoxExtent(FVector(8.0f, 50.0f, 20.0f));
BoxCollision->bApplyImpulseOnDamage = false;
BoxCollision->SetGenerateOverlapEvents(true);
BoxCollision->CanCharacterStepUp(nullptr);
BoxCollision->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
BoxCollision->CanCharacterStepUpOn = ECB_No;
BoxCollision->SetCollisionProfileName("CollisionBound");
BoxCollision->OnComponentBeginOverlap.AddDynamic(this, &APickupWeapon::OnBoxBeginOverlap);
BoxCollision->OnComponentEndOverlap.AddDynamic(this, &APickupWeapon::OnBoxEndOverlap);

MuzzleFlash = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("Muzzle Flash"));
MuzzleFlash->SetupAttachment(SkeletalMesh, TEXT("MuzzleFlashSocket"));
MuzzleFlash->SetComponentTickEnabled(false);
MuzzleFlash->SetAutoActivate(false);


FireSound = CreateDefaultSubobject<UAudioComponent>(TEXT("Fire Sound"));
FireSound->SetupAttachment(SkeletalMesh);
FireSound->SetComponentTickEnabled(false);
FireSound->SetAutoActivate(false);


Widget = CreateDefaultSubobject<UWidgetComponent>(TEXT("Widget"));
Widget->SetupAttachment(SkeletalMesh);
Widget->SetComponentTickEnabled(false);
Widget->SetWidgetSpace(EWidgetSpace::Screen);
Widget->SetGenerateOverlapEvents(false);
Widget->SetCollisionEnabled(ECollisionEnabled::NoCollision);
Widget->CanCharacterStepUpOn = ECB_No;
Widget->SetVisibility(false);

AmmoComponent = CreateDefaultSubobject<UAmmoComponent>(TEXT("Ammo Component"));

// Initialize variables
PickupType = EItemType::Weapon;
bDoOnceFire = true;
bOwnerIsAI = false;
bCanFire = true;
bCharacterInterface = false;
bPlayerControllerInterface = false;
bAIControllerInterface = false;
bDrawDebugLineTrace = false;
}

void APickupWeapon::BeginPlay()
Expand Down
22 changes: 13 additions & 9 deletions Source/ThirdPersonShooter/Private/Actors/Projectile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,29 @@ AProjectile::AProjectile()
{
PrimaryActorTick.bCanEverTick = false;

// Create components
StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Projectile Mesh"));
TrailParticle = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("Trail Particle"));
ProjectileMovement = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("Projectile Movement"));

// Attach components
SetRootComponent(StaticMesh);
TrailParticle->SetupAttachment(StaticMesh, TEXT("TrailSocket"));

// Initialize components
StaticMesh->SetComponentTickEnabled(false);
StaticMesh->SetNotifyRigidBodyCollision(true);
StaticMesh->CanCharacterStepUpOn = ECB_No;
StaticMesh->SetCollisionProfileName("Projectile");
StaticMesh->SetGenerateOverlapEvents(false);
StaticMesh->bReturnMaterialOnMove = true;
StaticMesh->OnComponentHit.AddDynamic(this, &AProjectile::OnHit);


TrailParticle = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("Trail Particle"));
TrailParticle->SetupAttachment(StaticMesh, TEXT("TrailSocket"));

ProjectileMovement = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("Projectile Movement"));
ProjectileMovement->InitialSpeed = 2000.0f;
ProjectileMovement->MaxSpeed = 2000.0f;

// Initialize variables
NumberOfPellets = 1;
PelletSpread = 0.0f;
AmmoType = EAmmoType::AssaultRifleNormal;
SwitchExpression = 0;

// Load data tables
static ConstructorHelpers::FObjectFinder<UDataTable> ProjectileDataObject(TEXT("DataTable'/Game/Blueprints/Projectiles/DT_ProjectileInfo.DT_ProjectileInfo'"));
if (ProjectileDataObject.Succeeded())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,39 @@
// All Rights Reserved.

#include "Actors/ProjectileFieldSystemActor.h"
#include "Components/SphereComponent.h"

AProjectileFieldSystemActor::AProjectileFieldSystemActor()
{
PrimaryActorTick.bCanEverTick = false;
SetCanBeDamaged(false);
InitialLifeSpan = 0.2f;

// Create components
Sphere = CreateDefaultSubobject<USphereComponent>(TEXT("Sphere Component"));
RadialFalloff = CreateDefaultSubobject<URadialFalloff>(TEXT("Radial Falloff"));
OperatorField = CreateDefaultSubobject<UOperatorField>(TEXT("Operator Field"));
RadialVector = CreateDefaultSubobject<URadialVector>(TEXT("Radial Vector"));
RandomVector = CreateDefaultSubobject<URandomVector>(TEXT("Random Vector"));
UniformVector = CreateDefaultSubobject<UUniformVector>(TEXT("Uniform Vector"));

// Attach components
Sphere->SetupAttachment(GetRootComponent());

// Initialize components
FieldSystemComponent->SetEnableGravity(false);
FieldSystemComponent->bApplyImpulseOnDamage = false;


Sphere = CreateDefaultSubobject<USphereComponent>(TEXT("Sphere Component"));
Sphere->SetupAttachment(GetRootComponent());
Sphere->SetComponentTickEnabled(false);
Sphere->SetSphereRadius(50.0f);
Sphere->SetComponentTickEnabled(false);
Sphere->SetEnableGravity(false);
Sphere->SetGenerateOverlapEvents(false);
Sphere->CanCharacterStepUpOn = ECB_No;
Sphere->SetCollisionEnabled(ECollisionEnabled::NoCollision);

RadialFalloff = CreateDefaultSubobject<URadialFalloff>(TEXT("Radial Falloff"));

OperatorField = CreateDefaultSubobject<UOperatorField>(TEXT("Operator Field"));

RadialVector = CreateDefaultSubobject<URadialVector>(TEXT("Radial Vector"));

RandomVector = CreateDefaultSubobject<URandomVector>(TEXT("Random Vector"));

UniformVector = CreateDefaultSubobject<UUniformVector>(TEXT("Uniform Vector"));

// Initialize variables
StrainMagnitude = 50000.0f;
ForceMagnitude = 5000.0f;
TorqueMagnitude = 1000000.0f;
}
12 changes: 4 additions & 8 deletions Source/ThirdPersonShooter/Private/Actors/RespawnActor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,19 @@ ARespawnActor::ARespawnActor()
{
PrimaryActorTick.bCanEverTick = false;

// Create components
Billboard = CreateDefaultSubobject<UBillboardComponent>(TEXT("Billboard"));
RespawnRadius = CreateDefaultSubobject<USphereComponent>(TEXT("Respawn Radius"));

// Attach components
SetRootComponent(Billboard);
RespawnRadius->SetupAttachment(Billboard);

// Initialize components
Billboard->SetComponentTickEnabled(false);
Billboard->bIsScreenSizeScaled = true;


RespawnRadius = CreateDefaultSubobject<USphereComponent>(TEXT("Respawn Radius"));
RespawnRadius->SetupAttachment(Billboard);
RespawnRadius->SetComponentTickEnabled(false);
RespawnRadius->SetSphereRadius(250.0f);
RespawnRadius->SetGenerateOverlapEvents(false);
RespawnRadius->SetCollisionEnabled(ECollisionEnabled::NoCollision);
RespawnRadius->SetCollisionResponseToAllChannels(ECR_Ignore);
RespawnRadius->CanCharacterStepUpOn = ECB_No;
}

void ARespawnActor::BeginPlay()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ void UAnimNotify_RestoreHealth::Notify(USkeletalMeshComponent* MeshComp, UAnimSe
Character->GetCharacterMovement()->SetMovementMode(MOVE_Walking);
}
// Full health recovery
Character->HealthComponent->Healing(Character->HealthComponent->MaxHealth);
Character->GetHealthComponent()->Healing(Character->GetHealthComponent()->MaxHealth);
// Set AI state if the owner is AI
AAIController* AIController = Cast<AAIController>(Character->GetController());
if (AIController && AIController->GetClass()->ImplementsInterface(UAIControllerInterface::StaticClass()))
Expand Down
Loading

0 comments on commit 31588bf

Please sign in to comment.