30 lines
683 B
C++
30 lines
683 B
C++
#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<Sentence> state{};
|
|
Rule *rule{ nullptr };
|
|
typedef HashMap<Symbol, Ref<PackedScene>> TileMap;
|
|
TileMap tiles{};
|
|
float tile_size{ 1.f };
|
|
|
|
private:
|
|
GET_SET_FNS(float, tile_size);
|
|
GET_SET_FNS(Ref<Sentence>, state);
|
|
GET_SET_REF_FNS(TileMap, tiles);
|
|
void set_tiles_dict(Dictionary dict);
|
|
Dictionary get_tiles_dict() const;
|
|
};
|