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);
|
||||
|
Reference in New Issue
Block a user