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

@@ -66,5 +66,39 @@ namespace XCEngine
get => Primary;
set => Primary = value;
}
public CameraClearMode ClearMode
{
get =>
(CameraClearMode)InternalCalls
.Camera_GetClearMode(GameObjectUUID);
set =>
InternalCalls.Camera_SetClearMode(
GameObjectUUID,
(int)value);
}
public CameraClearMode clearMode
{
get => ClearMode;
set => ClearMode = value;
}
public CameraStackType StackType
{
get =>
(CameraStackType)InternalCalls
.Camera_GetStackType(GameObjectUUID);
set =>
InternalCalls.Camera_SetStackType(
GameObjectUUID,
(int)value);
}
public CameraStackType stackType
{
get => StackType;
set => StackType = value;
}
}
}

View File

@@ -0,0 +1,10 @@
namespace XCEngine
{
public enum CameraClearMode
{
Auto = 0,
ColorAndDepth,
DepthOnly,
None
}
}

View File

@@ -0,0 +1,8 @@
namespace XCEngine
{
public enum CameraStackType
{
Base = 0,
Overlay
}
}

View File

@@ -252,6 +252,18 @@ namespace XCEngine
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void Camera_SetPrimary(ulong gameObjectUUID, bool value);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int Camera_GetClearMode(ulong gameObjectUUID);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void Camera_SetClearMode(ulong gameObjectUUID, int value);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int Camera_GetStackType(ulong gameObjectUUID);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void Camera_SetStackType(ulong gameObjectUUID, int value);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern float Light_GetIntensity(ulong gameObjectUUID);
@@ -903,11 +915,27 @@ namespace XCEngine
Rendering_CameraRenderRequestContext_ClearDirectionalShadow(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int
Rendering_CameraRenderRequestContext_GetClearFlags(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void
Rendering_CameraRenderRequestContext_SetClearFlags(
ulong nativeHandle,
int clearFlags);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int
Rendering_RenderSceneSetupContext_GetRendererIndex(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern ulong
Rendering_RenderSceneSetupContext_GetCameraGameObjectUUID(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_RenderSceneSetupContext_GetIsConfigured(

View File

@@ -85,6 +85,19 @@ namespace XCEngine.Rendering
m_nativeHandle);
}
public RenderClearFlags clearFlags
{
get =>
(RenderClearFlags)InternalCalls
.Rendering_CameraRenderRequestContext_GetClearFlags(
m_nativeHandle);
set =>
InternalCalls
.Rendering_CameraRenderRequestContext_SetClearFlags(
m_nativeHandle,
(int)value);
}
internal ulong nativeHandle =>
m_nativeHandle;
}

View File

@@ -0,0 +1,13 @@
using System;
namespace XCEngine.Rendering
{
[Flags]
public enum RenderClearFlags
{
None = 0,
Color = 1 << 0,
Depth = 1 << 1,
All = Color | Depth
}
}

View File

@@ -14,6 +14,25 @@ namespace XCEngine.Rendering
.Rendering_RenderSceneSetupContext_GetRendererIndex(
m_nativeHandle);
public Camera camera
{
get
{
ulong cameraGameObjectUUID =
InternalCalls
.Rendering_RenderSceneSetupContext_GetCameraGameObjectUUID(
m_nativeHandle);
if (cameraGameObjectUUID == 0)
{
return null;
}
GameObject gameObject =
new GameObject(cameraGameObjectUUID);
return gameObject.GetComponent<Camera>();
}
}
public bool isConfigured =>
InternalCalls
.Rendering_RenderSceneSetupContext_GetIsConfigured(