test7.nim 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # --- Test 7. Work with 3D nodes. --- #
  2. import
  3. nodesnim,
  4. unittest
  5. suite "Work with 3D nodes.":
  6. test "Setup window":
  7. Window("3D nodes test", 1024, 640)
  8. test "Setup scene":
  9. build:
  10. - Scene main
  11. addMainScene(main)
  12. test "Register events":
  13. addKeyAction("forward", "w")
  14. addKeyAction("back", "s")
  15. addKeyAction("left", "a")
  16. addKeyAction("right", "d")
  17. test "GeometryInstance test":
  18. build:
  19. - GeometryInstance cube:
  20. translation: Vector3(-1, 0, 2)
  21. color: Color(122, 133, 144)
  22. - GeometryInstance cube1:
  23. translation: Vector3(2, 0, -2)
  24. color: Color(144, 144, 122)
  25. - GeometryInstance cube2:
  26. translation: Vector3(1, 2.5, 1)
  27. color: Color(144, 111, 144)
  28. - GeometryInstance sphere:
  29. translation: Vector3(-1, -1, 1)
  30. color: Color(144, 77, 144)
  31. geometry: GEOMETRY_SPHERE
  32. - GeometryInstance cylinder:
  33. translation: Vector3(2, -1, 1)
  34. color: Color(144, 77, 144)
  35. geometry: GEOMETRY_CYLINDER
  36. - GeometryInstance polygon:
  37. translation: Vector3(2, -2, 1)
  38. color: Color(144, 77, 144)
  39. geometry: GEOMETRY_POLYGON
  40. points: @[
  41. Vector3(), Vector3(100, 10, 0), Vector3(0, 10, -10),
  42. Vector3(100, -10, 10), Vector3(100, 10, 0)
  43. ]
  44. getSceneByName("main").addChildren(cube, cube1, cube2, sphere, cylinder, polygon)
  45. test "Camera3D test":
  46. build:
  47. - Node3D root:
  48. call translate(2, 2, -5)
  49. - Camera3D camera:
  50. call:
  51. setCurrent()
  52. changeTarget(root)
  53. root@onInput(self, event):
  54. if event.isInputEventMouseMotion() and event.pressed:
  55. camera.rotate(event.xrel*0.25, -event.yrel*0.25)
  56. root@onProcess(self):
  57. if isActionPressed("left"):
  58. root.translate(camera.right * -0.1)
  59. if isActionPressed("right"):
  60. root.translate(camera.right * 0.1)
  61. if isActionPressed("forward"):
  62. root.translate(camera.front*0.1)
  63. if isActionPressed("back"):
  64. root.translate(camera.front*(-0.1))
  65. getSceneByName("main").addChild(root)
  66. test "Sprite3D test":
  67. build:
  68. - Sprite3D sprite:
  69. call loadTexture("assets/anim/2.jpg", GL_RGB)
  70. call translate(-3, -2, 2)
  71. sprite@onProcess(self):
  72. sprite.rotateY(0.5)
  73. getSceneByName("main").addChild(sprite)
  74. test "Launch window":
  75. windowLaunch()