test_geom_primitives.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from panda3d import core
  2. def test_geom_triangles_adjacency():
  3. prim = core.GeomTriangles(core.GeomEnums.UH_static)
  4. prim.add_vertex(0)
  5. prim.add_vertex(1)
  6. prim.add_vertex(2)
  7. prim.close_primitive()
  8. prim.add_vertex(2)
  9. prim.add_vertex(1)
  10. prim.add_vertex(3)
  11. prim.close_primitive()
  12. adj = prim.make_adjacency()
  13. verts = adj.get_vertex_list()
  14. assert tuple(verts) == (
  15. 0, 0, 1, 3, 2, 2,
  16. 2, 0, 1, 1, 3, 3,
  17. )
  18. def test_geom_lines_adjacency():
  19. prim = core.GeomLines(core.GeomEnums.UH_static)
  20. prim.add_vertex(0)
  21. prim.add_vertex(1)
  22. prim.close_primitive()
  23. prim.add_vertex(1)
  24. prim.add_vertex(2)
  25. prim.close_primitive()
  26. prim.add_vertex(2)
  27. prim.add_vertex(3)
  28. prim.close_primitive()
  29. adj = prim.make_adjacency()
  30. verts = adj.get_vertex_list()
  31. assert tuple(verts) == (
  32. 0, 0, 1, 2,
  33. 0, 1, 2, 3,
  34. 1, 2, 3, 3,
  35. )
  36. def test_geom_linestrips_adjacency():
  37. prim = core.GeomLinestrips(core.GeomEnums.UH_static)
  38. prim.add_vertex(0)
  39. prim.add_vertex(1)
  40. prim.close_primitive()
  41. prim.add_vertex(1)
  42. prim.add_vertex(2)
  43. prim.add_vertex(3)
  44. prim.close_primitive()
  45. prim.add_vertex(3)
  46. prim.add_vertex(4)
  47. prim.add_vertex(5)
  48. prim.add_vertex(6)
  49. prim.close_primitive()
  50. adj = prim.make_adjacency()
  51. verts = adj.get_vertex_list()
  52. cut = adj.get_strip_cut_index()
  53. assert tuple(verts) == (
  54. 0, 0, 1, 2,
  55. cut,
  56. 0, 1, 2, 3, 4,
  57. cut,
  58. 2, 3, 4, 5, 6, 6,
  59. )
  60. # Check that it decomposes properly to a lines-adjacency primitive
  61. prim = adj.decompose()
  62. assert isinstance(prim, core.GeomLinesAdjacency)
  63. verts = prim.get_vertex_list()
  64. assert tuple(verts) == (
  65. 0, 0, 1, 2,
  66. 0, 1, 2, 3,
  67. 1, 2, 3, 4,
  68. 2, 3, 4, 5,
  69. 3, 4, 5, 6,
  70. 4, 5, 6, 6,
  71. )
  72. def test_geom_linestrips_offset_indexed():
  73. prim = core.GeomLinestrips(core.GeomEnums.UH_static)
  74. prim.add_vertex(0)
  75. prim.add_vertex(1)
  76. prim.close_primitive()
  77. prim.add_vertex(1)
  78. prim.add_vertex(2)
  79. prim.add_vertex(3)
  80. prim.close_primitive()
  81. prim.add_vertex(3)
  82. prim.add_vertex(4)
  83. prim.add_vertex(5)
  84. prim.add_vertex(6)
  85. prim.close_primitive()
  86. prim.offset_vertices(100)
  87. verts = prim.get_vertex_list()
  88. cut = prim.strip_cut_index
  89. assert tuple(verts) == (
  90. 100, 101,
  91. cut,
  92. 101, 102, 103,
  93. cut,
  94. 103, 104, 105, 106,
  95. )
  96. prim.offset_vertices(-100)
  97. verts = prim.get_vertex_list()
  98. cut = prim.strip_cut_index
  99. assert tuple(verts) == (
  100. 0, 1,
  101. cut,
  102. 1, 2, 3,
  103. cut,
  104. 3, 4, 5, 6,
  105. )
  106. prim.offset_vertices(100, 4, 9)
  107. verts = prim.get_vertex_list()
  108. cut = prim.strip_cut_index
  109. assert tuple(verts) == (
  110. 0, 1,
  111. cut,
  112. 1, 102, 103,
  113. cut,
  114. 103, 104, 5, 6,
  115. )
  116. # Automatically upgrade to uint32
  117. prim.offset_vertices(100000)
  118. assert prim.index_type == core.GeomEnums.NT_uint32
  119. verts = prim.get_vertex_list()
  120. cut = prim.strip_cut_index
  121. assert tuple(verts) == (
  122. 100000, 100001,
  123. cut,
  124. 100001, 100102, 100103,
  125. cut,
  126. 100103, 100104, 100005, 100006,
  127. )