text: // OVRPlatformBP plugin by InnerLoop LLC 2021
  
  #pragma once
  
  #include "OVRPlatformBP.h"
  #include "OBPLivestreamingStatus.h"
  #include "OBPRequests_Livestreaming.generated.h"
  
  DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLivestreaming_GetStatus, UOBPLivestreamingStatus*, LivestreamingStatus);
  DECLARE_DYNAMIC_MULTICAST_DELEGATE(FLivestreaming_LaunchLivestreamingFlow);
  DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLivestreaming_PauseStream, UOBPLivestreamingStatus*, LivestreamingStatus);
  DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLivestreaming_ResumeStream, UOBPLivestreamingStatus*, LivestreamingStatus);
  
  // --------------------
  // ovr_Requests_Livestreaming.h
  // --------------------
  
  UCLASS(BlueprintType)
  class OVRPLATFORMBP_API UOBPLivestreaming_GetStatus : public UBlueprintAsyncActionBase
  {
  
  	GENERATED_UCLASS_BODY()
  
  public:
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_GetStatus OnSuccess;
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_GetStatus OnFailure;
  
  	/* Return the status of the current livestreaming session if there is one. */
  	UFUNCTION(BlueprintCallable, Category = "OVR Platform BP|Livestreaming|Requests", meta = (BlueprintInternalUseOnly = "true", HidePin = "WorldContextObject", DefaultToSelf = "WorldContextObject"))
  		static UOBPLivestreaming_GetStatus* GetStatus(UObject* WorldContextObject);
  
  	// UBlueprintAsyncActionBase interface
  	virtual void Activate() override;
  };
  
  UCLASS(BlueprintType)
  class OVRPLATFORMBP_API UOBPLivestreaming_LaunchLivestreamingFlow : public UBlueprintAsyncActionBase
  {
  
  	GENERATED_UCLASS_BODY()
  
  public:
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_LaunchLivestreamingFlow OnSuccess;
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_LaunchLivestreamingFlow OnFailure;
  
  	/* Launch the Livestreaming Flow.
  	Requires OculusPlatfromSDK v23 or later */
  	UFUNCTION(BlueprintCallable, Category = "OVR Platform BP|Livestreaming|Requests", meta = (BlueprintInternalUseOnly = "true", HidePin = "WorldContextObject", DefaultToSelf = "WorldContextObject"))
  		static UOBPLivestreaming_LaunchLivestreamingFlow* LaunchLivestreamingFlow(UObject* WorldContextObject);
  
  	// UBlueprintAsyncActionBase interface
  	virtual void Activate() override;
  };
  
  UCLASS(BlueprintType)
  class OVRPLATFORMBP_API UOBPLivestreaming_PauseStream : public UBlueprintAsyncActionBase
  {
  
  	GENERATED_UCLASS_BODY()
  
  public:
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_PauseStream OnSuccess;
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_PauseStream OnFailure;
  
  	/* Pauses the livestreaming session if there is one. NOTE: this function is safe to call if no session is active. */
  	UFUNCTION(BlueprintCallable, Category = "OVR Platform BP|Livestreaming|Requests", meta = (BlueprintInternalUseOnly = "true", HidePin = "WorldContextObject", DefaultToSelf = "WorldContextObject"))
  		static UOBPLivestreaming_PauseStream* PauseStream(UObject* WorldContextObject);
  
  	// UBlueprintAsyncActionBase interface
  	virtual void Activate() override;
  };
  
  UCLASS(BlueprintType)
  class OVRPLATFORMBP_API UOBPLivestreaming_ResumeStream : public UBlueprintAsyncActionBase
  {
  
  	GENERATED_UCLASS_BODY()
  
  public:
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_ResumeStream OnSuccess;
  
  	UPROPERTY(BlueprintAssignable)
  		FLivestreaming_ResumeStream OnFailure;
  
  	/* Resumes the livestreaming session if there is one. NOTE: this function is safe to call if no session is active. */
  	UFUNCTION(BlueprintCallable, Category = "OVR Platform BP|Livestreaming|Requests", meta = (BlueprintInternalUseOnly = "true", HidePin = "WorldContextObject", DefaultToSelf = "WorldContextObject"))
  		static UOBPLivestreaming_ResumeStream* ResumeStream(UObject* WorldContextObject);
  
  	// UBlueprintAsyncActionBase interface
  	virtual void Activate() override;
  };