test_geom_primitives.py 3.6 KB

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