Compare commits

..

No commits in common. "adfe961cefe2cb684a2acff3dbf22d02cd063fd1" and "fef6bd8e3e60832ec356fdd52552689dfe0f9a48" have entirely different histories.

12 changed files with 4 additions and 120 deletions

View File

@ -2,7 +2,7 @@
bEnabled=False
Startup=AutomaticButHidden
bEnableReinstancing=True
bAutomaticallyCompileNewClasses=False
bAutomaticallyCompileNewClasses=True
bPreloadEngineModules=False
bPreloadEnginePluginModules=False
bPreloadProjectModules=True

Binary file not shown.

View File

@ -1,4 +1,4 @@
// Copyright; GhostPacket Games
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once

View File

@ -3,12 +3,3 @@
#include "Character/AuraEnemy.h"
void AAuraEnemy::HighlightActor()
{
bHighlighted = true;
}
void AAuraEnemy::UnHighlightActor()
{
bHighlighted = false;
}

View File

@ -1,6 +0,0 @@
// Copyright; GhostPacket Games
#include "Interaction/EnemyInterface.h"
// Add default functionality here for any IEnemyInterface functions that are not pure virtual.

View File

@ -5,75 +5,12 @@
#include "EnhancedInputSubsystems.h"
#include "EnhancedInputComponent.h"
#include "Interaction/EnemyInterface.h"
AAuraPlayerController::AAuraPlayerController()
{
bReplicates = true;
}
void AAuraPlayerController::PlayerTick(float DeltaTime)
{
Super::PlayerTick(DeltaTime);
CursorTrace();
}
void AAuraPlayerController::CursorTrace()
{
FHitResult CursorHit;
GetHitResultUnderCursor(ECC_Visibility, false, CursorHit);
if (!CursorHit.bBlockingHit)
return;
LastActor = ThisActor;
ThisActor = CursorHit.GetActor();
/*
* Line tracer from cursor. There are several scenarios:
* A. LastActor is null && ThisActor is null
* - Do nothing.
* B. LastActor is null && ThisActor is valid
* - Highlight ThisActor.
* C. LastActor is valid && ThisActor is null
* - UnHighlight LastActor
* D. Both actors are valid, but LastActor != ThisActor
* - UnHighlight LastActor.
* - Highlight ThisActor.
* E. Both actors are valid, and are the same actor
* - Do nothing.
*/
if (!LastActor)
{
if (ThisActor)
{
// Case B
ThisActor->HighlightActor();
}
// else Case A
}
else // LastActor is valid
{
if (!ThisActor)
{
// Case C
LastActor->UnHighlightActor();
}
else
{
// Both Actors are valid
if (LastActor != ThisActor)
{
// Case D
LastActor->UnHighlightActor();
ThisActor->HighlightActor();
}
// else do nothing
}
}
}
void AAuraPlayerController::BeginPlay()
{
Super::BeginPlay();
@ -115,4 +52,4 @@ void AAuraPlayerController::Move(const FInputActionValue& InputActionValue)
ControlledPawn->AddMovementInput(ForwardDirection, InputAxisVector.Y);
ControlledPawn->AddMovementInput(RightDirection, InputAxisVector.X);
}
}

View File

@ -4,21 +4,14 @@
#include "CoreMinimal.h"
#include "Character/AuraCharacterBase.h"
#include "Interaction/EnemyInterface.h"
#include "AuraEnemy.generated.h"
/**
*
*/
UCLASS()
class AURA_API AAuraEnemy : public AAuraCharacterBase, public IEnemyInterface
class AURA_API AAuraEnemy : public AAuraCharacterBase
{
GENERATED_BODY()
public:
virtual void HighlightActor() override;
virtual void UnHighlightActor() override;
UPROPERTY (BlueprintReadOnly)
bool bHighlighted = false;
};

View File

@ -1,22 +0,0 @@
// Copyright; GhostPacket Games
#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "EnemyInterface.generated.h"
UINTERFACE(MinimalAPI)
class UEnemyInterface : public UInterface
{
GENERATED_BODY()
};
class AURA_API IEnemyInterface
{
GENERATED_BODY()
public:
virtual void HighlightActor () = 0; // pure virtual function
virtual void UnHighlightActor () = 0;
};

View File

@ -9,8 +9,6 @@
class UInputMappingContext;
class UInputAction;
class IEnemyInterface;
struct FInputActionValue;
UCLASS()
@ -20,7 +18,6 @@ class AURA_API AAuraPlayerController : public APlayerController
public:
AAuraPlayerController ();
virtual void PlayerTick(float DeltaTime) override;
protected:
virtual void BeginPlay() override;
@ -34,10 +31,4 @@ private:
TObjectPtr<UInputAction> MoveAction;
void Move (const FInputActionValue &InputActionValue);
void CursorTrace ();
// for highlighting
TScriptInterface<IEnemyInterface> LastActor; // TScriptInterface must be used to hold interfaces
TScriptInterface<IEnemyInterface> ThisActor;
};