mirror of
https://github.com/godotengine/godot-visual-script.git
synced 2026-01-07 02:10:47 +03:00
Improve resource load cache
-Added a new method in Resource: reset_state , used for reloading the same resource from disk -Added a new cache mode "replace" in ResourceLoader, which reuses existing loaded sub-resources but resets their data from disk (or replaces them if they chaged type) -Because the correct sub-resource paths are always loaded now, this fixes bugs with subresource folding or subresource ordering when saving.
This commit is contained in:
@@ -1506,6 +1506,19 @@ VisualScriptNodeInstance *VisualScriptExpression::instance(VisualScriptInstance
|
||||
return instance;
|
||||
}
|
||||
|
||||
void VisualScriptExpression::reset_state() {
|
||||
if (nodes) {
|
||||
memdelete(nodes);
|
||||
nodes = nullptr;
|
||||
root = nullptr;
|
||||
}
|
||||
|
||||
error_str = String();
|
||||
error_set = false;
|
||||
str_ofs = 0;
|
||||
inputs.clear();
|
||||
}
|
||||
|
||||
VisualScriptExpression::VisualScriptExpression() {
|
||||
}
|
||||
|
||||
|
||||
@@ -256,6 +256,8 @@ protected:
|
||||
void _get_property_list(List<PropertyInfo> *p_list) const;
|
||||
|
||||
public:
|
||||
virtual void reset_state() override;
|
||||
|
||||
virtual int get_output_sequence_port_count() const override;
|
||||
virtual bool has_input_sequence_port() const override;
|
||||
|
||||
|
||||
@@ -677,6 +677,10 @@ void VisualScriptSwitch::_get_property_list(List<PropertyInfo> *p_list) const {
|
||||
}
|
||||
}
|
||||
|
||||
void VisualScriptSwitch::reset_state() {
|
||||
case_values.clear();
|
||||
}
|
||||
|
||||
void VisualScriptSwitch::_bind_methods() {
|
||||
}
|
||||
|
||||
|
||||
@@ -202,6 +202,8 @@ protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
virtual void reset_state() override;
|
||||
|
||||
virtual int get_output_sequence_port_count() const override;
|
||||
virtual bool has_input_sequence_port() const override;
|
||||
|
||||
|
||||
@@ -303,6 +303,14 @@ VisualScriptNodeInstance *VisualScriptFunction::instance(VisualScriptInstance *p
|
||||
return instance;
|
||||
}
|
||||
|
||||
void VisualScriptFunction::reset_state() {
|
||||
arguments.clear();
|
||||
stack_size = 256;
|
||||
stack_less = false;
|
||||
sequenced = true;
|
||||
rpc_mode = MultiplayerAPI::RPC_MODE_DISABLED;
|
||||
}
|
||||
|
||||
VisualScriptFunction::VisualScriptFunction() {
|
||||
stack_size = 256;
|
||||
stack_less = false;
|
||||
@@ -687,6 +695,13 @@ bool VisualScriptLists::is_sequenced() const {
|
||||
return sequenced;
|
||||
}
|
||||
|
||||
void VisualScriptLists::reset_state() {
|
||||
inputports.clear();
|
||||
outputports.clear();
|
||||
sequenced = false;
|
||||
flags = 0;
|
||||
}
|
||||
|
||||
VisualScriptLists::VisualScriptLists() {
|
||||
// initialize
|
||||
sequenced = false;
|
||||
|
||||
@@ -99,6 +99,8 @@ public:
|
||||
|
||||
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance) override;
|
||||
|
||||
virtual void reset_state() override;
|
||||
|
||||
VisualScriptFunction();
|
||||
};
|
||||
|
||||
@@ -134,6 +136,8 @@ protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
virtual void reset_state() override;
|
||||
|
||||
virtual bool is_output_port_editable() const;
|
||||
virtual bool is_output_port_name_editable() const;
|
||||
virtual bool is_output_port_type_editable() const;
|
||||
|
||||
Reference in New Issue
Block a user