Testing some event stuff
This commit is contained in:
@@ -10,11 +10,11 @@
|
||||
using namespace Dawn;
|
||||
|
||||
void Camera::onInit() {
|
||||
if(renderTarget == nullptr) {
|
||||
this->setRenderTarget(
|
||||
getGame()->renderHost.backBufferRenderTarget
|
||||
);
|
||||
}
|
||||
this->onResizeListener = this->getRenderTarget()->onResize.listen([&](
|
||||
float_t width, float_t height
|
||||
) {
|
||||
this->onResize.emit(this->getRenderTarget(), width, height);
|
||||
});
|
||||
}
|
||||
|
||||
void Camera::onDispose() {
|
||||
@@ -22,7 +22,8 @@ void Camera::onDispose() {
|
||||
}
|
||||
|
||||
std::shared_ptr<RenderTarget> Camera::getRenderTarget() {
|
||||
return this->renderTarget;
|
||||
if(this->renderTarget) return this->renderTarget;
|
||||
return getGame()->renderHost.getBackBufferRenderTarget();
|
||||
}
|
||||
|
||||
glm::mat4 Camera::getProjection() {
|
||||
@@ -52,13 +53,15 @@ glm::mat4 Camera::getProjection() {
|
||||
|
||||
float_t Camera::getAspect() {
|
||||
auto rt = this->getRenderTarget();
|
||||
if(rt == nullptr) rt = getGame()->renderHost.getBackBufferRenderTarget();
|
||||
return rt->getWidth() / rt->getHeight();
|
||||
}
|
||||
|
||||
void Camera::setRenderTarget(std::shared_ptr<RenderTarget> renderTarget) {
|
||||
if(this->renderTarget != nullptr) {
|
||||
|
||||
}
|
||||
onResizeListener();
|
||||
this->renderTarget = renderTarget;
|
||||
this->onResizeListener = this->getRenderTarget()->onResize.listen([&](
|
||||
float_t width, float_t height
|
||||
) {
|
||||
this->onResize.emit(this->getRenderTarget(), width, height);
|
||||
});
|
||||
}
|
||||
@@ -16,8 +16,10 @@ namespace Dawn {
|
||||
class Camera final : public SceneComponent {
|
||||
private:
|
||||
std::shared_ptr<RenderTarget> renderTarget;
|
||||
std::function<void()> onResizeListener;
|
||||
|
||||
public:
|
||||
Event<std::shared_ptr<RenderTarget>, float_t, float_t> onResize;
|
||||
float_t clipNear = 0.01f;
|
||||
float_t clipFar = 1000.0f;
|
||||
enum CameraType type = CameraType::PERSPECTIVE;
|
||||
|
||||
Reference in New Issue
Block a user