Create new character class
This commit is contained in:
parent
dba265ac03
commit
2c7bf0fb53
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NewProtag_AnimBP.uasset
(Stored with Git LFS)
Normal file
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NewProtag_AnimBP.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
SwordNGun/Content/Characters/Protagonist/BP_NewProtag.uasset
(Stored with Git LFS)
Normal file
BIN
SwordNGun/Content/Characters/Protagonist/BP_NewProtag.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
SwordNGun/Content/Characters/Protagonist/BP_Protagonist.uasset
(Stored with Git LFS)
BIN
SwordNGun/Content/Characters/Protagonist/BP_Protagonist.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
SwordNGun/Content/Core/GameModes/BP_TestGameMode.uasset
(Stored with Git LFS)
BIN
SwordNGun/Content/Core/GameModes/BP_TestGameMode.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
SwordNGun/Content/Maps/MovementTest.umap
(Stored with Git LFS)
BIN
SwordNGun/Content/Maps/MovementTest.umap
(Stored with Git LFS)
Binary file not shown.
Binary file not shown.
@ -0,0 +1,265 @@
|
||||
// Project Sword & Gun Copyright © 2021 Kevin Poretti
|
||||
|
||||
|
||||
#include "Characters/SNGCharacterBase_DEPRECATED.h"
|
||||
|
||||
#include "Components/CapsuleComponent.h"
|
||||
#include "GameFramework/PawnMovementComponent.h"
|
||||
#include "Kismet/KismetMathLibrary.h"
|
||||
#include "SwordNGun/SwordNGun.h"
|
||||
|
||||
// Sets default values
|
||||
ASNGCharacterBase_DEPRECATED::ASNGCharacterBase_DEPRECATED(const FObjectInitializer& ObjectInitializer)
|
||||
: Super(ObjectInitializer.SetDefaultSubobjectClass<USNGCharacterMovementComponent>(ACharacter::CharacterMovementComponentName))
|
||||
{
|
||||
// By default calls Tick() every frame.
|
||||
PrimaryActorTick.bCanEverTick = true;
|
||||
|
||||
StateMachineComponent = CreateDefaultSubobject<USNGStateMachineComponent>(TEXT("StateMachineComponent"));
|
||||
HealthComponent = CreateDefaultSubobject<USNGHealthComponent>(TEXT("HealthComponent"));
|
||||
|
||||
GetCapsuleComponent()->SetCollisionResponseToChannel(COLLISION_RANGED_WEAPON, ECR_Ignore);
|
||||
GetCapsuleComponent()->SetCollisionResponseToChannel(COLLISION_MELEE_WEAPON, ECR_Ignore);
|
||||
|
||||
EnableAllActions();
|
||||
|
||||
AController* MyController = GetController();
|
||||
if(MyController)
|
||||
{
|
||||
GetController()->SetIgnoreMoveInput(false);
|
||||
}
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::SetupRotateTowardsTarget(FRotator TargetRotation, float DegreesPerSecond, float MaxRotation)
|
||||
{
|
||||
RotateTimeElapsed = 0.0f;
|
||||
InitialRot = GetActorRotation();
|
||||
this->TargetRot = TargetRotation;
|
||||
DegPerSecond = DegreesPerSecond;
|
||||
this->MaxRot = MaxRotation;
|
||||
|
||||
RotateTime = FMath::Min(FMath::Abs(TargetRotation.Yaw - InitialRot.Yaw), MaxRotation) / DegreesPerSecond;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::RotateTowardsTarget(float DeltaTime)
|
||||
{
|
||||
if(RotateTimeElapsed < RotateTime)
|
||||
{
|
||||
SetActorRotation(UKismetMathLibrary::RInterpTo_Constant(GetActorRotation(), TargetRot,
|
||||
DeltaTime, DegPerSecond));
|
||||
|
||||
RotateTimeElapsed += DeltaTime;
|
||||
}
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::SetIgnoreMovementInput(bool IsIgnored)
|
||||
{
|
||||
AController* MyController = GetController();
|
||||
if(MyController)
|
||||
{
|
||||
GetController()->SetIgnoreMoveInput(IsIgnored);
|
||||
}
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::DisableAllActions()
|
||||
{
|
||||
bCanMove = false;
|
||||
bCanJump = false;
|
||||
bCanDodge = false;
|
||||
bCanAttack = false;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::EnableAllActions()
|
||||
{
|
||||
bCanMove = true;
|
||||
bCanJump = true;
|
||||
bCanDodge = true;
|
||||
bCanAttack = true;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::SetCanMove(bool CanMove)
|
||||
{
|
||||
bCanMove = CanMove;
|
||||
}
|
||||
|
||||
bool ASNGCharacterBase_DEPRECATED::CanMove()
|
||||
{
|
||||
return bCanMove;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::SetCanCharacterJump(bool CanJump)
|
||||
{
|
||||
bCanJump = CanJump;
|
||||
}
|
||||
|
||||
bool ASNGCharacterBase_DEPRECATED::CanCharacterJump()
|
||||
{
|
||||
return bCanJump;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::SetCanAttack(bool CanAttack)
|
||||
{
|
||||
bCanAttack = CanAttack;
|
||||
}
|
||||
|
||||
bool ASNGCharacterBase_DEPRECATED::CanAttack()
|
||||
{
|
||||
return bCanAttack;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::SetCanDodge(bool CanDodge)
|
||||
{
|
||||
bCanDodge = CanDodge;
|
||||
}
|
||||
|
||||
bool ASNGCharacterBase_DEPRECATED::CanDodge()
|
||||
{
|
||||
return bCanDodge;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::ApplyHitStop(float HitStopTime, float HitSlowTime)
|
||||
{
|
||||
CurrHitStopTime = HitStopTime;
|
||||
CurrHitSlowTime = HitSlowTime;
|
||||
bIsInHitStop = true;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::PushEvent_Implementation(FSNGEvent Event)
|
||||
{
|
||||
if(StateMachineComponent)
|
||||
{
|
||||
StateMachineComponent->PushEvent(Event);
|
||||
}
|
||||
}
|
||||
|
||||
ASNGWeaponBase* ASNGCharacterBase_DEPRECATED::GetCurrentWeapon_Implementation()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::ReceiveHit(FSNGHitData const& HitData, AController* EventInstigator, AActor* DamageCauser)
|
||||
{
|
||||
AActor* Causer = EventInstigator->GetPawn();
|
||||
|
||||
if(HitData.HitstopApplicationType == ESNGHitstopApplicationType::Both ||
|
||||
HitData.HitstopApplicationType == ESNGHitstopApplicationType::ReceiverOnly)
|
||||
{
|
||||
ApplyHitStop(HitData.StopTime, HitData.SlowTime);
|
||||
}
|
||||
|
||||
FVector AdjustedLaunchDir;
|
||||
switch (HitData.LaunchDirectionType)
|
||||
{
|
||||
case ESNGLaunchDirectionType::UseCauserRotation:
|
||||
{
|
||||
FRotator CauserRotationYaw(0.0f, Causer->GetActorRotation().Yaw, 0.0f);
|
||||
AdjustedLaunchDir = CauserRotationYaw.RotateVector(HitData.LaunchDirection);
|
||||
}
|
||||
break;
|
||||
case ESNGLaunchDirectionType::UseLookAtRotation:
|
||||
{
|
||||
FRotator LookAtRotation = UKismetMathLibrary::FindLookAtRotation(Causer->GetActorLocation(), GetActorLocation());
|
||||
FRotator LookAtRotationYaw(0.0f, LookAtRotation.Yaw, 0.0f);
|
||||
AdjustedLaunchDir = LookAtRotationYaw.RotateVector(HitData.LaunchDirection);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
AdjustedLaunchDir = HitData.LaunchDirection;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (HitData.LaunchType)
|
||||
{
|
||||
case ESNGLaunchType::OnlyInAir:
|
||||
{
|
||||
bool IsInAir = GetMovementComponent()->IsFalling();
|
||||
if(IsInAir)
|
||||
{
|
||||
AdjustedLaunchDir *= HitData.LaunchForce;
|
||||
LaunchCharacter(AdjustedLaunchDir, true, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
AdjustedLaunchDir = FVector(AdjustedLaunchDir.X, AdjustedLaunchDir.Y, 0.0f);
|
||||
LaunchCharacter(AdjustedLaunchDir, true, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ESNGLaunchType::Always:
|
||||
{
|
||||
AdjustedLaunchDir *= HitData.LaunchForce;
|
||||
LaunchCharacter(AdjustedLaunchDir, true, true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
float ASNGCharacterBase_DEPRECATED::TakeDamage(float Damage, FDamageEvent const& DamageEvent, AController* EventInstigator,
|
||||
AActor* DamageCauser)
|
||||
{
|
||||
Super::TakeDamage(Damage, DamageEvent, EventInstigator, DamageCauser);
|
||||
|
||||
if(HealthComponent)
|
||||
{
|
||||
HealthComponent->SubtractHealth(Damage);
|
||||
}
|
||||
|
||||
if (DamageEvent.IsOfType(FSNGDamageEvent::ClassID))
|
||||
{
|
||||
// point damage event, pass off to helper function
|
||||
FSNGDamageEvent* const MyDamageEvent = (FSNGDamageEvent*) &DamageEvent;
|
||||
ReceiveHit(MyDamageEvent->HitData, EventInstigator, DamageCauser);
|
||||
|
||||
FSNGEvent Event;
|
||||
Event.EventType = ESNGEventType::Damage;
|
||||
Event.DamageData.HitData = MyDamageEvent->HitData;
|
||||
Event.DamageData.EventInstigator = EventInstigator;
|
||||
Event.DamageData.DamageCauser = DamageCauser;
|
||||
Event.DamageData.SurfaceType = MyDamageEvent->SurfaceType;
|
||||
Event.DamageData.ImpactPoint = MyDamageEvent->ImpactPoint;
|
||||
PushEvent(Event);
|
||||
}
|
||||
|
||||
return Damage;
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::Tick(float DeltaSeconds)
|
||||
{
|
||||
Super::Tick(DeltaSeconds);
|
||||
|
||||
RotateTowardsTarget(DeltaSeconds);
|
||||
|
||||
if(bIsInHitStop)
|
||||
{
|
||||
CurrHitStopTime = FMath::Clamp(CurrHitStopTime - GetWorld()->GetDeltaSeconds(), 0.0f, CurrHitStopTime);
|
||||
if(CurrHitStopTime > 0.0f)
|
||||
{
|
||||
CustomTimeDilation = 0.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
CustomTimeDilation = 0.01;
|
||||
CurrHitSlowTime = FMath::Clamp(CurrHitSlowTime - GetWorld()->GetDeltaSeconds(), 0.0f, CurrHitSlowTime);
|
||||
if(CurrHitSlowTime == 0.0f)
|
||||
{
|
||||
CustomTimeDilation = 1.0f;
|
||||
bIsInHitStop = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ASNGCharacterBase_DEPRECATED::PostInitializeComponents()
|
||||
{
|
||||
Super::PostInitializeComponents();
|
||||
|
||||
SNGCharacterMovementComponent = Cast<USNGCharacterMovementComponent>(Super::GetMovementComponent());
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
USNGCharacterMovementComponent::USNGCharacterMovementComponent()
|
||||
{
|
||||
// Set defaults dealign with grounded movement
|
||||
// Set defaults dealing with grounded movement
|
||||
DefaultGravityScale = 1.0f;
|
||||
DefaultMaxWalkSpeed = 475.0f;
|
||||
FiringMaxWalkSpeed = 300.0f;
|
||||
@ -13,7 +13,7 @@ USNGCharacterMovementComponent::USNGCharacterMovementComponent()
|
||||
SprintingMaxWalkSpeed = 600.0f;
|
||||
|
||||
// Set defaults dealing with jumping and being airborne
|
||||
JumpForce = 1000.0f;
|
||||
DefaultJumpForce = 1000.0f;
|
||||
DefaultAirFriction = 150.0f;
|
||||
DefaultAirControl = 0.35;
|
||||
|
||||
@ -36,23 +36,28 @@ void USNGCharacterMovementComponent::RestoreMovementDefaults()
|
||||
MaxWalkSpeed = DefaultMaxWalkSpeed;
|
||||
BrakingDecelerationFalling = DefaultAirFriction;
|
||||
AirControl = DefaultAirControl;
|
||||
JumpZVelocity = DefaultJumpForce;
|
||||
}
|
||||
|
||||
void USNGCharacterMovementComponent::StartJump()
|
||||
{
|
||||
/*
|
||||
JumpTimer = MaxJumpTime;
|
||||
|
||||
Velocity = FVector(Velocity.X * LateralVelocityDampening, Velocity.Y * LateralVelocityDampening, 0.0f);
|
||||
*/
|
||||
}
|
||||
|
||||
void USNGCharacterMovementComponent::AddJumpForce()
|
||||
{
|
||||
/*
|
||||
if(JumpTimer > 0.0f)
|
||||
{
|
||||
Velocity = FVector(Velocity.X, Velocity.Y, Velocity.Z + (JumpForce * GetWorld()->DeltaTimeSeconds));
|
||||
|
||||
JumpTimer = FMath::Max(JumpTimer - GetWorld()->DeltaTimeSeconds, 0.0f);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void USNGCharacterMovementComponent::BeginPlay()
|
||||
@ -61,9 +66,6 @@ void USNGCharacterMovementComponent::BeginPlay()
|
||||
|
||||
// set character movement parameters to defaults
|
||||
RestoreMovementDefaults();
|
||||
|
||||
// Reset timers
|
||||
JumpTimer = 0.0f;
|
||||
}
|
||||
|
||||
void USNGCharacterMovementComponent::TickComponent(float DeltaTime, ELevelTick Tick,
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "Weapons/SNGInstantRangedWeapon.h"
|
||||
|
||||
#include "DrawDebugHelpers.h"
|
||||
#include "Characters/SNGCharacterBase.h"
|
||||
#include "Characters/SNGCharacterBase_DEPRECATED.h"
|
||||
#include "Kismet/GameplayStatics.h"
|
||||
#include "Particles/ParticleSystemComponent.h"
|
||||
#include "PhysicalMaterials/PhysicalMaterial.h"
|
||||
@ -107,7 +107,7 @@ void ASNGInstantRangedWeapon::DoLineTrace(FRotator SpreadOffset)
|
||||
if(HitData.HitstopApplicationType == ESNGHitstopApplicationType::Both ||
|
||||
HitData.HitstopApplicationType == ESNGHitstopApplicationType::CauserOnly)
|
||||
{
|
||||
ASNGCharacterBase* OwnerAsChar = Cast<ASNGCharacterBase>(GetOwner());
|
||||
ASNGCharacterBase_DEPRECATED* OwnerAsChar = Cast<ASNGCharacterBase_DEPRECATED>(GetOwner());
|
||||
OwnerAsChar->ApplyHitStop(HitData.StopTime, HitData.SlowTime);
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "Weapons/SNGMeleeWeaponBase.h"
|
||||
|
||||
|
||||
#include "Characters/SNGCharacterBase.h"
|
||||
#include "Characters/SNGCharacterBase_DEPRECATED.h"
|
||||
#include "Kismet/KismetSystemLibrary.h"
|
||||
#include "SwordNGun/SwordNGun.h"
|
||||
|
||||
@ -61,7 +61,7 @@ void ASNGMeleeWeaponBase::DoSphereCast(FSNGHitData const& HitData, bool Override
|
||||
if(HitData.HitstopApplicationType == ESNGHitstopApplicationType::Both ||
|
||||
HitData.HitstopApplicationType == ESNGHitstopApplicationType::CauserOnly)
|
||||
{
|
||||
ASNGCharacterBase* OwnerAsChar = Cast<ASNGCharacterBase>(GetOwner());
|
||||
ASNGCharacterBase_DEPRECATED* OwnerAsChar = Cast<ASNGCharacterBase_DEPRECATED>(GetOwner());
|
||||
OwnerAsChar->ApplyHitStop(HitData.StopTime, HitData.SlowTime);
|
||||
}
|
||||
|
||||
|
Binary file not shown.
@ -0,0 +1,174 @@
|
||||
// Project Sword & Gun Copyright © 2021 Kevin Poretti
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Components/SNGCharacterMovementComponent.h"
|
||||
|
||||
#include "Components/SNGHealthComponent.h"
|
||||
#include "Components/SNGStateMachineComponent.h"
|
||||
#include "GameFramework/Character.h"
|
||||
#include "Interfaces/SNGEventProcessorInterface.h"
|
||||
#include "Interfaces/SNGWeaponUserInterface.h"
|
||||
|
||||
#include "SNGCharacterBase_DEPRECATED.generated.h"
|
||||
|
||||
UCLASS()
|
||||
class SWORDNGUN_API ASNGCharacterBase_DEPRECATED : public ACharacter, public ISNGEventProcessorInterface, public ISNGWeaponUserInterface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
// Sets default values for this character's properties
|
||||
ASNGCharacterBase_DEPRECATED(const FObjectInitializer& ObjectInitializer);
|
||||
|
||||
/*********************************************************************
|
||||
* Flags
|
||||
********************************************************************/
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void DisableAllActions();
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void EnableAllActions();
|
||||
|
||||
// NOTE(kevin): should be a blueprint setter but I could not get that working for the life of me
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetCanMove(bool CanMove);
|
||||
|
||||
UFUNCTION(BlueprintGetter)
|
||||
bool CanMove();
|
||||
|
||||
// NOTE(kevin): should be a blueprint setter but I could not get that working for the life of me
|
||||
// should also probably be a protagonist/player character specific thing
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetCanCharacterJump(bool CanJump);
|
||||
|
||||
UFUNCTION(BlueprintGetter)
|
||||
bool CanCharacterJump();
|
||||
|
||||
// NOTE(kevin): should be a blueprint setter but I could not get that working for the life of me
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetCanAttack(bool CanAttack);
|
||||
|
||||
UFUNCTION(BlueprintGetter)
|
||||
bool CanAttack();
|
||||
|
||||
// NOTE(kevin): should be a blueprint setter but I could not get that working for the life of me
|
||||
// should also probably be a protagonist/player character specific thing
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetCanDodge(bool CanDodge);
|
||||
|
||||
UFUNCTION(BlueprintGetter)
|
||||
bool CanDodge();
|
||||
|
||||
protected:
|
||||
UPROPERTY(BlueprintReadOnly)
|
||||
bool bCanMove;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly)
|
||||
bool bCanJump;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly)
|
||||
bool bCanAttack;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly)
|
||||
bool bCanDodge;
|
||||
|
||||
/*********************************************************************
|
||||
* Movement
|
||||
********************************************************************/
|
||||
|
||||
public:
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category="Movement")
|
||||
void SetIgnoreMovementInput(bool IsIgnored);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category="Movement")
|
||||
FORCEINLINE class USNGCharacterMovementComponent* GetSNGCharacterMovementComponent() const
|
||||
{
|
||||
return SNGCharacterMovementComponent;
|
||||
}
|
||||
|
||||
protected:
|
||||
USNGCharacterMovementComponent* SNGCharacterMovementComponent;
|
||||
|
||||
public:
|
||||
/*********************************************************************
|
||||
* Event processing interface
|
||||
********************************************************************/
|
||||
// event processing
|
||||
UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
|
||||
void PushEvent(FSNGEvent Event);
|
||||
|
||||
/**
|
||||
* The state machine will be handling most if not all of the states
|
||||
* we simply wrap the state machine's push event implementation since most
|
||||
* characters that will want to push events to another character will have a reference
|
||||
* to the character itself rather than the state machine component
|
||||
*/
|
||||
virtual void PushEvent_Implementation(FSNGEvent Event);
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* Weapons
|
||||
********************************************************************/
|
||||
UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
|
||||
ASNGWeaponBase* GetCurrentWeapon();
|
||||
|
||||
virtual ASNGWeaponBase* GetCurrentWeapon_Implementation();
|
||||
|
||||
/*********************************************************************
|
||||
* Damage and hits
|
||||
********************************************************************/
|
||||
// damage and related
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void ApplyHitStop(float HitStopTime, float HitSlowTime);
|
||||
|
||||
virtual void ReceiveHit(FSNGHitData const& HitData, AController* EventInstigator, AActor* DamageCauser);
|
||||
|
||||
virtual float TakeDamage(float Damage, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override;
|
||||
|
||||
protected:
|
||||
bool bIsInHitStop;
|
||||
|
||||
float CurrHitStopTime;
|
||||
|
||||
float CurrHitSlowTime;
|
||||
|
||||
/*********************************************************************
|
||||
* Rotate towards target
|
||||
********************************************************************/
|
||||
public:
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetupRotateTowardsTarget(FRotator TargetRotation, float DegreesPerSecond, float MaxRotation);
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void RotateTowardsTarget(float DeltaTime);
|
||||
|
||||
protected:
|
||||
FRotator InitialRot;
|
||||
|
||||
FRotator TargetRot;
|
||||
|
||||
float DegPerSecond;
|
||||
|
||||
float MaxRot;
|
||||
|
||||
float RotateTime;
|
||||
|
||||
float RotateTimeElapsed;
|
||||
|
||||
/*********************************************************************
|
||||
* Components
|
||||
********************************************************************/
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components")
|
||||
USNGStateMachineComponent* StateMachineComponent;
|
||||
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components")
|
||||
USNGHealthComponent* HealthComponent;
|
||||
|
||||
virtual void Tick(float DeltaSeconds) override;
|
||||
|
||||
virtual void PostInitializeComponents() override;
|
||||
};
|
@ -3,14 +3,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Characters/SNGCharacterBase.h"
|
||||
#include "Characters/SNGCharacterBase_DEPRECATED.h"
|
||||
#include "SNGEnemyBase.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class SWORDNGUN_API ASNGEnemyBase : public ASNGCharacterBase
|
||||
class SWORDNGUN_API ASNGEnemyBase : public ASNGCharacterBase_DEPRECATED
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "CoreMinimal.h"
|
||||
|
||||
#include "Camera/CameraComponent.h"
|
||||
#include "Characters/SNGCharacterBase.h"
|
||||
#include "Characters/SNGCharacterBase_DEPRECATED.h"
|
||||
#include "Components/SNGWeaponInventoryComponent.h"
|
||||
#include "GameFramework/SpringArmComponent.h"
|
||||
|
||||
@ -27,7 +27,7 @@ struct FMeleeAttackData
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class SWORDNGUN_API ASNGProtagonist : public ASNGCharacterBase
|
||||
class SWORDNGUN_API ASNGProtagonist : public ASNGCharacterBase_DEPRECATED
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
|
@ -54,11 +54,7 @@ protected:
|
||||
|
||||
/** Force to continuously apply to character when they are holding the jump button */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Character Movement: SNG Air Defaults", meta=(ClampMin="0", UIMin="0"))
|
||||
float JumpForce;
|
||||
|
||||
/** Timer that counts down */
|
||||
UPROPERTY(BlueprintReadWrite);
|
||||
float JumpTimer;
|
||||
float DefaultJumpForce;
|
||||
|
||||
/** Minimum height a character must reach before jump force is no longer applied even if the jump input is not being held */
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Character Movement: SNG Air Defaults", meta=(ClampMin="0", UIMin="0"))
|
||||
|
Loading…
Reference in New Issue
Block a user