Merge pull request #61194 from reduz/new-hash-set
Add a new HashSet template
This commit is contained in:
commit
8adf048045
243 changed files with 1400 additions and 662 deletions
|
|
@ -148,7 +148,7 @@ void AudioStreamPlayer2D::_update_panning() {
|
|||
|
||||
Vector2 global_pos = get_global_position();
|
||||
|
||||
RBSet<Viewport *> viewports = world_2d->get_viewports();
|
||||
HashSet<Viewport *> viewports = world_2d->get_viewports();
|
||||
viewports.insert(get_viewport()); // TODO: This is a mediocre workaround for #50958. Remove when that bug is fixed!
|
||||
|
||||
volume_vector.resize(4);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ class RayCast2D : public Node2D {
|
|||
int against_shape = 0;
|
||||
Vector2 collision_point;
|
||||
Vector2 collision_normal;
|
||||
RBSet<RID> exclude;
|
||||
HashSet<RID> exclude;
|
||||
uint32_t collision_mask = 1;
|
||||
bool exclude_parent_body = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class ShapeCast2D : public Node2D {
|
|||
RID shape_rid;
|
||||
Vector2 target_position = Vector2(0, 50);
|
||||
|
||||
RBSet<RID> exclude;
|
||||
HashSet<RID> exclude;
|
||||
real_t margin = 0.0;
|
||||
uint32_t collision_mask = 1;
|
||||
bool exclude_parent_body = true;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class Viewport;
|
|||
class VisibleOnScreenNotifier2D : public Node2D {
|
||||
GDCLASS(VisibleOnScreenNotifier2D, Node2D);
|
||||
|
||||
RBSet<Viewport *> viewports;
|
||||
HashSet<Viewport *> viewports;
|
||||
|
||||
Rect2 rect;
|
||||
|
||||
|
|
|
|||
|
|
@ -387,7 +387,7 @@ Vector<AudioFrame> AudioStreamPlayer3D::_update_panning() {
|
|||
Ref<World3D> world_3d = get_world_3d();
|
||||
ERR_FAIL_COND_V(world_3d.is_null(), output_volume_vector);
|
||||
|
||||
RBSet<Camera3D *> cameras = world_3d->get_cameras();
|
||||
HashSet<Camera3D *> cameras = world_3d->get_cameras();
|
||||
cameras.insert(get_viewport()->get_camera_3d());
|
||||
|
||||
PhysicsDirectSpaceState3D *space_state = PhysicsServer3D::get_singleton()->space_get_direct_state(world_3d->get_space());
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ private:
|
|||
bool capture_input_on_drag = false;
|
||||
bool ray_pickable = true;
|
||||
|
||||
RBSet<uint32_t> debug_shapes_to_update;
|
||||
HashSet<uint32_t> debug_shapes_to_update;
|
||||
int debug_shapes_count = 0;
|
||||
Transform3D debug_shape_old_transform;
|
||||
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ public:
|
|||
virtual void set_mesh_alpha_texture(Ref<Image> p_alpha_texture, unsigned int p_id) = 0;
|
||||
virtual void commit() = 0;
|
||||
|
||||
virtual void set_mesh_filter(const RBSet<int> &p_mesh_ids) = 0;
|
||||
virtual void set_mesh_filter(const HashSet<int> &p_mesh_ids) = 0;
|
||||
virtual void clear_mesh_filter() = 0;
|
||||
|
||||
static Ref<LightmapRaycaster> create();
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class RayCast3D : public Node3D {
|
|||
Vector3 collision_normal;
|
||||
|
||||
Vector3 target_position = Vector3(0, -1, 0);
|
||||
RBSet<RID> exclude;
|
||||
HashSet<RID> exclude;
|
||||
|
||||
uint32_t collision_mask = 1;
|
||||
bool exclude_parent_body = true;
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
RBSet<SkinReference *> skin_bindings;
|
||||
HashSet<SkinReference *> skin_bindings;
|
||||
|
||||
void _skin_changed();
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class SpringArm3D : public Node3D {
|
|||
GDCLASS(SpringArm3D, Node3D);
|
||||
|
||||
Ref<Shape3D> shape;
|
||||
RBSet<RID> excluded_objects;
|
||||
HashSet<RID> excluded_objects;
|
||||
real_t spring_length = 1.0;
|
||||
real_t current_spring_length = 0.0;
|
||||
bool keep_child_basis = false;
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ class VehicleBody3D : public RigidDynamicBody3D {
|
|||
real_t m_steeringValue = 0.0;
|
||||
real_t m_currentVehicleSpeedKmHour = 0.0;
|
||||
|
||||
RBSet<RID> exclude;
|
||||
HashSet<RID> exclude;
|
||||
|
||||
Vector<Vector3> m_forwardWS;
|
||||
Vector<Vector3> m_axle;
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ private:
|
|||
int cache_update_prop_size = 0;
|
||||
TrackNodeCache::BezierAnim *cache_update_bezier[NODE_CACHE_UPDATE_MAX];
|
||||
int cache_update_bezier_size = 0;
|
||||
RBSet<TrackNodeCache *> playing_caches;
|
||||
HashSet<TrackNodeCache *> playing_caches;
|
||||
|
||||
uint64_t accum_pass = 1;
|
||||
float speed_scale = 1.0;
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ private:
|
|||
};
|
||||
|
||||
HashMap<NodePath, TrackCache *> track_cache;
|
||||
RBSet<TrackCache *> playing_caches;
|
||||
HashSet<TrackCache *> playing_caches;
|
||||
|
||||
Ref<AnimationNode> root;
|
||||
|
||||
|
|
|
|||
|
|
@ -345,8 +345,8 @@ void SceneDebugger::remove_from_cache(const String &p_filename, Node *p_node) {
|
|||
return;
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>> &edit_cache = debugger->live_scene_edit_cache;
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = edit_cache.find(p_filename);
|
||||
HashMap<String, HashSet<Node *>> &edit_cache = debugger->live_scene_edit_cache;
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = edit_cache.find(p_filename);
|
||||
if (E) {
|
||||
E->value.erase(p_node);
|
||||
if (E->value.size() == 0) {
|
||||
|
|
@ -408,12 +408,12 @@ SceneDebuggerObject::SceneDebuggerObject(ObjectID p_id) {
|
|||
}
|
||||
|
||||
void SceneDebuggerObject::_parse_script_properties(Script *p_script, ScriptInstance *p_instance) {
|
||||
typedef HashMap<const Script *, RBSet<StringName>> ScriptMemberMap;
|
||||
typedef HashMap<const Script *, HashSet<StringName>> ScriptMemberMap;
|
||||
typedef HashMap<const Script *, HashMap<StringName, Variant>> ScriptConstantsMap;
|
||||
|
||||
ScriptMemberMap members;
|
||||
if (p_instance) {
|
||||
members[p_script] = RBSet<StringName>();
|
||||
members[p_script] = HashSet<StringName>();
|
||||
p_script->get_members(&(members[p_script]));
|
||||
}
|
||||
|
||||
|
|
@ -424,7 +424,7 @@ void SceneDebuggerObject::_parse_script_properties(Script *p_script, ScriptInsta
|
|||
Ref<Script> base = p_script->get_base_script();
|
||||
while (base.is_valid()) {
|
||||
if (p_instance) {
|
||||
members[base.ptr()] = RBSet<StringName>();
|
||||
members[base.ptr()] = HashSet<StringName>();
|
||||
base->get_members(&(members[base.ptr()]));
|
||||
}
|
||||
|
||||
|
|
@ -435,7 +435,7 @@ void SceneDebuggerObject::_parse_script_properties(Script *p_script, ScriptInsta
|
|||
}
|
||||
|
||||
// Members
|
||||
for (KeyValue<const Script *, RBSet<StringName>> sm : members) {
|
||||
for (KeyValue<const Script *, HashSet<StringName>> sm : members) {
|
||||
for (const StringName &E : sm.value) {
|
||||
Variant m;
|
||||
if (p_instance->get(E, m)) {
|
||||
|
|
@ -624,7 +624,7 @@ void LiveEditor::_node_set_func(int p_id, const StringName &p_prop, const Varian
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
|
@ -668,7 +668,7 @@ void LiveEditor::_node_call_func(int p_id, const StringName &p_method, const Var
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
|
@ -753,7 +753,7 @@ void LiveEditor::_create_node_func(const NodePath &p_parent, const String &p_typ
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
|
@ -797,7 +797,7 @@ void LiveEditor::_instance_node_func(const NodePath &p_parent, const String &p_p
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
|
@ -835,15 +835,15 @@ void LiveEditor::_remove_node_func(const NodePath &p_at) {
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
||||
for (RBSet<Node *>::Element *F = E->value.front(); F;) {
|
||||
RBSet<Node *>::Element *N = F->next();
|
||||
Vector<Node *> to_delete;
|
||||
|
||||
Node *n = F->get();
|
||||
for (HashSet<Node *>::Iterator F = E->value.begin(); F; ++F) {
|
||||
Node *n = *F;
|
||||
|
||||
if (base && !base->is_ancestor_of(n)) {
|
||||
continue;
|
||||
|
|
@ -854,9 +854,11 @@ void LiveEditor::_remove_node_func(const NodePath &p_at) {
|
|||
}
|
||||
Node *n2 = n->get_node(p_at);
|
||||
|
||||
memdelete(n2);
|
||||
to_delete.push_back(n2);
|
||||
}
|
||||
|
||||
F = N;
|
||||
for (int i = 0; i < to_delete.size(); i++) {
|
||||
memdelete(to_delete[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -871,15 +873,14 @@ void LiveEditor::_remove_and_keep_node_func(const NodePath &p_at, ObjectID p_kee
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
||||
for (RBSet<Node *>::Element *F = E->value.front(); F;) {
|
||||
RBSet<Node *>::Element *N = F->next();
|
||||
|
||||
Node *n = F->get();
|
||||
Vector<Node *> to_remove;
|
||||
for (HashSet<Node *>::Iterator F = E->value.begin(); F; ++F) {
|
||||
Node *n = *F;
|
||||
|
||||
if (base && !base->is_ancestor_of(n)) {
|
||||
continue;
|
||||
|
|
@ -889,13 +890,14 @@ void LiveEditor::_remove_and_keep_node_func(const NodePath &p_at, ObjectID p_kee
|
|||
continue;
|
||||
}
|
||||
|
||||
to_remove.push_back(n);
|
||||
}
|
||||
|
||||
for (int i = 0; i < to_remove.size(); i++) {
|
||||
Node *n = to_remove[i];
|
||||
Node *n2 = n->get_node(p_at);
|
||||
|
||||
n2->get_parent()->remove_child(n2);
|
||||
|
||||
live_edit_remove_list[n][p_keep_id] = n2;
|
||||
|
||||
F = N;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -910,15 +912,16 @@ void LiveEditor::_restore_node_func(ObjectID p_id, const NodePath &p_at, int p_a
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
||||
for (RBSet<Node *>::Element *F = E->value.front(); F;) {
|
||||
RBSet<Node *>::Element *N = F->next();
|
||||
for (HashSet<Node *>::Iterator F = E->value.begin(); F;) {
|
||||
HashSet<Node *>::Iterator N = F;
|
||||
++N;
|
||||
|
||||
Node *n = F->get();
|
||||
Node *n = *F;
|
||||
|
||||
if (base && !base->is_ancestor_of(n)) {
|
||||
continue;
|
||||
|
|
@ -963,7 +966,7 @@ void LiveEditor::_duplicate_node_func(const NodePath &p_at, const String &p_new_
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
|
@ -1002,7 +1005,7 @@ void LiveEditor::_reparent_node_func(const NodePath &p_at, const NodePath &p_new
|
|||
base = scene_tree->root->get_node(live_edit_root);
|
||||
}
|
||||
|
||||
HashMap<String, RBSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
HashMap<String, HashSet<Node *>>::Iterator E = live_scene_edit_cache.find(live_edit_scene);
|
||||
if (!E) {
|
||||
return; //scene not editable
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ private:
|
|||
NodePath live_edit_root;
|
||||
String live_edit_scene;
|
||||
|
||||
HashMap<String, RBSet<Node *>> live_scene_edit_cache;
|
||||
HashMap<String, HashSet<Node *>> live_scene_edit_cache;
|
||||
HashMap<Node *, HashMap<ObjectID, Node *>> live_edit_remove_list;
|
||||
|
||||
void _send_tree();
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ VARIANT_ENUM_CAST(BaseButton::ActionMode)
|
|||
class ButtonGroup : public Resource {
|
||||
GDCLASS(ButtonGroup, Resource);
|
||||
friend class BaseButton;
|
||||
RBSet<BaseButton *> buttons;
|
||||
HashSet<BaseButton *> buttons;
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ private:
|
|||
String indent_text = "\t";
|
||||
|
||||
bool auto_indent = false;
|
||||
RBSet<char32_t> auto_indent_prefixes;
|
||||
HashSet<char32_t> auto_indent_prefixes;
|
||||
|
||||
bool indent_using_spaces = false;
|
||||
int _calculate_spaces_till_next_left_indent(int p_column) const;
|
||||
|
|
@ -214,7 +214,7 @@ private:
|
|||
int code_completion_longest_line = 0;
|
||||
Rect2i code_completion_rect;
|
||||
|
||||
RBSet<char32_t> code_completion_prefixes;
|
||||
HashSet<char32_t> code_completion_prefixes;
|
||||
List<ScriptLanguage::CodeCompletionOption> code_completion_option_submitted;
|
||||
List<ScriptLanguage::CodeCompletionOption> code_completion_option_sources;
|
||||
String code_completion_base;
|
||||
|
|
|
|||
|
|
@ -1696,7 +1696,7 @@ void GraphEdit::set_warped_panning(bool p_warped) {
|
|||
warped_panning = p_warped;
|
||||
}
|
||||
|
||||
int GraphEdit::_set_operations(SET_OPERATIONS p_operation, RBSet<StringName> &r_u, const RBSet<StringName> &r_v) {
|
||||
int GraphEdit::_set_operations(SET_OPERATIONS p_operation, HashSet<StringName> &r_u, const HashSet<StringName> &r_v) {
|
||||
switch (p_operation) {
|
||||
case GraphEdit::IS_EQUAL: {
|
||||
for (const StringName &E : r_u) {
|
||||
|
|
@ -1718,10 +1718,13 @@ int GraphEdit::_set_operations(SET_OPERATIONS p_operation, RBSet<StringName> &r_
|
|||
return 1;
|
||||
} break;
|
||||
case GraphEdit::DIFFERENCE: {
|
||||
for (RBSet<StringName>::Element *E = r_u.front(); E; E = E->next()) {
|
||||
if (r_v.has(E->get())) {
|
||||
r_u.erase(E->get());
|
||||
for (HashSet<StringName>::Iterator E = r_u.begin(); E;) {
|
||||
HashSet<StringName>::Iterator N = E;
|
||||
++N;
|
||||
if (r_v.has(*E)) {
|
||||
r_u.remove(E);
|
||||
}
|
||||
E = N;
|
||||
}
|
||||
return r_u.size();
|
||||
} break;
|
||||
|
|
@ -1739,17 +1742,17 @@ int GraphEdit::_set_operations(SET_OPERATIONS p_operation, RBSet<StringName> &r_
|
|||
return -1;
|
||||
}
|
||||
|
||||
HashMap<int, Vector<StringName>> GraphEdit::_layering(const RBSet<StringName> &r_selected_nodes, const HashMap<StringName, RBSet<StringName>> &r_upper_neighbours) {
|
||||
HashMap<int, Vector<StringName>> GraphEdit::_layering(const HashSet<StringName> &r_selected_nodes, const HashMap<StringName, HashSet<StringName>> &r_upper_neighbours) {
|
||||
HashMap<int, Vector<StringName>> l;
|
||||
|
||||
RBSet<StringName> p = r_selected_nodes, q = r_selected_nodes, u, z;
|
||||
HashSet<StringName> p = r_selected_nodes, q = r_selected_nodes, u, z;
|
||||
int current_layer = 0;
|
||||
bool selected = false;
|
||||
|
||||
while (!_set_operations(GraphEdit::IS_EQUAL, q, u)) {
|
||||
_set_operations(GraphEdit::DIFFERENCE, p, u);
|
||||
for (const StringName &E : p) {
|
||||
RBSet<StringName> n = r_upper_neighbours[E];
|
||||
HashSet<StringName> n = r_upper_neighbours[E];
|
||||
if (_set_operations(GraphEdit::IS_SUBSET, n, z)) {
|
||||
Vector<StringName> t;
|
||||
t.push_back(E);
|
||||
|
|
@ -1759,7 +1762,7 @@ HashMap<int, Vector<StringName>> GraphEdit::_layering(const RBSet<StringName> &r
|
|||
selected = true;
|
||||
t.append_array(l[current_layer]);
|
||||
l.insert(current_layer, t);
|
||||
RBSet<StringName> V;
|
||||
HashSet<StringName> V;
|
||||
V.insert(E);
|
||||
_set_operations(GraphEdit::UNION, u, V);
|
||||
}
|
||||
|
|
@ -1801,7 +1804,7 @@ Vector<StringName> GraphEdit::_split(const Vector<StringName> &r_layer, const Ha
|
|||
return left;
|
||||
}
|
||||
|
||||
void GraphEdit::_horizontal_alignment(Dictionary &r_root, Dictionary &r_align, const HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, RBSet<StringName>> &r_upper_neighbours, const RBSet<StringName> &r_selected_nodes) {
|
||||
void GraphEdit::_horizontal_alignment(Dictionary &r_root, Dictionary &r_align, const HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, HashSet<StringName>> &r_upper_neighbours, const HashSet<StringName> &r_selected_nodes) {
|
||||
for (const StringName &E : r_selected_nodes) {
|
||||
r_root[E] = E;
|
||||
r_align[E] = E;
|
||||
|
|
@ -1841,7 +1844,7 @@ void GraphEdit::_horizontal_alignment(Dictionary &r_root, Dictionary &r_align, c
|
|||
}
|
||||
}
|
||||
|
||||
void GraphEdit::_crossing_minimisation(HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, RBSet<StringName>> &r_upper_neighbours) {
|
||||
void GraphEdit::_crossing_minimisation(HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, HashSet<StringName>> &r_upper_neighbours) {
|
||||
if (r_layers.size() == 1) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1879,7 +1882,7 @@ void GraphEdit::_crossing_minimisation(HashMap<int, Vector<StringName>> &r_layer
|
|||
}
|
||||
}
|
||||
|
||||
void GraphEdit::_calculate_inner_shifts(Dictionary &r_inner_shifts, const Dictionary &r_root, const Dictionary &r_node_names, const Dictionary &r_align, const RBSet<StringName> &r_block_heads, const HashMap<StringName, Pair<int, int>> &r_port_info) {
|
||||
void GraphEdit::_calculate_inner_shifts(Dictionary &r_inner_shifts, const Dictionary &r_root, const Dictionary &r_node_names, const Dictionary &r_align, const HashSet<StringName> &r_block_heads, const HashMap<StringName, Pair<int, int>> &r_port_info) {
|
||||
for (const StringName &E : r_block_heads) {
|
||||
real_t left = 0;
|
||||
StringName u = E;
|
||||
|
|
@ -2052,7 +2055,7 @@ void GraphEdit::arrange_nodes() {
|
|||
}
|
||||
|
||||
Dictionary node_names;
|
||||
RBSet<StringName> selected_nodes;
|
||||
HashSet<StringName> selected_nodes;
|
||||
|
||||
for (int i = get_child_count() - 1; i >= 0; i--) {
|
||||
GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
|
||||
|
|
@ -2063,7 +2066,7 @@ void GraphEdit::arrange_nodes() {
|
|||
node_names[gn->get_name()] = gn;
|
||||
}
|
||||
|
||||
HashMap<StringName, RBSet<StringName>> upper_neighbours;
|
||||
HashMap<StringName, HashSet<StringName>> upper_neighbours;
|
||||
HashMap<StringName, Pair<int, int>> port_info;
|
||||
Vector2 origin(FLT_MAX, FLT_MAX);
|
||||
|
||||
|
|
@ -2078,7 +2081,7 @@ void GraphEdit::arrange_nodes() {
|
|||
|
||||
if (gn->is_selected()) {
|
||||
selected_nodes.insert(gn->get_name());
|
||||
RBSet<StringName> s;
|
||||
HashSet<StringName> s;
|
||||
for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
|
||||
GraphNode *p_from = Object::cast_to<GraphNode>(node_names[E->get().from]);
|
||||
if (E->get().to == gn->get_name() && p_from->is_selected()) {
|
||||
|
|
@ -2115,7 +2118,7 @@ void GraphEdit::arrange_nodes() {
|
|||
HashMap<StringName, Vector2> new_positions;
|
||||
Vector2 default_position(FLT_MAX, FLT_MAX);
|
||||
Dictionary inner_shift;
|
||||
RBSet<StringName> block_heads;
|
||||
HashSet<StringName> block_heads;
|
||||
|
||||
for (const StringName &E : selected_nodes) {
|
||||
inner_shift[E] = 0.0f;
|
||||
|
|
|
|||
|
|
@ -218,8 +218,11 @@ private:
|
|||
uint64_t key = 0;
|
||||
};
|
||||
|
||||
bool operator<(const ConnType &p_type) const {
|
||||
return key < p_type.key;
|
||||
static uint32_t hash(const ConnType &p_conn) {
|
||||
return hash_one_uint64(p_conn.key);
|
||||
}
|
||||
bool operator==(const ConnType &p_type) const {
|
||||
return key == p_type.key;
|
||||
}
|
||||
|
||||
ConnType(uint32_t a = 0, uint32_t b = 0) {
|
||||
|
|
@ -228,9 +231,9 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
RBSet<ConnType> valid_connection_types;
|
||||
RBSet<int> valid_left_disconnect_types;
|
||||
RBSet<int> valid_right_disconnect_types;
|
||||
HashSet<ConnType, ConnType> valid_connection_types;
|
||||
HashSet<int> valid_left_disconnect_types;
|
||||
HashSet<int> valid_right_disconnect_types;
|
||||
|
||||
HashMap<StringName, Vector<GraphNode *>> comment_enclosed_nodes;
|
||||
void _update_comment_enclosed_nodes_list(GraphNode *p_node, HashMap<StringName, Vector<GraphNode *>> &p_comment_enclosed_nodes);
|
||||
|
|
@ -258,12 +261,12 @@ private:
|
|||
UNION,
|
||||
};
|
||||
|
||||
int _set_operations(SET_OPERATIONS p_operation, RBSet<StringName> &r_u, const RBSet<StringName> &r_v);
|
||||
HashMap<int, Vector<StringName>> _layering(const RBSet<StringName> &r_selected_nodes, const HashMap<StringName, RBSet<StringName>> &r_upper_neighbours);
|
||||
int _set_operations(SET_OPERATIONS p_operation, HashSet<StringName> &r_u, const HashSet<StringName> &r_v);
|
||||
HashMap<int, Vector<StringName>> _layering(const HashSet<StringName> &r_selected_nodes, const HashMap<StringName, HashSet<StringName>> &r_upper_neighbours);
|
||||
Vector<StringName> _split(const Vector<StringName> &r_layer, const HashMap<StringName, Dictionary> &r_crossings);
|
||||
void _horizontal_alignment(Dictionary &r_root, Dictionary &r_align, const HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, RBSet<StringName>> &r_upper_neighbours, const RBSet<StringName> &r_selected_nodes);
|
||||
void _crossing_minimisation(HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, RBSet<StringName>> &r_upper_neighbours);
|
||||
void _calculate_inner_shifts(Dictionary &r_inner_shifts, const Dictionary &r_root, const Dictionary &r_node_names, const Dictionary &r_align, const RBSet<StringName> &r_block_heads, const HashMap<StringName, Pair<int, int>> &r_port_info);
|
||||
void _horizontal_alignment(Dictionary &r_root, Dictionary &r_align, const HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, HashSet<StringName>> &r_upper_neighbours, const HashSet<StringName> &r_selected_nodes);
|
||||
void _crossing_minimisation(HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, HashSet<StringName>> &r_upper_neighbours);
|
||||
void _calculate_inner_shifts(Dictionary &r_inner_shifts, const Dictionary &r_root, const Dictionary &r_node_names, const Dictionary &r_align, const HashSet<StringName> &r_block_heads, const HashMap<StringName, Pair<int, int>> &r_port_info);
|
||||
float _calculate_threshold(StringName p_v, StringName p_w, const Dictionary &r_node_names, const HashMap<int, Vector<StringName>> &r_layers, const Dictionary &r_root, const Dictionary &r_align, const Dictionary &r_inner_shift, real_t p_current_threshold, const HashMap<StringName, Vector2> &r_node_positions);
|
||||
void _place_block(StringName p_v, float p_delta, const HashMap<int, Vector<StringName>> &r_layers, const Dictionary &r_root, const Dictionary &r_align, const Dictionary &r_node_name, const Dictionary &r_inner_shift, Dictionary &r_sink, Dictionary &r_shift, HashMap<StringName, Vector2> &r_node_positions);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,12 +29,13 @@
|
|||
/*************************************************************************/
|
||||
|
||||
#include "grid_container.h"
|
||||
#include "core/templates/rb_set.h"
|
||||
|
||||
void GridContainer::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_SORT_CHILDREN: {
|
||||
HashMap<int, int> col_minw; // Max of min_width of all controls in each col (indexed by col).
|
||||
HashMap<int, int> row_minh; // Max of min_height of all controls in each row (indexed by row).
|
||||
RBMap<int, int> col_minw; // Max of min_width of all controls in each col (indexed by col).
|
||||
RBMap<int, int> row_minh; // Max of min_height of all controls in each row (indexed by row).
|
||||
RBSet<int> col_expanded; // Columns which have the SIZE_EXPAND flag set.
|
||||
RBSet<int> row_expanded; // Rows which have the SIZE_EXPAND flag set.
|
||||
|
||||
|
|
@ -261,8 +262,8 @@ void GridContainer::_bind_methods() {
|
|||
}
|
||||
|
||||
Size2 GridContainer::get_minimum_size() const {
|
||||
HashMap<int, int> col_minw;
|
||||
HashMap<int, int> row_minh;
|
||||
RBMap<int, int> col_minw;
|
||||
RBMap<int, int> row_minh;
|
||||
|
||||
int hsep = get_theme_constant(SNAME("h_separation"));
|
||||
int vsep = get_theme_constant(SNAME("v_separation"));
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class Range : public Control {
|
|||
bool exp_ratio = false;
|
||||
bool allow_greater = false;
|
||||
bool allow_lesser = false;
|
||||
RBSet<Range *> owners;
|
||||
HashSet<Range *> owners;
|
||||
void emit_value_changed();
|
||||
void emit_changed(const char *p_what = "");
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1637,7 +1637,7 @@ Node *Node::find_common_parent_with(const Node *p_node) const {
|
|||
return const_cast<Node *>(p_node);
|
||||
}
|
||||
|
||||
RBSet<const Node *> visited;
|
||||
HashSet<const Node *> visited;
|
||||
|
||||
const Node *n = this;
|
||||
|
||||
|
|
@ -1669,7 +1669,7 @@ NodePath Node::get_path_to(const Node *p_node) const {
|
|||
return NodePath(".");
|
||||
}
|
||||
|
||||
RBSet<const Node *> visited;
|
||||
HashSet<const Node *> visited;
|
||||
|
||||
const Node *n = this;
|
||||
|
||||
|
|
@ -2042,7 +2042,7 @@ StringName Node::get_property_store_alias(const StringName &p_property) const {
|
|||
}
|
||||
#endif
|
||||
|
||||
void Node::get_storable_properties(RBSet<StringName> &r_storable_properties) const {
|
||||
void Node::get_storable_properties(HashSet<StringName> &r_storable_properties) const {
|
||||
List<PropertyInfo> pi;
|
||||
get_property_list(&pi);
|
||||
for (List<PropertyInfo>::Element *E = pi.front(); E; E = E->next()) {
|
||||
|
|
|
|||
|
|
@ -378,7 +378,7 @@ public:
|
|||
bool is_property_pinned(const StringName &p_property) const;
|
||||
virtual StringName get_property_store_alias(const StringName &p_property) const;
|
||||
#endif
|
||||
void get_storable_properties(RBSet<StringName> &r_storable_properties) const;
|
||||
void get_storable_properties(HashSet<StringName> &r_storable_properties) const;
|
||||
|
||||
virtual String to_string() override;
|
||||
|
||||
|
|
@ -522,6 +522,6 @@ public:
|
|||
|
||||
VARIANT_ENUM_CAST(Node::DuplicateFlags);
|
||||
|
||||
typedef RBSet<Node *, Node::Comparator> NodeSet;
|
||||
typedef HashSet<Node *, Node::Comparator> NodeSet;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
/*************************************************************************/
|
||||
|
||||
#include "resource_preloader.h"
|
||||
|
||||
#include "core/templates/rb_set.h"
|
||||
void ResourcePreloader::_set_resources(const Array &p_data) {
|
||||
resources.clear();
|
||||
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ private:
|
|||
|
||||
// Safety for when a node is deleted while a group is being called.
|
||||
int call_lock = 0;
|
||||
RBSet<Node *> call_skip; // Skip erased nodes.
|
||||
HashSet<Node *> call_skip; // Skip erased nodes.
|
||||
|
||||
List<ObjectID> delete_queue;
|
||||
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ private:
|
|||
|
||||
AudioListener2D *audio_listener_2d = nullptr;
|
||||
Camera2D *camera_2d = nullptr;
|
||||
RBSet<CanvasLayer *> canvas_layers;
|
||||
HashSet<CanvasLayer *> canvas_layers;
|
||||
|
||||
RID viewport;
|
||||
RID current_canvas;
|
||||
|
|
@ -301,7 +301,7 @@ private:
|
|||
bool use_occlusion_culling = false;
|
||||
|
||||
Ref<ViewportTexture> default_texture;
|
||||
RBSet<ViewportTexture *> viewport_textures;
|
||||
HashSet<ViewportTexture *> viewport_textures;
|
||||
|
||||
SDFOversize sdf_oversize = SDF_OVERSIZE_120_PERCENT;
|
||||
SDFScale sdf_scale = SDF_SCALE_50_PERCENT;
|
||||
|
|
@ -615,7 +615,7 @@ public:
|
|||
bool use_xr = false;
|
||||
friend class AudioListener3D;
|
||||
AudioListener3D *audio_listener_3d = nullptr;
|
||||
RBSet<AudioListener3D *> audio_listener_3d_set;
|
||||
HashSet<AudioListener3D *> audio_listener_3d_set;
|
||||
bool is_audio_listener_3d_enabled = false;
|
||||
RID internal_audio_listener_3d;
|
||||
AudioListener3D *get_audio_listener_3d() const;
|
||||
|
|
@ -650,7 +650,7 @@ public:
|
|||
|
||||
friend class Camera3D;
|
||||
Camera3D *camera_3d = nullptr;
|
||||
RBSet<Camera3D *> camera_3d_set;
|
||||
HashSet<Camera3D *> camera_3d_set;
|
||||
Camera3D *get_camera_3d() const;
|
||||
void _camera_3d_transform_changed_notify();
|
||||
void _camera_3d_set(Camera3D *p_camera);
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ private:
|
|||
void _make_transient();
|
||||
Window *transient_parent = nullptr;
|
||||
Window *exclusive_child = nullptr;
|
||||
RBSet<Window *> transient_children;
|
||||
HashSet<Window *> transient_children;
|
||||
|
||||
friend class Control;
|
||||
Ref<Theme> theme;
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public:
|
|||
|
||||
private:
|
||||
TypedArray<PackedScene> spawnable_scenes;
|
||||
RBSet<ResourceUID::ID> spawnable_ids;
|
||||
HashSet<ResourceUID::ID> spawnable_ids;
|
||||
NodePath spawn_path;
|
||||
|
||||
struct SpawnInfo {
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ Error SceneReplicationInterface::on_despawn_receive(int p_from, const uint8_t *p
|
|||
}
|
||||
|
||||
void SceneReplicationInterface::_send_sync(int p_peer, uint64_t p_msec) {
|
||||
const RBSet<ObjectID> &known = rep_state->get_known_nodes(p_peer);
|
||||
const HashSet<ObjectID> &known = rep_state->get_known_nodes(p_peer);
|
||||
if (known.is_empty()) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,8 +93,8 @@ bool SceneReplicationState::update_sync_time(const ObjectID &p_id, uint64_t p_ms
|
|||
return false;
|
||||
}
|
||||
|
||||
const RBSet<ObjectID> SceneReplicationState::get_known_nodes(int p_peer) {
|
||||
ERR_FAIL_COND_V(!peers_info.has(p_peer), RBSet<ObjectID>());
|
||||
const HashSet<ObjectID> SceneReplicationState::get_known_nodes(int p_peer) {
|
||||
ERR_FAIL_COND_V(!peers_info.has(p_peer), HashSet<ObjectID>());
|
||||
return peers_info[p_peer].known_nodes;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,27 +62,27 @@ private:
|
|||
};
|
||||
|
||||
struct PeerInfo {
|
||||
RBSet<ObjectID> known_nodes;
|
||||
HashSet<ObjectID> known_nodes;
|
||||
HashMap<uint32_t, ObjectID> recv_nodes;
|
||||
uint16_t last_sent_sync = 0;
|
||||
uint16_t last_recv_sync = 0;
|
||||
};
|
||||
|
||||
RBSet<int> known_peers;
|
||||
HashSet<int> known_peers;
|
||||
uint32_t last_net_id = 0;
|
||||
HashMap<ObjectID, TrackedNode> tracked_nodes;
|
||||
HashMap<int, PeerInfo> peers_info;
|
||||
RBSet<ObjectID> spawned_nodes;
|
||||
RBSet<ObjectID> path_only_nodes;
|
||||
HashSet<ObjectID> spawned_nodes;
|
||||
HashSet<ObjectID> path_only_nodes;
|
||||
|
||||
TrackedNode &_track(const ObjectID &p_id);
|
||||
void _untrack(const ObjectID &p_id);
|
||||
bool is_tracked(const ObjectID &p_id) const { return tracked_nodes.has(p_id); }
|
||||
|
||||
public:
|
||||
const RBSet<int> get_peers() const { return known_peers; }
|
||||
const RBSet<ObjectID> &get_spawned_nodes() const { return spawned_nodes; }
|
||||
const RBSet<ObjectID> &get_path_only_nodes() const { return path_only_nodes; }
|
||||
const HashSet<int> get_peers() const { return known_peers; }
|
||||
const HashSet<ObjectID> &get_spawned_nodes() const { return spawned_nodes; }
|
||||
const HashSet<ObjectID> &get_path_only_nodes() const { return path_only_nodes; }
|
||||
|
||||
MultiplayerSynchronizer *get_synchronizer(const ObjectID &p_id) { return tracked_nodes.has(p_id) ? tracked_nodes[p_id].get_synchronizer() : nullptr; }
|
||||
MultiplayerSpawner *get_spawner(const ObjectID &p_id) { return tracked_nodes.has(p_id) ? tracked_nodes[p_id].get_spawner() : nullptr; }
|
||||
|
|
@ -90,7 +90,7 @@ public:
|
|||
bool update_last_node_sync(const ObjectID &p_id, uint16_t p_time);
|
||||
bool update_sync_time(const ObjectID &p_id, uint64_t p_msec);
|
||||
|
||||
const RBSet<ObjectID> get_known_nodes(int p_peer);
|
||||
const HashSet<ObjectID> get_known_nodes(int p_peer);
|
||||
uint32_t get_net_id(const ObjectID &p_id) const;
|
||||
void set_net_id(const ObjectID &p_id, uint32_t p_net_id);
|
||||
uint32_t ensure_net_id(const ObjectID &p_id);
|
||||
|
|
|
|||
|
|
@ -170,8 +170,8 @@ Vector<Vector2> BitMap::_march_square(const Rect2i &rect, const Point2i &start)
|
|||
int curx = startx;
|
||||
int cury = starty;
|
||||
unsigned int count = 0;
|
||||
RBSet<Point2i> case9s;
|
||||
RBSet<Point2i> case6s;
|
||||
HashSet<Point2i> case9s;
|
||||
HashSet<Point2i> case6s;
|
||||
Vector<Vector2> _points;
|
||||
do {
|
||||
int sv = 0;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
#include "servers/physics_server_3d.h"
|
||||
|
||||
Vector<Vector3> ConcavePolygonShape3D::get_debug_mesh_lines() const {
|
||||
RBSet<DrawEdge> edges;
|
||||
HashSet<DrawEdge, DrawEdge> edges;
|
||||
|
||||
int index_count = faces.size();
|
||||
ERR_FAIL_COND_V((index_count % 3) != 0, Vector<Vector3>());
|
||||
|
|
|
|||
|
|
@ -42,12 +42,12 @@ class ConcavePolygonShape3D : public Shape3D {
|
|||
struct DrawEdge {
|
||||
Vector3 a;
|
||||
Vector3 b;
|
||||
bool operator<(const DrawEdge &p_edge) const {
|
||||
if (a == p_edge.a) {
|
||||
return b < p_edge.b;
|
||||
} else {
|
||||
return a < p_edge.a;
|
||||
}
|
||||
static uint32_t hash(const DrawEdge &p_edge) {
|
||||
uint32_t h = hash_djb2_one_32(HashMapHasherDefault::hash(p_edge.a));
|
||||
return hash_djb2_one_32(HashMapHasherDefault::hash(p_edge.b), h);
|
||||
}
|
||||
bool operator==(const DrawEdge &p_edge) const {
|
||||
return (a == p_edge.a && b == p_edge.b);
|
||||
}
|
||||
|
||||
DrawEdge(const Vector3 &p_a = Vector3(), const Vector3 &p_b = Vector3()) {
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ static Array _sanitize_node_pinned_properties(Node *p_node) {
|
|||
if (pinned.is_empty()) {
|
||||
return Array();
|
||||
}
|
||||
RBSet<StringName> storable_properties;
|
||||
HashSet<StringName> storable_properties;
|
||||
p_node->get_storable_properties(storable_properties);
|
||||
int i = 0;
|
||||
do {
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ Vector<Vector2> PolygonPathFinder::find_path(const Vector2 &p_from, const Vector
|
|||
}
|
||||
//solve graph
|
||||
|
||||
RBSet<int> open_list;
|
||||
HashSet<int> open_list;
|
||||
|
||||
points.write[aidx].distance = 0;
|
||||
points.write[aidx].prev = aidx;
|
||||
|
|
|
|||
|
|
@ -38,21 +38,23 @@ class PolygonPathFinder : public Resource {
|
|||
|
||||
struct Point {
|
||||
Vector2 pos;
|
||||
RBSet<int> connections;
|
||||
HashSet<int> connections;
|
||||
float distance = 0.0;
|
||||
float penalty = 0.0;
|
||||
int prev = 0;
|
||||
};
|
||||
|
||||
struct Edge {
|
||||
int points[2] = {};
|
||||
union Edge {
|
||||
struct {
|
||||
int32_t points[2];
|
||||
};
|
||||
uint64_t key = 0;
|
||||
|
||||
_FORCE_INLINE_ bool operator<(const Edge &p_edge) const {
|
||||
if (points[0] == p_edge.points[0]) {
|
||||
return points[1] < p_edge.points[1];
|
||||
} else {
|
||||
return points[0] < p_edge.points[0];
|
||||
}
|
||||
_FORCE_INLINE_ bool operator==(const Edge &p_edge) const {
|
||||
return key == p_edge.key;
|
||||
}
|
||||
_FORCE_INLINE_ static uint32_t hash(const Edge &p_edge) {
|
||||
return hash_one_uint64(p_edge.key);
|
||||
}
|
||||
|
||||
Edge(int a = 0, int b = 0) {
|
||||
|
|
@ -68,7 +70,7 @@ class PolygonPathFinder : public Resource {
|
|||
Rect2 bounds;
|
||||
|
||||
Vector<Point> points;
|
||||
RBSet<Edge> edges;
|
||||
HashSet<Edge, Edge> edges;
|
||||
|
||||
bool _is_point_inside(const Vector2 &p_point) const;
|
||||
|
||||
|
|
|
|||
|
|
@ -1737,7 +1737,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const Ref<Reso
|
|||
|
||||
#ifdef TOOLS_ENABLED
|
||||
// Keep order from cached ids.
|
||||
RBSet<String> cached_ids_found;
|
||||
HashSet<String> cached_ids_found;
|
||||
for (KeyValue<Ref<Resource>, String> &E : external_resources) {
|
||||
String cached_id = E.key->get_id_for_path(local_path);
|
||||
if (cached_id.is_empty() || cached_ids_found.has(cached_id)) {
|
||||
|
|
@ -1809,7 +1809,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const Ref<Reso
|
|||
f->store_line(String()); // Separate.
|
||||
}
|
||||
|
||||
RBSet<String> used_unique_ids;
|
||||
HashSet<String> used_unique_ids;
|
||||
|
||||
for (List<Ref<Resource>>::Element *E = saved_resources.front(); E; E = E->next()) {
|
||||
Ref<Resource> res = E->get();
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ class ResourceFormatSaverTextInstance {
|
|||
|
||||
RBMap<NonPersistentKey, Ref<Resource>> non_persistent_map;
|
||||
|
||||
RBSet<Ref<Resource>> resource_set;
|
||||
HashSet<Ref<Resource>> resource_set;
|
||||
List<Ref<Resource>> saved_resources;
|
||||
HashMap<Ref<Resource>, String> external_resources;
|
||||
HashMap<Ref<Resource>, String> internal_resources;
|
||||
|
|
|
|||
|
|
@ -1275,7 +1275,7 @@ void Theme::get_type_list(List<StringName> *p_list) const {
|
|||
// This Set guarantees uniqueness.
|
||||
// Because each map can have the same type defined, but for this method
|
||||
// we only want one occurrence of each type.
|
||||
RBSet<StringName> types;
|
||||
HashSet<StringName> types;
|
||||
|
||||
// Icons.
|
||||
for (const KeyValue<StringName, ThemeIconMap> &E : icon_map) {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
#include "core/io/marshalls.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/templates/local_vector.h"
|
||||
|
||||
#include "core/templates/rb_set.h"
|
||||
#include "scene/2d/navigation_region_2d.h"
|
||||
#include "scene/gui/control.h"
|
||||
#include "scene/resources/convex_polygon_shape_2d.h"
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include "core/io/resource.h"
|
||||
#include "core/object/object.h"
|
||||
#include "core/templates/local_vector.h"
|
||||
#include "core/templates/rb_set.h"
|
||||
#include "scene/2d/light_occluder_2d.h"
|
||||
#include "scene/2d/navigation_region_2d.h"
|
||||
#include "scene/main/canvas_item.h"
|
||||
|
|
|
|||
|
|
@ -1180,7 +1180,7 @@ String VisualShader::generate_preview_shader(Type p_type, int p_node, int p_port
|
|||
StringBuilder global_code_per_node;
|
||||
HashMap<Type, StringBuilder> global_code_per_func;
|
||||
StringBuilder code;
|
||||
RBSet<StringName> classes;
|
||||
HashSet<StringName> classes;
|
||||
|
||||
global_code += String() + "shader_type canvas_item;\n";
|
||||
|
||||
|
|
@ -1222,7 +1222,7 @@ String VisualShader::generate_preview_shader(Type p_type, int p_node, int p_port
|
|||
|
||||
code += "\nvoid fragment() {\n";
|
||||
|
||||
RBSet<int> processed;
|
||||
HashSet<int> processed;
|
||||
Error err = _write_node(p_type, &global_code, &global_code_per_node, &global_code_per_func, code, default_tex_params, input_connections, output_connections, p_node, processed, true, classes);
|
||||
ERR_FAIL_COND_V(err != OK, String());
|
||||
|
||||
|
|
@ -1551,7 +1551,7 @@ void VisualShader::_get_property_list(List<PropertyInfo> *p_list) const {
|
|||
//render modes
|
||||
|
||||
HashMap<String, String> blend_mode_enums;
|
||||
RBSet<String> toggles;
|
||||
HashSet<String> toggles;
|
||||
|
||||
const Vector<ShaderLanguage::ModeInfo> &rmodes = ShaderTypes::get_singleton()->get_modes(RenderingServer::ShaderMode(shader_mode));
|
||||
|
||||
|
|
@ -1611,7 +1611,7 @@ void VisualShader::_get_property_list(List<PropertyInfo> *p_list) const {
|
|||
}
|
||||
}
|
||||
|
||||
Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBuilder *global_code_per_node, HashMap<Type, StringBuilder> *global_code_per_func, StringBuilder &code, Vector<VisualShader::DefaultTextureParam> &def_tex_params, const VMap<ConnectionKey, const List<Connection>::Element *> &input_connections, const VMap<ConnectionKey, const List<Connection>::Element *> &output_connections, int node, RBSet<int> &processed, bool for_preview, RBSet<StringName> &r_classes) const {
|
||||
Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBuilder *global_code_per_node, HashMap<Type, StringBuilder> *global_code_per_func, StringBuilder &code, Vector<VisualShader::DefaultTextureParam> &def_tex_params, const VMap<ConnectionKey, const List<Connection>::Element *> &input_connections, const VMap<ConnectionKey, const List<Connection>::Element *> &output_connections, int node, HashSet<int> &processed, bool for_preview, HashSet<StringName> &r_classes) const {
|
||||
const Ref<VisualShaderNode> vsnode = graph[type].nodes[node].node;
|
||||
|
||||
if (vsnode->is_disabled()) {
|
||||
|
|
@ -2136,7 +2136,7 @@ void VisualShader::_update_shader() const {
|
|||
HashMap<Type, StringBuilder> global_code_per_func;
|
||||
StringBuilder code;
|
||||
Vector<VisualShader::DefaultTextureParam> default_tex_params;
|
||||
RBSet<StringName> classes;
|
||||
HashSet<StringName> classes;
|
||||
HashMap<int, int> insertion_pos;
|
||||
static const char *shader_mode_str[Shader::MODE_MAX] = { "spatial", "canvas_item", "particles", "sky", "fog" };
|
||||
|
||||
|
|
@ -2181,7 +2181,7 @@ void VisualShader::_update_shader() const {
|
|||
static const char *func_name[TYPE_MAX] = { "vertex", "fragment", "light", "start", "process", "collide", "start_custom", "process_custom", "sky", "fog" };
|
||||
|
||||
String global_expressions;
|
||||
RBSet<String> used_uniform_names;
|
||||
HashSet<String> used_uniform_names;
|
||||
List<VisualShaderNodeUniform *> uniforms;
|
||||
HashMap<int, List<int>> emitters;
|
||||
HashMap<int, List<int>> varying_setters;
|
||||
|
|
@ -2270,7 +2270,7 @@ void VisualShader::_update_shader() const {
|
|||
}
|
||||
|
||||
HashMap<int, String> code_map;
|
||||
RBSet<int> empty_funcs;
|
||||
HashSet<int> empty_funcs;
|
||||
|
||||
for (int i = 0; i < TYPE_MAX; i++) {
|
||||
if (!has_func_name(RenderingServer::ShaderMode(shader_mode), func_name[i])) {
|
||||
|
|
@ -2282,7 +2282,7 @@ void VisualShader::_update_shader() const {
|
|||
VMap<ConnectionKey, const List<Connection>::Element *> output_connections;
|
||||
|
||||
StringBuilder func_code;
|
||||
RBSet<int> processed;
|
||||
HashSet<int> processed;
|
||||
|
||||
bool is_empty_func = false;
|
||||
if (shader_mode != Shader::MODE_PARTICLES && shader_mode != Shader::MODE_SKY && shader_mode != Shader::MODE_FOG) {
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ private:
|
|||
Vector2 graph_offset;
|
||||
|
||||
HashMap<String, int> modes;
|
||||
RBSet<StringName> flags;
|
||||
HashSet<StringName> flags;
|
||||
|
||||
HashMap<String, Varying> varyings;
|
||||
List<Varying> varyings_list;
|
||||
|
|
@ -158,7 +158,7 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
Error _write_node(Type p_type, StringBuilder *global_code, StringBuilder *global_code_per_node, HashMap<Type, StringBuilder> *global_code_per_func, StringBuilder &code, Vector<DefaultTextureParam> &def_tex_params, const VMap<ConnectionKey, const List<Connection>::Element *> &input_connections, const VMap<ConnectionKey, const List<Connection>::Element *> &output_connections, int node, RBSet<int> &processed, bool for_preview, RBSet<StringName> &r_classes) const;
|
||||
Error _write_node(Type p_type, StringBuilder *global_code, StringBuilder *global_code_per_node, HashMap<Type, StringBuilder> *global_code_per_func, StringBuilder &code, Vector<DefaultTextureParam> &def_tex_params, const VMap<ConnectionKey, const List<Connection>::Element *> &input_connections, const VMap<ConnectionKey, const List<Connection>::Element *> &output_connections, int node, HashSet<int> &processed, bool for_preview, HashSet<StringName> &r_classes) const;
|
||||
|
||||
void _input_type_changed(Type p_type, int p_id);
|
||||
bool has_func_name(RenderingServer::ShaderMode p_mode, const String &p_func_name) const;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class World2D : public Resource {
|
|||
RID space;
|
||||
RID navigation_map;
|
||||
|
||||
RBSet<Viewport *> viewports;
|
||||
HashSet<Viewport *> viewports;
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
|
@ -62,7 +62,7 @@ public:
|
|||
|
||||
PhysicsDirectSpaceState2D *get_direct_space_state();
|
||||
|
||||
_FORCE_INLINE_ const RBSet<Viewport *> &get_viewports() { return viewports; }
|
||||
_FORCE_INLINE_ const HashSet<Viewport *> &get_viewports() { return viewports; }
|
||||
|
||||
World2D();
|
||||
~World2D();
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ private:
|
|||
Ref<Environment> fallback_environment;
|
||||
Ref<CameraEffects> camera_effects;
|
||||
|
||||
RBSet<Camera3D *> cameras;
|
||||
HashSet<Camera3D *> cameras;
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
|
@ -77,7 +77,7 @@ public:
|
|||
void set_camera_effects(const Ref<CameraEffects> &p_camera_effects);
|
||||
Ref<CameraEffects> get_camera_effects() const;
|
||||
|
||||
_FORCE_INLINE_ const RBSet<Camera3D *> &get_cameras() const { return cameras; }
|
||||
_FORCE_INLINE_ const HashSet<Camera3D *> &get_cameras() const { return cameras; }
|
||||
|
||||
PhysicsDirectSpaceState3D *get_direct_space_state();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue