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:
parent
e5bb89cdd5
commit
f8d03b98e7
83 changed files with 395 additions and 183 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue