Add placeholder RID to GradientTexture1D

This commit is contained in:
kobewi 2023-08-31 15:53:32 +02:00
parent 549fcce5f8
commit 02857570d3
2 changed files with 11 additions and 4 deletions

View file

@ -64,11 +64,11 @@ void GradientTexture1D::set_gradient(Ref<Gradient> p_gradient) {
return;
}
if (gradient.is_valid()) {
gradient->disconnect_changed(callable_mp(this, &GradientTexture1D::_update));
gradient->disconnect_changed(callable_mp(this, &GradientTexture1D::_queue_update));
}
gradient = p_gradient;
if (gradient.is_valid()) {
gradient->connect_changed(callable_mp(this, &GradientTexture1D::_update));
gradient->connect_changed(callable_mp(this, &GradientTexture1D::_queue_update));
}
_queue_update();
emit_changed();
@ -164,6 +164,13 @@ bool GradientTexture1D::is_using_hdr() const {
return use_hdr;
}
RID GradientTexture1D::get_rid() const {
if (!texture.is_valid()) {
texture = RS::get_singleton()->texture_2d_placeholder_create();
}
return texture;
}
Ref<Image> GradientTexture1D::get_image() const {
const_cast<GradientTexture1D *>(this)->update_now();
if (!texture.is_valid()) {

View file

@ -39,7 +39,7 @@ class GradientTexture1D : public Texture2D {
private:
Ref<Gradient> gradient;
bool update_pending = false;
RID texture;
mutable RID texture;
int width = 256;
bool use_hdr = false;
@ -59,7 +59,7 @@ public:
void set_use_hdr(bool p_enabled);
bool is_using_hdr() const;
virtual RID get_rid() const override { return texture; }
virtual RID get_rid() const override;
virtual int get_height() const override { return 1; }
virtual bool has_alpha() const override { return true; }