Updated useEvent

This commit is contained in:
2023-02-28 22:18:26 -08:00
parent 4dbd9c4521
commit 68b5cd8df5
10 changed files with 135 additions and 46 deletions

View File

@ -8,6 +8,7 @@
#include "asset/Asset.hpp"
#include "scene/debug/SceneDebugLine.hpp"
#include "physics/ScenePhysicsManager.hpp"
#include "state/State.hpp"
namespace Dawn {
class DawnGame;
@ -20,7 +21,7 @@ namespace Dawn {
template<class T>
T * _sceneForwardGetComponent(SceneItem *item);
class Scene {
class Scene : public StateOwner {
private:
sceneitemid_t nextId;
std::map<sceneitemid_t, SceneItem*> items;

View File

@ -76,7 +76,7 @@ namespace Dawn {
/**
* Cleanup the SceneItemComponent.
*/
~SceneItemComponent();
virtual ~SceneItemComponent();
};

View File

@ -78,7 +78,7 @@ glm::vec3 Camera::getRayDirectionFromScreenSpace(glm::vec2 screenSpace) {
void Camera::onStart() {
// Render Target
useEffect(renderTarget, [&]{
useEffect([&]{
if(renderTarget.previous != nullptr) {
renderTarget.previous->eventRenderTargetResized.removeListener(
this, &Camera::onRenderTargetResize
@ -94,21 +94,30 @@ void Camera::onStart() {
rt->getWidth(), rt->getHeight()
);
this->event2RenderTargetResized.invoke(rt->getWidth(), rt->getHeight());
});
}, renderTarget);
// All regular properties.
auto cbUpdateProj = [&]{
useEffect([&]{
this->projectionNeedsUpdating = true;
};
}, {
&fov,
&type,
&orthoLeft,
&orthoRight,
&orthoBottom,
&orthoTop,
&clipNear,
&clipFar
});
useEffect(fov, cbUpdateProj);
useEffect(type, cbUpdateProj);
useEffect(orthoLeft, cbUpdateProj);
useEffect(orthoRight, cbUpdateProj);
useEffect(orthoBottom, cbUpdateProj);
useEffect(orthoTop, cbUpdateProj);
useEffect(clipNear, cbUpdateProj);
useEffect(clipFar, cbUpdateProj);
// useEffect(fov, cbUpdateProj);
// useEffect(type, cbUpdateProj);
// useEffect(orthoLeft, cbUpdateProj);
// useEffect(orthoRight, cbUpdateProj);
// useEffect(orthoBottom, cbUpdateProj);
// useEffect(orthoTop, cbUpdateProj);
// useEffect(clipNear, cbUpdateProj);
// useEffect(clipFar, cbUpdateProj);
getRenderTarget()->eventRenderTargetResized.addListener(this, &Camera::onRenderTargetResize);
}

View File

@ -55,11 +55,11 @@ void PixelPerfectCamera::onStart() {
assertNotNull(this->camera);
this->updateDimensions();
useEvent(this->camera->event2RenderTargetResized, [&](float_t w, float_t h){
useEvent([&](float_t w, float_t h){
this->updateDimensions();
});
}, this->camera->event2RenderTargetResized);
useEffect(scale, [&]{
useEffect([&]{
this->updateDimensions();
});
}, scale);
}

View File

@ -42,7 +42,7 @@ void SimpleRenderTargetQuad::onStart() {
// Create quad mesh
this->meshHost->mesh.createBuffers(QUAD_VERTICE_COUNT, QUAD_INDICE_COUNT);
useEffect(this->renderTarget, [&]{
useEffect([&]{
if(this->renderTarget.previous != nullptr) {
this->renderTarget.previous->eventRenderTargetResized.addListener(
this, &SimpleRenderTargetQuad::onRenderTargetResized
@ -66,7 +66,7 @@ void SimpleRenderTargetQuad::onStart() {
((RenderTarget*)this->renderTarget)->eventRenderTargetResized.addListener(
this, &SimpleRenderTargetQuad::onRenderTargetResized
);
});
}, this->renderTarget);
// Perform first resize.
if(this->renderTarget != nullptr) {