using System; using XCEngine; namespace XCEngine.Rendering { public sealed class ScriptableRenderPipelineScenePlanningContext { private readonly ulong m_nativeHandle; internal ScriptableRenderPipelineScenePlanningContext( ulong nativeHandle) { m_nativeHandle = nativeHandle; } public int requestCount => InternalCalls .Rendering_ScriptableRenderPipelineScenePlanningContext_GetRequestCount( m_nativeHandle); public Camera[] GetDefaultCameras() { ulong[] cameraGameObjectUUIDs = InternalCalls .Rendering_ScriptableRenderPipelineScenePlanningContext_GetDefaultCameraGameObjectUUIDs( m_nativeHandle); if (cameraGameObjectUUIDs == null || cameraGameObjectUUIDs.Length == 0) { return Array.Empty(); } Camera[] cameras = new Camera[cameraGameObjectUUIDs.Length]; for (int index = 0; index < cameraGameObjectUUIDs.Length; ++index) { ulong gameObjectUUID = cameraGameObjectUUIDs[index]; cameras[index] = gameObjectUUID != 0 ? new Camera(gameObjectUUID) : null; } return cameras; } public bool UseDefaultRequests() { return InternalCalls .Rendering_ScriptableRenderPipelineScenePlanningContext_UseDefaultRequests( m_nativeHandle); } public void ClearRequests() { InternalCalls .Rendering_ScriptableRenderPipelineScenePlanningContext_ClearRequests( m_nativeHandle); } public bool AddCamera(Camera camera) { return InternalCalls .Rendering_ScriptableRenderPipelineScenePlanningContext_AddCamera( m_nativeHandle, camera != null ? camera.GameObjectUUID : 0); } } }