Add managed render pipeline selection bridge
This commit is contained in:
@@ -2,6 +2,18 @@ cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
project(XCEngine_ScriptingTests)
|
||||
|
||||
function(xcengine_attach_recursive_build_target target dependency_target)
|
||||
add_custom_command(TARGET ${target} PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
|
||||
--config $<CONFIG>
|
||||
--target ${dependency_target}
|
||||
--
|
||||
/m:1
|
||||
/p:BuildProjectReferences=false
|
||||
VERBATIM
|
||||
COMMENT "Building ${dependency_target} before ${target}")
|
||||
endfunction()
|
||||
|
||||
set(SCRIPTING_TEST_SOURCES
|
||||
test_script_field_storage.cpp
|
||||
test_script_component.cpp
|
||||
@@ -40,6 +52,7 @@ target_include_directories(scripting_tests PRIVATE
|
||||
|
||||
if(TARGET xcengine_managed_assemblies)
|
||||
add_dependencies(scripting_tests xcengine_managed_assemblies)
|
||||
xcengine_attach_recursive_build_target(scripting_tests xcengine_managed_assemblies)
|
||||
|
||||
file(TO_CMAKE_PATH "${XCENGINE_MANAGED_OUTPUT_DIR}" XCENGINE_MANAGED_OUTPUT_DIR_CMAKE)
|
||||
file(TO_CMAKE_PATH "${XCENGINE_SCRIPT_CORE_DLL}" XCENGINE_SCRIPT_CORE_DLL_CMAKE)
|
||||
@@ -54,6 +67,9 @@ endif()
|
||||
|
||||
if(TARGET xcengine_test_project_managed_assemblies)
|
||||
add_dependencies(scripting_tests xcengine_test_project_managed_assemblies)
|
||||
xcengine_attach_recursive_build_target(
|
||||
scripting_tests
|
||||
xcengine_test_project_managed_assemblies)
|
||||
|
||||
file(
|
||||
TO_CMAKE_PATH
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <XCEngine/Core/Math/Vector4.h>
|
||||
#include <XCEngine/Input/InputManager.h>
|
||||
#include <XCEngine/Input/InputTypes.h>
|
||||
#include <XCEngine/Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h>
|
||||
#include <XCEngine/Scene/Scene.h>
|
||||
#include <XCEngine/Scripting/Mono/MonoScriptRuntime.h>
|
||||
#include <XCEngine/Scripting/ScriptComponent.h>
|
||||
@@ -91,6 +92,7 @@ protected:
|
||||
engine->OnRuntimeStop();
|
||||
engine->SetRuntimeFixedDeltaTime(ScriptEngine::DefaultFixedDeltaTime);
|
||||
XCEngine::Input::InputManager::Get().Shutdown();
|
||||
XCEngine::Rendering::Pipelines::ClearManagedRenderPipelineAssetDescriptor();
|
||||
|
||||
runtime = std::make_unique<MonoScriptRuntime>(CreateMonoSettings());
|
||||
ASSERT_TRUE(runtime->Initialize()) << runtime->GetLastError();
|
||||
@@ -102,6 +104,7 @@ protected:
|
||||
engine->OnRuntimeStop();
|
||||
engine->SetRuntime(nullptr);
|
||||
XCEngine::Input::InputManager::Get().Shutdown();
|
||||
XCEngine::Rendering::Pipelines::ClearManagedRenderPipelineAssetDescriptor();
|
||||
runtime.reset();
|
||||
scene.reset();
|
||||
}
|
||||
@@ -262,6 +265,38 @@ TEST_F(MonoScriptRuntimeTest, ClassFieldMetadataListsConcreteComponentReferenceF
|
||||
EXPECT_EQ(fields, expected);
|
||||
}
|
||||
|
||||
TEST_F(MonoScriptRuntimeTest, ManagedGraphicsSettingsRoundTripsRenderPipelineAssetSelection) {
|
||||
Scene* runtimeScene = CreateScene("ManagedRenderPipelineSelectionScene");
|
||||
GameObject* scriptObject = runtimeScene->CreateGameObject("RenderPipelineProbe");
|
||||
ScriptComponent* script =
|
||||
AddScript(scriptObject, "Gameplay", "RenderPipelineApiProbe");
|
||||
ASSERT_NE(script, nullptr);
|
||||
|
||||
engine->OnRuntimeStart(runtimeScene);
|
||||
engine->OnUpdate(0.016f);
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptor =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
EXPECT_EQ(descriptor.assemblyName, "GameScripts");
|
||||
EXPECT_EQ(descriptor.namespaceName, "Gameplay");
|
||||
EXPECT_EQ(descriptor.className, "RenderPipelineApiProbeAsset");
|
||||
|
||||
bool selectionRoundTripSucceeded = false;
|
||||
std::string selectedPipelineTypeName;
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
script,
|
||||
"SelectionRoundTripSucceeded",
|
||||
selectionRoundTripSucceeded));
|
||||
EXPECT_TRUE(selectionRoundTripSucceeded);
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
script,
|
||||
"SelectedPipelineTypeName",
|
||||
selectedPipelineTypeName));
|
||||
EXPECT_EQ(
|
||||
selectedPipelineTypeName,
|
||||
"Gameplay.RenderPipelineApiProbeAsset");
|
||||
}
|
||||
|
||||
TEST_F(MonoScriptRuntimeTest, ClassFieldDefaultValueQueryReturnsNullComponentReferences) {
|
||||
std::vector<ScriptFieldDefaultValue> fields;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user