#pragma once #include "CoreMinimal.h" #include "Components/ActorComponent.h" #include "EDebrisItemPass.h" #include "GeneratedDebrisItem.h" #include "GeneratedInfluenceSets.h" #include "LevelGenerationCarverLists.h" #include "PathObstacle.h" #include "RoomNode.h" #include "TunnelNode.h" #include "ProceduralController.generated.h" UCLASS(Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent)) class UProceduralController : public UActorComponent { GENERATED_BODY() public: UProceduralController(); UFUNCTION(BlueprintCallable, Reliable, Server) void Server_RequestTunnelData(); protected: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void SendTunnelData(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void SendRoomData(); public: UFUNCTION(BlueprintCallable) void SendRequestedPLSData(); UFUNCTION(BlueprintCallable) void SendRequestedCarverData(EDebrisItemPass pass); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void RequestPLSData(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void RequestCarverData(EDebrisItemPass pass); protected: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void ReceivedTunnelData(const TArray& tunnels); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void ReceivedRoomData(int32 Seed, const TArray& Rooms, const TArray& Obstacles); public: UFUNCTION(BlueprintCallable, Client, Reliable) void Client_SendTunnelData(const TArray& tunnels); UFUNCTION(BlueprintCallable, Client, Reliable) void Client_SendRoomData(int32 Seed, const TArray& Rooms, const TArray& Obstacles); protected: UFUNCTION(BlueprintCallable, Client, Reliable) void Client_RecieveCarverSizes(int32 pass, int32 carverCount); UFUNCTION(BlueprintCallable, Client, Reliable) void Client_ReceivePLSLevelCarver(int32 pass, const FLevelGenerationCarverLists& levelCarvers); UFUNCTION(BlueprintCallable, Client, Reliable) void Client_ReceivePLSInfluencers(const FGeneratedInfluenceSets& influenceSet); UFUNCTION(BlueprintCallable, Client, Reliable) void Client_ReceivePLSDebris(const TArray& levelDebris); };