test_egg_vertex_uv.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import pytest
  2. from panda3d import core
  3. # Skip these tests if we can't import egg.
  4. egg = pytest.importorskip("panda3d.egg")
  5. def read_egg_vertex(string):
  6. """Reads an EggVertex from a string."""
  7. data = "<VertexPool> pool { <Vertex> 1 { %s } }" % (string)
  8. stream = core.StringStream(data.encode('utf-8'))
  9. data = egg.EggData()
  10. assert data.read(stream)
  11. pool, = data.get_children()
  12. return pool.get_vertex(1)
  13. def test_egg_vertex_uv_empty():
  14. vertex = read_egg_vertex("""
  15. 0 0 0
  16. <UV> {
  17. 0 0
  18. }
  19. """)
  20. obj = vertex.get_uv_obj("")
  21. assert not obj.has_tangent()
  22. assert not obj.has_tangent4()
  23. assert '<Tangent>' not in str(obj)
  24. def test_egg_vertex_tangent():
  25. vertex = read_egg_vertex("""
  26. 0 0 0
  27. <UV> {
  28. 0 0
  29. <Tangent> { 2 3 4 }
  30. }
  31. """)
  32. obj = vertex.get_uv_obj("")
  33. assert obj.has_tangent()
  34. assert not obj.has_tangent4()
  35. assert obj.get_tangent() == (2, 3, 4)
  36. assert obj.get_tangent4() == (2, 3, 4, 1)
  37. assert '{ 2 3 4 }' in str(obj)
  38. def test_egg_vertex_tangent4_pos():
  39. vertex = read_egg_vertex("""
  40. 0 0 0
  41. <UV> {
  42. 0 0
  43. <Tangent> { 2 3 4 1 }
  44. }
  45. """)
  46. obj = vertex.get_uv_obj("")
  47. assert obj.has_tangent()
  48. assert obj.has_tangent4()
  49. assert obj.get_tangent() == (2, 3, 4)
  50. assert obj.get_tangent4() == (2, 3, 4, 1)
  51. assert '{ 2 3 4 1 }' in str(obj)
  52. def test_egg_vertex_tangent4_neg():
  53. vertex = read_egg_vertex("""
  54. 0 0 0
  55. <UV> {
  56. 0 0
  57. <Tangent> { 2 3 4 -1 }
  58. }
  59. """)
  60. obj = vertex.get_uv_obj("")
  61. assert obj.has_tangent()
  62. assert obj.has_tangent4()
  63. assert obj.get_tangent() == (2, 3, 4)
  64. assert obj.get_tangent4() == (2, 3, 4, -1)
  65. assert '{ 2 3 4 -1 }' in str(obj)