#include "HyperTwistSimulation/HyperTwistSimulationLibrary.h"

#include "HyperTwistBootstrap/HyperTwistContractLibrary.h"

FHyperTwistSimulationSceneContext UHyperTwistSimulationLibrary::MakeClassicPlaceholderSceneContext()
{
	FHyperTwistSimulationSceneContext SceneContext;
	SceneContext.SceneContextId = TEXT("scene_classic_placeholder");
	SceneContext.PuzzleState = UHyperTwistContractLibrary::MakeSampleClassicPuzzleState();
	SceneContext.ProjectionSettings.ProjectionKind = EHyperTwistProjectionKind::ClassicPerspective;
	SceneContext.ProjectionSettings.ProjectionProfile = TEXT("classic-default");
	SceneContext.RenderStateProfile = TEXT("classic-placeholder-render-state");
	return SceneContext;
}

FHyperTwistSimulationSceneContext UHyperTwistSimulationLibrary::MakeHyperPlaceholderSceneContext()
{
	FHyperTwistSimulationSceneContext SceneContext;
	SceneContext.SceneContextId = TEXT("scene_hyper_placeholder");
	SceneContext.PuzzleState = UHyperTwistContractLibrary::MakeSampleHyperPuzzleState();
	SceneContext.ProjectionSettings.ProjectionKind = EHyperTwistProjectionKind::HyperProjection;
	SceneContext.ProjectionSettings.ProjectionProfile = TEXT("hyper-default");
	SceneContext.ProjectionSettings.ProjectionDepth = 2.0f;
	SceneContext.RenderStateProfile = TEXT("hyper-placeholder-render-state");
	return SceneContext;
}

bool UHyperTwistSimulationLibrary::CanRenderSceneContext(const FHyperTwistSimulationSceneContext& SceneContext)
{
	return SceneContext.IsStructurallyValid();
}
