Allow camera render target to be null
This commit is contained in:
		@@ -10,7 +10,7 @@ using namespace Dawn;
 | 
			
		||||
 | 
			
		||||
Camera::Camera(SceneItem *item) :
 | 
			
		||||
  SceneItemComponent(item),
 | 
			
		||||
  renderTarget(nullptr),
 | 
			
		||||
  renderTarget(item->scene->game->renderManager.getBackBuffer()),
 | 
			
		||||
  fov(0.785398f),// 45 degrees,
 | 
			
		||||
  type(CAMERA_TYPE_PERSPECTIVE),
 | 
			
		||||
  orthoLeft(0.0f),
 | 
			
		||||
@@ -52,10 +52,6 @@ glm::mat4 Camera::getProjection() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
RenderTarget * Camera::getRenderTarget() {
 | 
			
		||||
  auto v = this->renderTarget;
 | 
			
		||||
  if(this->renderTarget == nullptr) {
 | 
			
		||||
    return this->getGame()->renderManager.getBackBuffer();
 | 
			
		||||
  }
 | 
			
		||||
  return (RenderTarget*)this->renderTarget;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -80,6 +76,11 @@ void Camera::onStart() {
 | 
			
		||||
  useEffectWithTeardown([&]{
 | 
			
		||||
    auto rt = this->getRenderTarget();
 | 
			
		||||
    this->projectionNeedsUpdating = true;
 | 
			
		||||
    if(rt == nullptr) {
 | 
			
		||||
      return evtResized = [&]{
 | 
			
		||||
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
    this->eventRenderTargetResized.invoke(rt->getWidth(), rt->getHeight());
 | 
			
		||||
    
 | 
			
		||||
    // Subscribe to new render target resized.
 | 
			
		||||
@@ -100,6 +101,7 @@ void Camera::onStart() {
 | 
			
		||||
  
 | 
			
		||||
  // Sub to evt legacy, we don't invoke the useTeardown to avoid invoking
 | 
			
		||||
  // the state event for this camera when we don't need to.
 | 
			
		||||
  if(!this->getRenderTarget()) return;
 | 
			
		||||
  evtResized = useEventLegacy([&](RenderTarget *rt, float_t w, float_t h){
 | 
			
		||||
    this->projectionNeedsUpdating = true;
 | 
			
		||||
    this->eventRenderTargetResized.invoke(w, h);
 | 
			
		||||
 
 | 
			
		||||
@@ -53,8 +53,6 @@ void UIBorder::onStart() {
 | 
			
		||||
  UIComponent::onStart();
 | 
			
		||||
 | 
			
		||||
  auto rebufferQuad = [&] {
 | 
			
		||||
    std::cout << "W" << this->getWidth() << std::endl;
 | 
			
		||||
    std::cout << "H" << this->getHeight() << std::endl;
 | 
			
		||||
    glm::vec2 tSize = glm::vec2(1, 1) / 3.0f;
 | 
			
		||||
    glm::vec2 bSize = (glm::vec2)borderSize;
 | 
			
		||||
    glm::vec2 iSize = glm::vec2(this->getWidth(), this->getHeight()) - ( bSize * 2.0f );
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ UILabel::UILabel(SceneItem *item) :
 | 
			
		||||
  text(""),
 | 
			
		||||
  fontSize(10.0f),
 | 
			
		||||
  font(&item->scene->game->renderManager.defaultFont),
 | 
			
		||||
  maxWidth(UI_LABEL_MAX_WIDTH_NONE)
 | 
			
		||||
  maxWidth(UI_LABEL_MAX_WIDTH_ALIGN)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user