#pragma once #include "core/templates/hash_map.h" #include "generative_grammar/grammar.h" #include "scene/3d/node_3d.h" #include "scene/resources/packed_scene.h" class Generator : public Node3D { GDCLASS(Generator, Node3D); static void _bind_methods(); void initialise_state(); void ready(); protected: void _notification(int what); public: Ref state{}; Rule *rule{ nullptr }; typedef HashMap> TileMap; TileMap tiles{}; float tile_size{ 1.f }; private: GET_SET_FNS(float, tile_size); GET_SET_FNS(Ref, state); GET_SET_REF_FNS(TileMap, tiles); void set_tiles_dict(Dictionary dict); Dictionary get_tiles_dict() const; };