panda3d/tests/gobj/test_geom_primitives.py

146 lines
3.2 KiB
Python

from panda3d import core
def test_geom_triangles_adjacency():
prim = core.GeomTriangles(core.GeomEnums.UH_static)
prim.add_vertex(0)
prim.add_vertex(1)
prim.add_vertex(2)
prim.close_primitive()
prim.add_vertex(2)
prim.add_vertex(1)
prim.add_vertex(3)
prim.close_primitive()
adj = prim.make_adjacency()
verts = adj.get_vertex_list()
assert tuple(verts) == (
0, 0, 1, 3, 2, 2,
2, 0, 1, 1, 3, 3,
)
def test_geom_lines_adjacency():
prim = core.GeomLines(core.GeomEnums.UH_static)
prim.add_vertex(0)
prim.add_vertex(1)
prim.close_primitive()
prim.add_vertex(1)
prim.add_vertex(2)
prim.close_primitive()
prim.add_vertex(2)
prim.add_vertex(3)
prim.close_primitive()
adj = prim.make_adjacency()
verts = adj.get_vertex_list()
assert tuple(verts) == (
0, 0, 1, 2,
0, 1, 2, 3,
1, 2, 3, 3,
)
def test_geom_linestrips_adjacency():
prim = core.GeomLinestrips(core.GeomEnums.UH_static)
prim.add_vertex(0)
prim.add_vertex(1)
prim.close_primitive()
prim.add_vertex(1)
prim.add_vertex(2)
prim.add_vertex(3)
prim.close_primitive()
prim.add_vertex(3)
prim.add_vertex(4)
prim.add_vertex(5)
prim.add_vertex(6)
prim.close_primitive()
adj = prim.make_adjacency()
verts = adj.get_vertex_list()
cut = adj.get_strip_cut_index()
assert tuple(verts) == (
0, 0, 1, 2,
cut,
0, 1, 2, 3, 4,
cut,
2, 3, 4, 5, 6, 6,
)
# Check that it decomposes properly to a lines-adjacency primitive
prim = adj.decompose()
assert isinstance(prim, core.GeomLinesAdjacency)
verts = prim.get_vertex_list()
assert tuple(verts) == (
0, 0, 1, 2,
0, 1, 2, 3,
1, 2, 3, 4,
2, 3, 4, 5,
3, 4, 5, 6,
4, 5, 6, 6,
)
def test_geom_linestrips_offset_indexed():
prim = core.GeomLinestrips(core.GeomEnums.UH_static)
prim.add_vertex(0)
prim.add_vertex(1)
prim.close_primitive()
prim.add_vertex(1)
prim.add_vertex(2)
prim.add_vertex(3)
prim.close_primitive()
prim.add_vertex(3)
prim.add_vertex(4)
prim.add_vertex(5)
prim.add_vertex(6)
prim.close_primitive()
prim.offset_vertices(100)
verts = prim.get_vertex_list()
cut = prim.strip_cut_index
assert tuple(verts) == (
100, 101,
cut,
101, 102, 103,
cut,
103, 104, 105, 106,
)
prim.offset_vertices(-100)
verts = prim.get_vertex_list()
cut = prim.strip_cut_index
assert tuple(verts) == (
0, 1,
cut,
1, 2, 3,
cut,
3, 4, 5, 6,
)
prim.offset_vertices(100, 4, 9)
verts = prim.get_vertex_list()
cut = prim.strip_cut_index
assert tuple(verts) == (
0, 1,
cut,
1, 102, 103,
cut,
103, 104, 5, 6,
)
# Automatically upgrade to uint32
prim.offset_vertices(100000)
assert prim.index_type == core.GeomEnums.NT_uint32
verts = prim.get_vertex_list()
cut = prim.strip_cut_index
assert tuple(verts) == (
100000, 100001,
cut,
100001, 100102, 100103,
cut,
100103, 100104, 100005, 100006,
)