Compare commits
2 Commits
fef6bd8e3e
...
adfe961cef
Author | SHA1 | Date | |
---|---|---|---|
adfe961cef | |||
16eddc8849 |
@ -2,7 +2,7 @@
|
|||||||
bEnabled=False
|
bEnabled=False
|
||||||
Startup=AutomaticButHidden
|
Startup=AutomaticButHidden
|
||||||
bEnableReinstancing=True
|
bEnableReinstancing=True
|
||||||
bAutomaticallyCompileNewClasses=True
|
bAutomaticallyCompileNewClasses=False
|
||||||
bPreloadEngineModules=False
|
bPreloadEngineModules=False
|
||||||
bPreloadEnginePluginModules=False
|
bPreloadEnginePluginModules=False
|
||||||
bPreloadProjectModules=True
|
bPreloadProjectModules=True
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
// Copyright; GhostPacket Games
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
@ -3,3 +3,12 @@
|
|||||||
|
|
||||||
#include "Character/AuraEnemy.h"
|
#include "Character/AuraEnemy.h"
|
||||||
|
|
||||||
|
void AAuraEnemy::HighlightActor()
|
||||||
|
{
|
||||||
|
bHighlighted = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AAuraEnemy::UnHighlightActor()
|
||||||
|
{
|
||||||
|
bHighlighted = false;
|
||||||
|
}
|
||||||
|
6
Source/Aura/Private/Interaction/EnemyInterface.cpp
Normal file
6
Source/Aura/Private/Interaction/EnemyInterface.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// Copyright; GhostPacket Games
|
||||||
|
|
||||||
|
|
||||||
|
#include "Interaction/EnemyInterface.h"
|
||||||
|
|
||||||
|
// Add default functionality here for any IEnemyInterface functions that are not pure virtual.
|
@ -5,12 +5,75 @@
|
|||||||
|
|
||||||
#include "EnhancedInputSubsystems.h"
|
#include "EnhancedInputSubsystems.h"
|
||||||
#include "EnhancedInputComponent.h"
|
#include "EnhancedInputComponent.h"
|
||||||
|
#include "Interaction/EnemyInterface.h"
|
||||||
|
|
||||||
AAuraPlayerController::AAuraPlayerController()
|
AAuraPlayerController::AAuraPlayerController()
|
||||||
{
|
{
|
||||||
bReplicates = true;
|
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()
|
void AAuraPlayerController::BeginPlay()
|
||||||
{
|
{
|
||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
|
@ -4,14 +4,21 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "Character/AuraCharacterBase.h"
|
#include "Character/AuraCharacterBase.h"
|
||||||
|
#include "Interaction/EnemyInterface.h"
|
||||||
#include "AuraEnemy.generated.h"
|
#include "AuraEnemy.generated.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
UCLASS()
|
UCLASS()
|
||||||
class AURA_API AAuraEnemy : public AAuraCharacterBase
|
class AURA_API AAuraEnemy : public AAuraCharacterBase, public IEnemyInterface
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void HighlightActor() override;
|
||||||
|
virtual void UnHighlightActor() override;
|
||||||
|
|
||||||
|
UPROPERTY (BlueprintReadOnly)
|
||||||
|
bool bHighlighted = false;
|
||||||
};
|
};
|
||||||
|
22
Source/Aura/Public/Interaction/EnemyInterface.h
Normal file
22
Source/Aura/Public/Interaction/EnemyInterface.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// 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;
|
||||||
|
};
|
@ -9,6 +9,8 @@
|
|||||||
class UInputMappingContext;
|
class UInputMappingContext;
|
||||||
class UInputAction;
|
class UInputAction;
|
||||||
|
|
||||||
|
class IEnemyInterface;
|
||||||
|
|
||||||
struct FInputActionValue;
|
struct FInputActionValue;
|
||||||
|
|
||||||
UCLASS()
|
UCLASS()
|
||||||
@ -18,6 +20,7 @@ class AURA_API AAuraPlayerController : public APlayerController
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
AAuraPlayerController ();
|
AAuraPlayerController ();
|
||||||
|
virtual void PlayerTick(float DeltaTime) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
@ -31,4 +34,10 @@ private:
|
|||||||
TObjectPtr<UInputAction> MoveAction;
|
TObjectPtr<UInputAction> MoveAction;
|
||||||
|
|
||||||
void Move (const FInputActionValue &InputActionValue);
|
void Move (const FInputActionValue &InputActionValue);
|
||||||
|
|
||||||
|
void CursorTrace ();
|
||||||
|
|
||||||
|
// for highlighting
|
||||||
|
TScriptInterface<IEnemyInterface> LastActor; // TScriptInterface must be used to hold interfaces
|
||||||
|
TScriptInterface<IEnemyInterface> ThisActor;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user