Files
UnrealEngineUWP/Engine/Source/Runtime/AugmentedReality/Public/ARSharedWorldGameMode.h
ryan durand 0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00

84 lines
2.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "GameFramework/GameMode.h"
#include "ARSharedWorldGameState.h"
#include "ARSharedWorldPlayerController.h"
#include "ARSharedWorldGameMode.generated.h"
/** Per player information about what data has been sent to them */
USTRUCT(BlueprintType)
struct AUGMENTEDREALITY_API FARSharedWorldReplicationState
{
GENERATED_BODY()
FARSharedWorldReplicationState()
{
PreviewImageOffset = ARWorldOffset = 0;
}
/** The offset in the overall image data buffer */
UPROPERTY(BlueprintReadOnly, Category="AR Shared World")
int32 PreviewImageOffset;
/** The offset in the overall ARWorld data buffer */
UPROPERTY(BlueprintReadOnly, Category="AR Shared World")
int32 ARWorldOffset;
};
UCLASS(BlueprintType)
class AUGMENTEDREALITY_API AARSharedWorldGameMode :
public AGameMode
{
GENERATED_UCLASS_BODY()
public:
/** The size of the buffer to use per send request. Must be between 1 and 65535, though should not be max to avoid saturation */
UPROPERTY(Config, EditAnywhere, BlueprintReadWrite, Category="AR Shared World")
int32 BufferSizePerChunk;
/**
* Sets the image data for the shared world game session
*
* @param ImageData the blob to use as the image data
*/
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, meta=(DisplayName="Set AR Preview Image Data"), Category="AR Shared World")
void SetPreviewImageData(TArray<uint8> ImageData);
/**
* Sets the image data for the shared world game session
*
* @param ARWorldData the blob to use as the AR world data
*/
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, meta=(DisplayName="Set AR Shared World Data"), Category="AR Shared World")
void SetARSharedWorldData(TArray<uint8> ARWorldData);
/**
* Tells the game mode that the AR data is ready and should be replicated to all connected clients
*/
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, meta=(DisplayName="Set AR World Sharing Is Ready"), Category="AR Shared World")
void SetARWorldSharingIsReady();
/**
* @return the game state for this game mode
*/
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category="AR Shared World")
AARSharedWorldGameState* GetARSharedWorldGameState();
private:
virtual void Tick(float DeltaSeconds) override;
virtual void Logout(AController* Exiting) override;
/** Tracks whether the data should be sent to all clients or not */
bool bShouldSendSharedWorldData;
/** Holds the progress for each player that is being replicated to */
TMap<AARSharedWorldPlayerController*, FARSharedWorldReplicationState> PlayerToReplicationStateMap;
/** Scratch buffer for sending chunks, cached to avoid allocation churn */
TArray<uint8> SendBuffer;
};