nodes_test.nim 822 B

12345678910111213141516171819202122232425262728293031323334
  1. # --- Test 8. Make your own node. --- #
  2. import
  3. nodesnim,
  4. nodesnim/runtime/scene_loader, # For runtime load your node from XML scene file.
  5. nodesnim/private,
  6. strutils
  7. type
  8. MyOwnNodeObj* = object of NodeObj # NodeObj/Node2DObj/ControlObj/Node3DObj
  9. property*: int
  10. MyOwnNodeRef* = ref MyOwnNodeObj
  11. proc MyOwnNode*(name: string = "MyOwnNode"): MyOwnNodeRef =
  12. nodepattern(MyOwnNodeRef)
  13. # controlpattern()/node2dpattern()/node3dpattern()
  14. result.property = 100
  15. # For XML scene files.
  16. mkparse(MyOwnNode)
  17. mkattrs attrs(node, value):
  18. "property":
  19. node.MyOwnNodeRef.property = value.parseInt()
  20. build:
  21. - MyOwnNode node:
  22. property: 10
  23. echo node.property
  24. var source = "<MyOwnNode name=\"node1\" property=\"7\"></MyOwnNode>"
  25. echo loadSceneFromString("TestScene", source)[0].MyOwnNodeRef.property