update
This commit is contained in:
89
ui_script2d/Sources/lnx/UITrait.hx
Normal file
89
ui_script2d/Sources/lnx/UITrait.hx
Normal file
@ -0,0 +1,89 @@
|
||||
package lnx;
|
||||
|
||||
import iron.object.Object;
|
||||
import zui.*;
|
||||
|
||||
class UITrait extends iron.Trait {
|
||||
|
||||
var ui:Zui;
|
||||
var cube:Object;
|
||||
var plane:Object;
|
||||
var move = true;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
// Load font for UI labels
|
||||
iron.data.Data.getFont("font_default.ttf", function(f:kha.Font) {
|
||||
ui = new Zui({font: f});
|
||||
iron.Scene.active.notifyOnInit(sceneInit);
|
||||
});
|
||||
}
|
||||
|
||||
function sceneInit() {
|
||||
// Store references to cube and plane objects
|
||||
cube = iron.Scene.active.getChild("Cube");
|
||||
plane = iron.Scene.active.getChild("Plane");
|
||||
notifyOnRender2D(render2D);
|
||||
notifyOnUpdate(update);
|
||||
}
|
||||
|
||||
function render2D(g:kha.graphics2.Graphics) {
|
||||
g.end();
|
||||
|
||||
// Start with UI
|
||||
ui.begin(g);
|
||||
// Make window
|
||||
if (ui.window(Id.handle(), 20, 20, 230, 600, true)) {
|
||||
// Make panel in this window
|
||||
if (ui.panel(Id.handle({selected: true}), "Menu")) {
|
||||
ui.indent();
|
||||
|
||||
// Scale sliders
|
||||
ui.text("Scale");
|
||||
var sx = ui.slider(Id.handle({value: 1.0}), "X", 0, 2, true);
|
||||
var sy = ui.slider(Id.handle({value: 1.0}), "Y", 0, 2, true);
|
||||
var sz = ui.slider(Id.handle({value: 1.0}), "Z", 0, 2, true);
|
||||
|
||||
// Rotation sliders
|
||||
ui.text("Rotation");
|
||||
var rx = ui.slider(Id.handle(), "X", 0, 3.14);
|
||||
var ry = ui.slider(Id.handle(), "Y", 0, 3.14);
|
||||
var rz = ui.slider(Id.handle(), "Z", 0, 3.14);
|
||||
|
||||
// Move checkbox
|
||||
move = ui.check(Id.handle({selected: move}), "Move");
|
||||
|
||||
// Toggle buttons
|
||||
if (ui.button("Toggle Cube")) {
|
||||
cube.visible = !cube.visible;
|
||||
}
|
||||
|
||||
ui.row([1/2, 1/2]);
|
||||
if (ui.button("Toggle Plane")) {
|
||||
plane.visible = !plane.visible;
|
||||
}
|
||||
if (ui.button("Rotate Plane")) {
|
||||
plane.transform.rotate(iron.math.Vec4.zAxis(), Math.random() * 3.14);
|
||||
}
|
||||
|
||||
ui.unindent();
|
||||
|
||||
// Set cube transform using values set in UI
|
||||
cube.transform.setRotation(rx, ry, rz);
|
||||
cube.transform.scale.set(sx, sy, sz);
|
||||
}
|
||||
}
|
||||
ui.end();
|
||||
|
||||
g.begin(false);
|
||||
}
|
||||
|
||||
function update() {
|
||||
// Translate cube location over time
|
||||
if (move) {
|
||||
cube.transform.loc.x = Math.sin(iron.system.Time.time() * 2);
|
||||
cube.transform.dirty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user