MCPcopy Create free account
hub / github.com/GDRETools/gdsdecomp / get_resource_diff

Method get_resource_diff

utility/diff_result.cpp:140–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

138}
139
140Ref<FileDiffResult> FileDiffResult::get_resource_diff(Ref<Resource> p_res, Ref<Resource> p_res2, const Dictionary &p_structured_changes) {
141 Ref<FileDiffResult> result;
142 result.instantiate();
143 result->set_res_old(p_res);
144 result->set_res_new(p_res2);
145 if (p_res.is_null() && p_res2.is_null()) {
146 result->set_type("unchanged");
147 return result;
148 }
149 if (p_res.is_null()) {
150 result->set_type("added");
151 return result;
152 }
153 if (p_res2.is_null()) {
154 result->set_type("deleted");
155 return result;
156 }
157 if (p_res->get_class() != p_res2->get_class()) {
158 result->set_type("type_changed");
159 return result;
160 }
161 if (p_res->get_class() != "PackedScene") {
162 auto diff = ObjectDiffResult::get_diff_obj((Object *)p_res.ptr(), (Object *)p_res2.ptr(), true, p_structured_changes);
163 result->set_type("resource_changed");
164 result->set_props(diff);
165 return result;
166 }
167 Ref<PackedScene> p_scene1 = p_res;
168 Ref<PackedScene> p_scene2 = p_res2;
169 auto scene1 = p_scene1->instantiate();
170 auto scene2 = p_scene2->instantiate();
171 HashSet<NodePath> paths;
172 NodeDiffResult::get_child_node_paths(scene1, paths);
173 NodeDiffResult::get_child_node_paths(scene2, paths);
174 HashMap<String, Ref<NodeDiffResult>> node_diffs;
175 for (auto &path : paths) {
176 Ref<NodeDiffResult> value1 = NodeDiffResult::evaluate_node_differences(scene1, scene2, path, p_structured_changes);
177 if (value1.is_valid()) {
178 node_diffs[String(path)] = value1;
179 }
180 }
181 result->set_type("scene_changed");
182 result->set_node_diff_map(node_diffs);
183 return result;
184}
185
186void ObjectDiffResult::_bind_methods() {
187 ClassDB::bind_method(D_METHOD("set_old_object", "old_object"), &ObjectDiffResult::set_old_object);

Callers

nothing calls this directly

Calls 6

set_res_oldMethod · 0.80
set_res_newMethod · 0.80
set_propsMethod · 0.80
set_node_diff_mapMethod · 0.80
set_typeMethod · 0.45
is_validMethod · 0.45

Tested by

no test coverage detected