LEAP Documentation 40220
Documentation for the LEAP project
WeaponInstanceDesignator.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "ProjectX.h"
6#include "CoreMinimal.h"
7#include "Engine/EngineTypes.h"
9#include "WeaponInstanceDesignator.generated.h"
10
11UCLASS()
12class PROJECTX_API UWeaponInstanceDesignator : public UWeaponInstance
13{
14 GENERATED_UCLASS_BODY()
15
16public:
17 virtual void BeginPlay() override;
18 virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
19 virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override;
20
21public:
22 virtual bool CanFire(EWeaponError& ErrorMessage, uint8 Mode) const override;
23 virtual void EquipComplete() override;
24 virtual bool UnEquip(bool bForce = false) override;
25 virtual void OwnerDied() override;
26 virtual bool Fire(uint8 Mode, float WorldTimeOverride = -1.f) override;
27protected:
28 virtual void OnRep_WeaponState(EWeaponState PreviousState) override;
29 virtual void OnRep_FireCounter() override;
30 virtual void StopAllActions() override;
31public:
32 UFUNCTION(BlueprintCallable, Category = "Designator Weapon")
33 FORCEINLINE bool IsValidDesignator() const { return bValidDesignator; }
34 UFUNCTION(BlueprintCallable, Category = "Designator Weapon")
35 FORCEINLINE float GetDesignatorProgress() const { return ChargeValue; }
36 UFUNCTION(BlueprintPure, Category = "Designator Weapon")
37 FORCEINLINE UParticleSystemComponent* GetTraceParticleSystem() const { return TraceParticleSystem; }
38
39protected:
40 //Unreliable because this will be sent very frequently and is mostly used to just propagate this info to other clients.
41 UFUNCTION(Server, Unreliable, WithValidation)
42 virtual void Server_Unreliable_UpdateDesignation(const FVector& NewDesignatorLocation);
43 UFUNCTION(NetMulticast, Unreliable)
44 virtual void Multicast_Unreliable_UpdateDesignation(const FVector& NewDesignatorLocation);
45
46 UFUNCTION(Server, Reliable, WithValidation)
47 virtual void Server_Reliable_StartDesignation(const FVector& InitialDesignatorLocation);
48
49 virtual void UpdateDesignator(float DeltaTime = 0.f) override;
50 virtual void CompleteDesignation();
51 virtual bool GetTargetTransform(FTransform& Transform) const override;
52 virtual void ToggleDesignatorMarker(bool bEnable) override;
53 virtual void SpawnTraceCosmetics(const FVector& EndLocation);
54
55 UFUNCTION(BlueprintImplementableEvent, Category = Marker)
56 void K2_OnDesignatorMarkerToggled();
57
58protected:
59 UPROPERTY()
60 FVector DesignatorLocation = FVector(0, 0, 0);
61 UPROPERTY()
62 float DesignationStartTime = -1.f;
63
64protected:
65 //Class that is spawned when designation completes.
66 UPROPERTY(EditDefaultsOnly, Category = "Designator Weapon")
67 TSubclassOf<class AWeaponInstanceActor> SpawnedActorClass = NULL;
68 /* Range from user that the designator can be targeted*/
69 UPROPERTY(EditDefaultsOnly, Category = "Designator Weapon")
70 float DesignatorRange = 100000.f;
71 /* Range from user that the designator can be targeted*/
72 UPROPERTY(EditDefaultsOnly, Category = "Designator Weapon")
73 bool bMatchPlayerYaw = false;
74 /* Emitter that should be used for the designator's trace */
75 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Designator Weapon|Effects")
76 UParticleSystem* TraceEmitter = NULL;
77 /* Where on the weapon to attach the Weapon Trace Emitter */
78 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Designator Weapon|Effects")
79 FName TraceEmitterSocket = "Muzzle";
80 /* Which Channel to test for desingator target position*/
81 UPROPERTY(EditDefaultsOnly, Category = "Designator Weapon")
82 TEnumAsByte<ECollisionChannel> DesignatorTraceChannel = ECC_WorldOnly;
83 /*do you test vertically at the target location*/
84 UPROPERTY(EditDefaultsOnly, Category = "Designator Weapon")
85 bool bTestVertically = false;
86 /* How High To test for designator End Point*/
87 UPROPERTY(EditDefaultsOnly, Category = "Designator Weapon")
88 float TraceHeight = 100000.0f;
89 UPROPERTY()
90 class UParticleSystemComponent* TraceParticleSystem = NULL;
91};
#define ECC_WorldOnly
Definition: ProjectX.h:67
EWeaponError
Definition: WeaponComponent.h:15
EWeaponState
Definition: WeaponInstance.h:132
Definition: WeaponInstanceActor.h:16
Definition: WeaponInstanceDesignator.h:13
Definition: WeaponInstance.h:220