nodes_test.nim 802 B

123456789101112131415161718192021222324252627282930313233
  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. strutils
  6. type
  7. MyOwnNodeObj* = object of NodeObj # NodeObj/Node2DObj/ControlObj/Node3DObj
  8. property*: int
  9. MyOwnNodeRef* = ref MyOwnNodeObj
  10. proc MyOwnNode*(name: string = "MyOwnNode"): MyOwnNodeRef =
  11. nodepattern(MyOwnNodeRef)
  12. # controlpattern()/node2dpattern()/node3dpattern()
  13. result.property = 100
  14. # For XML scene files.
  15. mkparse(MyOwnNode)
  16. mkattrs attrs(node, value):
  17. "property":
  18. node.MyOwnNodeRef.property = value.parseInt()
  19. build:
  20. - MyOwnNode node:
  21. property: 10
  22. echo node.property
  23. var source = "<MyOwnNode name=\"node1\" property=\"7\"></MyOwnNode>"
  24. echo loadSceneFromString("TestScene", source)[0].MyOwnNodeRef.property