diff --git a/panda/src/pgraph/pandaNode.cxx b/panda/src/pgraph/pandaNode.cxx index 9aace23918..0baf30c7dd 100644 --- a/panda/src/pgraph/pandaNode.cxx +++ b/panda/src/pgraph/pandaNode.cxx @@ -1325,7 +1325,7 @@ compare_tags(const PandaNode *other) const { return cmp; } - cmp = strcmp(a_data.get_key(ai).c_str(), b_data.get_key(bi).c_str()); + cmp = strcmp(a_data.get_data(ai).c_str(), b_data.get_data(bi).c_str()); if (cmp != 0) { return cmp; } diff --git a/tests/pgraph/test_nodepath.py b/tests/pgraph/test_nodepath.py index 43e43313e1..6a7d0990b4 100644 --- a/tests/pgraph/test_nodepath.py +++ b/tests/pgraph/test_nodepath.py @@ -133,6 +133,57 @@ def test_weak_nodepath_comparison(): assert weak.node() == path.node() +def test_nodepath_flatten_tags_identical(): + from panda3d.core import NodePath, PandaNode + + # Do flatten nodes with same tags + node1 = PandaNode("node1") + node1.set_tag("key", "value") + node2 = PandaNode("node2") + node2.set_tag("key", "value") + + path = NodePath("parent") + path.node().add_child(node1) + path.node().add_child(node2) + + path.flatten_strong() + assert len(path.children) == 1 + + +def test_nodepath_flatten_tags_same_key(): + from panda3d.core import NodePath, PandaNode + + # Don't flatten nodes with different tag keys + node1 = PandaNode("node1") + node1.set_tag("key1", "value") + node2 = PandaNode("node2") + node2.set_tag("key2", "value") + + path = NodePath("parent") + path.node().add_child(node1) + path.node().add_child(node2) + + path.flatten_strong() + assert len(path.children) == 2 + + +def test_nodepath_flatten_tags_same_value(): + from panda3d.core import NodePath, PandaNode + + # Don't flatten nodes with different tag values + node1 = PandaNode("node1") + node1.set_tag("key", "value1") + node2 = PandaNode("node2") + node2.set_tag("key", "value2") + + path = NodePath("parent") + path.node().add_child(node1) + path.node().add_child(node2) + + path.flatten_strong() + assert len(path.children) == 2 + + def test_nodepath_python_tags(): from panda3d.core import NodePath