You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-11 13:10:58 +00:00
Add enable checkboxes to editor sections
Fixes https://github.com/godotengine/godot-proposals/issues/4173
This commit is contained in:
@@ -678,6 +678,7 @@ void register_global_constants() {
|
|||||||
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_PASSWORD);
|
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_PASSWORD);
|
||||||
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_TOOL_BUTTON);
|
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_TOOL_BUTTON);
|
||||||
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_ONESHOT);
|
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_ONESHOT);
|
||||||
|
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_GROUP_ENABLE);
|
||||||
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_MAX);
|
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_MAX);
|
||||||
|
|
||||||
BIND_CORE_BITFIELD_FLAG(PROPERTY_USAGE_NONE);
|
BIND_CORE_BITFIELD_FLAG(PROPERTY_USAGE_NONE);
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ enum PropertyHint {
|
|||||||
PROPERTY_HINT_TOOL_BUTTON,
|
PROPERTY_HINT_TOOL_BUTTON,
|
||||||
PROPERTY_HINT_ONESHOT, ///< the property will be changed by self after setting, such as AudioStreamPlayer.playing, Particles.emitting.
|
PROPERTY_HINT_ONESHOT, ///< the property will be changed by self after setting, such as AudioStreamPlayer.playing, Particles.emitting.
|
||||||
PROPERTY_HINT_NO_NODEPATH, /// < this property will not contain a NodePath, regardless of type (Array, Dictionary, List, etc.). Needed for SceneTreeDock.
|
PROPERTY_HINT_NO_NODEPATH, /// < this property will not contain a NodePath, regardless of type (Array, Dictionary, List, etc.). Needed for SceneTreeDock.
|
||||||
|
PROPERTY_HINT_GROUP_ENABLE, ///< used to make the property's group checkable. Only use for boolean types.
|
||||||
PROPERTY_HINT_MAX,
|
PROPERTY_HINT_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2954,7 +2954,10 @@
|
|||||||
<constant name="PROPERTY_HINT_ONESHOT" value="40" enum="PropertyHint">
|
<constant name="PROPERTY_HINT_ONESHOT" value="40" enum="PropertyHint">
|
||||||
Hints that a property will be changed on its own after setting, such as [member AudioStreamPlayer.playing] or [member GPUParticles3D.emitting].
|
Hints that a property will be changed on its own after setting, such as [member AudioStreamPlayer.playing] or [member GPUParticles3D.emitting].
|
||||||
</constant>
|
</constant>
|
||||||
<constant name="PROPERTY_HINT_MAX" value="42" enum="PropertyHint">
|
<constant name="PROPERTY_HINT_GROUP_ENABLE" value="42" enum="PropertyHint">
|
||||||
|
Hints that a boolean property will enable the feature associated with the group that it occurs in. Only works within a group or subgroup.
|
||||||
|
</constant>
|
||||||
|
<constant name="PROPERTY_HINT_MAX" value="43" enum="PropertyHint">
|
||||||
Represents the size of the [enum PropertyHint] enum.
|
Represents the size of the [enum PropertyHint] enum.
|
||||||
</constant>
|
</constant>
|
||||||
<constant name="PROPERTY_USAGE_NONE" value="0" enum="PropertyUsageFlags" is_bitfield="true">
|
<constant name="PROPERTY_USAGE_NONE" value="0" enum="PropertyUsageFlags" is_bitfield="true">
|
||||||
|
|||||||
@@ -1731,6 +1731,20 @@ Ref<Texture2D> EditorInspectorSection::_get_arrow() {
|
|||||||
return arrow;
|
return arrow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<Texture2D> EditorInspectorSection::_get_checkbox() {
|
||||||
|
Ref<Texture2D> checkbox;
|
||||||
|
|
||||||
|
if (checkable) {
|
||||||
|
if (checked) {
|
||||||
|
checkbox = get_editor_theme_icon(SNAME("GuiChecked"));
|
||||||
|
} else {
|
||||||
|
checkbox = get_editor_theme_icon(SNAME("GuiUnchecked"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return checkbox;
|
||||||
|
}
|
||||||
|
|
||||||
int EditorInspectorSection::_get_header_height() {
|
int EditorInspectorSection::_get_header_height() {
|
||||||
Ref<Font> font = get_theme_font(SNAME("bold"), EditorStringName(EditorFonts));
|
Ref<Font> font = get_theme_font(SNAME("bold"), EditorStringName(EditorFonts));
|
||||||
int font_size = get_theme_font_size(SNAME("bold_size"), EditorStringName(EditorFonts));
|
int font_size = get_theme_font_size(SNAME("bold_size"), EditorStringName(EditorFonts));
|
||||||
@@ -1812,13 +1826,15 @@ void EditorInspectorSection::_notification(int p_what) {
|
|||||||
header_offset_x += section_indent;
|
header_offset_x += section_indent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool has_children_to_show = vbox->get_child_count(false) != 0;
|
||||||
|
|
||||||
// Draw header area.
|
// Draw header area.
|
||||||
int header_height = _get_header_height();
|
int header_height = _get_header_height();
|
||||||
Rect2 header_rect = Rect2(Vector2(header_offset_x, 0.0), Vector2(header_width, header_height));
|
Rect2 header_rect = Rect2(Vector2(header_offset_x, 0.0), Vector2(header_width, header_height));
|
||||||
Color c = bg_color;
|
Color c = bg_color;
|
||||||
c.a *= 0.4;
|
c.a *= 0.4;
|
||||||
if (foldable && header_rect.has_point(get_local_mouse_position())) {
|
if (foldable && header_rect.has_point(get_local_mouse_position())) {
|
||||||
c = c.lightened(Input::get_singleton()->is_mouse_button_pressed(MouseButton::LEFT) ? -0.05 : 0.2);
|
c = c.lightened((has_children_to_show && Input::get_singleton()->is_mouse_button_pressed(MouseButton::LEFT)) ? -0.05 : 0.2);
|
||||||
}
|
}
|
||||||
draw_rect(header_rect, c);
|
draw_rect(header_rect, c);
|
||||||
|
|
||||||
@@ -1840,10 +1856,34 @@ void EditorInspectorSection::_notification(int p_what) {
|
|||||||
arrow_position.x = margin_start;
|
arrow_position.x = margin_start;
|
||||||
}
|
}
|
||||||
arrow_position.y = (header_height - arrow->get_height()) / 2;
|
arrow_position.y = (header_height - arrow->get_height()) / 2;
|
||||||
draw_texture(arrow, arrow_position);
|
if (has_children_to_show) {
|
||||||
|
draw_texture(arrow, arrow_position);
|
||||||
|
}
|
||||||
margin_start += arrow->get_width() + separation;
|
margin_start += arrow->get_width() + separation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - Checkbox.
|
||||||
|
Ref<Texture2D> checkbox = _get_checkbox();
|
||||||
|
if (checkbox.is_valid()) {
|
||||||
|
Point2 checkbox_position;
|
||||||
|
if (rtl) {
|
||||||
|
checkbox_position.x = margin_start;
|
||||||
|
} else {
|
||||||
|
checkbox_position.x = get_size().width - (margin_end + checkbox->get_width());
|
||||||
|
}
|
||||||
|
checkbox_position.y = (header_height - checkbox->get_height()) / 2;
|
||||||
|
check_rect = Rect2(checkbox_position.x, checkbox_position.y, checkbox->get_width(), checkbox->get_height());
|
||||||
|
|
||||||
|
Color checkbox_color(1, 1, 1);
|
||||||
|
if (check_hover) {
|
||||||
|
checkbox_color.r *= 1.2;
|
||||||
|
checkbox_color.g *= 1.2;
|
||||||
|
checkbox_color.b *= 1.2;
|
||||||
|
}
|
||||||
|
draw_texture(checkbox, checkbox_position, checkbox_color);
|
||||||
|
margin_end += checkbox->get_width() + 4 * EDSCALE;
|
||||||
|
}
|
||||||
|
|
||||||
int available = get_size().width - (margin_start + margin_end);
|
int available = get_size().width - (margin_start + margin_end);
|
||||||
|
|
||||||
// - Count of revertable properties.
|
// - Count of revertable properties.
|
||||||
@@ -1854,7 +1894,12 @@ void EditorInspectorSection::_notification(int p_what) {
|
|||||||
|
|
||||||
Ref<Font> font = get_theme_font(SNAME("bold"), EditorStringName(EditorFonts));
|
Ref<Font> font = get_theme_font(SNAME("bold"), EditorStringName(EditorFonts));
|
||||||
int font_size = get_theme_font_size(SNAME("bold_size"), EditorStringName(EditorFonts));
|
int font_size = get_theme_font_size(SNAME("bold_size"), EditorStringName(EditorFonts));
|
||||||
Color font_color = get_theme_color(SceneStringName(font_color), EditorStringName(Editor));
|
Color font_color;
|
||||||
|
if (object->has_method("_get_property_warning")) {
|
||||||
|
font_color = get_theme_color(String(object->call("_get_property_warning", related_enable_property)).is_empty() ? SceneStringName(font_color) : SNAME("warning_color"), EditorStringName(Editor));
|
||||||
|
} else {
|
||||||
|
font_color = get_theme_color(SceneStringName(font_color), EditorStringName(Editor));
|
||||||
|
}
|
||||||
|
|
||||||
if (folded && revertable_properties.size()) {
|
if (folded && revertable_properties.size()) {
|
||||||
int label_width = font->get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, available, font_size, TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_CONSTRAIN_ELLIPSIS).x;
|
int label_width = font->get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, available, font_size, TextServer::JUSTIFICATION_KASHIDA | TextServer::JUSTIFICATION_CONSTRAIN_ELLIPSIS).x;
|
||||||
@@ -1956,6 +2001,53 @@ Size2 EditorInspectorSection::get_minimum_size() const {
|
|||||||
return ms;
|
return ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EditorInspector *EditorInspectorSection::_get_parent_inspector() const {
|
||||||
|
Node *parent = get_parent();
|
||||||
|
while (parent) {
|
||||||
|
EditorInspector *ei = Object::cast_to<EditorInspector>(parent);
|
||||||
|
if (ei) {
|
||||||
|
return ei;
|
||||||
|
}
|
||||||
|
parent = parent->get_parent();
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Control *EditorInspectorSection::make_custom_tooltip(const String &p_text) const {
|
||||||
|
if (!checkable) {
|
||||||
|
return Container::make_custom_tooltip(p_text);
|
||||||
|
}
|
||||||
|
|
||||||
|
String symbol;
|
||||||
|
String prologue;
|
||||||
|
|
||||||
|
if (object->has_method("_get_property_warning")) {
|
||||||
|
const String custom_warning = object->call("_get_property_warning", related_enable_property);
|
||||||
|
if (!custom_warning.is_empty()) {
|
||||||
|
prologue = "[b][color=" + get_theme_color(SNAME("warning_color"), EditorStringName(Editor)).to_html(false) + "]" + custom_warning + "[/color][/b]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
symbol = p_text;
|
||||||
|
|
||||||
|
const EditorInspector *inspector = _get_parent_inspector();
|
||||||
|
if (inspector) {
|
||||||
|
const String custom_description = inspector->get_custom_property_description(p_text);
|
||||||
|
if (!custom_description.is_empty()) {
|
||||||
|
if (!prologue.is_empty()) {
|
||||||
|
prologue += '\n';
|
||||||
|
}
|
||||||
|
prologue += custom_description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!symbol.is_empty() || !prologue.is_empty()) {
|
||||||
|
return EditorHelpBitTooltip::show_tooltip(const_cast<EditorInspectorSection *>(this), symbol, prologue);
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void EditorInspectorSection::setup(const String &p_section, const String &p_label, Object *p_object, const Color &p_bg_color, bool p_foldable, int p_indent_depth, int p_level) {
|
void EditorInspectorSection::setup(const String &p_section, const String &p_label, Object *p_object, const Color &p_bg_color, bool p_foldable, int p_indent_depth, int p_level) {
|
||||||
section = p_section;
|
section = p_section;
|
||||||
label = p_label;
|
label = p_label;
|
||||||
@@ -1965,14 +2057,9 @@ void EditorInspectorSection::setup(const String &p_section, const String &p_labe
|
|||||||
indent_depth = p_indent_depth;
|
indent_depth = p_indent_depth;
|
||||||
level = p_level;
|
level = p_level;
|
||||||
|
|
||||||
if (!foldable && !vbox_added) {
|
_test_unfold();
|
||||||
add_child(vbox);
|
|
||||||
move_child(vbox, 0);
|
|
||||||
vbox_added = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (foldable) {
|
if (foldable) {
|
||||||
_test_unfold();
|
|
||||||
if (object->editor_is_section_unfolded(section)) {
|
if (object->editor_is_section_unfolded(section)) {
|
||||||
vbox->show();
|
vbox->show();
|
||||||
} else {
|
} else {
|
||||||
@@ -1983,14 +2070,20 @@ void EditorInspectorSection::setup(const String &p_section, const String &p_labe
|
|||||||
|
|
||||||
void EditorInspectorSection::gui_input(const Ref<InputEvent> &p_event) {
|
void EditorInspectorSection::gui_input(const Ref<InputEvent> &p_event) {
|
||||||
ERR_FAIL_COND(p_event.is_null());
|
ERR_FAIL_COND(p_event.is_null());
|
||||||
|
bool has_children_to_show = vbox->get_child_count(false) != 0;
|
||||||
|
|
||||||
if (!foldable) {
|
Ref<InputEventMouse> me = p_event;
|
||||||
return;
|
if (me.is_valid()) {
|
||||||
|
bool new_check_hover = check_rect.has_point(me->get_position());
|
||||||
|
if (new_check_hover != check_hover) {
|
||||||
|
check_hover = new_check_hover;
|
||||||
|
queue_redraw();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<InputEventKey> k = p_event;
|
Ref<InputEventKey> k = p_event;
|
||||||
if (k.is_valid() && k->is_pressed()) {
|
if (k.is_valid() && k->is_pressed()) {
|
||||||
if (k->is_action("ui_accept", true)) {
|
if (foldable && has_children_to_show && k->is_action("ui_accept", true)) {
|
||||||
accept_event();
|
accept_event();
|
||||||
|
|
||||||
bool should_unfold = !object->editor_is_section_unfolded(section);
|
bool should_unfold = !object->editor_is_section_unfolded(section);
|
||||||
@@ -2014,11 +2107,17 @@ void EditorInspectorSection::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
|
|
||||||
accept_event();
|
accept_event();
|
||||||
|
|
||||||
bool should_unfold = !object->editor_is_section_unfolded(section);
|
if (check_rect.has_point(mb->get_position())) {
|
||||||
if (should_unfold) {
|
checked = !checked;
|
||||||
|
emit_signal(SNAME("section_toggled_by_user"), related_enable_property, checked);
|
||||||
unfold();
|
unfold();
|
||||||
} else {
|
} else if (foldable) {
|
||||||
fold();
|
bool should_unfold = has_children_to_show && !object->editor_is_section_unfolded(section);
|
||||||
|
if (should_unfold) {
|
||||||
|
unfold();
|
||||||
|
} else {
|
||||||
|
fold();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (mb.is_valid() && !mb->is_pressed()) {
|
} else if (mb.is_valid() && !mb->is_pressed()) {
|
||||||
queue_redraw();
|
queue_redraw();
|
||||||
@@ -2028,7 +2127,7 @@ void EditorInspectorSection::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
if (mm.is_valid()) {
|
if (mm.is_valid()) {
|
||||||
int header_height = _get_header_height();
|
int header_height = _get_header_height();
|
||||||
Vector2 previous = mm->get_position() - mm->get_relative();
|
Vector2 previous = mm->get_position() - mm->get_relative();
|
||||||
if ((mm->get_position().y >= header_height) != (previous.y >= header_height)) {
|
if (has_children_to_show && ((mm->get_position().y >= header_height) != (previous.y >= header_height))) {
|
||||||
queue_redraw();
|
queue_redraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2087,6 +2186,25 @@ void EditorInspectorSection::reset_timer() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorInspectorSection::set_checkable(const String &p_related_check_property) {
|
||||||
|
if (checkable == !p_related_check_property.is_empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
checkable = !p_related_check_property.is_empty();
|
||||||
|
related_enable_property = p_related_check_property;
|
||||||
|
queue_redraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditorInspectorSection::set_checked(bool p_checked) {
|
||||||
|
if (checked == p_checked) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
checked = p_checked;
|
||||||
|
queue_redraw();
|
||||||
|
}
|
||||||
|
|
||||||
bool EditorInspectorSection::has_revertable_properties() const {
|
bool EditorInspectorSection::has_revertable_properties() const {
|
||||||
return !revertable_properties.is_empty();
|
return !revertable_properties.is_empty();
|
||||||
}
|
}
|
||||||
@@ -2108,6 +2226,8 @@ void EditorInspectorSection::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_vbox"), &EditorInspectorSection::get_vbox);
|
ClassDB::bind_method(D_METHOD("get_vbox"), &EditorInspectorSection::get_vbox);
|
||||||
ClassDB::bind_method(D_METHOD("unfold"), &EditorInspectorSection::unfold);
|
ClassDB::bind_method(D_METHOD("unfold"), &EditorInspectorSection::unfold);
|
||||||
ClassDB::bind_method(D_METHOD("fold"), &EditorInspectorSection::fold);
|
ClassDB::bind_method(D_METHOD("fold"), &EditorInspectorSection::fold);
|
||||||
|
|
||||||
|
ADD_SIGNAL(MethodInfo("section_toggled_by_user", PropertyInfo(Variant::STRING_NAME, "property"), PropertyInfo(Variant::BOOL, "value")));
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorInspectorSection::EditorInspectorSection() {
|
EditorInspectorSection::EditorInspectorSection() {
|
||||||
@@ -3728,6 +3848,8 @@ void EditorInspector::update_tree() {
|
|||||||
section->setup(acc_path, label, object, c, use_folding, section_depth, level);
|
section->setup(acc_path, label, object, c, use_folding, section_depth, level);
|
||||||
section->set_tooltip_text(tooltip);
|
section->set_tooltip_text(tooltip);
|
||||||
|
|
||||||
|
section->connect("section_toggled_by_user", callable_mp(this, &EditorInspector::_section_toggled_by_user));
|
||||||
|
|
||||||
// Add editors at the start of a group.
|
// Add editors at the start of a group.
|
||||||
for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
|
for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
|
||||||
ped->parse_group(object, path);
|
ped->parse_group(object, path);
|
||||||
@@ -3828,6 +3950,7 @@ void EditorInspector::update_tree() {
|
|||||||
|
|
||||||
String doc_path;
|
String doc_path;
|
||||||
String theme_item_name;
|
String theme_item_name;
|
||||||
|
String doc_tooltip_text;
|
||||||
StringName classname = doc_name;
|
StringName classname = doc_name;
|
||||||
|
|
||||||
// Build the doc hint, to use as tooltip.
|
// Build the doc hint, to use as tooltip.
|
||||||
@@ -3914,6 +4037,47 @@ void EditorInspector::update_tree() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (use_doc_hints) {
|
||||||
|
// `|` separators used in `EditorHelpBit`.
|
||||||
|
if (theme_item_name.is_empty()) {
|
||||||
|
if (p.name.contains("shader_parameter/")) {
|
||||||
|
ShaderMaterial *shader_material = Object::cast_to<ShaderMaterial>(object);
|
||||||
|
if (shader_material) {
|
||||||
|
doc_tooltip_text = "property|" + shader_material->get_shader()->get_path() + "|" + property_prefix + p.name;
|
||||||
|
}
|
||||||
|
} else if (p.usage & PROPERTY_USAGE_INTERNAL) {
|
||||||
|
doc_tooltip_text = "internal_property|" + classname + "|" + property_prefix + p.name;
|
||||||
|
} else {
|
||||||
|
doc_tooltip_text = "property|" + classname + "|" + property_prefix + p.name;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
doc_tooltip_text = "theme_item|" + classname + "|" + theme_item_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only used for boolean types. Makes the section header a checkable group and adds tooltips.
|
||||||
|
if (p.hint == PROPERTY_HINT_GROUP_ENABLE) {
|
||||||
|
if (p.type == Variant::BOOL && (p.name.begins_with(group_base) || p.name.begins_with(subgroup_base))) {
|
||||||
|
EditorInspectorSection *last_created_section = Object::cast_to<EditorInspectorSection>(current_vbox->get_parent());
|
||||||
|
if (last_created_section) {
|
||||||
|
bool valid = false;
|
||||||
|
Variant value_checked = object->get(p.name, &valid);
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
last_created_section->set_checkable(p.name);
|
||||||
|
last_created_section->set_checked(value_checked.operator bool());
|
||||||
|
|
||||||
|
if (use_doc_hints) {
|
||||||
|
last_created_section->set_tooltip_text(doc_tooltip_text);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ERR_PRINT("PROPERTY_HINT_GROUP_ENABLE can only be used on boolean types and must have the same prefix as the group.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Vector<EditorInspectorPlugin::AddedEditor> editors;
|
Vector<EditorInspectorPlugin::AddedEditor> editors;
|
||||||
Vector<EditorInspectorPlugin::AddedEditor> late_editors;
|
Vector<EditorInspectorPlugin::AddedEditor> late_editors;
|
||||||
|
|
||||||
@@ -4040,25 +4204,8 @@ void EditorInspector::update_tree() {
|
|||||||
ep->connect("resource_selected", callable_mp(get_root_inspector(), &EditorInspector::_resource_selected), CONNECT_DEFERRED);
|
ep->connect("resource_selected", callable_mp(get_root_inspector(), &EditorInspector::_resource_selected), CONNECT_DEFERRED);
|
||||||
ep->connect("object_id_selected", callable_mp(this, &EditorInspector::_object_id_selected), CONNECT_DEFERRED);
|
ep->connect("object_id_selected", callable_mp(this, &EditorInspector::_object_id_selected), CONNECT_DEFERRED);
|
||||||
|
|
||||||
if (use_doc_hints) {
|
ep->set_tooltip_text(doc_tooltip_text);
|
||||||
// `|` separators used in `EditorHelpBit`.
|
ep->has_doc_tooltip = use_doc_hints;
|
||||||
if (theme_item_name.is_empty()) {
|
|
||||||
if (p.name.contains("shader_parameter/")) {
|
|
||||||
ShaderMaterial *shader_material = Object::cast_to<ShaderMaterial>(object);
|
|
||||||
if (shader_material) {
|
|
||||||
ep->set_tooltip_text("property|" + shader_material->get_shader()->get_path() + "|" + property_prefix + p.name);
|
|
||||||
}
|
|
||||||
} else if (p.usage & PROPERTY_USAGE_INTERNAL) {
|
|
||||||
ep->set_tooltip_text("internal_property|" + classname + "|" + property_prefix + p.name);
|
|
||||||
} else {
|
|
||||||
ep->set_tooltip_text("property|" + classname + "|" + property_prefix + p.name);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ep->set_tooltip_text("theme_item|" + classname + "|" + theme_item_name);
|
|
||||||
}
|
|
||||||
ep->has_doc_tooltip = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep->set_doc_path(doc_path);
|
ep->set_doc_path(doc_path);
|
||||||
ep->set_internal(p.usage & PROPERTY_USAGE_INTERNAL);
|
ep->set_internal(p.usage & PROPERTY_USAGE_INTERNAL);
|
||||||
|
|
||||||
@@ -4454,6 +4601,10 @@ void EditorInspector::set_root_inspector(EditorInspector *p_root_inspector) {
|
|||||||
set_follow_focus(false);
|
set_follow_focus(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorInspector::_section_toggled_by_user(const String &p_path, bool p_value) {
|
||||||
|
_property_changed(p_path, p_value);
|
||||||
|
}
|
||||||
|
|
||||||
void EditorInspector::set_use_deletable_properties(bool p_enabled) {
|
void EditorInspector::set_use_deletable_properties(bool p_enabled) {
|
||||||
deletable_properties = p_enabled;
|
deletable_properties = p_enabled;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -335,20 +335,29 @@ class EditorInspectorSection : public Container {
|
|||||||
|
|
||||||
String label;
|
String label;
|
||||||
String section;
|
String section;
|
||||||
bool vbox_added = false; // Optimization.
|
|
||||||
Color bg_color;
|
Color bg_color;
|
||||||
|
bool vbox_added = false; // Optimization.
|
||||||
bool foldable = false;
|
bool foldable = false;
|
||||||
|
bool checkable = false;
|
||||||
|
bool checked = false;
|
||||||
int indent_depth = 0;
|
int indent_depth = 0;
|
||||||
int level = 1;
|
int level = 1;
|
||||||
|
String related_enable_property;
|
||||||
|
|
||||||
Timer *dropping_unfold_timer = nullptr;
|
Timer *dropping_unfold_timer = nullptr;
|
||||||
bool dropping_for_unfold = false;
|
bool dropping_for_unfold = false;
|
||||||
|
|
||||||
|
Rect2 check_rect;
|
||||||
|
bool check_hover = false;
|
||||||
|
|
||||||
HashSet<StringName> revertable_properties;
|
HashSet<StringName> revertable_properties;
|
||||||
|
|
||||||
void _test_unfold();
|
void _test_unfold();
|
||||||
int _get_header_height();
|
int _get_header_height();
|
||||||
Ref<Texture2D> _get_arrow();
|
Ref<Texture2D> _get_arrow();
|
||||||
|
Ref<Texture2D> _get_checkbox();
|
||||||
|
|
||||||
|
EditorInspector *_get_parent_inspector() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Object *object = nullptr;
|
Object *object = nullptr;
|
||||||
@@ -363,6 +372,7 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
virtual Size2 get_minimum_size() const override;
|
virtual Size2 get_minimum_size() const override;
|
||||||
|
virtual Control *make_custom_tooltip(const String &p_text) const override;
|
||||||
|
|
||||||
void setup(const String &p_section, const String &p_label, Object *p_object, const Color &p_bg_color, bool p_foldable, int p_indent_depth = 0, int p_level = 1);
|
void setup(const String &p_section, const String &p_label, Object *p_object, const Color &p_bg_color, bool p_foldable, int p_indent_depth = 0, int p_level = 1);
|
||||||
String get_section() const;
|
String get_section() const;
|
||||||
@@ -372,6 +382,8 @@ public:
|
|||||||
void fold();
|
void fold();
|
||||||
void set_bg_color(const Color &p_bg_color);
|
void set_bg_color(const Color &p_bg_color);
|
||||||
void reset_timer();
|
void reset_timer();
|
||||||
|
void set_checkable(const String &p_related_check_property);
|
||||||
|
void set_checked(bool p_checked);
|
||||||
|
|
||||||
bool has_revertable_properties() const;
|
bool has_revertable_properties() const;
|
||||||
void property_can_revert_changed(const String &p_path, bool p_can_revert);
|
void property_can_revert_changed(const String &p_path, bool p_can_revert);
|
||||||
@@ -656,6 +668,8 @@ class EditorInspector : public ScrollContainer {
|
|||||||
|
|
||||||
bool _is_property_disabled_by_feature_profile(const StringName &p_property);
|
bool _is_property_disabled_by_feature_profile(const StringName &p_property);
|
||||||
|
|
||||||
|
void _section_toggled_by_user(const String &p_path, bool p_value);
|
||||||
|
|
||||||
AddMetadataDialog *add_meta_dialog = nullptr;
|
AddMetadataDialog *add_meta_dialog = nullptr;
|
||||||
LineEdit *add_meta_name = nullptr;
|
LineEdit *add_meta_name = nullptr;
|
||||||
OptionButton *add_meta_type = nullptr;
|
OptionButton *add_meta_type = nullptr;
|
||||||
|
|||||||
@@ -1028,7 +1028,7 @@ void Camera2D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "process_callback", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_process_callback", "get_process_callback");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "process_callback", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_process_callback", "get_process_callback");
|
||||||
|
|
||||||
ADD_GROUP("Limit", "limit_");
|
ADD_GROUP("Limit", "limit_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "limit_enabled"), "set_limit_enabled", "is_limit_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "limit_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_limit_enabled", "is_limit_enabled");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_left", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_LEFT);
|
ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_left", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_LEFT);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_top", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_TOP);
|
ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_top", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_TOP);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_right", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_RIGHT);
|
ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_right", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_RIGHT);
|
||||||
@@ -1036,11 +1036,11 @@ void Camera2D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "limit_smoothed"), "set_limit_smoothing_enabled", "is_limit_smoothing_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "limit_smoothed"), "set_limit_smoothing_enabled", "is_limit_smoothing_enabled");
|
||||||
|
|
||||||
ADD_GROUP("Position Smoothing", "position_smoothing_");
|
ADD_GROUP("Position Smoothing", "position_smoothing_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "position_smoothing_enabled"), "set_position_smoothing_enabled", "is_position_smoothing_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "position_smoothing_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_position_smoothing_enabled", "is_position_smoothing_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "position_smoothing_speed", PROPERTY_HINT_NONE, "suffix:px/s"), "set_position_smoothing_speed", "get_position_smoothing_speed");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "position_smoothing_speed", PROPERTY_HINT_NONE, "suffix:px/s"), "set_position_smoothing_speed", "get_position_smoothing_speed");
|
||||||
|
|
||||||
ADD_GROUP("Rotation Smoothing", "rotation_smoothing_");
|
ADD_GROUP("Rotation Smoothing", "rotation_smoothing_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rotation_smoothing_enabled"), "set_rotation_smoothing_enabled", "is_rotation_smoothing_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rotation_smoothing_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_rotation_smoothing_enabled", "is_rotation_smoothing_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rotation_smoothing_speed"), "set_rotation_smoothing_speed", "get_rotation_smoothing_speed");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rotation_smoothing_speed"), "set_rotation_smoothing_speed", "get_rotation_smoothing_speed");
|
||||||
|
|
||||||
ADD_GROUP("Drag", "drag_");
|
ADD_GROUP("Drag", "drag_");
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ void Light2D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "range_item_cull_mask", PROPERTY_HINT_LAYERS_2D_RENDER), "set_item_cull_mask", "get_item_cull_mask");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "range_item_cull_mask", PROPERTY_HINT_LAYERS_2D_RENDER), "set_item_cull_mask", "get_item_cull_mask");
|
||||||
|
|
||||||
ADD_GROUP("Shadow", "shadow_");
|
ADD_GROUP("Shadow", "shadow_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shadow_enabled"), "set_shadow_enabled", "is_shadow_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shadow_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_shadow_enabled", "is_shadow_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "shadow_color"), "set_shadow_color", "get_shadow_color");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "shadow_color"), "set_shadow_color", "get_shadow_color");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_filter", PROPERTY_HINT_ENUM, "None (Fast),PCF5 (Average),PCF13 (Slow)"), "set_shadow_filter", "get_shadow_filter");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_filter", PROPERTY_HINT_ENUM, "None (Fast),PCF5 (Average),PCF13 (Slow)"), "set_shadow_filter", "get_shadow_filter");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "shadow_filter_smooth", PROPERTY_HINT_RANGE, "0,64,0.1"), "set_shadow_smooth", "get_shadow_smooth");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "shadow_filter_smooth", PROPERTY_HINT_RANGE, "0,64,0.1"), "set_shadow_smooth", "get_shadow_smooth");
|
||||||
|
|||||||
@@ -718,7 +718,7 @@ void Polygon2D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "skeleton", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "Skeleton2D"), "set_skeleton", "get_skeleton");
|
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "skeleton", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "Skeleton2D"), "set_skeleton", "get_skeleton");
|
||||||
|
|
||||||
ADD_GROUP("Invert", "invert_");
|
ADD_GROUP("Invert", "invert_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "invert_enabled"), "set_invert_enabled", "get_invert_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "invert_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_invert_enabled", "get_invert_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "invert_border", PROPERTY_HINT_RANGE, "0.1,16384,0.1,suffix:px"), "set_invert_border", "get_invert_border");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "invert_border", PROPERTY_HINT_RANGE, "0.1,16384,0.1,suffix:px"), "set_invert_border", "get_invert_border");
|
||||||
|
|
||||||
ADD_GROUP("Data", "");
|
ADD_GROUP("Data", "");
|
||||||
|
|||||||
@@ -504,7 +504,7 @@ void Sprite2D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "frame_coords", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_frame_coords", "get_frame_coords");
|
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "frame_coords", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_frame_coords", "get_frame_coords");
|
||||||
|
|
||||||
ADD_GROUP("Region", "region_");
|
ADD_GROUP("Region", "region_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "region_enabled"), "set_region_enabled", "is_region_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "region_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_region_enabled", "is_region_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect"), "set_region_rect", "get_region_rect");
|
ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect"), "set_region_rect", "get_region_rect");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "region_filter_clip_enabled"), "set_region_filter_clip_enabled", "is_region_filter_clip_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "region_filter_clip_enabled"), "set_region_filter_clip_enabled", "is_region_filter_clip_enabled");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ void CanvasLayer::_bind_methods() {
|
|||||||
ADD_GROUP("", "");
|
ADD_GROUP("", "");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", PROPERTY_USAGE_NONE), "set_custom_viewport", "get_custom_viewport");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", PROPERTY_USAGE_NONE), "set_custom_viewport", "get_custom_viewport");
|
||||||
ADD_GROUP("Follow Viewport", "follow_viewport");
|
ADD_GROUP("Follow Viewport", "follow_viewport");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "follow_viewport_enabled"), "set_follow_viewport", "is_following_viewport");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "follow_viewport_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_follow_viewport", "is_following_viewport");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "follow_viewport_scale", PROPERTY_HINT_RANGE, "0.001,1000,0.001,or_greater,or_less"), "set_follow_viewport_scale", "get_follow_viewport_scale");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "follow_viewport_scale", PROPERTY_HINT_RANGE, "0.001,1000,0.001,or_greater,or_less"), "set_follow_viewport_scale", "get_follow_viewport_scale");
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("visibility_changed"));
|
ADD_SIGNAL(MethodInfo("visibility_changed"));
|
||||||
|
|||||||
@@ -1294,7 +1294,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_ssr_depth_tolerance"), &Environment::get_ssr_depth_tolerance);
|
ClassDB::bind_method(D_METHOD("get_ssr_depth_tolerance"), &Environment::get_ssr_depth_tolerance);
|
||||||
|
|
||||||
ADD_GROUP("SSR", "ssr_");
|
ADD_GROUP("SSR", "ssr_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssr_enabled"), "set_ssr_enabled", "is_ssr_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssr_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_ssr_enabled", "is_ssr_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "ssr_max_steps", PROPERTY_HINT_RANGE, "1,512,1"), "set_ssr_max_steps", "get_ssr_max_steps");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "ssr_max_steps", PROPERTY_HINT_RANGE, "1,512,1"), "set_ssr_max_steps", "get_ssr_max_steps");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssr_fade_in", PROPERTY_HINT_EXP_EASING, "positive_only"), "set_ssr_fade_in", "get_ssr_fade_in");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssr_fade_in", PROPERTY_HINT_EXP_EASING, "positive_only"), "set_ssr_fade_in", "get_ssr_fade_in");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssr_fade_out", PROPERTY_HINT_EXP_EASING, "positive_only"), "set_ssr_fade_out", "get_ssr_fade_out");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssr_fade_out", PROPERTY_HINT_EXP_EASING, "positive_only"), "set_ssr_fade_out", "get_ssr_fade_out");
|
||||||
@@ -1321,7 +1321,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_ssao_ao_channel_affect"), &Environment::get_ssao_ao_channel_affect);
|
ClassDB::bind_method(D_METHOD("get_ssao_ao_channel_affect"), &Environment::get_ssao_ao_channel_affect);
|
||||||
|
|
||||||
ADD_GROUP("SSAO", "ssao_");
|
ADD_GROUP("SSAO", "ssao_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssao_enabled"), "set_ssao_enabled", "is_ssao_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssao_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_ssao_enabled", "is_ssao_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssao_radius", PROPERTY_HINT_RANGE, "0.01,16,0.01,or_greater"), "set_ssao_radius", "get_ssao_radius");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssao_radius", PROPERTY_HINT_RANGE, "0.01,16,0.01,or_greater"), "set_ssao_radius", "get_ssao_radius");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssao_intensity", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_ssao_intensity", "get_ssao_intensity");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssao_intensity", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_ssao_intensity", "get_ssao_intensity");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssao_power", PROPERTY_HINT_EXP_EASING, "positive_only"), "set_ssao_power", "get_ssao_power");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssao_power", PROPERTY_HINT_EXP_EASING, "positive_only"), "set_ssao_power", "get_ssao_power");
|
||||||
@@ -1344,7 +1344,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_ssil_normal_rejection"), &Environment::get_ssil_normal_rejection);
|
ClassDB::bind_method(D_METHOD("get_ssil_normal_rejection"), &Environment::get_ssil_normal_rejection);
|
||||||
|
|
||||||
ADD_GROUP("SSIL", "ssil_");
|
ADD_GROUP("SSIL", "ssil_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssil_enabled"), "set_ssil_enabled", "is_ssil_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssil_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_ssil_enabled", "is_ssil_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_radius", PROPERTY_HINT_RANGE, "0.01,16,0.01,or_greater,suffix:m"), "set_ssil_radius", "get_ssil_radius");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_radius", PROPERTY_HINT_RANGE, "0.01,16,0.01,or_greater,suffix:m"), "set_ssil_radius", "get_ssil_radius");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_intensity", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_ssil_intensity", "get_ssil_intensity");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_intensity", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_ssil_intensity", "get_ssil_intensity");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_sharpness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_ssil_sharpness", "get_ssil_sharpness");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_sharpness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_ssil_sharpness", "get_ssil_sharpness");
|
||||||
@@ -1378,7 +1378,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_sdfgi_probe_bias"), &Environment::get_sdfgi_probe_bias);
|
ClassDB::bind_method(D_METHOD("get_sdfgi_probe_bias"), &Environment::get_sdfgi_probe_bias);
|
||||||
|
|
||||||
ADD_GROUP("SDFGI", "sdfgi_");
|
ADD_GROUP("SDFGI", "sdfgi_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sdfgi_enabled"), "set_sdfgi_enabled", "is_sdfgi_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sdfgi_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_sdfgi_enabled", "is_sdfgi_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sdfgi_use_occlusion"), "set_sdfgi_use_occlusion", "is_sdfgi_using_occlusion");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sdfgi_use_occlusion"), "set_sdfgi_use_occlusion", "is_sdfgi_using_occlusion");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sdfgi_read_sky_light"), "set_sdfgi_read_sky_light", "is_sdfgi_reading_sky_light");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sdfgi_read_sky_light"), "set_sdfgi_read_sky_light", "is_sdfgi_reading_sky_light");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_bounce_feedback", PROPERTY_HINT_RANGE, "0,1.99,0.01"), "set_sdfgi_bounce_feedback", "get_sdfgi_bounce_feedback");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_bounce_feedback", PROPERTY_HINT_RANGE, "0,1.99,0.01"), "set_sdfgi_bounce_feedback", "get_sdfgi_bounce_feedback");
|
||||||
@@ -1423,7 +1423,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_glow_map"), &Environment::get_glow_map);
|
ClassDB::bind_method(D_METHOD("get_glow_map"), &Environment::get_glow_map);
|
||||||
|
|
||||||
ADD_GROUP("Glow", "glow_");
|
ADD_GROUP("Glow", "glow_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_enabled"), "set_glow_enabled", "is_glow_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_glow_enabled", "is_glow_enabled");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "glow_levels/1", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_glow_level", "get_glow_level", 0);
|
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "glow_levels/1", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_glow_level", "get_glow_level", 0);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "glow_levels/2", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_glow_level", "get_glow_level", 1);
|
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "glow_levels/2", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_glow_level", "get_glow_level", 1);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "glow_levels/3", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_glow_level", "get_glow_level", 2);
|
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "glow_levels/3", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_glow_level", "get_glow_level", 2);
|
||||||
@@ -1479,7 +1479,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_fog_depth_end"), &Environment::get_fog_depth_end);
|
ClassDB::bind_method(D_METHOD("get_fog_depth_end"), &Environment::get_fog_depth_end);
|
||||||
|
|
||||||
ADD_GROUP("Fog", "fog_");
|
ADD_GROUP("Fog", "fog_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "fog_enabled"), "set_fog_enabled", "is_fog_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "fog_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_fog_enabled", "is_fog_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "fog_mode", PROPERTY_HINT_ENUM, "Exponential,Depth"), "set_fog_mode", "get_fog_mode");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "fog_mode", PROPERTY_HINT_ENUM, "Exponential,Depth"), "set_fog_mode", "get_fog_mode");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "fog_light_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_fog_light_color", "get_fog_light_color");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "fog_light_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_fog_light_color", "get_fog_light_color");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_light_energy", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_fog_light_energy", "get_fog_light_energy");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_light_energy", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_fog_light_energy", "get_fog_light_energy");
|
||||||
@@ -1523,7 +1523,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_volumetric_fog_temporal_reprojection_amount"), &Environment::get_volumetric_fog_temporal_reprojection_amount);
|
ClassDB::bind_method(D_METHOD("get_volumetric_fog_temporal_reprojection_amount"), &Environment::get_volumetric_fog_temporal_reprojection_amount);
|
||||||
|
|
||||||
ADD_GROUP("Volumetric Fog", "volumetric_fog_");
|
ADD_GROUP("Volumetric Fog", "volumetric_fog_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "volumetric_fog_enabled"), "set_volumetric_fog_enabled", "is_volumetric_fog_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "volumetric_fog_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_volumetric_fog_enabled", "is_volumetric_fog_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "volumetric_fog_density", PROPERTY_HINT_RANGE, "0,1,0.0001,or_greater"), "set_volumetric_fog_density", "get_volumetric_fog_density");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "volumetric_fog_density", PROPERTY_HINT_RANGE, "0,1,0.0001,or_greater"), "set_volumetric_fog_density", "get_volumetric_fog_density");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "volumetric_fog_albedo", PROPERTY_HINT_COLOR_NO_ALPHA), "set_volumetric_fog_albedo", "get_volumetric_fog_albedo");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "volumetric_fog_albedo", PROPERTY_HINT_COLOR_NO_ALPHA), "set_volumetric_fog_albedo", "get_volumetric_fog_albedo");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "volumetric_fog_emission", PROPERTY_HINT_COLOR_NO_ALPHA), "set_volumetric_fog_emission", "get_volumetric_fog_emission");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "volumetric_fog_emission", PROPERTY_HINT_COLOR_NO_ALPHA), "set_volumetric_fog_emission", "get_volumetric_fog_emission");
|
||||||
@@ -1552,7 +1552,7 @@ void Environment::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_adjustment_color_correction"), &Environment::get_adjustment_color_correction);
|
ClassDB::bind_method(D_METHOD("get_adjustment_color_correction"), &Environment::get_adjustment_color_correction);
|
||||||
|
|
||||||
ADD_GROUP("Adjustments", "adjustment_");
|
ADD_GROUP("Adjustments", "adjustment_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "adjustment_enabled"), "set_adjustment_enabled", "is_adjustment_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "adjustment_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_adjustment_enabled", "is_adjustment_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "adjustment_brightness", PROPERTY_HINT_RANGE, "0.01,8,0.01"), "set_adjustment_brightness", "get_adjustment_brightness");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "adjustment_brightness", PROPERTY_HINT_RANGE, "0.01,8,0.01"), "set_adjustment_brightness", "get_adjustment_brightness");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "adjustment_contrast", PROPERTY_HINT_RANGE, "0.01,8,0.01"), "set_adjustment_contrast", "get_adjustment_contrast");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "adjustment_contrast", PROPERTY_HINT_RANGE, "0.01,8,0.01"), "set_adjustment_contrast", "get_adjustment_contrast");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "adjustment_saturation", PROPERTY_HINT_RANGE, "0.01,8,0.01"), "set_adjustment_saturation", "get_adjustment_saturation");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "adjustment_saturation", PROPERTY_HINT_RANGE, "0.01,8,0.01"), "set_adjustment_saturation", "get_adjustment_saturation");
|
||||||
|
|||||||
@@ -2431,7 +2431,7 @@ BaseMaterial3D::TextureFilter BaseMaterial3D::get_texture_filter() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void BaseMaterial3D::_validate_feature(const String &text, Feature feature, PropertyInfo &property) const {
|
void BaseMaterial3D::_validate_feature(const String &text, Feature feature, PropertyInfo &property) const {
|
||||||
if (property.name.begins_with(text) && property.name != text + "_enabled" && !features[feature]) {
|
if (!features[feature] && property.name.begins_with(text) && !property.name.ends_with("_enabled")) {
|
||||||
property.usage = PROPERTY_USAGE_NO_EDITOR;
|
property.usage = PROPERTY_USAGE_NO_EDITOR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3234,7 +3234,7 @@ void BaseMaterial3D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "roughness_texture_channel", PROPERTY_HINT_ENUM, "Red,Green,Blue,Alpha,Gray"), "set_roughness_texture_channel", "get_roughness_texture_channel");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "roughness_texture_channel", PROPERTY_HINT_ENUM, "Red,Green,Blue,Alpha,Gray"), "set_roughness_texture_channel", "get_roughness_texture_channel");
|
||||||
|
|
||||||
ADD_GROUP("Emission", "emission_");
|
ADD_GROUP("Emission", "emission_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "emission_enabled"), "set_feature", "get_feature", FEATURE_EMISSION);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "emission_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_EMISSION);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "emission", PROPERTY_HINT_COLOR_NO_ALPHA), "set_emission", "get_emission");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "emission", PROPERTY_HINT_COLOR_NO_ALPHA), "set_emission", "get_emission");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "emission_energy_multiplier", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_emission_energy_multiplier", "get_emission_energy_multiplier");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "emission_energy_multiplier", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_emission_energy_multiplier", "get_emission_energy_multiplier");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "emission_intensity", PROPERTY_HINT_RANGE, "0,100000.0,0.01,or_greater,suffix:nt"), "set_emission_intensity", "get_emission_intensity");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "emission_intensity", PROPERTY_HINT_RANGE, "0,100000.0,0.01,or_greater,suffix:nt"), "set_emission_intensity", "get_emission_intensity");
|
||||||
@@ -3244,36 +3244,36 @@ void BaseMaterial3D::_bind_methods() {
|
|||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "emission_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_EMISSION);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "emission_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_EMISSION);
|
||||||
|
|
||||||
ADD_GROUP("Normal Map", "normal_");
|
ADD_GROUP("Normal Map", "normal_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "normal_enabled"), "set_feature", "get_feature", FEATURE_NORMAL_MAPPING);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "normal_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_NORMAL_MAPPING);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "normal_scale", PROPERTY_HINT_RANGE, "-16,16,0.01"), "set_normal_scale", "get_normal_scale");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "normal_scale", PROPERTY_HINT_RANGE, "-16,16,0.01"), "set_normal_scale", "get_normal_scale");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "normal_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_NORMAL);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "normal_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_NORMAL);
|
||||||
|
|
||||||
ADD_GROUP("Rim", "rim_");
|
ADD_GROUP("Rim", "rim_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "rim_enabled"), "set_feature", "get_feature", FEATURE_RIM);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "rim_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_RIM);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rim", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_rim", "get_rim");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rim", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_rim", "get_rim");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rim_tint", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_rim_tint", "get_rim_tint");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rim_tint", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_rim_tint", "get_rim_tint");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "rim_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_RIM);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "rim_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_RIM);
|
||||||
|
|
||||||
ADD_GROUP("Clearcoat", "clearcoat_");
|
ADD_GROUP("Clearcoat", "clearcoat_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "clearcoat_enabled"), "set_feature", "get_feature", FEATURE_CLEARCOAT);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "clearcoat_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_CLEARCOAT);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "clearcoat", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_clearcoat", "get_clearcoat");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "clearcoat", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_clearcoat", "get_clearcoat");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "clearcoat_roughness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_clearcoat_roughness", "get_clearcoat_roughness");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "clearcoat_roughness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_clearcoat_roughness", "get_clearcoat_roughness");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "clearcoat_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_CLEARCOAT);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "clearcoat_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_CLEARCOAT);
|
||||||
|
|
||||||
ADD_GROUP("Anisotropy", "anisotropy_");
|
ADD_GROUP("Anisotropy", "anisotropy_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "anisotropy_enabled"), "set_feature", "get_feature", FEATURE_ANISOTROPY);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "anisotropy_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_ANISOTROPY);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "anisotropy", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_anisotropy", "get_anisotropy");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "anisotropy", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_anisotropy", "get_anisotropy");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "anisotropy_flowmap", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_FLOWMAP);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "anisotropy_flowmap", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_FLOWMAP);
|
||||||
|
|
||||||
ADD_GROUP("Ambient Occlusion", "ao_");
|
ADD_GROUP("Ambient Occlusion", "ao_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "ao_enabled"), "set_feature", "get_feature", FEATURE_AMBIENT_OCCLUSION);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "ao_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_AMBIENT_OCCLUSION);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ao_light_affect", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_ao_light_affect", "get_ao_light_affect");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ao_light_affect", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_ao_light_affect", "get_ao_light_affect");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "ao_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_AMBIENT_OCCLUSION);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "ao_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_AMBIENT_OCCLUSION);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "ao_on_uv2"), "set_flag", "get_flag", FLAG_AO_ON_UV2);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "ao_on_uv2"), "set_flag", "get_flag", FLAG_AO_ON_UV2);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "ao_texture_channel", PROPERTY_HINT_ENUM, "Red,Green,Blue,Alpha,Gray"), "set_ao_texture_channel", "get_ao_texture_channel");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "ao_texture_channel", PROPERTY_HINT_ENUM, "Red,Green,Blue,Alpha,Gray"), "set_ao_texture_channel", "get_ao_texture_channel");
|
||||||
|
|
||||||
ADD_GROUP("Height", "heightmap_");
|
ADD_GROUP("Height", "heightmap_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "heightmap_enabled"), "set_feature", "get_feature", FEATURE_HEIGHT_MAPPING);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "heightmap_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_HEIGHT_MAPPING);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "heightmap_scale", PROPERTY_HINT_RANGE, "-16,16,0.001"), "set_heightmap_scale", "get_heightmap_scale");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "heightmap_scale", PROPERTY_HINT_RANGE, "-16,16,0.001"), "set_heightmap_scale", "get_heightmap_scale");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "heightmap_deep_parallax"), "set_heightmap_deep_parallax", "is_heightmap_deep_parallax_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "heightmap_deep_parallax"), "set_heightmap_deep_parallax", "is_heightmap_deep_parallax_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "heightmap_min_layers", PROPERTY_HINT_RANGE, "1,64,1"), "set_heightmap_deep_parallax_min_layers", "get_heightmap_deep_parallax_min_layers");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "heightmap_min_layers", PROPERTY_HINT_RANGE, "1,64,1"), "set_heightmap_deep_parallax_min_layers", "get_heightmap_deep_parallax_min_layers");
|
||||||
@@ -3283,32 +3283,32 @@ void BaseMaterial3D::_bind_methods() {
|
|||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "heightmap_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_HEIGHTMAP);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "heightmap_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_HEIGHTMAP);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "heightmap_flip_texture"), "set_flag", "get_flag", FLAG_INVERT_HEIGHTMAP);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "heightmap_flip_texture"), "set_flag", "get_flag", FLAG_INVERT_HEIGHTMAP);
|
||||||
|
|
||||||
ADD_GROUP("Subsurface Scattering", "subsurf_scatter_");
|
ADD_GROUP("Subsurf Scatter", "subsurf_scatter_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_enabled"), "set_feature", "get_feature", FEATURE_SUBSURFACE_SCATTERING);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_SUBSURFACE_SCATTERING);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "subsurf_scatter_strength", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_subsurface_scattering_strength", "get_subsurface_scattering_strength");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "subsurf_scatter_strength", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_subsurface_scattering_strength", "get_subsurface_scattering_strength");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_skin_mode"), "set_flag", "get_flag", FLAG_SUBSURFACE_MODE_SKIN);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_skin_mode"), "set_flag", "get_flag", FLAG_SUBSURFACE_MODE_SKIN);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "subsurf_scatter_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_SUBSURFACE_SCATTERING);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "subsurf_scatter_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_SUBSURFACE_SCATTERING);
|
||||||
|
|
||||||
ADD_SUBGROUP("Transmittance", "subsurf_scatter_transmittance_");
|
ADD_SUBGROUP("Transmittance", "subsurf_scatter_transmittance_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_transmittance_enabled"), "set_feature", "get_feature", FEATURE_SUBSURFACE_TRANSMITTANCE);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "subsurf_scatter_transmittance_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_SUBSURFACE_TRANSMITTANCE);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "subsurf_scatter_transmittance_color"), "set_transmittance_color", "get_transmittance_color");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "subsurf_scatter_transmittance_color"), "set_transmittance_color", "get_transmittance_color");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "subsurf_scatter_transmittance_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_SUBSURFACE_TRANSMITTANCE);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "subsurf_scatter_transmittance_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_SUBSURFACE_TRANSMITTANCE);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "subsurf_scatter_transmittance_depth", PROPERTY_HINT_RANGE, "0.001,8,0.001,or_greater"), "set_transmittance_depth", "get_transmittance_depth");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "subsurf_scatter_transmittance_depth", PROPERTY_HINT_RANGE, "0.001,8,0.001,or_greater"), "set_transmittance_depth", "get_transmittance_depth");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "subsurf_scatter_transmittance_boost", PROPERTY_HINT_RANGE, "0.00,1.0,0.01"), "set_transmittance_boost", "get_transmittance_boost");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "subsurf_scatter_transmittance_boost", PROPERTY_HINT_RANGE, "0.00,1.0,0.01"), "set_transmittance_boost", "get_transmittance_boost");
|
||||||
|
|
||||||
ADD_GROUP("Back Lighting", "backlight_");
|
ADD_GROUP("Back Lighting", "backlight_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "backlight_enabled"), "set_feature", "get_feature", FEATURE_BACKLIGHT);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "backlight_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_BACKLIGHT);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "backlight", PROPERTY_HINT_COLOR_NO_ALPHA), "set_backlight", "get_backlight");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "backlight", PROPERTY_HINT_COLOR_NO_ALPHA), "set_backlight", "get_backlight");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "backlight_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_BACKLIGHT);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "backlight_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_BACKLIGHT);
|
||||||
|
|
||||||
ADD_GROUP("Refraction", "refraction_");
|
ADD_GROUP("Refraction", "refraction_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "refraction_enabled"), "set_feature", "get_feature", FEATURE_REFRACTION);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "refraction_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_REFRACTION);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "refraction_scale", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_refraction", "get_refraction");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "refraction_scale", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_refraction", "get_refraction");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "refraction_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_REFRACTION);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "refraction_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_REFRACTION);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "refraction_texture_channel", PROPERTY_HINT_ENUM, "Red,Green,Blue,Alpha,Gray"), "set_refraction_texture_channel", "get_refraction_texture_channel");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "refraction_texture_channel", PROPERTY_HINT_ENUM, "Red,Green,Blue,Alpha,Gray"), "set_refraction_texture_channel", "get_refraction_texture_channel");
|
||||||
|
|
||||||
ADD_GROUP("Detail", "detail_");
|
ADD_GROUP("Detail", "detail_");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "detail_enabled"), "set_feature", "get_feature", FEATURE_DETAIL);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "detail_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_feature", "get_feature", FEATURE_DETAIL);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "detail_mask", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_DETAIL_MASK);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "detail_mask", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_DETAIL_MASK);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "detail_blend_mode", PROPERTY_HINT_ENUM, "Mix,Add,Subtract,Multiply"), "set_detail_blend_mode", "get_detail_blend_mode");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "detail_blend_mode", PROPERTY_HINT_ENUM, "Mix,Add,Subtract,Multiply"), "set_detail_blend_mode", "get_detail_blend_mode");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "detail_uv_layer", PROPERTY_HINT_ENUM, "UV1,UV2"), "set_detail_uv", "get_detail_uv");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "detail_uv_layer", PROPERTY_HINT_ENUM, "UV1,UV2"), "set_detail_uv", "get_detail_uv");
|
||||||
@@ -3349,17 +3349,21 @@ void BaseMaterial3D::_bind_methods() {
|
|||||||
ADD_GROUP("Grow", "grow_");
|
ADD_GROUP("Grow", "grow_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "grow"), "set_grow_enabled", "is_grow_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "grow"), "set_grow_enabled", "is_grow_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_amount", PROPERTY_HINT_RANGE, "-16,16,0.001,suffix:m"), "set_grow", "get_grow");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_amount", PROPERTY_HINT_RANGE, "-16,16,0.001,suffix:m"), "set_grow", "get_grow");
|
||||||
|
|
||||||
ADD_GROUP("Transform", "");
|
ADD_GROUP("Transform", "");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "fixed_size"), "set_flag", "get_flag", FLAG_FIXED_SIZE);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "fixed_size"), "set_flag", "get_flag", FLAG_FIXED_SIZE);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "use_point_size"), "set_flag", "get_flag", FLAG_USE_POINT_SIZE);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "use_point_size"), "set_flag", "get_flag", FLAG_USE_POINT_SIZE);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "point_size", PROPERTY_HINT_RANGE, "0.1,128,0.1,suffix:px"), "set_point_size", "get_point_size");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "point_size", PROPERTY_HINT_RANGE, "0.1,128,0.1,suffix:px"), "set_point_size", "get_point_size");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "use_particle_trails"), "set_flag", "get_flag", FLAG_PARTICLE_TRAILS_MODE);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "use_particle_trails"), "set_flag", "get_flag", FLAG_PARTICLE_TRAILS_MODE);
|
||||||
|
|
||||||
ADD_GROUP("Proximity Fade", "proximity_fade_");
|
ADD_GROUP("Proximity Fade", "proximity_fade_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "proximity_fade_enabled"), "set_proximity_fade_enabled", "is_proximity_fade_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "proximity_fade_enabled"), "set_proximity_fade_enabled", "is_proximity_fade_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "proximity_fade_distance", PROPERTY_HINT_RANGE, "0.01,4096,0.01,suffix:m"), "set_proximity_fade_distance", "get_proximity_fade_distance");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "proximity_fade_distance", PROPERTY_HINT_RANGE, "0.01,4096,0.01,suffix:m"), "set_proximity_fade_distance", "get_proximity_fade_distance");
|
||||||
|
|
||||||
ADD_GROUP("MSDF", "msdf_");
|
ADD_GROUP("MSDF", "msdf_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "msdf_pixel_range", PROPERTY_HINT_RANGE, "1,100,1"), "set_msdf_pixel_range", "get_msdf_pixel_range");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "msdf_pixel_range", PROPERTY_HINT_RANGE, "1,100,1"), "set_msdf_pixel_range", "get_msdf_pixel_range");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "msdf_outline_size", PROPERTY_HINT_RANGE, "0,250,1"), "set_msdf_outline_size", "get_msdf_outline_size");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "msdf_outline_size", PROPERTY_HINT_RANGE, "0,250,1"), "set_msdf_outline_size", "get_msdf_outline_size");
|
||||||
|
|
||||||
ADD_GROUP("Distance Fade", "distance_fade_");
|
ADD_GROUP("Distance Fade", "distance_fade_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "distance_fade_mode", PROPERTY_HINT_ENUM, "Disabled,PixelAlpha,PixelDither,ObjectDither"), "set_distance_fade", "get_distance_fade");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "distance_fade_mode", PROPERTY_HINT_ENUM, "Disabled,PixelAlpha,PixelDither,ObjectDither"), "set_distance_fade", "get_distance_fade");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_min_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,suffix:m"), "set_distance_fade_min_distance", "get_distance_fade_min_distance");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_min_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,suffix:m"), "set_distance_fade_min_distance", "get_distance_fade_min_distance");
|
||||||
|
|||||||
@@ -2263,7 +2263,7 @@ void ParticleProcessMaterial::_bind_methods() {
|
|||||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "anim_offset_curve", PROPERTY_HINT_RESOURCE_TYPE, "CurveTexture"), "set_param_texture", "get_param_texture", PARAM_ANIM_OFFSET);
|
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "anim_offset_curve", PROPERTY_HINT_RESOURCE_TYPE, "CurveTexture"), "set_param_texture", "get_param_texture", PARAM_ANIM_OFFSET);
|
||||||
|
|
||||||
ADD_GROUP("Turbulence", "turbulence_");
|
ADD_GROUP("Turbulence", "turbulence_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "turbulence_enabled"), "set_turbulence_enabled", "get_turbulence_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "turbulence_enabled", PROPERTY_HINT_GROUP_ENABLE), "set_turbulence_enabled", "get_turbulence_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "turbulence_noise_strength", PROPERTY_HINT_RANGE, "0,20,0.01"), "set_turbulence_noise_strength", "get_turbulence_noise_strength");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "turbulence_noise_strength", PROPERTY_HINT_RANGE, "0,20,0.01"), "set_turbulence_noise_strength", "get_turbulence_noise_strength");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "turbulence_noise_scale", PROPERTY_HINT_RANGE, "0,10,0.001,or_greater"), "set_turbulence_noise_scale", "get_turbulence_noise_scale");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "turbulence_noise_scale", PROPERTY_HINT_RANGE, "0,10,0.001,or_greater"), "set_turbulence_noise_scale", "get_turbulence_noise_scale");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "turbulence_noise_speed"), "set_turbulence_noise_speed", "get_turbulence_noise_speed");
|
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "turbulence_noise_speed"), "set_turbulence_noise_speed", "get_turbulence_noise_speed");
|
||||||
|
|||||||
Reference in New Issue
Block a user