#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "Engine/EngineTypes.h" #include "GameplayTagContainer.h" #include "AnimatedItem.h" #include "ELaserPointerMarkerType.h" #include "LaserPointerData.h" #include "MarkerPlacedDelegateDelegate.h" #include "Templates/SubclassOf.h" #include "LaserPointerItem.generated.h" class AActor; class AFSDGameState; class ALaserPointerMarker; class ALaserPointerWaypoint; class UDialogDataAsset; class UObject; class UObjectInfoComponent; class UPrimitiveComponent; class USceneComponent; class UTerrainMaterial; class UTexture2D; UCLASS(Abstract, Blueprintable) class ALaserPointerItem : public AAnimatedItem { GENERATED_BODY() public: UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FMarkerPlacedDelegate OnMarkerPlaced; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf MarkerType; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf SecondaryMarkerType; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TWeakObjectPtr ActiveMarker; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FGameplayTagContainer enemyTags; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf WaypointType; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 MaxWaypoints; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray Waypoints; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) int32 NextWaypointIndex; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float MarkerLifeTime; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* DefaultLookAtShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UDialogDataAsset* DefaultEnemyShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USceneComponent* PointerComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) FHitResult LookAtHit; UPROPERTY(BlueprintReadWrite, EditAnywhere, Export, Transient, meta=(AllowPrivateAccess=true)) TWeakObjectPtr LookAtInfo; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TWeakObjectPtr LookAtTerrainMaterial; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) FLaserPointerData LookAtData; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) float LookAtDistance; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) UDialogDataAsset* LookAtShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) UDialogDataAsset* MissionControlLookAtShout; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) AFSDGameState* GameState; public: ALaserPointerItem(); protected: UFUNCTION(BlueprintCallable, meta=(WorldContext="WorldContextObject")) void UnlockToMinersManual(UObject* WorldContextObject, FGuid ObjectID); public: UFUNCTION(BlueprintCallable, BlueprintNativeEvent) void ToggleLaserVisible(bool aVisible); protected: UFUNCTION(BlueprintCallable, Reliable, Server) void ServerPlaceMarker(FVector Location, AActor* Actor, UPrimitiveComponent* Cmponent, UTerrainMaterial* TerrainMaterial, ELaserPointerMarkerType eMarkerType); UFUNCTION(BlueprintCallable, Reliable, Server) void Server_SecondaryUse(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnPointOfInterest(AActor* TargetActor, FVector TargetLocation, UTexture2D* TargetIcon); UFUNCTION(BlueprintCallable, BlueprintNativeEvent, BlueprintPure) void GetPointTransform(FTransform& PointTransform); };