refactor(srp): tighten request and scene setup seams

This commit is contained in:
2026-04-21 21:42:03 +08:00
parent 01dabcf6b0
commit ee1f817dc6
14 changed files with 352 additions and 5 deletions

View File

@@ -4010,6 +4010,40 @@ void InternalCall_Camera_SetPrimary(uint64_t gameObjectUUID, mono_bool value) {
component->SetPrimary(value != 0);
}
int32_t InternalCall_Camera_GetClearMode(uint64_t gameObjectUUID) {
Components::CameraComponent* component = FindCameraComponent(gameObjectUUID);
return component != nullptr
? static_cast<int32_t>(component->GetClearMode())
: 0;
}
void InternalCall_Camera_SetClearMode(uint64_t gameObjectUUID, int32_t value) {
Components::CameraComponent* component = FindCameraComponent(gameObjectUUID);
if (!component) {
return;
}
component->SetClearMode(
static_cast<Components::CameraClearMode>(value));
}
int32_t InternalCall_Camera_GetStackType(uint64_t gameObjectUUID) {
Components::CameraComponent* component = FindCameraComponent(gameObjectUUID);
return component != nullptr
? static_cast<int32_t>(component->GetStackType())
: 0;
}
void InternalCall_Camera_SetStackType(uint64_t gameObjectUUID, int32_t value) {
Components::CameraComponent* component = FindCameraComponent(gameObjectUUID);
if (!component) {
return;
}
component->SetStackType(
static_cast<Components::CameraStackType>(value));
}
float InternalCall_Light_GetIntensity(uint64_t gameObjectUUID) {
Components::LightComponent* component = FindLightComponent(gameObjectUUID);
return component ? component->GetIntensity() : 0.0f;
@@ -5519,6 +5553,29 @@ void InternalCall_Rendering_CameraRenderRequestContext_ClearDirectionalShadow(
state->suppressDirectionalShadow = true;
}
int32_t InternalCall_Rendering_CameraRenderRequestContext_GetClearFlags(
uint64_t nativeHandle) {
const ManagedCameraRenderRequestContextState* const state =
FindManagedCameraRenderRequestContextState(nativeHandle);
return state != nullptr &&
state->request != nullptr
? static_cast<int32_t>(state->request->clearFlags)
: static_cast<int32_t>(Rendering::RenderClearFlags::All);
}
void InternalCall_Rendering_CameraRenderRequestContext_SetClearFlags(
uint64_t nativeHandle,
int32_t clearFlags) {
ManagedCameraRenderRequestContextState* const state =
FindManagedCameraRenderRequestContextState(nativeHandle);
if (state == nullptr || state->request == nullptr) {
return;
}
state->request->clearFlags =
static_cast<Rendering::RenderClearFlags>(clearFlags);
}
int32_t
InternalCall_Rendering_RenderSceneSetupContext_GetRendererIndex(
uint64_t nativeHandle) {
@@ -5530,6 +5587,21 @@ InternalCall_Rendering_RenderSceneSetupContext_GetRendererIndex(
: -1;
}
uint64_t
InternalCall_Rendering_RenderSceneSetupContext_GetCameraGameObjectUUID(
uint64_t nativeHandle) {
const ManagedRenderSceneSetupContextState* const state =
FindManagedRenderSceneSetupContextState(nativeHandle);
if (state == nullptr ||
state->plan == nullptr ||
state->plan->request.camera == nullptr ||
state->plan->request.camera->GetGameObject() == nullptr) {
return 0u;
}
return state->plan->request.camera->GetGameObject()->GetUUID();
}
mono_bool
InternalCall_Rendering_RenderSceneSetupContext_GetIsConfigured(
uint64_t nativeHandle) {
@@ -6024,6 +6096,10 @@ void RegisterInternalCalls() {
mono_add_internal_call("XCEngine.InternalCalls::Camera_SetDepth", reinterpret_cast<const void*>(&InternalCall_Camera_SetDepth));
mono_add_internal_call("XCEngine.InternalCalls::Camera_GetPrimary", reinterpret_cast<const void*>(&InternalCall_Camera_GetPrimary));
mono_add_internal_call("XCEngine.InternalCalls::Camera_SetPrimary", reinterpret_cast<const void*>(&InternalCall_Camera_SetPrimary));
mono_add_internal_call("XCEngine.InternalCalls::Camera_GetClearMode", reinterpret_cast<const void*>(&InternalCall_Camera_GetClearMode));
mono_add_internal_call("XCEngine.InternalCalls::Camera_SetClearMode", reinterpret_cast<const void*>(&InternalCall_Camera_SetClearMode));
mono_add_internal_call("XCEngine.InternalCalls::Camera_GetStackType", reinterpret_cast<const void*>(&InternalCall_Camera_GetStackType));
mono_add_internal_call("XCEngine.InternalCalls::Camera_SetStackType", reinterpret_cast<const void*>(&InternalCall_Camera_SetStackType));
mono_add_internal_call("XCEngine.InternalCalls::Light_GetIntensity", reinterpret_cast<const void*>(&InternalCall_Light_GetIntensity));
mono_add_internal_call("XCEngine.InternalCalls::Light_SetIntensity", reinterpret_cast<const void*>(&InternalCall_Light_SetIntensity));
mono_add_internal_call("XCEngine.InternalCalls::Light_GetRange", reinterpret_cast<const void*>(&InternalCall_Light_GetRange));
@@ -6158,7 +6234,10 @@ void RegisterInternalCalls() {
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_GetDirectionalShadowPlanningSettings", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_GetDirectionalShadowPlanningSettings));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_SetDirectionalShadowPlanningSettings", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_SetDirectionalShadowPlanningSettings));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_ClearDirectionalShadow", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_ClearDirectionalShadow));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_GetClearFlags", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_GetClearFlags));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_SetClearFlags", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_SetClearFlags));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_RenderSceneSetupContext_GetRendererIndex", reinterpret_cast<const void*>(&InternalCall_Rendering_RenderSceneSetupContext_GetRendererIndex));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_RenderSceneSetupContext_GetCameraGameObjectUUID", reinterpret_cast<const void*>(&InternalCall_Rendering_RenderSceneSetupContext_GetCameraGameObjectUUID));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_RenderSceneSetupContext_GetIsConfigured", reinterpret_cast<const void*>(&InternalCall_Rendering_RenderSceneSetupContext_GetIsConfigured));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_RenderSceneSetupContext_UseDefaultSceneSetup", reinterpret_cast<const void*>(&InternalCall_Rendering_RenderSceneSetupContext_UseDefaultSceneSetup));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_RenderSceneSetupContext_UseDefaultEnvironment", reinterpret_cast<const void*>(&InternalCall_Rendering_RenderSceneSetupContext_UseDefaultEnvironment));