[Viewport] Add option to inherit parents texture filter/repeat, use it for popups.
This commit is contained in:
parent
9095a76ff5
commit
cdcb208eb9
9 changed files with 199 additions and 44 deletions
|
|
@ -789,7 +789,7 @@
|
|||
Represents the size of the [enum TextureFilter] enum.
|
||||
</constant>
|
||||
<constant name="TEXTURE_REPEAT_PARENT_NODE" value="0" enum="TextureRepeat">
|
||||
The [CanvasItem] will inherit the filter from its parent.
|
||||
The [CanvasItem] will inherit the repeat mode from its parent.
|
||||
</constant>
|
||||
<constant name="TEXTURE_REPEAT_DISABLED" value="1" enum="TextureRepeat">
|
||||
The texture does not repeat. Sampling the texture outside its extents will result in "stretching" of the edge pixels. You can avoid this by ensuring a 1-pixel fully transparent border on each side of the texture.
|
||||
|
|
|
|||
|
|
@ -659,6 +659,8 @@
|
|||
<member name="allow_search" type="bool" setter="set_allow_search" getter="get_allow_search" default="true">
|
||||
If [code]true[/code], allows navigating [PopupMenu] with letter keys.
|
||||
</member>
|
||||
<member name="canvas_item_default_texture_filter" type="int" setter="set_default_canvas_item_texture_filter" getter="get_default_canvas_item_texture_filter" overrides="Viewport" enum="Viewport.DefaultCanvasItemTextureFilter" default="4" />
|
||||
<member name="canvas_item_default_texture_repeat" type="int" setter="set_default_canvas_item_texture_repeat" getter="get_default_canvas_item_texture_repeat" overrides="Viewport" enum="Viewport.DefaultCanvasItemTextureRepeat" default="3" />
|
||||
<member name="hide_on_checkable_item_selection" type="bool" setter="set_hide_on_checkable_item_selection" getter="is_hide_on_checkable_item_selection" default="true">
|
||||
If [code]true[/code], hides the [PopupMenu] when a checkbox or radio button is selected.
|
||||
</member>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
<tutorials>
|
||||
</tutorials>
|
||||
<members>
|
||||
<member name="canvas_item_default_texture_filter" type="int" setter="set_default_canvas_item_texture_filter" getter="get_default_canvas_item_texture_filter" overrides="Viewport" enum="Viewport.DefaultCanvasItemTextureFilter" default="4" />
|
||||
<member name="canvas_item_default_texture_repeat" type="int" setter="set_default_canvas_item_texture_repeat" getter="get_default_canvas_item_texture_repeat" overrides="Viewport" enum="Viewport.DefaultCanvasItemTextureRepeat" default="3" />
|
||||
<member name="transparent" type="bool" setter="set_flag" getter="get_flag" overrides="Window" default="true" />
|
||||
<member name="transparent_bg" type="bool" setter="set_transparent_background" getter="has_transparent_background" overrides="Viewport" default="true" />
|
||||
</members>
|
||||
|
|
|
|||
|
|
@ -768,7 +768,10 @@
|
|||
The texture filter reads from the nearest pixel and blends between the nearest 2 mipmaps (or uses the nearest mipmap if [member ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter] is [code]true[/code]). This makes the texture look pixelated from up close, and smooth from a distance.
|
||||
Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to [Camera2D] zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels.
|
||||
</constant>
|
||||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX" value="4" enum="DefaultCanvasItemTextureFilter">
|
||||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE" value="4" enum="DefaultCanvasItemTextureFilter">
|
||||
The [Viewport] will inherit the filter from its parent [CanvasItem] or [Viewport].
|
||||
</constant>
|
||||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX" value="5" enum="DefaultCanvasItemTextureFilter">
|
||||
Represents the size of the [enum DefaultCanvasItemTextureFilter] enum.
|
||||
</constant>
|
||||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED" value="0" enum="DefaultCanvasItemTextureRepeat">
|
||||
|
|
@ -780,7 +783,10 @@
|
|||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MIRROR" value="2" enum="DefaultCanvasItemTextureRepeat">
|
||||
Flip the texture when repeating so that the edge lines up instead of abruptly changing.
|
||||
</constant>
|
||||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX" value="3" enum="DefaultCanvasItemTextureRepeat">
|
||||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE" value="3" enum="DefaultCanvasItemTextureRepeat">
|
||||
The [Viewport] will inherit the repeat mode from its parent [CanvasItem] or [Viewport].
|
||||
</constant>
|
||||
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX" value="4" enum="DefaultCanvasItemTextureRepeat">
|
||||
Represents the size of the [enum DefaultCanvasItemTextureRepeat] enum.
|
||||
</constant>
|
||||
<constant name="SDF_OVERSIZE_100_PERCENT" value="0" enum="SDFOversize">
|
||||
|
|
|
|||
|
|
@ -435,6 +435,8 @@ void PopupPanel::_bind_methods() {
|
|||
|
||||
PopupPanel::PopupPanel() {
|
||||
set_flag(FLAG_TRANSPARENT, true);
|
||||
set_default_canvas_item_texture_filter(Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE);
|
||||
set_default_canvas_item_texture_repeat(Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE);
|
||||
|
||||
panel = memnew(Panel);
|
||||
panel->set_anchors_and_offsets_preset(Control::PRESET_FULL_RECT);
|
||||
|
|
|
|||
|
|
@ -3636,6 +3636,9 @@ void PopupMenu::set_visible(bool p_visible) {
|
|||
|
||||
PopupMenu::PopupMenu() {
|
||||
set_flag(FLAG_TRANSPARENT, true);
|
||||
set_default_canvas_item_texture_filter(Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE);
|
||||
set_default_canvas_item_texture_repeat(Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE);
|
||||
|
||||
// The panel used to draw the panel style.
|
||||
panel = memnew(PanelContainer);
|
||||
panel->set_anchors_and_offsets_preset(Control::PRESET_FULL_RECT);
|
||||
|
|
|
|||
|
|
@ -1664,11 +1664,17 @@ void CanvasItem::_update_texture_filter_changed(bool p_propagate) {
|
|||
_update_self_texture_filter(texture_filter_cache);
|
||||
|
||||
if (p_propagate) {
|
||||
for (uint32_t n = 0; n < data.canvas_item_children.size(); n++) {
|
||||
CanvasItem *ci = data.canvas_item_children[n];
|
||||
|
||||
if (!ci->top_level && ci->texture_filter == TEXTURE_FILTER_PARENT_NODE) {
|
||||
ci->_update_texture_filter_changed(true);
|
||||
for (Node *c : iterate_children()) {
|
||||
CanvasItem *child_ci = Object::cast_to<CanvasItem>(c);
|
||||
if (child_ci) {
|
||||
if (child_ci->texture_filter == CanvasItem::TEXTURE_FILTER_PARENT_NODE) {
|
||||
child_ci->_update_texture_filter_changed(true);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Viewport *child_vp = Object::cast_to<Viewport>(c);
|
||||
if (child_vp && child_vp->get_default_canvas_item_texture_filter() == Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE) {
|
||||
child_vp->_update_texture_filter_changed(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1720,10 +1726,17 @@ void CanvasItem::_update_texture_repeat_changed(bool p_propagate) {
|
|||
_update_self_texture_repeat(texture_repeat_cache);
|
||||
|
||||
if (p_propagate) {
|
||||
for (uint32_t n = 0; n < data.canvas_item_children.size(); n++) {
|
||||
CanvasItem *ci = data.canvas_item_children[n];
|
||||
if (!ci->top_level && ci->texture_repeat == TEXTURE_REPEAT_PARENT_NODE) {
|
||||
ci->_update_texture_repeat_changed(true);
|
||||
for (Node *c : iterate_children()) {
|
||||
CanvasItem *child_ci = Object::cast_to<CanvasItem>(c);
|
||||
if (child_ci) {
|
||||
if (child_ci->texture_repeat == CanvasItem::TEXTURE_REPEAT_PARENT_NODE) {
|
||||
child_ci->_update_texture_repeat_changed(true);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Viewport *child_vp = Object::cast_to<Viewport>(c);
|
||||
if (child_vp && child_vp->get_default_canvas_item_texture_repeat() == Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE) {
|
||||
child_vp->_update_texture_repeat_changed(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -631,6 +631,8 @@ void Viewport::_notification(int p_what) {
|
|||
set_physics_process_internal(true);
|
||||
}
|
||||
#endif // !defined(PHYSICS_2D_DISABLED) || !defined(PHYSICS_3D_DISABLED)
|
||||
_update_texture_filter_changed(false);
|
||||
_update_texture_repeat_changed(false);
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_READY: {
|
||||
|
|
@ -3995,6 +3997,70 @@ bool Viewport::is_handling_input_locally() const {
|
|||
return handle_input_locally;
|
||||
}
|
||||
|
||||
void Viewport::_refresh_texture_filter_cache() const {
|
||||
if (!is_inside_tree()) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (default_canvas_item_texture_filter) {
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST: {
|
||||
default_canvas_item_texture_filter_cache = RSE::CANVAS_ITEM_TEXTURE_FILTER_NEAREST;
|
||||
} break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR: {
|
||||
default_canvas_item_texture_filter_cache = RSE::CANVAS_ITEM_TEXTURE_FILTER_LINEAR;
|
||||
} break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS: {
|
||||
default_canvas_item_texture_filter_cache = RSE::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS;
|
||||
} break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS: {
|
||||
default_canvas_item_texture_filter_cache = RSE::CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS;
|
||||
} break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE: {
|
||||
Node *p = get_parent();
|
||||
CanvasItem *parent_ci = Object::cast_to<CanvasItem>(p);
|
||||
if (parent_ci) {
|
||||
default_canvas_item_texture_filter_cache = (RenderingServerEnums::CanvasItemTextureFilter)parent_ci->get_texture_filter_in_tree();
|
||||
if (default_canvas_item_texture_filter_cache == RSE::CANVAS_ITEM_TEXTURE_FILTER_DEFAULT) {
|
||||
default_canvas_item_texture_filter_cache = RSE::CANVAS_ITEM_TEXTURE_FILTER_LINEAR;
|
||||
}
|
||||
break;
|
||||
}
|
||||
Viewport *parent_vp = Object::cast_to<Viewport>(p);
|
||||
if (parent_vp) {
|
||||
default_canvas_item_texture_filter_cache = (RenderingServerEnums::CanvasItemTextureFilter)parent_vp->get_texture_filter_in_tree();
|
||||
break;
|
||||
}
|
||||
default_canvas_item_texture_filter_cache = RSE::CANVAS_ITEM_TEXTURE_FILTER_LINEAR;
|
||||
} break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Viewport::_update_texture_filter_changed(bool p_propagate) {
|
||||
if (!is_inside_tree()) {
|
||||
return;
|
||||
}
|
||||
_refresh_texture_filter_cache();
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_filter(viewport, default_canvas_item_texture_filter_cache);
|
||||
|
||||
if (p_propagate) {
|
||||
for (Node *c : iterate_children()) {
|
||||
CanvasItem *child_ci = Object::cast_to<CanvasItem>(c);
|
||||
if (child_ci) {
|
||||
if (child_ci->texture_filter == CanvasItem::TEXTURE_FILTER_PARENT_NODE) {
|
||||
child_ci->_update_texture_filter_changed(true);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Viewport *child_vp = Object::cast_to<Viewport>(c);
|
||||
if (child_vp && child_vp->default_canvas_item_texture_filter == Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE) {
|
||||
child_vp->_update_texture_filter_changed(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Viewport::set_default_canvas_item_texture_filter(DefaultCanvasItemTextureFilter p_filter) {
|
||||
ERR_MAIN_THREAD_GUARD;
|
||||
ERR_FAIL_INDEX(p_filter, DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX);
|
||||
|
|
@ -4003,22 +4069,7 @@ void Viewport::set_default_canvas_item_texture_filter(DefaultCanvasItemTextureFi
|
|||
return;
|
||||
}
|
||||
default_canvas_item_texture_filter = p_filter;
|
||||
switch (default_canvas_item_texture_filter) {
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST:
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_filter(viewport, RSE::CANVAS_ITEM_TEXTURE_FILTER_NEAREST);
|
||||
break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR:
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_filter(viewport, RSE::CANVAS_ITEM_TEXTURE_FILTER_LINEAR);
|
||||
break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS:
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_filter(viewport, RSE::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS);
|
||||
break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS:
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_filter(viewport, RSE::CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS);
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
_update_texture_filter_changed(true);
|
||||
}
|
||||
|
||||
Viewport::DefaultCanvasItemTextureFilter Viewport::get_default_canvas_item_texture_filter() const {
|
||||
|
|
@ -4026,6 +4077,73 @@ Viewport::DefaultCanvasItemTextureFilter Viewport::get_default_canvas_item_textu
|
|||
return default_canvas_item_texture_filter;
|
||||
}
|
||||
|
||||
RenderingServerEnums::CanvasItemTextureFilter Viewport::get_texture_filter_in_tree() const {
|
||||
ERR_READ_THREAD_GUARD_V(RSE::CANVAS_ITEM_TEXTURE_FILTER_LINEAR);
|
||||
_refresh_texture_filter_cache();
|
||||
return default_canvas_item_texture_filter_cache;
|
||||
}
|
||||
|
||||
void Viewport::_refresh_texture_repeat_cache() const {
|
||||
if (!is_inside_tree()) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (default_canvas_item_texture_repeat) {
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED: {
|
||||
default_canvas_item_texture_repeat_cache = RSE::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED;
|
||||
} break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_ENABLED: {
|
||||
default_canvas_item_texture_repeat_cache = RSE::CANVAS_ITEM_TEXTURE_REPEAT_ENABLED;
|
||||
} break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MIRROR: {
|
||||
default_canvas_item_texture_repeat_cache = RSE::CANVAS_ITEM_TEXTURE_REPEAT_MIRROR;
|
||||
} break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE: {
|
||||
Node *p = get_parent();
|
||||
CanvasItem *parent_ci = Object::cast_to<CanvasItem>(p);
|
||||
if (parent_ci) {
|
||||
default_canvas_item_texture_repeat_cache = (RenderingServerEnums::CanvasItemTextureRepeat)parent_ci->get_texture_repeat_in_tree();
|
||||
if (default_canvas_item_texture_repeat_cache == RSE::CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT) {
|
||||
default_canvas_item_texture_repeat_cache = RSE::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
Viewport *parent_vp = Object::cast_to<Viewport>(p);
|
||||
if (parent_vp) {
|
||||
default_canvas_item_texture_repeat_cache = (RenderingServerEnums::CanvasItemTextureRepeat)parent_vp->get_texture_repeat_in_tree();
|
||||
break;
|
||||
}
|
||||
default_canvas_item_texture_repeat_cache = RSE::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED;
|
||||
} break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Viewport::_update_texture_repeat_changed(bool p_propagate) {
|
||||
if (!is_inside_tree()) {
|
||||
return;
|
||||
}
|
||||
_refresh_texture_repeat_cache();
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_repeat(viewport, default_canvas_item_texture_repeat_cache);
|
||||
|
||||
if (p_propagate) {
|
||||
for (Node *c : iterate_children()) {
|
||||
CanvasItem *child_ci = Object::cast_to<CanvasItem>(c);
|
||||
if (child_ci) {
|
||||
if (child_ci->texture_repeat == CanvasItem::TEXTURE_REPEAT_PARENT_NODE) {
|
||||
child_ci->_update_texture_repeat_changed(true);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Viewport *child_vp = Object::cast_to<Viewport>(c);
|
||||
if (child_vp && child_vp->default_canvas_item_texture_repeat == Viewport::DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE) {
|
||||
child_vp->_update_texture_repeat_changed(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Viewport::set_default_canvas_item_texture_repeat(DefaultCanvasItemTextureRepeat p_repeat) {
|
||||
ERR_MAIN_THREAD_GUARD;
|
||||
ERR_FAIL_INDEX(p_repeat, DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX);
|
||||
|
|
@ -4035,20 +4153,7 @@ void Viewport::set_default_canvas_item_texture_repeat(DefaultCanvasItemTextureRe
|
|||
}
|
||||
|
||||
default_canvas_item_texture_repeat = p_repeat;
|
||||
|
||||
switch (default_canvas_item_texture_repeat) {
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED:
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_repeat(viewport, RSE::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED);
|
||||
break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_ENABLED:
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_repeat(viewport, RSE::CANVAS_ITEM_TEXTURE_REPEAT_ENABLED);
|
||||
break;
|
||||
case DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MIRROR:
|
||||
RS::get_singleton()->viewport_set_default_canvas_item_texture_repeat(viewport, RSE::CANVAS_ITEM_TEXTURE_REPEAT_MIRROR);
|
||||
break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
_update_texture_repeat_changed(true);
|
||||
}
|
||||
|
||||
Viewport::DefaultCanvasItemTextureRepeat Viewport::get_default_canvas_item_texture_repeat() const {
|
||||
|
|
@ -4056,6 +4161,12 @@ Viewport::DefaultCanvasItemTextureRepeat Viewport::get_default_canvas_item_textu
|
|||
return default_canvas_item_texture_repeat;
|
||||
}
|
||||
|
||||
RenderingServerEnums::CanvasItemTextureRepeat Viewport::get_texture_repeat_in_tree() const {
|
||||
ERR_READ_THREAD_GUARD_V(RSE::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED);
|
||||
_refresh_texture_repeat_cache();
|
||||
return default_canvas_item_texture_repeat_cache;
|
||||
}
|
||||
|
||||
void Viewport::set_vrs_mode(Viewport::VRSMode p_vrs_mode) {
|
||||
ERR_MAIN_THREAD_GUARD;
|
||||
// Note, set this even if not supported on this hardware, it will only be used if it is but we want to save the value as set by the user.
|
||||
|
|
@ -5227,8 +5338,8 @@ void Viewport::_bind_methods() {
|
|||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "vrs_texture", PROPERTY_HINT_RESOURCE_TYPE, Texture2D::get_class_static()), "set_vrs_texture", "get_vrs_texture");
|
||||
#endif
|
||||
ADD_GROUP("Canvas Items", "canvas_item_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "canvas_item_default_texture_filter", PROPERTY_HINT_ENUM, "Nearest,Linear,Linear Mipmap,Nearest Mipmap"), "set_default_canvas_item_texture_filter", "get_default_canvas_item_texture_filter");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "canvas_item_default_texture_repeat", PROPERTY_HINT_ENUM, "Disabled,Enabled,Mirror"), "set_default_canvas_item_texture_repeat", "get_default_canvas_item_texture_repeat");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "canvas_item_default_texture_filter", PROPERTY_HINT_ENUM, "Nearest,Linear,Linear Mipmap,Nearest Mipmap,Inherit"), "set_default_canvas_item_texture_filter", "get_default_canvas_item_texture_filter");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "canvas_item_default_texture_repeat", PROPERTY_HINT_ENUM, "Disabled,Enabled,Mirror,Inherit"), "set_default_canvas_item_texture_repeat", "get_default_canvas_item_texture_repeat");
|
||||
ADD_GROUP("Audio Listener", "audio_listener_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "audio_listener_enable_2d"), "set_as_audio_listener_2d", "is_audio_listener_2d");
|
||||
#ifndef _3D_DISABLED
|
||||
|
|
@ -5341,11 +5452,13 @@ void Viewport::_bind_methods() {
|
|||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_ENABLED);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MIRROR);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE);
|
||||
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(SDF_OVERSIZE_100_PERCENT);
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
#include "scene/main/node.h"
|
||||
#include "scene/resources/texture.h"
|
||||
#include "servers/display/display_server_enums.h"
|
||||
#include "servers/rendering/rendering_server_enums.h"
|
||||
|
||||
class AudioListener2D;
|
||||
class Camera2D;
|
||||
|
|
@ -190,6 +191,7 @@ public:
|
|||
DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_PARENT_NODE,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX
|
||||
};
|
||||
|
||||
|
|
@ -197,6 +199,7 @@ public:
|
|||
DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_ENABLED,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MIRROR,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_PARENT_NODE,
|
||||
DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX,
|
||||
};
|
||||
|
||||
|
|
@ -418,7 +421,12 @@ private:
|
|||
} gui;
|
||||
|
||||
DefaultCanvasItemTextureFilter default_canvas_item_texture_filter = DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR;
|
||||
mutable RenderingServerEnums::CanvasItemTextureFilter default_canvas_item_texture_filter_cache = RenderingServerEnums::CANVAS_ITEM_TEXTURE_FILTER_LINEAR;
|
||||
void _refresh_texture_filter_cache() const;
|
||||
|
||||
DefaultCanvasItemTextureRepeat default_canvas_item_texture_repeat = DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED;
|
||||
mutable RenderingServerEnums::CanvasItemTextureRepeat default_canvas_item_texture_repeat_cache = RenderingServerEnums::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED;
|
||||
void _refresh_texture_repeat_cache() const;
|
||||
|
||||
bool disable_input = false;
|
||||
bool disable_input_override = false;
|
||||
|
|
@ -692,9 +700,15 @@ public:
|
|||
void set_default_canvas_item_texture_filter(DefaultCanvasItemTextureFilter p_filter);
|
||||
DefaultCanvasItemTextureFilter get_default_canvas_item_texture_filter() const;
|
||||
|
||||
void _update_texture_filter_changed(bool p_propagate);
|
||||
RenderingServerEnums::CanvasItemTextureFilter get_texture_filter_in_tree() const;
|
||||
|
||||
void set_default_canvas_item_texture_repeat(DefaultCanvasItemTextureRepeat p_repeat);
|
||||
DefaultCanvasItemTextureRepeat get_default_canvas_item_texture_repeat() const;
|
||||
|
||||
void _update_texture_repeat_changed(bool p_propagate);
|
||||
RenderingServerEnums::CanvasItemTextureRepeat get_texture_repeat_in_tree() const;
|
||||
|
||||
// VRS
|
||||
|
||||
void set_vrs_mode(VRSMode p_vrs_mode);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue