#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "HyperTwistSimulation/HyperTwistSimulationTypes.h"
#include "HyperTwistSimulationLibrary.generated.h"

UCLASS()
class UNREALHYPERTWIST_API UHyperTwistSimulationLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintPure, Category = "HyperTwist|Simulation")
	static FHyperTwistSimulationSceneContext MakeClassicSampleSceneContext();

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Simulation")
	static FHyperTwistSimulationSceneContext MakeHyperSampleSceneContext();

	UFUNCTION(
		BlueprintPure,
		Category = "HyperTwist|Simulation",
		meta = (DeprecatedFunction, DeprecationMessage = "Use MakeClassicSampleSceneContext.")
	)
	static FHyperTwistSimulationSceneContext MakeClassicPlaceholderSceneContext();

	UFUNCTION(
		BlueprintPure,
		Category = "HyperTwist|Simulation",
		meta = (DeprecatedFunction, DeprecationMessage = "Use MakeHyperSampleSceneContext.")
	)
	static FHyperTwistSimulationSceneContext MakeHyperPlaceholderSceneContext();

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Simulation")
	static FHyperTwistSimulationSceneContext MakeMelindaCellFirstSceneContext();

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Simulation")
	static FHyperTwistSimulationSceneContext MakeVirtual3333VisibleSceneContext();

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Simulation")
	static bool CanRenderSceneContext(const FHyperTwistSimulationSceneContext& SceneContext);
};
