diff --git a/tests/gobj/test_geom_vertex_reader.py b/tests/gobj/test_geom_vertex_reader.py new file mode 100644 index 0000000000..edb089c00b --- /dev/null +++ b/tests/gobj/test_geom_vertex_reader.py @@ -0,0 +1,59 @@ +from panda3d.core import GeomVertexArrayFormat, GeomVertexFormat, GeomVertexData, Geom, GeomNode +from panda3d.core import GeomVertexReader, GeomVertexWriter +import pytest + + +@pytest.fixture(scope='module') +def geom_node(): + array = GeomVertexArrayFormat() + array.add_column("vertex", 3, Geom.NT_float32, Geom.C_point) + array.add_column("normal", 3, Geom.NT_float32, Geom.C_normal) + array.add_column("color", 3, Geom.NT_float32, Geom.C_color) + array.add_column("texcoord", 3, Geom.NT_float32, Geom.C_texcoord) + format = GeomVertexFormat() + format.add_array(array) + format = GeomVertexFormat.register_format(format) + + vdata = GeomVertexData("test", format, Geom.UH_static) + vdata.set_num_rows(4) + vertex = GeomVertexWriter(vdata, 'vertex') + normal = GeomVertexWriter(vdata, 'normal') + color = GeomVertexWriter(vdata, 'color') + texcoord = GeomVertexWriter(vdata, 'texcoord') + + vertex.add_data3f(1, 0, 0) + normal.add_data3f(0, 0, 1) + color.add_data4f(0, 0, 1, 1) + texcoord.add_data2f(1, 0) + + vertex.add_data3f(1, 1, 0) + normal.add_data3f(0, 1, 1) + color.add_data4f(1, 0, 1, 1) + texcoord.add_data2f(1, 1) + + geom = Geom(vdata) + node = GeomNode('gnode') + node.add_geom(geom) + return node + + +def test_geom_vertex_reader(geom_node): + new_geom = geom_node.get_geom(0) + new_vdata = new_geom.get_vertex_data() + + new_vertex = GeomVertexReader(new_vdata, 'vertex') + new_normal = GeomVertexReader(new_vdata, 'normal') + new_color = GeomVertexReader(new_vdata, 'color') + new_texcoord = GeomVertexReader(new_vdata, 'texcoord') + + assert new_vertex.get_data3f() == (1, 0, 0) + assert new_vertex.get_data3f() == (1, 1, 0) + + assert new_normal.get_data3f() == (0, 0, 1) + assert new_normal.get_data3f() == (0, 1, 1) + + assert new_color.get_data4f() == (0, 0, 1, 1) + assert new_color.get_data4f() == (1, 0, 1, 1) + + assert new_texcoord.get_data2f() == (1, 0) + assert new_texcoord.get_data2f() == (1, 1)