test8.nim 790 B

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