14. Post-Process Highlight
And alot more...
This commit is contained in:
parent
20fa7f7116
commit
1ee21cbedc
2
.gitignore
vendored
2
.gitignore
vendored
@ -18,3 +18,5 @@ Project/.idea
|
|||||||
|
|
||||||
Project/Saved/Screenshots
|
Project/Saved/Screenshots
|
||||||
*/Binaries/Win64/*.patch_*.*
|
*/Binaries/Win64/*.patch_*.*
|
||||||
|
Project/Saved/ImGui
|
||||||
|
Project/Saved/ImGui/imgui.ini
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -58,6 +58,7 @@ bAuthorizeAutomaticWidgetVariableCreation=False
|
|||||||
[/Script/Engine.Engine]
|
[/Script/Engine.Engine]
|
||||||
+ActiveGameNameRedirects=(OldGameName="TP_BlankBP",NewGameName="/Script/Aura")
|
+ActiveGameNameRedirects=(OldGameName="TP_BlankBP",NewGameName="/Script/Aura")
|
||||||
+ActiveGameNameRedirects=(OldGameName="/Script/TP_BlankBP",NewGameName="/Script/Aura")
|
+ActiveGameNameRedirects=(OldGameName="/Script/TP_BlankBP",NewGameName="/Script/Aura")
|
||||||
|
LevelScriptActorClassName=/Script/Gasa.GasaLevelScriptActor
|
||||||
|
|
||||||
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
|
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
|
||||||
bEnablePlugin=True
|
bEnablePlugin=True
|
||||||
@ -73,3 +74,59 @@ ConnectionType=USBOnly
|
|||||||
bUseManualIPAddress=False
|
bUseManualIPAddress=False
|
||||||
ManualIPAddress=
|
ManualIPAddress=
|
||||||
|
|
||||||
|
[/Script/Engine.CollisionProfile]
|
||||||
|
-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False)
|
||||||
|
-Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
|
||||||
|
-Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(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. ",bCanModify=False)
|
||||||
|
-Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
|
||||||
|
-Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(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="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False)
|
||||||
|
-Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False)
|
||||||
|
-Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False)
|
||||||
|
-Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False)
|
||||||
|
-Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False)
|
||||||
|
-Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False)
|
||||||
|
-Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False)
|
||||||
|
-Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False)
|
||||||
|
-Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False)
|
||||||
|
-Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False)
|
||||||
|
-Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(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="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False)
|
||||||
|
-Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False)
|
||||||
|
-Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False)
|
||||||
|
-Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(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. ",bCanModify=False)
|
||||||
|
+Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision")
|
||||||
|
+Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ")
|
||||||
|
+Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(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="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ")
|
||||||
|
+Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(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="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ")
|
||||||
|
+Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.")
|
||||||
|
+Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ")
|
||||||
|
+Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ")
|
||||||
|
+Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.")
|
||||||
|
+Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.")
|
||||||
|
+Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors")
|
||||||
|
+Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors")
|
||||||
|
+Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.")
|
||||||
|
+Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.")
|
||||||
|
+Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(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="WorldDynamic object that is used for trigger. All other channels will be set to default.")
|
||||||
|
+Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.")
|
||||||
|
+Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.")
|
||||||
|
+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. ")
|
||||||
|
-ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall")
|
||||||
|
-ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn")
|
||||||
|
-ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic")
|
||||||
|
-ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor")
|
||||||
|
-ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic")
|
||||||
|
+ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall")
|
||||||
|
+ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn")
|
||||||
|
+ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic")
|
||||||
|
+ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor")
|
||||||
|
+ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic")
|
||||||
|
-CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic")
|
||||||
|
-CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic")
|
||||||
|
-CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle")
|
||||||
|
-CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn")
|
||||||
|
+CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic")
|
||||||
|
+CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic")
|
||||||
|
+CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle")
|
||||||
|
+CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn")
|
||||||
|
|
||||||
|
@ -6,3 +6,7 @@ Description=GASATHON
|
|||||||
ProjectName=GASATHON
|
ProjectName=GASATHON
|
||||||
CopyrightNotice=
|
CopyrightNotice=
|
||||||
|
|
||||||
|
[/Script/Gasa.GasaDevOptions]
|
||||||
|
Tag_PPV=Global_PPV
|
||||||
|
Tag_GlobalPPV=Global_PPV
|
||||||
|
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CppCodeStyle/OverridingFunctionStyle/@EntryValue">Override</s:String></wpf:ResourceDictionary>
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CppCodeStyle/OverridingFunctionStyle/@EntryValue">Override</s:String>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gasa/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
@ -1,29 +0,0 @@
|
|||||||
[Window][DockSpaceViewport_11111111]
|
|
||||||
Pos=0,0
|
|
||||||
Size=1614,1271
|
|
||||||
Collapsed=0
|
|
||||||
|
|
||||||
[Window][Debug##Default]
|
|
||||||
Pos=60,60
|
|
||||||
Size=400,400
|
|
||||||
Collapsed=0
|
|
||||||
|
|
||||||
[Window][Inspector##Inspector]
|
|
||||||
Pos=910,136
|
|
||||||
Size=641,1061
|
|
||||||
Collapsed=1
|
|
||||||
|
|
||||||
[Table][0x7E0CA29E,2]
|
|
||||||
Column 0 Weight=1.0000
|
|
||||||
Column 1 Weight=1.0000
|
|
||||||
|
|
||||||
[Docking][Data]
|
|
||||||
DockSpace ID=0x8B93E3BD Window=0xA787BDB4 Pos=0,0 Size=1614,1271 CentralNode=1
|
|
||||||
|
|
||||||
[Cog][Windows]
|
|
||||||
0xD0F6B9F9
|
|
||||||
|
|
||||||
[Cog][Widgets]
|
|
||||||
0x348EE4A5 0
|
|
||||||
0x63A19979 0
|
|
||||||
|
|
30
Project/Source/Gasa/Actors/CameraMount.cpp
Normal file
30
Project/Source/Gasa/Actors/CameraMount.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include "CameraMount.h"
|
||||||
|
|
||||||
|
#include "Camera/CameraComponent.h"
|
||||||
|
#include "GameFramework/SpringArmComponent.h"
|
||||||
|
|
||||||
|
|
||||||
|
ACameraMount::ACameraMount()
|
||||||
|
{
|
||||||
|
PrimaryActorTick.bCanEverTick = true;
|
||||||
|
|
||||||
|
RootComponent = CreateDefaultSubobject<USceneComponent>("Root");
|
||||||
|
|
||||||
|
CamSpringArm = CreateDefaultSubobject<USpringArmComponent>("Camera Spring Arm");
|
||||||
|
CamSpringArm->SetupAttachment(RootComponent);
|
||||||
|
CamSpringArm->SetRelativeRotation( FQuat::MakeFromEuler(FVector(0.0, -35.0, 0.0)));
|
||||||
|
CamSpringArm->TargetArmLength = 400.0f;
|
||||||
|
CamSpringArm->bDoCollisionTest = true;
|
||||||
|
|
||||||
|
CamSpringArm->bInheritPitch = false;
|
||||||
|
CamSpringArm->bInheritYaw = false;
|
||||||
|
CamSpringArm->bInheritRoll = false;
|
||||||
|
|
||||||
|
Camera = CreateDefaultSubobject<UCameraComponent>("Camera");
|
||||||
|
Camera->SetupAttachment(CamSpringArm);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ACameraMount::PostInitializeComponents()
|
||||||
|
{
|
||||||
|
Super::PostInitializeComponents();
|
||||||
|
}
|
25
Project/Source/Gasa/Actors/CameraMount.h
Normal file
25
Project/Source/Gasa/Actors/CameraMount.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GasaCommon.h"
|
||||||
|
#include "CameraMount.generated.h"
|
||||||
|
|
||||||
|
UCLASS(Blueprintable)
|
||||||
|
class GASA_API ACameraMount : public AActor
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
public:
|
||||||
|
#pragma region Camera
|
||||||
|
UPROPERTY(EditAnywhere, Category="Camera")
|
||||||
|
TObjectPtr<UCameraComponent> Camera;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, Category="Camera")
|
||||||
|
TObjectPtr<USpringArmComponent> CamSpringArm;
|
||||||
|
#pragma endregion Camera
|
||||||
|
|
||||||
|
ACameraMount();
|
||||||
|
|
||||||
|
#pragma region Actor
|
||||||
|
void PostInitializeComponents() override;
|
||||||
|
#pragma endregion Actor
|
||||||
|
};
|
||||||
|
|
@ -1,5 +1,6 @@
|
|||||||
#include "GasaCharacter.h"
|
#include "GasaCharacter.h"
|
||||||
|
|
||||||
|
#include "GasaLevelScriptActor.h"
|
||||||
#include "Camera/CameraComponent.h"
|
#include "Camera/CameraComponent.h"
|
||||||
#include "Components/CapsuleComponent.h"
|
#include "Components/CapsuleComponent.h"
|
||||||
#include "GameFramework/CharacterMovementComponent.h"
|
#include "GameFramework/CharacterMovementComponent.h"
|
||||||
@ -31,18 +32,6 @@ AGasaCharacter::AGasaCharacter()
|
|||||||
USceneComponent* root_component = GetRootComponent();
|
USceneComponent* root_component = GetRootComponent();
|
||||||
USkeletalMeshComponent* mesh = GetMesh();
|
USkeletalMeshComponent* mesh = GetMesh();
|
||||||
|
|
||||||
CamSpringArm = CreateDefaultSubobject<USpringArmComponent>("Camera Spring Arm");
|
|
||||||
CamSpringArm->SetupAttachment(root_component);
|
|
||||||
CamSpringArm->SetRelativeRotation( FQuat::MakeFromEuler(FVector(0.0, -35.0, 0.0)));
|
|
||||||
CamSpringArm->TargetArmLength = 400.0f;
|
|
||||||
|
|
||||||
CamSpringArm->bInheritPitch = false;
|
|
||||||
CamSpringArm->bInheritYaw = false;
|
|
||||||
CamSpringArm->bInheritRoll = false;
|
|
||||||
|
|
||||||
Camera = CreateDefaultSubobject<UCameraComponent>("Camera");
|
|
||||||
Camera->SetupAttachment(CamSpringArm);
|
|
||||||
|
|
||||||
Weapon = CreateDefaultSubobject<USkeletalMeshComponent>("Weapon");
|
Weapon = CreateDefaultSubobject<USkeletalMeshComponent>("Weapon");
|
||||||
Weapon->SetupAttachment(mesh, FName("WeaponAttach"));
|
Weapon->SetupAttachment(mesh, FName("WeaponAttach"));
|
||||||
Weapon->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
Weapon->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||||
@ -56,24 +45,42 @@ void AGasaCharacter::BeginPlay()
|
|||||||
void AGasaCharacter::Tick(float DeltaSeconds)
|
void AGasaCharacter::Tick(float DeltaSeconds)
|
||||||
{
|
{
|
||||||
Super::Tick(DeltaSeconds);
|
Super::Tick(DeltaSeconds);
|
||||||
|
|
||||||
|
USkeletalMeshComponent* mesh = GetMesh();
|
||||||
switch (HighlightState)
|
switch (HighlightState)
|
||||||
{
|
{
|
||||||
case EHighlight::Disabled:
|
case EHighlight::Disabled:
|
||||||
|
{
|
||||||
|
mesh->SetRenderCustomDepth(false);
|
||||||
|
mesh->SetCustomDepthStencilValue(0.f);
|
||||||
|
Weapon->SetRenderCustomDepth(false);
|
||||||
|
Weapon->SetCustomDepthStencilValue(0.f);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case EHighlight::Enabled:
|
case EHighlight::Enabled:
|
||||||
{
|
{
|
||||||
|
mesh->SetRenderCustomDepth(true);
|
||||||
|
mesh->SetCustomDepthStencilValue(HighlightStencilDepth);
|
||||||
|
Weapon->SetRenderCustomDepth(true);
|
||||||
|
Weapon->SetCustomDepthStencilValue(HighlightStencilDepth);
|
||||||
|
|
||||||
|
APostProcessVolume* PPV = Gasa::GetLevelActor(this)->GlobalPPV;
|
||||||
|
TObjectPtr<UObject> Blendable = PPV->Settings.WeightedBlendables.Array[0].Object;
|
||||||
|
UMaterialInstanceDynamic*
|
||||||
|
MID = Cast<UMaterialInstanceDynamic>(Blendable);
|
||||||
|
MID->SetVectorParameterValue("Depth Highlight Color", HighlightColor);
|
||||||
|
#if 0
|
||||||
UCapsuleComponent* Capsule = GetCapsuleComponent();
|
UCapsuleComponent* Capsule = GetCapsuleComponent();
|
||||||
|
|
||||||
UKismetSystemLibrary::DrawDebugCapsule(this
|
UKismetSystemLibrary::DrawDebugCapsule(this
|
||||||
, Capsule->GetComponentLocation()
|
, Capsule->GetComponentLocation()
|
||||||
, Capsule->GetScaledCapsuleHalfHeight()
|
, Capsule->GetScaledCapsuleHalfHeight()^
|
||||||
, Capsule->GetScaledCapsuleRadius()
|
, Capsule->GetScaledCapsuleRadius()
|
||||||
, Capsule->GetComponentRotation()
|
, Capsule->GetComponentRotation()
|
||||||
, HighlightColor
|
, HighlightColor
|
||||||
, 0.f
|
, 0.f
|
||||||
, 1.f
|
, 1.f
|
||||||
);
|
);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
@ -17,23 +17,14 @@ class GASA_API AGasaCharacter : public ACharacter
|
|||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
// TODO(Ed): Either make a toggle ore move to player controller if it gets expensive
|
|
||||||
// There is no need to have this lodged int PlayerCharacter anyway. It can attach to pawn on posses.
|
|
||||||
#pragma region Camera
|
|
||||||
UPROPERTY(EditAnywhere, Category="Camera")
|
|
||||||
UCameraComponent* Camera;
|
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, Category="Camera")
|
|
||||||
USpringArmComponent* CamSpringArm;
|
|
||||||
#pragma endregion Camera
|
|
||||||
|
|
||||||
#pragma region Combat
|
#pragma region Combat
|
||||||
UPROPERTY(EditAnywhere, Category="Combat")
|
UPROPERTY(EditAnywhere, Category="Combat")
|
||||||
TObjectPtr<USkeletalMeshComponent> Weapon;
|
TObjectPtr<USkeletalMeshComponent> Weapon;
|
||||||
#pragma endregion Combat
|
#pragma endregion Combat
|
||||||
|
|
||||||
// This will be implemented in the base until it needs to be lifted into an abstraction.
|
|
||||||
#pragma region Highlighting
|
#pragma region Highlighting
|
||||||
|
static constexpr float HighlightStencilDepth = 256.0;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Highlighting")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Highlighting")
|
||||||
EHighlight HighlightState;
|
EHighlight HighlightState;
|
||||||
|
|
||||||
@ -49,7 +40,7 @@ public:
|
|||||||
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
||||||
FORCEINLINE void Dehighlight() { SetHighlight(EHighlight::Disabled); };
|
FORCEINLINE void Dehighlight() { SetHighlight(EHighlight::Disabled); };
|
||||||
#pragma endregion Highlighting
|
#pragma endregion Highlighting
|
||||||
|
|
||||||
AGasaCharacter();
|
AGasaCharacter();
|
||||||
|
|
||||||
#pragma region Actor
|
#pragma region Actor
|
@ -23,6 +23,7 @@ public class Gasa : ModuleRules
|
|||||||
|
|
||||||
"AIModule",
|
"AIModule",
|
||||||
"CoreUObject",
|
"CoreUObject",
|
||||||
|
"DeveloperSettings",
|
||||||
"Engine",
|
"Engine",
|
||||||
"EnhancedInput",
|
"EnhancedInput",
|
||||||
"GameplayAbilities",
|
"GameplayAbilities",
|
||||||
|
@ -1,22 +1,32 @@
|
|||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
// #define private protected
|
// #define private protected
|
||||||
|
|
||||||
#include "CogCommon.h"
|
#define global
|
||||||
|
#define internal static
|
||||||
|
#define local_persist static
|
||||||
|
|
||||||
#pragma region Engine Forwards
|
#pragma region Engine Forwards
|
||||||
class UCameraComponent;
|
|
||||||
class UInputAction;
|
|
||||||
struct FInputActionValue;
|
struct FInputActionValue;
|
||||||
class UInputMappingContext;
|
|
||||||
class USpringArmComponent;
|
class UCameraComponent;
|
||||||
|
class UInputAction;
|
||||||
|
class UInputMappingContext;
|
||||||
|
class USpringArmComponent;
|
||||||
#pragma endregion Engine Forwards
|
#pragma endregion Engine Forwards
|
||||||
|
|
||||||
#pragma region Engine Plugin Forwards
|
#pragma region Engine Plugin Forwards
|
||||||
class UCogWindowManager;
|
class UCogWindowManager;
|
||||||
#pragma endregion Engine Plugin Forwards
|
#pragma endregion Engine Plugin Forwards
|
||||||
|
|
||||||
#pragma region Gasa Forwards
|
// Gasa
|
||||||
class AGasaCharacter;
|
|
||||||
#pragma endregion Gasa Forwards
|
|
||||||
|
|
||||||
|
#pragma region Forwards
|
||||||
|
class ACameraMount;
|
||||||
|
class AGasaCharacter;
|
||||||
|
class AGasaLevelScriptActor;
|
||||||
|
|
||||||
|
class UGasaDevOptions;
|
||||||
|
#pragma endregion Forwards
|
||||||
|
18
Project/Source/Gasa/GasaDevOptions.cpp
Normal file
18
Project/Source/Gasa/GasaDevOptions.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include "GasaDevOptions.h"
|
||||||
|
|
||||||
|
#include "GasaDevOptionsCache.h"
|
||||||
|
|
||||||
|
namespace Gasa
|
||||||
|
{
|
||||||
|
global FName Tag_GlobalPPV;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FGasaDevOptionsCache::CachedDevOptions()
|
||||||
|
{
|
||||||
|
using namespace Gasa;
|
||||||
|
|
||||||
|
UGasaDevOptions const* DevOs = GetDevOptions();
|
||||||
|
Tag_GlobalPPV = DevOs->Tag_GlobalPPV;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
29
Project/Source/Gasa/GasaDevOptions.h
Normal file
29
Project/Source/Gasa/GasaDevOptions.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Engine/DeveloperSettings.h"
|
||||||
|
|
||||||
|
#include "GasaDevOptions.generated.h"
|
||||||
|
|
||||||
|
UCLASS(Config=Game, DefaultConfig, meta=(DisplayName="Gasa"))
|
||||||
|
class GASA_API UGasaDevOptions : public UDeveloperSettings
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
public:
|
||||||
|
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="Tags")
|
||||||
|
FName Tag_GlobalPPV;
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Gasa
|
||||||
|
{
|
||||||
|
extern FName Tag_GlobalPPV;
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
UGasaDevOptions const* GetDevOptions() {
|
||||||
|
return GetDefault<UGasaDevOptions>();
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
UGasaDevOptions* GetMutDevOptions() {
|
||||||
|
return GetMutableDefault<UGasaDevOptions>();
|
||||||
|
}
|
||||||
|
}
|
13
Project/Source/Gasa/GasaDevOptionsCache.h
Normal file
13
Project/Source/Gasa/GasaDevOptionsCache.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GasaCommon.h"
|
||||||
|
|
||||||
|
#include "GasaDevOptionsCache.generated.h"
|
||||||
|
|
||||||
|
USTRUCT()
|
||||||
|
struct GASA_API FGasaDevOptionsCache
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
void CachedDevOptions();
|
||||||
|
};
|
8
Project/Source/Gasa/GasaGameInstance.cpp
Normal file
8
Project/Source/Gasa/GasaGameInstance.cpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include "GasaGameInstance.h"
|
||||||
|
|
||||||
|
void UGasaGameInstance::Init()
|
||||||
|
{
|
||||||
|
Super::Init();
|
||||||
|
|
||||||
|
DevOptionsCache.CachedDevOptions();
|
||||||
|
}
|
29
Project/Source/Gasa/GasaGameInstance.h
Normal file
29
Project/Source/Gasa/GasaGameInstance.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GasaCommon.h"
|
||||||
|
#include "GasaDevOptionsCache.h"
|
||||||
|
|
||||||
|
#include "GasaGameInstance.generated.h"
|
||||||
|
|
||||||
|
UCLASS(Blueprintable)
|
||||||
|
class GASA_API UGasaGameInstance : public UGameInstance
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
public:
|
||||||
|
|
||||||
|
UPROPERTY(VisibleAnywhere, Category="Dev Cache")
|
||||||
|
FGasaDevOptionsCache DevOptionsCache;
|
||||||
|
|
||||||
|
#pragma region GameInstance
|
||||||
|
void Init() override;
|
||||||
|
#pragma endregion GameInstance
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Gasa
|
||||||
|
{
|
||||||
|
FORCEINLINE
|
||||||
|
UGasaGameInstance* GetGameInstance(UObject* Context) {
|
||||||
|
// TODO(Ed): Do this with proper checks
|
||||||
|
return Context->GetWorld()->GetGameInstance<UGasaGameInstance>();
|
||||||
|
}
|
||||||
|
}
|
@ -9,3 +9,11 @@ class GASA_API AGasaGameMode : public AGameMode
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace Gasa
|
||||||
|
{
|
||||||
|
FORCEINLINE
|
||||||
|
AGasaGameMode* GetGameMode(UObject* Context) {
|
||||||
|
return Context->GetWorld()->GetAuthGameMode<AGasaGameMode>();
|
||||||
|
}
|
||||||
|
}
|
@ -27,4 +27,12 @@ public:
|
|||||||
|
|
||||||
void Tick(float DeltaSeconds) override;
|
void Tick(float DeltaSeconds) override;
|
||||||
#pragma endregion GameState
|
#pragma endregion GameState
|
||||||
};
|
};
|
||||||
|
|
||||||
|
namespace Gasa
|
||||||
|
{
|
||||||
|
FORCEINLINE
|
||||||
|
AGasaGameState* GetGameState(UObject* Context) {
|
||||||
|
return Context->GetWorld()->GetGameState<AGasaGameState>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
2
Project/Source/Gasa/GasaGameplayTags.cpp
Normal file
2
Project/Source/Gasa/GasaGameplayTags.cpp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#include "GasaGameplayTags.h"
|
||||||
|
|
3
Project/Source/Gasa/GasaGameplayTags.h
Normal file
3
Project/Source/Gasa/GasaGameplayTags.h
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "NativeGameplayTags.h"
|
25
Project/Source/Gasa/GasaLevelScriptActor.cpp
Normal file
25
Project/Source/Gasa/GasaLevelScriptActor.cpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include "GasaLevelScriptActor.h"
|
||||||
|
|
||||||
|
#include "GasaDevOptions.h"
|
||||||
|
#include "GasaGameplayTags.h"
|
||||||
|
#include "Kismet/GameplayStatics.h"
|
||||||
|
|
||||||
|
#include "GasaLibrary.h"
|
||||||
|
|
||||||
|
void AGasaLevelScriptActor::BeginPlay()
|
||||||
|
{
|
||||||
|
Super::BeginPlay();
|
||||||
|
|
||||||
|
TArray<AActor*> TaggedActors;
|
||||||
|
UGameplayStatics::GetAllActorsWithTag(GetWorld(), Gasa::GetDevOptions()->Tag_GlobalPPV,TaggedActors);
|
||||||
|
for (AActor* Actor : TaggedActors)
|
||||||
|
{
|
||||||
|
GlobalPPV = Cast<APostProcessVolume>(Actor);
|
||||||
|
|
||||||
|
APostProcessVolume* PPV = Gasa::GetLevelActor(this)->GlobalPPV;
|
||||||
|
UMaterialInstance* Blendable = Cast<UMaterialInstance>(PPV->Settings.WeightedBlendables.Array[0].Object);
|
||||||
|
UMaterialInstanceDynamic* MID = UMaterialInstanceDynamic::Create(Blendable, this);
|
||||||
|
PPV->Settings.WeightedBlendables.Array[0].Object = MID;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
27
Project/Source/Gasa/GasaLevelScriptActor.h
Normal file
27
Project/Source/Gasa/GasaLevelScriptActor.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Engine/LevelScriptActor.h"
|
||||||
|
|
||||||
|
#include "GasaLevelScriptActor.generated.h"
|
||||||
|
|
||||||
|
UCLASS(Blueprintable)
|
||||||
|
class GASA_API AGasaLevelScriptActor : public ALevelScriptActor
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
public:
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Post Process")
|
||||||
|
TObjectPtr<APostProcessVolume> GlobalPPV;
|
||||||
|
|
||||||
|
#pragma region Actor
|
||||||
|
void BeginPlay() override;
|
||||||
|
#pragma region endActor
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Gasa
|
||||||
|
{
|
||||||
|
inline
|
||||||
|
AGasaLevelScriptActor* GetLevelActor(UObject* Context, ULevel* OwnerLevel = nullptr) {
|
||||||
|
UWorld* World = GEngine->GetWorldFromContextObjectChecked(Context);
|
||||||
|
return Cast<AGasaLevelScriptActor>(World->GetLevelScriptActor(OwnerLevel));
|
||||||
|
}
|
||||||
|
}
|
9
Project/Source/Gasa/GasaLibrary.cpp
Normal file
9
Project/Source/Gasa/GasaLibrary.cpp
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#include "GasaLibrary.h"
|
||||||
|
|
||||||
|
#include "GasaDevOptions.h"
|
||||||
|
#include "GasaLevelScriptActor.h"
|
||||||
|
#include "Engine/LevelScriptActor.h"
|
||||||
|
|
||||||
|
UGasaDevOptions* UGasaLib::GetDevOptions(UObject* Context) {
|
||||||
|
return Gasa::GetMutDevOptions();
|
||||||
|
}
|
23
Project/Source/Gasa/GasaLibrary.h
Normal file
23
Project/Source/Gasa/GasaLibrary.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "GasaCommon.h"
|
||||||
|
|
||||||
|
#include "GasaLibrary.Generated.h"
|
||||||
|
|
||||||
|
|
||||||
|
// UINTERFACE()
|
||||||
|
// class
|
||||||
|
|
||||||
|
UCLASS(BlueprintType)
|
||||||
|
class GASA_API UGasaLib : public UBlueprintFunctionLibrary
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
public:
|
||||||
|
|
||||||
|
#pragma region Game
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category="Gasa|Game", BlueprintPure, meta=(WorldContext="Context"))
|
||||||
|
static UGasaDevOptions* GetDevOptions(UObject* Context);
|
||||||
|
#pragma endregion Game
|
||||||
|
};
|
||||||
|
|
@ -3,10 +3,19 @@
|
|||||||
#include "Engine/LocalPlayer.h"
|
#include "Engine/LocalPlayer.h"
|
||||||
#include "EnhancedInputComponent.h"
|
#include "EnhancedInputComponent.h"
|
||||||
#include "EnhancedInputSubsystems.h"
|
#include "EnhancedInputSubsystems.h"
|
||||||
#include "Character/GasaCharacter.h"
|
#include "Actors/CameraMount.h"
|
||||||
|
#include "Camera/CameraComponent.h"
|
||||||
|
#include "Characters/GasaCharacter.h"
|
||||||
|
#include "Components/CapsuleComponent.h"
|
||||||
|
#include "GameFramework/SpringArmComponent.h"
|
||||||
|
#include "Kismet/KismetSystemLibrary.h"
|
||||||
|
|
||||||
AGasaPlayerController::AGasaPlayerController()
|
AGasaPlayerController::AGasaPlayerController()
|
||||||
{
|
{
|
||||||
|
PrimaryActorTick.bCanEverTick = true;
|
||||||
|
bAutoManageActiveCameraTarget = false;
|
||||||
|
|
||||||
|
// Replication
|
||||||
bReplicates = true;
|
bReplicates = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,6 +62,18 @@ void AGasaPlayerController::Move(FInputActionValue const& ActionValue)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AGasaPlayerController::OnPossess(APawn* InPawn)
|
||||||
|
{
|
||||||
|
Super::OnPossess(InPawn);
|
||||||
|
|
||||||
|
Cam->AttachToActor(InPawn, FAttachmentTransformRules::KeepRelativeTransform);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AGasaPlayerController::OnUnPossess()
|
||||||
|
{
|
||||||
|
Super::OnUnPossess();
|
||||||
|
}
|
||||||
|
|
||||||
#pragma region PlayerController
|
#pragma region PlayerController
|
||||||
void AGasaPlayerController::PlayerTick(float DeltaTime)
|
void AGasaPlayerController::PlayerTick(float DeltaTime)
|
||||||
{
|
{
|
||||||
@ -110,6 +131,7 @@ void AGasaPlayerController::BeginPlay()
|
|||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
|
|
||||||
check(IMC);
|
check(IMC);
|
||||||
|
|
||||||
UEnhancedInputLocalPlayerSubsystem*
|
UEnhancedInputLocalPlayerSubsystem*
|
||||||
EILP_Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer());
|
EILP_Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer());
|
||||||
check(EILP_Subsystem);
|
check(EILP_Subsystem);
|
||||||
@ -123,4 +145,40 @@ void AGasaPlayerController::BeginPlay()
|
|||||||
SetInputMode(MouseMode);
|
SetInputMode(MouseMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AGasaPlayerController::PostInitializeComponents()
|
||||||
|
{
|
||||||
|
Super::PostInitializeComponents();
|
||||||
|
|
||||||
|
Cam = GetWorld()->SpawnActor<ACameraMount>(CamClass, FActorSpawnParameters() );
|
||||||
|
SetViewTarget(Cam);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AGasaPlayerController::Tick(float DeltaSeconds)
|
||||||
|
{
|
||||||
|
Super::Tick(DeltaSeconds);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
switch (HighlightState)
|
||||||
|
{
|
||||||
|
case EHighlight::Disabled:
|
||||||
|
break;
|
||||||
|
case EHighlight::Enabled:
|
||||||
|
{
|
||||||
|
UCapsuleComponent* Capsule = GetCapsuleComponent();
|
||||||
|
|
||||||
|
UKismetSystemLibrary::DrawDebugCapsule(this
|
||||||
|
, Capsule->GetComponentLocation()
|
||||||
|
, Capsule->GetScaledCapsuleHalfHeight()
|
||||||
|
, Capsule->GetScaledCapsuleRadius()
|
||||||
|
, Capsule->GetComponentRotation()
|
||||||
|
, HighlightColor
|
||||||
|
, 0.f
|
||||||
|
, 1.f
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
#pragma endregion Actor
|
#pragma endregion Actor
|
||||||
|
@ -11,13 +11,37 @@ class GASA_API AGasaPlayerController : public APlayerController
|
|||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
|
#pragma region Camera
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
TSubclassOf<ACameraMount> CamClass;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
TObjectPtr<ACameraMount> Cam;
|
||||||
|
#pragma endregion Camera
|
||||||
|
|
||||||
|
// This will be implemented in the base until it needs to be lifted into an abstraction.
|
||||||
|
#if 0
|
||||||
|
#pragma region Highlighting
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Highlighting")
|
||||||
|
EHighlight HighlightState;
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
||||||
|
void SetHighlight( EHighlight Desired );
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
||||||
|
FORCEINLINE void Highlight() { SetHighlight(EHighlight::Enabled); };
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category="Highlighting")
|
||||||
|
FORCEINLINE void Dehighlight() { SetHighlight(EHighlight::Disabled); };
|
||||||
|
#pragma endregion Highlighting
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma region Input
|
#pragma region Input
|
||||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
|
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
|
||||||
AGasaCharacter* HoverPrev;
|
TObjectPtr<AGasaCharacter> HoverPrev;
|
||||||
|
|
||||||
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
|
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
|
||||||
AGasaCharacter* HoverCurr;
|
TObjectPtr<AGasaCharacter> HoverCurr;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, Category="Input")
|
UPROPERTY(EditAnywhere, Category="Input")
|
||||||
TObjectPtr<UInputMappingContext> IMC;
|
TObjectPtr<UInputMappingContext> IMC;
|
||||||
@ -31,6 +55,10 @@ public:
|
|||||||
void Move(FInputActionValue const& ActionValue);
|
void Move(FInputActionValue const& ActionValue);
|
||||||
|
|
||||||
#pragma region PlayerController
|
#pragma region PlayerController
|
||||||
|
void OnPossess(APawn* InPawn) override;
|
||||||
|
|
||||||
|
void OnUnPossess() override;
|
||||||
|
|
||||||
void PlayerTick(float DeltaTime) override;
|
void PlayerTick(float DeltaTime) override;
|
||||||
|
|
||||||
void SetupInputComponent() override;
|
void SetupInputComponent() override;
|
||||||
@ -38,5 +66,9 @@ public:
|
|||||||
|
|
||||||
#pragma region Actor
|
#pragma region Actor
|
||||||
void BeginPlay() override;
|
void BeginPlay() override;
|
||||||
|
|
||||||
|
void PostInitializeComponents() override;
|
||||||
|
|
||||||
|
void Tick(float DeltaSeconds) override;
|
||||||
#pragma endregion Actor
|
#pragma endregion Actor
|
||||||
};
|
};
|
||||||
|
@ -12,6 +12,7 @@ public class GasaEditorTarget : TargetRules
|
|||||||
DefaultBuildSettings = BuildSettingsVersion.Latest;
|
DefaultBuildSettings = BuildSettingsVersion.Latest;
|
||||||
|
|
||||||
bUseUnityBuild = false;
|
bUseUnityBuild = false;
|
||||||
|
bUseXGEController = false;
|
||||||
|
|
||||||
ExtraModuleNames.Add("Gasa");
|
ExtraModuleNames.Add("Gasa");
|
||||||
ExtraModuleNames.Add("GasaEditor");
|
ExtraModuleNames.Add("GasaEditor");
|
||||||
|
Loading…
Reference in New Issue
Block a user