refactor: split scene render request planning
This commit is contained in:
@@ -1,11 +1,6 @@
|
||||
#include "Rendering/SceneRenderer.h"
|
||||
#include "Rendering/SceneRenderRequestUtils.h"
|
||||
|
||||
#include "Components/GameObject.h"
|
||||
#include "Scene/Scene.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
@@ -32,44 +27,7 @@ std::vector<CameraRenderRequest> SceneRenderer::BuildRenderRequests(
|
||||
Components::CameraComponent* overrideCamera,
|
||||
const RenderContext& context,
|
||||
const RenderSurface& surface) const {
|
||||
std::vector<CameraRenderRequest> requests;
|
||||
|
||||
std::vector<Components::CameraComponent*> cameras;
|
||||
if (SceneRenderRequestUtils::IsUsableCamera(overrideCamera)) {
|
||||
cameras.push_back(overrideCamera);
|
||||
} else {
|
||||
cameras = scene.FindObjectsOfType<Components::CameraComponent>();
|
||||
cameras.erase(
|
||||
std::remove_if(
|
||||
cameras.begin(),
|
||||
cameras.end(),
|
||||
[](const Components::CameraComponent* camera) {
|
||||
return !SceneRenderRequestUtils::IsUsableCamera(camera);
|
||||
}),
|
||||
cameras.end());
|
||||
}
|
||||
|
||||
SceneRenderRequestUtils::SortSceneCamerasForRendering(cameras);
|
||||
|
||||
size_t renderedBaseCameraCount = 0;
|
||||
for (Components::CameraComponent* camera : cameras) {
|
||||
CameraRenderRequest request;
|
||||
if (SceneRenderRequestUtils::BuildCameraRenderRequest(
|
||||
scene,
|
||||
*camera,
|
||||
context,
|
||||
surface,
|
||||
renderedBaseCameraCount,
|
||||
requests.size(),
|
||||
request)) {
|
||||
requests.push_back(request);
|
||||
if (camera->GetStackType() == Components::CameraStackType::Base) {
|
||||
++renderedBaseCameraCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return requests;
|
||||
return m_requestPlanner.BuildRequests(scene, overrideCamera, context, surface);
|
||||
}
|
||||
|
||||
bool SceneRenderer::Render(const CameraRenderRequest& request) {
|
||||
|
||||
Reference in New Issue
Block a user