From 1a24c9e14bf1f9578eda338344c12faf66fb0e65 Mon Sep 17 00:00:00 2001 From: Yuri Sizov Date: Fri, 12 Aug 2022 23:57:11 +0300 Subject: Make `_validate_property` a multilevel method --- core/input/input_event.cpp | 14 +- core/input/input_event.h | 2 +- core/object/class_db.cpp | 4 +- core/object/object.cpp | 3 +- core/object/object.h | 16 +- modules/csg/csg_shape.cpp | 27 ++- modules/csg/csg_shape.h | 4 +- modules/noise/fastnoise_lite.cpp | 18 +- modules/noise/fastnoise_lite.h | 2 +- modules/noise/noise_texture.cpp | 10 +- modules/noise/noise_texture.h | 2 +- modules/visual_script/visual_script_func_nodes.cpp | 194 ++++++++++----------- modules/visual_script/visual_script_func_nodes.h | 8 +- modules/visual_script/visual_script_nodes.cpp | 74 ++++---- modules/visual_script/visual_script_nodes.h | 20 +-- .../visual_script/visual_script_yield_nodes.cpp | 24 +-- modules/visual_script/visual_script_yield_nodes.h | 4 +- scene/2d/animated_sprite_2d.cpp | 26 +-- scene/2d/animated_sprite_2d.h | 2 +- scene/2d/area_2d.cpp | 26 +-- scene/2d/area_2d.h | 2 +- scene/2d/audio_stream_player_2d.cpp | 6 +- scene/2d/audio_stream_player_2d.h | 2 +- scene/2d/camera_2d.cpp | 6 +- scene/2d/camera_2d.h | 2 +- scene/2d/cpu_particles_2d.cpp | 30 ++-- scene/2d/cpu_particles_2d.h | 2 +- scene/2d/gpu_particles_2d.cpp | 2 +- scene/2d/gpu_particles_2d.h | 2 +- scene/2d/light_2d.cpp | 6 +- scene/2d/light_2d.h | 2 +- scene/2d/navigation_obstacle_2d.h | 2 +- scene/2d/path_2d.cpp | 6 +- scene/2d/path_2d.h | 2 +- scene/2d/physics_body_2d.cpp | 16 +- scene/2d/physics_body_2d.h | 4 +- scene/2d/polygon_2d.cpp | 6 +- scene/2d/polygon_2d.h | 2 +- scene/2d/sprite_2d.cpp | 18 +- scene/2d/sprite_2d.h | 2 +- scene/3d/area_3d.cpp | 28 ++- scene/3d/area_3d.h | 2 +- scene/3d/audio_stream_player_3d.cpp | 8 +- scene/3d/audio_stream_player_3d.h | 2 +- scene/3d/bone_attachment_3d.cpp | 14 +- scene/3d/bone_attachment_3d.h | 2 +- scene/3d/camera_3d.cpp | 2 - scene/3d/camera_3d.h | 2 +- scene/3d/cpu_particles_3d.cpp | 32 ++-- scene/3d/cpu_particles_3d.h | 2 +- scene/3d/decal.cpp | 7 +- scene/3d/decal.h | 2 +- scene/3d/fog_volume.cpp | 7 +- scene/3d/fog_volume.h | 2 +- scene/3d/gpu_particles_3d.cpp | 10 +- scene/3d/gpu_particles_3d.h | 2 +- scene/3d/label_3d.cpp | 18 +- scene/3d/label_3d.h | 2 +- scene/3d/light_3d.cpp | 36 ++-- scene/3d/light_3d.h | 4 +- scene/3d/lightmap_gi.cpp | 15 +- scene/3d/lightmap_gi.h | 2 +- scene/3d/navigation_obstacle_3d.h | 2 +- scene/3d/node_3d.cpp | 22 +-- scene/3d/node_3d.h | 2 +- scene/3d/path_3d.cpp | 7 +- scene/3d/path_3d.h | 2 +- scene/3d/physics_body_3d.cpp | 14 +- scene/3d/physics_body_3d.h | 4 +- scene/3d/reflection_probe.cpp | 7 +- scene/3d/reflection_probe.h | 2 +- scene/3d/skeleton_3d.cpp | 22 ++- scene/3d/skeleton_3d.h | 2 +- scene/3d/skeleton_ik_3d.cpp | 14 +- scene/3d/skeleton_ik_3d.h | 2 +- scene/3d/sprite_3d.cpp | 44 +++-- scene/3d/sprite_3d.h | 4 +- scene/3d/xr_nodes.cpp | 12 +- scene/3d/xr_nodes.h | 2 +- scene/animation/animation_blend_space_1d.cpp | 9 +- scene/animation/animation_blend_space_1d.h | 2 +- scene/animation/animation_blend_space_2d.cpp | 13 +- scene/animation/animation_blend_space_2d.h | 2 +- scene/animation/animation_blend_tree.cpp | 18 +- scene/animation/animation_blend_tree.h | 4 +- scene/animation/animation_player.cpp | 8 +- scene/animation/animation_player.h | 2 +- scene/animation/animation_tree.cpp | 6 +- scene/animation/animation_tree.h | 2 +- scene/audio/audio_stream_player.cpp | 8 +- scene/audio/audio_stream_player.h | 2 +- scene/gui/control.cpp | 68 ++++---- scene/gui/control.h | 2 +- scene/gui/graph_node.cpp | 7 +- scene/gui/graph_node.h | 2 +- scene/gui/line_edit.cpp | 6 +- scene/gui/line_edit.h | 2 +- scene/gui/option_button.cpp | 6 +- scene/gui/option_button.h | 2 +- scene/gui/video_stream_player.h | 2 +- scene/main/canvas_layer.cpp | 6 +- scene/main/canvas_layer.h | 2 +- scene/main/viewport.cpp | 6 +- scene/main/viewport.h | 2 +- scene/main/window.cpp | 6 +- scene/main/window.h | 2 +- scene/resources/bone_map.cpp | 2 +- scene/resources/bone_map.h | 2 +- scene/resources/camera_effects.cpp | 10 +- scene/resources/camera_effects.h | 2 +- scene/resources/canvas_item_material.cpp | 6 +- scene/resources/canvas_item_material.h | 2 +- scene/resources/environment.cpp | 42 ++--- scene/resources/environment.h | 2 +- scene/resources/material.cpp | 164 ++++++++--------- scene/resources/material.h | 4 +- scene/resources/navigation_mesh.cpp | 10 +- scene/resources/navigation_mesh.h | 2 +- scene/resources/particles_material.cpp | 58 +++--- scene/resources/particles_material.h | 2 +- scene/resources/skeleton_profile.cpp | 14 +- scene/resources/skeleton_profile.h | 2 +- scene/resources/style_box.cpp | 6 +- scene/resources/style_box.h | 2 +- scene/resources/texture.cpp | 12 +- scene/resources/texture.h | 8 +- scene/resources/tile_set.cpp | 10 +- scene/resources/tile_set.h | 2 +- scene/resources/visual_shader.cpp | 6 +- scene/resources/visual_shader.h | 2 +- servers/audio/effects/audio_effect_chorus.cpp | 8 +- servers/audio/effects/audio_effect_chorus.h | 2 +- servers/audio/effects/audio_effect_compressor.cpp | 6 +- servers/audio/effects/audio_effect_compressor.h | 2 +- servers/audio/effects/audio_effect_filter.h | 18 +- 135 files changed, 770 insertions(+), 800 deletions(-) diff --git a/core/input/input_event.cpp b/core/input/input_event.cpp index 8ad2193fca..3f02d80c26 100644 --- a/core/input/input_event.cpp +++ b/core/input/input_event.cpp @@ -274,24 +274,24 @@ void InputEventWithModifiers::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "command_pressed"), "set_command_pressed", "is_command_pressed"); } -void InputEventWithModifiers::_validate_property(PropertyInfo &property) const { +void InputEventWithModifiers::_validate_property(PropertyInfo &p_property) const { if (store_command) { // If we only want to Store "Command". #ifdef APPLE_STYLE_KEYS // Don't store "Meta" on Mac. - if (property.name == "meta_pressed") { - property.usage ^= PROPERTY_USAGE_STORAGE; + if (p_property.name == "meta_pressed") { + p_property.usage ^= PROPERTY_USAGE_STORAGE; } #else // Don't store "Ctrl". - if (property.name == "ctrl_pressed") { - property.usage ^= PROPERTY_USAGE_STORAGE; + if (p_property.name == "ctrl_pressed") { + p_property.usage ^= PROPERTY_USAGE_STORAGE; } #endif } else { // We don't want to store command, only ctrl or meta (on mac). - if (property.name == "command_pressed") { - property.usage ^= PROPERTY_USAGE_STORAGE; + if (p_property.name == "command_pressed") { + p_property.usage ^= PROPERTY_USAGE_STORAGE; } } } diff --git a/core/input/input_event.h b/core/input/input_event.h index 59a2df497c..6cfc031c8a 100644 --- a/core/input/input_event.h +++ b/core/input/input_event.h @@ -128,7 +128,7 @@ class InputEventWithModifiers : public InputEventFromWindow { protected: static void _bind_methods(); - virtual void _validate_property(PropertyInfo &property) const override; + void _validate_property(PropertyInfo &p_property) const; public: void set_store_command(bool p_enabled); diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index 9790cc44e3..99b20560da 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -981,7 +981,7 @@ void ClassDB::get_property_list(const StringName &p_class, List *p if (p_validator) { // Making a copy as we may modify it. PropertyInfo pi_mut = pi; - p_validator->_validate_property(pi_mut); + p_validator->validate_property(pi_mut); p_list->push_back(pi_mut); } else { p_list->push_back(pi); @@ -1022,7 +1022,7 @@ bool ClassDB::get_property_info(const StringName &p_class, const StringName &p_p if (check->property_map.has(p_property)) { PropertyInfo pinfo = check->property_map[p_property]; if (p_validator) { - p_validator->_validate_property(pinfo); + p_validator->validate_property(pinfo); } if (r_info) { *r_info = pinfo; diff --git a/core/object/object.cpp b/core/object/object.cpp index a95ba7992b..5203685c7f 100644 --- a/core/object/object.cpp +++ b/core/object/object.cpp @@ -515,7 +515,8 @@ void Object::get_property_list(List *p_list, bool p_reversed) cons } } -void Object::_validate_property(PropertyInfo &property) const { +void Object::validate_property(PropertyInfo &p_property) const { + _validate_propertyv(p_property); } bool Object::property_can_revert(const String &p_name) const { diff --git a/core/object/object.h b/core/object/object.h index 154ef176d3..093b104664 100644 --- a/core/object/object.h +++ b/core/object/object.h @@ -471,6 +471,15 @@ protected: m_inherits::_get_property_listv(p_list, p_reversed); \ } \ } \ + _FORCE_INLINE_ void (Object::*_get_validate_property() const)(PropertyInfo & p_property) const { \ + return (void(Object::*)(PropertyInfo &) const) & m_class::_validate_property; \ + } \ + virtual void _validate_propertyv(PropertyInfo &p_property) const override { \ + m_inherits::_validate_propertyv(p_property); \ + if (m_class::_get_validate_property() != m_inherits::_get_validate_property()) { \ + _validate_property(p_property); \ + } \ + } \ _FORCE_INLINE_ bool (Object::*_get_property_can_revert() const)(const StringName &p_name) const { \ return (bool(Object::*)(const StringName &) const) & m_class::_property_can_revert; \ } \ @@ -637,6 +646,7 @@ protected: virtual bool _setv(const StringName &p_name, const Variant &p_property) { return false; }; virtual bool _getv(const StringName &p_name, Variant &r_property) const { return false; }; virtual void _get_property_listv(List *p_list, bool p_reversed) const {}; + virtual void _validate_propertyv(PropertyInfo &p_property) const {}; virtual bool _property_can_revertv(const StringName &p_name) const { return false; }; virtual bool _property_get_revertv(const StringName &p_name, Variant &r_property) const { return false; }; virtual void _notificationv(int p_notification, bool p_reversed) {} @@ -645,6 +655,7 @@ protected: bool _set(const StringName &p_name, const Variant &p_property) { return false; }; bool _get(const StringName &p_name, Variant &r_property) const { return false; }; void _get_property_list(List *p_list) const {}; + void _validate_property(PropertyInfo &p_property) const {}; bool _property_can_revert(const StringName &p_name) const { return false; }; bool _property_get_revert(const StringName &p_name, Variant &r_property) const { return false; }; void _notification(int p_notification) {} @@ -661,6 +672,9 @@ protected: _FORCE_INLINE_ void (Object::*_get_get_property_list() const)(List *p_list) const { return &Object::_get_property_list; } + _FORCE_INLINE_ void (Object::*_get_validate_property() const)(PropertyInfo &p_property) const { + return &Object::_validate_property; + } _FORCE_INLINE_ bool (Object::*_get_property_can_revert() const)(const StringName &p_name) const { return &Object::_property_can_revert; } @@ -690,7 +704,6 @@ protected: void _clear_internal_resource_paths(const Variant &p_var); friend class ClassDB; - virtual void _validate_property(PropertyInfo &property) const; void _disconnect(const StringName &p_signal, const Callable &p_callable, bool p_force = false); @@ -791,6 +804,7 @@ public: Variant get_indexed(const Vector &p_names, bool *r_valid = nullptr) const; void get_property_list(List *p_list, bool p_reversed = false) const; + void validate_property(PropertyInfo &p_property) const; bool property_can_revert(const String &p_name) const; Variant property_get_revert(const String &p_name) const; diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp index 7fc6608770..457d1288f1 100644 --- a/modules/csg/csg_shape.cpp +++ b/modules/csg/csg_shape.cpp @@ -584,15 +584,14 @@ bool CSGShape3D::is_calculating_tangents() const { return calculate_tangents; } -void CSGShape3D::_validate_property(PropertyInfo &property) const { - bool is_collision_prefixed = property.name.begins_with("collision_"); - if ((is_collision_prefixed || property.name.begins_with("use_collision")) && is_inside_tree() && !is_root_shape()) { +void CSGShape3D::_validate_property(PropertyInfo &p_property) const { + bool is_collision_prefixed = p_property.name.begins_with("collision_"); + if ((is_collision_prefixed || p_property.name.begins_with("use_collision")) && is_inside_tree() && !is_root_shape()) { //hide collision if not root - property.usage = PROPERTY_USAGE_NO_EDITOR; + p_property.usage = PROPERTY_USAGE_NO_EDITOR; } else if (is_collision_prefixed && !bool(get("use_collision"))) { - property.usage = PROPERTY_USAGE_NO_EDITOR; + p_property.usage = PROPERTY_USAGE_NO_EDITOR; } - GeometryInstance3D::_validate_property(property); } Array CSGShape3D::get_meshes() const { @@ -2058,18 +2057,16 @@ void CSGPolygon3D::_notification(int p_what) { } } -void CSGPolygon3D::_validate_property(PropertyInfo &property) const { - if (property.name.begins_with("spin") && mode != MODE_SPIN) { - property.usage = PROPERTY_USAGE_NONE; +void CSGPolygon3D::_validate_property(PropertyInfo &p_property) const { + if (p_property.name.begins_with("spin") && mode != MODE_SPIN) { + p_property.usage = PROPERTY_USAGE_NONE; } - if (property.name.begins_with("path") && mode != MODE_PATH) { - property.usage = PROPERTY_USAGE_NONE; + if (p_property.name.begins_with("path") && mode != MODE_PATH) { + p_property.usage = PROPERTY_USAGE_NONE; } - if (property.name == "depth" && mode != MODE_DEPTH) { - property.usage = PROPERTY_USAGE_NONE; + if (p_property.name == "depth" && mode != MODE_DEPTH) { + p_property.usage = PROPERTY_USAGE_NONE; } - - CSGShape3D::_validate_property(property); } void CSGPolygon3D::_path_changed() { diff --git a/modules/csg/csg_shape.h b/modules/csg/csg_shape.h index 0b49dc4609..308d2afdc5 100644 --- a/modules/csg/csg_shape.h +++ b/modules/csg/csg_shape.h @@ -117,7 +117,7 @@ protected: friend class CSGCombiner3D; CSGBrush *_get_brush(); - virtual void _validate_property(PropertyInfo &property) const override; + void _validate_property(PropertyInfo &p_property) const; public: Array get_meshes() const; @@ -383,7 +383,7 @@ private: protected: static void _bind_methods(); - virtual void _validate_property(PropertyInfo &property) const override; + void _validate_property(PropertyInfo &p_property) const; void _notification(int p_what); public: diff --git a/modules/noise/fastnoise_lite.cpp b/modules/noise/fastnoise_lite.cpp index b21e3247d7..06d97838f6 100644 --- a/modules/noise/fastnoise_lite.cpp +++ b/modules/noise/fastnoise_lite.cpp @@ -476,24 +476,24 @@ void FastNoiseLite::_bind_methods() { BIND_ENUM_CONSTANT(DOMAIN_WARP_FRACTAL_INDEPENDENT); } -void FastNoiseLite::_validate_property(PropertyInfo &property) const { - if (property.name.begins_with("cellular") && get_noise_type() != TYPE_CELLULAR) { - property.usage = PROPERTY_USAGE_NO_EDITOR; +void FastNoiseLite::_validate_property(PropertyInfo &p_property) const { + if (p_property.name.begins_with("cellular") && get_noise_type() != TYPE_CELLULAR) { + p_property.usage = PROPERTY_USAGE_NO_EDITOR; return; } - if (property.name != "fractal_type" && property.name.begins_with("fractal") && get_fractal_type() == FRACTAL_NONE) { - property.usage = PROPERTY_USAGE_NO_EDITOR; + if (p_property.name != "fractal_type" && p_property.name.begins_with("fractal") && get_fractal_type() == FRACTAL_NONE) { + p_property.usage = PROPERTY_USAGE_NO_EDITOR; return; } - if (property.name == "fractal_ping_pong_strength" && get_fractal_type() != FRACTAL_PING_PONG) { - property.usage = PROPERTY_USAGE_NO_EDITOR; + if (p_property.name == "fractal_ping_pong_strength" && get_fractal_type() != FRACTAL_PING_PONG) { + p_property.usage = PROPERTY_USAGE_NO_EDITOR; return; } - if (property.name != "domain_warp_enabled" && property.name.begins_with("domain_warp") && !domain_warp_enabled) { - property.usage = PROPERTY_USAGE_NO_EDITOR; + if (p_property.name != "domain_warp_enabled" && p_property.name.begins_with("domain_warp") && !domain_warp_enabled) { + p_property.usage = PROPERTY_USAGE_NO_EDITOR; return; } } diff --git a/modules/noise/fastnoise_lite.h b/modules/noise/fastnoise_lite.h index fe8cd7ce6e..50c633b923 100644 --- a/modules/noise/fastnoise_lite.h +++ b/modules/noise/fastnoise_lite.h @@ -92,7 +92,7 @@ public: protected: static void _bind_methods(); - virtual void _validate_property(PropertyInfo &property) const override; + void _validate_property(PropertyInfo &p_property) const; private: _FastNoiseLite _noise; diff --git a/modules/noise/noise_texture.cpp b/modules/noise/noise_texture.cpp index 257a3ee8e6..923b420581 100644 --- a/modules/noise/noise_texture.cpp +++ b/modules/noise/noise_texture.cpp @@ -94,16 +94,16 @@ void NoiseTexture::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "noise", PROPERTY_HINT_RESOURCE_TYPE, "Noise"), "set_noise", "get_noise"); } -void NoiseTexture::_validate_property(PropertyInfo &property) const { - if (property.name == "bump_strength") { +void NoiseTexture::_validate_property(PropertyInfo &p_property) const { + if (p_property.name == "bump_strength") { if (!as_normal_map) { - property.usage = PROPERTY_USAGE_NO_EDITOR; + p_property.usage = PROPERTY_USAGE_NO_EDITOR; } } - if (property.name == "seamless_blend_skirt") { + if (p_property.name == "seamless_blend_skirt") { if (!seamless) { - property.usage = PROPERTY_USAGE_NO_EDITOR; + p_property.usage = PROPERTY_USAGE_NO_EDITOR; } } } diff --git a/modules/noise/noise_texture.h b/modules/noise/noise_texture.h index 6c088562a1..83fbcc2d10 100644 --- a/modules/noise/noise_texture.h +++ b/modules/noise/noise_texture.h @@ -75,7 +75,7 @@ private: protected: static void _bind_methods(); - virtual void _validate_property(PropertyInfo &property) const override; + void _validate_property(PropertyInfo &p_property) const; public: void set_noise(Ref p_noise); diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp index 0750713fe3..e79d3bae8a 100644 --- a/modules/visual_script/visual_script_func_nodes.cpp +++ b/modules/visual_script/visual_script_func_nodes.cpp @@ -512,32 +512,32 @@ Dictionary VisualScriptFunctionCall::_get_argument_cache() const { return method_cache; } -void VisualScriptFunctionCall::_validate_property(PropertyInfo &property) const { - if (property.name == "base_type") { +void VisualScriptFunctionCall::_validate_property(PropertyInfo &p_property) const { + if (p_property.name == "base_type") { if (call_mode != CALL_MODE_INSTANCE) { - property.usage = PROPERTY_USAGE_NO_EDITOR; + p_property.usage = PROPERTY_USAGE_NO_EDITOR; } } - if (property.name == "base_script") { + if (p_property.name == "base_script") { if (call_mode != CALL_MODE_INSTANCE) { - property.usage = PROPERTY_USAGE_NONE; + p_property.usage = PROPERTY_USAGE_NONE; } } - if (property.name == "basic_type") { + if (p_property.name == "basic_type") { if (call_mode != CALL_MODE_BASIC_TYPE) { - property.usage = PROPERTY_USAGE_NONE; + p_property.usage = PROPERTY_USAGE_NONE; } } - if (property.name == "singleton") { + if (p_property.name == "singleton") { if (call_mode != CALL_MODE_SINGLETON) { - property.usage = PROPERTY_USAGE_NONE; + p_property.usage = PROPERTY_USAGE_NONE; } else { List names; Engine::get_singleton()->get_singletons(&names); - property.hint = PROPERTY_HINT_ENUM; + p_property.hint = PROPERTY_HINT_ENUM; String sl; for (const Engine::Singleton &E : names) { if (!sl.is_empty()) { @@ -545,41 +545,41 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo &property) const } sl += E.name; } - property.hint_string = sl; + p_property.hint_string = sl; } } - if (property.name == "node_path") { + if (p_property.name == "node_path") { if (call_mode != CALL_MODE_NODE_PATH) { - property.usage = PROPERTY_USAGE_NONE; + p_property.usage = PROPERTY_USAGE_NONE; } else { Node *bnode = _get_base_node(); if (bnode) { - property.hint_string = bnode->get_path(); //convert to long string + p_property.hint_string = bnode->get_path(); //convert to long string } } } - if (property.name == "function") { + if (p_property.name == "function") { if (call_mode == CALL_MODE_BASIC_TYPE) { - property.hint = PROPERTY_HINT_METHOD_OF_VARIANT_TYPE; - property.hint_string = Variant::get_type_name(basic_type); + p_property.hint = PROPERTY_HINT_METHOD_OF_VARIANT_TYPE; + p_property.hint_string = Variant::get_type_name(basic_type); } else if (call_mode == CALL_MODE_SELF && get_visual_script().is_valid()) { - property.hint = PROPERTY_HINT_METHOD_OF_SCRIPT; - property.hint_string = itos(get_visual_script()->get_instance_id()); + p_property.hint = PROPERTY_HINT_METHOD_OF_SCRIPT; + p_property.hint_string = itos(get_visual_script()->get_instance_id()); } else if (call_mode == CALL_MODE_SINGLETON) { Object *obj = Engine::get_singleton()->get_singleton_object(singleton); if (obj) { - property.hint = PROPERTY_HINT_METHOD_OF_INSTANCE; - property.hint_string = itos(obj->get_instance_id()); + p_property.hint = PROPERTY_HINT_METHOD_OF_INSTANCE; + p_property.hint_string = itos(obj->get_instance_id()); } else { - property.hint = PROPERTY_HINT_METHOD_OF_BASE_TYPE; - property.hint_string = base_type; //should be cached + p_property.hint = PROPERTY_HINT_METHOD_OF_BASE_TYPE; + p_property.hint_string = base_type; //should be cached } } else if (call_mode == CALL_MODE_INSTANCE) { - property.hint = PROPERTY_HINT_METHOD_OF_BASE_TYPE; - property.hint_string = base_type; + p_property.hint = PROPERTY_HINT_METHOD_OF_BASE_TYPE; + p_property.hint_string = base_type; if (!base_script.is_empty()) { if (!ResourceCache::has(base_script) && ScriptServer::edit_request_func) { @@ -589,8 +589,8 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo &property) const if (ResourceCache::has(base_script)) { Ref