Advance editor runtime and scripting integration
This commit is contained in:
@@ -1539,6 +1539,73 @@ TEST_F(
|
||||
EXPECT_FLOAT_EQ(observedPostProcessScale.w, 1.0f);
|
||||
}
|
||||
|
||||
TEST_F(
|
||||
MonoScriptRuntimeTest,
|
||||
ManagedRenderPipelineAssetBuildsSceneRequestsThroughManagedScenePlanningContext) {
|
||||
Scene* runtimeScene =
|
||||
CreateScene("ManagedScenePlanningRenderPipelineScene");
|
||||
|
||||
GameObject* rejectedCameraObject =
|
||||
runtimeScene->CreateGameObject("RejectedCamera");
|
||||
auto* rejectedCamera =
|
||||
rejectedCameraObject->AddComponent<CameraComponent>();
|
||||
ASSERT_NE(rejectedCamera, nullptr);
|
||||
rejectedCamera->SetPrimary(true);
|
||||
rejectedCamera->SetDepth(0.0f);
|
||||
|
||||
GameObject* selectedCameraObject =
|
||||
runtimeScene->CreateGameObject("SelectedCamera");
|
||||
auto* selectedCamera =
|
||||
selectedCameraObject->AddComponent<CameraComponent>();
|
||||
ASSERT_NE(selectedCamera, nullptr);
|
||||
selectedCamera->SetPrimary(true);
|
||||
selectedCamera->SetDepth(1.0f);
|
||||
|
||||
engine->OnRuntimeStart(runtimeScene);
|
||||
|
||||
TestRenderDevice device;
|
||||
TestRenderCommandList commandList;
|
||||
TestRenderCommandQueue commandQueue;
|
||||
TestRenderResourceView colorView(
|
||||
XCEngine::RHI::ResourceViewType::RenderTarget,
|
||||
XCEngine::RHI::ResourceViewDimension::Texture2D,
|
||||
XCEngine::RHI::Format::R8G8B8A8_UNorm);
|
||||
TestRenderResourceView depthView(
|
||||
XCEngine::RHI::ResourceViewType::DepthStencil,
|
||||
XCEngine::RHI::ResourceViewDimension::Texture2D,
|
||||
XCEngine::RHI::Format::D32_Float);
|
||||
|
||||
const XCEngine::Rendering::RenderContext context =
|
||||
CreateRenderContext(
|
||||
device,
|
||||
commandList,
|
||||
commandQueue);
|
||||
XCEngine::Rendering::RenderSurface surface(64u, 64u);
|
||||
surface.SetColorAttachment(&colorView);
|
||||
surface.SetDepthAttachment(&depthView);
|
||||
|
||||
auto asset =
|
||||
std::make_shared<
|
||||
XCEngine::Rendering::Pipelines::ManagedScriptableRenderPipelineAsset>(
|
||||
XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor{
|
||||
"GameScripts",
|
||||
"Gameplay",
|
||||
"ManagedScenePlanningRenderPipelineProbeAsset"});
|
||||
|
||||
XCEngine::Rendering::RenderPipelineHost host(asset);
|
||||
const std::vector<XCEngine::Rendering::CameraFramePlan> plans =
|
||||
host.BuildFramePlans(
|
||||
*runtimeScene,
|
||||
nullptr,
|
||||
context,
|
||||
surface);
|
||||
|
||||
ASSERT_EQ(plans.size(), 1u);
|
||||
EXPECT_EQ(plans[0].request.camera, selectedCamera);
|
||||
EXPECT_NE(plans[0].request.camera, rejectedCamera);
|
||||
EXPECT_TRUE(runtime->GetLastError().empty()) << runtime->GetLastError();
|
||||
}
|
||||
|
||||
TEST_F(
|
||||
MonoScriptRuntimeTest,
|
||||
DefaultSceneRendererUsesScriptCoreUniversalRendererFeatureForPlannedPostProcessRender) {
|
||||
@@ -1739,6 +1806,10 @@ TEST_F(
|
||||
bool hasPublicPipelineAssetConfigureCameraFramePlan = false;
|
||||
bool hasPipelineAssetSetDirty = false;
|
||||
bool hasPipelineAssetGetRuntimeResourceVersion = false;
|
||||
bool hasScenePlanningContextType = false;
|
||||
bool hasPublicScenePlanningContextUseDefaultRequests = false;
|
||||
bool hasPublicScenePlanningContextAddCamera = false;
|
||||
bool hasPipelineAssetBuildSceneRenderRequests = false;
|
||||
bool hasPlanningContextType = false;
|
||||
bool hasPublicPlanningContextFramePlanId = false;
|
||||
bool hasRendererFeatureConfigureCameraFramePlan = false;
|
||||
@@ -1915,6 +1986,22 @@ TEST_F(
|
||||
selectionScript,
|
||||
"HasPipelineAssetGetRuntimeResourceVersion",
|
||||
hasPipelineAssetGetRuntimeResourceVersion));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasScenePlanningContextType",
|
||||
hasScenePlanningContextType));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasPublicScenePlanningContextUseDefaultRequests",
|
||||
hasPublicScenePlanningContextUseDefaultRequests));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasPublicScenePlanningContextAddCamera",
|
||||
hasPublicScenePlanningContextAddCamera));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasPipelineAssetBuildSceneRenderRequests",
|
||||
hasPipelineAssetBuildSceneRenderRequests));
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
selectionScript,
|
||||
"HasPlanningContextType",
|
||||
@@ -2106,6 +2193,10 @@ TEST_F(
|
||||
EXPECT_TRUE(hasPublicPipelineAssetConfigureCameraFramePlan);
|
||||
EXPECT_TRUE(hasPipelineAssetSetDirty);
|
||||
EXPECT_TRUE(hasPipelineAssetGetRuntimeResourceVersion);
|
||||
EXPECT_TRUE(hasScenePlanningContextType);
|
||||
EXPECT_TRUE(hasPublicScenePlanningContextUseDefaultRequests);
|
||||
EXPECT_TRUE(hasPublicScenePlanningContextAddCamera);
|
||||
EXPECT_TRUE(hasPipelineAssetBuildSceneRenderRequests);
|
||||
EXPECT_TRUE(hasPlanningContextType);
|
||||
EXPECT_TRUE(hasPublicPlanningContextFramePlanId);
|
||||
EXPECT_TRUE(hasRendererFeatureConfigureCameraFramePlan);
|
||||
|
||||
Reference in New Issue
Block a user