Changed scene item components to smart pointers
This commit is contained in:
		@@ -59,7 +59,7 @@ void RenderPipeline::renderScene(std::shared_ptr<Scene> scene) {
 | 
			
		||||
  // Now render backbuffers.
 | 
			
		||||
  auto backBuffer = rm->getBackBuffer();
 | 
			
		||||
  auto cameras = scene->findComponents<Camera>();
 | 
			
		||||
  Camera *backBufferCamera = nullptr;
 | 
			
		||||
  std::shared_ptr<Camera> backBufferCamera;
 | 
			
		||||
 | 
			
		||||
  // First, render all non-backbuffer cameras.
 | 
			
		||||
  auto it = cameras.begin();
 | 
			
		||||
@@ -74,7 +74,7 @@ void RenderPipeline::renderScene(std::shared_ptr<Scene> scene) {
 | 
			
		||||
    } else if(cameraTarget == backBuffer) {
 | 
			
		||||
      backBufferCamera = *it;
 | 
			
		||||
    } else {
 | 
			
		||||
      renderSceneCamera(&(*scene), *it);
 | 
			
		||||
      renderSceneCamera(scene, *it);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ++it;
 | 
			
		||||
@@ -82,10 +82,10 @@ void RenderPipeline::renderScene(std::shared_ptr<Scene> scene) {
 | 
			
		||||
 | 
			
		||||
  // Now render the backbuffer camera.
 | 
			
		||||
  if(backBufferCamera == nullptr) return;
 | 
			
		||||
  renderSceneCamera(&(*scene), backBufferCamera);
 | 
			
		||||
  renderSceneCamera(scene, backBufferCamera);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RenderPipeline::renderSceneCamera(Scene *scene, Camera *camera) {
 | 
			
		||||
void RenderPipeline::renderSceneCamera(std::shared_ptr<Scene> scene, std::shared_ptr<Camera> camera) {
 | 
			
		||||
  auto rm = renderManager.lock();
 | 
			
		||||
  assertNotNull(rm, "RenderPipeline::renderSceneCamera: RenderManager cannot be null");
 | 
			
		||||
 | 
			
		||||
@@ -114,7 +114,7 @@ void RenderPipeline::renderSceneCamera(Scene *scene, Camera *camera) {
 | 
			
		||||
  struct IRenderableContext context = {
 | 
			
		||||
    scene,
 | 
			
		||||
    camera,
 | 
			
		||||
    this
 | 
			
		||||
    shared_from_this()
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  // Get the list of things to render first.
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
namespace Dawn {
 | 
			
		||||
  class RenderManager;
 | 
			
		||||
 | 
			
		||||
  class RenderPipeline {
 | 
			
		||||
  class RenderPipeline : public std::enable_shared_from_this<RenderPipeline> {
 | 
			
		||||
    private:
 | 
			
		||||
      int_fast16_t renderId = -1;
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +54,7 @@ namespace Dawn {
 | 
			
		||||
       * @param scene Scene to render.
 | 
			
		||||
       * @param camera Camera within the scene to render.
 | 
			
		||||
       */
 | 
			
		||||
      virtual void renderSceneCamera(Scene *scene, Camera *camera);
 | 
			
		||||
      virtual void renderSceneCamera(std::shared_ptr<Scene> scene, std::shared_ptr<Camera> camera);
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
       * Cleanup a render pipeline that has been initialized.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user