Testing textures and events
This commit is contained in:
@ -12,7 +12,9 @@ using namespace Dawn;
|
||||
Camera::Camera(SceneItem &item) :
|
||||
SceneItemComponent(item)
|
||||
{
|
||||
this->updateProjection();
|
||||
this->getRenderTarget().eventRenderTargetResized.addListener(
|
||||
this, &Camera::onRenderTargetResize
|
||||
);
|
||||
}
|
||||
|
||||
void Camera::updateProjection() {
|
||||
@ -54,6 +56,18 @@ RenderTarget & Camera::getRenderTarget() {
|
||||
return *this->target;
|
||||
}
|
||||
|
||||
void Camera::setRenderTarget(std::shared_ptr<RenderTarget> renderTarget) {
|
||||
if(renderTarget == this->target) return;
|
||||
this->getRenderTarget().eventRenderTargetResized.removeListener(
|
||||
this, &Camera::onRenderTargetResize
|
||||
);
|
||||
this->target = renderTarget;
|
||||
this->getRenderTarget().eventRenderTargetResized.addListener(
|
||||
this, &Camera::onRenderTargetResize
|
||||
);
|
||||
this->updateProjection();
|
||||
}
|
||||
|
||||
float_t Camera::getAspect() {
|
||||
RenderTarget &target = this->getRenderTarget();
|
||||
return target.getWidth() / target.getHeight();
|
||||
@ -61,4 +75,14 @@ float_t Camera::getAspect() {
|
||||
|
||||
void Camera::start() {
|
||||
this->updateProjection();
|
||||
}
|
||||
|
||||
void Camera::onRenderTargetResize(RenderTarget &target, float_t w, float_t h) {
|
||||
this->updateProjection();
|
||||
}
|
||||
|
||||
Camera::~Camera() {
|
||||
this->getRenderTarget().eventRenderTargetResized.removeListener(
|
||||
this, &Camera::onRenderTargetResize
|
||||
);
|
||||
}
|
@ -14,9 +14,13 @@ namespace Dawn {
|
||||
};
|
||||
|
||||
class Camera : public SceneItemComponent {
|
||||
protected:
|
||||
std::shared_ptr<RenderTarget> target = nullptr;
|
||||
|
||||
void onRenderTargetResize(RenderTarget &target, float_t w, float_t h);
|
||||
|
||||
public:
|
||||
glm::mat4 projection;
|
||||
std::shared_ptr<RenderTarget> target = nullptr;
|
||||
|
||||
// Perspective
|
||||
enum CameraType type = CAMERA_TYPE_PERSPECTIVE;
|
||||
@ -55,6 +59,13 @@ namespace Dawn {
|
||||
*/
|
||||
RenderTarget & getRenderTarget();
|
||||
|
||||
/**
|
||||
* Updates the render target for the camera to use.
|
||||
*
|
||||
* @param renderTarget Render target for this camera to draw to.
|
||||
*/
|
||||
void setRenderTarget(std::shared_ptr<RenderTarget> renderTarget);
|
||||
|
||||
/**
|
||||
* Returs the aspect ratio of the camera.
|
||||
*
|
||||
@ -66,5 +77,10 @@ namespace Dawn {
|
||||
* Event triggered by the scene item when the item is added to the scene.
|
||||
*/
|
||||
void start() override;
|
||||
|
||||
/**
|
||||
* Disposes a previously initialized camera.
|
||||
*/
|
||||
~Camera();
|
||||
};
|
||||
}
|
@ -46,6 +46,10 @@ void Material::setShaderParameters() {
|
||||
case SHADER_PARAMETER_TYPE_VECTOR3:
|
||||
this->shader->setVector3(it->first, this->vec3Values[it->first]);
|
||||
break;
|
||||
|
||||
case SHADER_PARAMETER_TYPE_TEXTURE:
|
||||
this->shader->setTexture(it->first, this->textureValues[it->first]);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw "An unsupported or invalid shader parameter type was supplied.";
|
||||
|
@ -26,6 +26,7 @@ namespace Dawn {
|
||||
std::map<shaderparameter_t, bool_t> boolValues;
|
||||
std::map<shaderparameter_t, glm::mat4> matrixValues;
|
||||
std::map<shaderparameter_t, glm::vec3> vec3Values;
|
||||
std::map<shaderparameter_t, std::shared_ptr<Texture>> textureValues;
|
||||
|
||||
/**
|
||||
* Material component constructor.
|
||||
|
Reference in New Issue
Block a user