Add managed render pipeline selection bridge
This commit is contained in:
@@ -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