summaryrefslogtreecommitdiff
path: root/editor.cpp
blob: b4555f3c1533831270bfd83113972a5d55e92a68 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "debugdraw.hpp"
#include "editor.hpp"
#include "model.hpp"
#include "ui.hpp"

static struct {
	UI* ui;
	UI::Toolbar* toolbar;
	UI::Button* mat_btn;
	UI::Modal* mat_win;
	Model_Instance* selected_inst;
	int selected_mesh;
} editor;

static int mat_win_handler(UI::Element* e, const UI::Message& m) {
	(void)e;
	if (m.type == UI::Message::Type::destroy)
		editor.mat_btn->enable();
	return 0;
}

static int mat_btn_handler(UI::Element* e, const UI::Message& m) {
	(void)e;
	if (m.type == UI::Message::Type::click) {
		editor.mat_win = editor.ui->create_element<UI::Modal>(
			editor.ui->root,
			"Material Editor"
		);
		editor.mat_win->handler = mat_win_handler;
		editor.mat_btn->disable();
	}
	return 0;
}

void init_editor(UI* ui) {
	editor.ui = ui;
	editor.toolbar = ui->create_element<UI::Toolbar>(ui->root);
	editor.mat_btn = ui->create_element<UI::Button>(
		editor.toolbar,
		"Edit Material"
	);
	editor.mat_win = 0;
	editor.mat_btn->handler = mat_btn_handler;
}

void deinit_editor() {

}

void editor_on_select(Model_Instance* instance, int mesh) {
	editor.selected_inst = instance;
	editor.selected_mesh = mesh;
}

void editor_draw(Line_Renderer& lr) {
	if (editor.selected_inst) {
		lr.add_box(
			editor.selected_inst->bounds[editor.selected_mesh]
		);
	}
}