node.h 696 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. // size_t
  3. #include <stddef.h>
  4. class Node {
  5. public:
  6. virtual ~Node() noexcept = default;
  7. virtual void init() noexcept = 0;
  8. virtual void update(unsigned long deltaMillis);
  9. };
  10. class NodeList {
  11. public:
  12. virtual ~NodeList() noexcept = default;
  13. virtual size_t size() const noexcept = 0;
  14. virtual Node* get(size_t index) noexcept {
  15. return nullptr;
  16. }
  17. virtual Node const* get(size_t index) const noexcept {
  18. return const_cast<NodeList*>(this)->get(index);
  19. }
  20. };
  21. class AbstractNode : public Node {
  22. public:
  23. void init() noexcept override;
  24. void update(unsigned long deltaMillis) noexcept override;
  25. protected:
  26. virtual NodeList& getChildren() noexcept = 0;
  27. };