#include "pch.h" #include "log.h" #include "node_panel_grid.h" #include "canvas.h" #include "app.h" #include "image.h" Node* NodePanelGrid::clone_instantiate() const { return new NodePanelGrid(); } void NodePanelGrid::clone_finalize(Node* dest) const { NodePanelGrid* n = static_cast(dest); n->init_controls(); } void NodePanelGrid::init() { init_template("tpl-panel-grid"); init_controls(); } void NodePanelGrid::init_controls() { m_groud_opacity = find("grid-ground-opacity"); m_groud_scale = find("grid-ground-scale"); m_groud_value = find("grid-ground-value"); m_groud_height = find("grid-ground-height"); //m_box_opacity = find("grid-box-opacity"); //m_box_width = find("grid-box-width"); //m_box_height = find("grid-box-height"); //m_box_depth = find("grid-box-depth"); auto update_hm = [this](Node* target, float v) { m_hm_plane.create(1, 1, m_hm_image, -m_hm_height->get_value()); }; m_hm_preview = find("grid-heightmap-preview"); m_hm_load = find("grid-heightmap-load"); m_hm_offset = find("grid-heightmap-offset"); m_hm_height = find("grid-heightmap-height"); m_hm_height->on_value_changed = update_hm; m_hm_preview->SetHeight(0); //m_hm_plane.create(1, 1); m_hm_load->on_click = [this](Node*) { App::I.pick_image([this](std::string path) { ui::Image img; if (img.load_file(path)) { m_hm_image = img.resize(128, 128); m_hm_preview->tex.create(m_hm_image); m_hm_preview->tex.create_mipmaps(); auto sz = m_hm_preview->tex.size(); m_hm_preview->SetAspectRatio(sz.x / sz.y); m_hm_plane.create(1, 1, m_hm_image, -m_hm_height->get_value()); m_hm_preview->SetHeight(100); } }); }; }