-- @/=[C]:-1
function input(...)
function C:input()
if not self.mouseInfo.valid then return end
editor.updateAxisGizmo(function() self:beginDrag() end, function() self:endDragging() end, function() self:dragging() end)
self:input()
end
function C:input(mouseInfo)
if not self.startingPosition then return end
self:input(mouseInfo)
-- Search input (stretchy).
im.TableSetColumnIndex(0)
editor.updateAxisGizmo(function() self:beginDrag() end, function() self:endDragging() end, function() self:dragging() end)
self:input()
end
function C:input()
if not self.mouseInfo.valid then return end
editor.updateAxisGizmo(function() self:beginDrag() end, function() self:endDragging() end, function() self:dragging() end)
self:input()
end
function C:input()
if not self.mouseInfo.valid then return end
function C:input(mouseInfo)
-- No input handling needed for trails
self:input(mouseInfo)
function C:input(mouseInfo)
if not self.boundary then return end
editor.drawAxisGizmo()
self:input(mouseInfo)
self:updateTransform()
move_lr: "move_lr",
/** Move focus vertically (up/down) using a scalar input (usually radial menu) */
focus_ud: "focus_ud",
focus_ud: "focus_ud",
/** Move focus horizontally (left/right) using a scalar input (usually radial menu) */
focus_lr: "focus_lr",
local function input(lbl, key, isint, step, nolabel)
if not step then step = 1 end
columnRight(164)
input('Buldings #', 'build_gen', true)
input('Patterns #', 'build_pattern', true)
input('Buldings #', 'build_gen', true)
input('Patterns #', 'build_pattern', true)
input('Area radius', 'build_radius', true)
input('Patterns #', 'build_pattern', true)
input('Area radius', 'build_radius', true)
im.NextColumn()
input('Buldings #', 'build_gen', true)
im.NextColumn()
-- columnRight(164)
input('Patterns #', 'build_patt', true)
im.NextColumn()
if injunction then
-- input('Branches', 'branch_n', true)
-- slider('Radius', 'exit_r', {5, 50})
elseif W.ifForest({'pilaster'}) then
input('Sections', 'pilaster_nsplit', true)
--[[
im.NextColumn()
input('a', 'pilaster_ind0', true, nil, true)
im.NextColumn()
im.NextColumn()
input('b', 'pilaster_ind1', true, nil, true)
im.NextColumn()
if true or U._PRD == 0 then
input('c', 'pilaster_ind2', true, nil, true)
end
im.NextColumn()
input('a', 'balc_ind0', true, nil, true)
im.NextColumn()
im.NextColumn()
input('b', 'balc_ind1', true, nil, true)
im.NextColumn()
im.NextColumn()
input('c', 'balc_ind2', true, nil, true)
elseif W.ifForest({'door'}) then
input('Position', 'door_ind', true)
slider('Bottom margin', 'door_bot', {0.1, 2})
slider('Bottom margin', 'door_bot', {0.1, 2})
-- input('Bottom margin', 'door_bot')
elseif W.ifForest({'pillar'}) then
-- im.Indent(10)
input('Z-Span', 'pillar_spany', true)
-- slider('X', 'xpos', {-4000,4000})
input('X', 'xpos')
-- im.NextColumn()
-- im.NextColumn()
input('Y', 'ypos')
-- im.Columns(0)
-- im.Columns(0)
input('Z', 'zpos', nil, 0.1)
slider('Rotation', 'building_ang', {-360, 360})
input('Floors', 'n_floors', true)
slider('Ex/In-trude', 'floor_inout', {-10, 10})
-- input('Height', 'height_floor')
-- rotate
if U._PRD == 0 then
input('Rotation fraction (of 2Pi)', 'ang_fraction', true)
end
-- if W.out.inaxis then
-- input('Flip around', 'flip_axis', {-360, 360}, true)
-- end
if im.TreeNode1('Patches') then
input('Z-Span', 'wall_spany', true)
-- input('X-Span', 'wall_spanx', true)
input('Z-Span', 'wall_spany', true)
-- input('X-Span', 'wall_spanx', true)
end
-- button('Rotate', 'ang_top', 'rotate_left', color)
-- input('Rotation', 'ang_top', true)
-- slider('Rotation', 'ang_top', {-180, 180}, true)
elseif W.ui.injunction then
input('Branches', 'branch_n', true)
slider('Exit radius', 'exit_r', {5, 50})
if im.TreeNode1('Patches') then
input('Z-Span', 'wall_spany', true)
-- input('X-Span', 'wall_spanx', true)
input('Z-Span', 'wall_spany', true)
-- input('X-Span', 'wall_spanx', true)
im.TreePop()
self.mouseInfo = mouseInfo
self:input()
end
function C:input()
if not self.mouseInfo.valid then
if self.elementEditor.input then
self.elementEditor:input(self.mouseInfo)
end
editor.updateAxisGizmo(function() self:beginDrag() end, function() self:endDragging() end, function() self:dragging() end)
self:input()
end
function C:input()
if not self.mouseInfo.valid then return end
if (inputs) return inputs[watchId];
return input(scope, value, locals);
};
// If a control is suffering from bad input (due to native validators), browsers discard its
// value, so it may be necessary to revalidate (by calling $setViewValue again) even if the
function C:input(mouseInfo)
if not editor.isAxisGizmoHovered() and mouseInfo.down and not editor.keyModifiers.shift then
function C:input(mouseInfo)
if not self.path then return end
self:input(mouseInfo)
-- Only update transform when not dragging to avoid feedback loop
editor.updateAxisGizmo(function() self:beginDrag() end, function() self:endDragging() end, function() self:dragging() end)
self:input()
end
function C:input()
if not self.mouseInfo.valid then return end
'move_lr': 'move_lr',
/** Move focus vertically (up/down) using a scalar input (usually radial menu) */
'focus_ud': 'focus_ud',
'focus_ud': 'focus_ud',
/** Move focus horizontally (left/right) using a scalar input (usually radial menu) */
'focus_lr': 'focus_lr',
// An input's value counts if its length > 0,
// or if the input's validity state says it has bad input (eg string in a number input)
containerCtrl.setHasValue(element.val().length > 0 || (element[0].validity||{}).badInput);
// The select counts as having a value if one or more options are selected,
// or if the input's validity state says it has bad input (eg string in a number input)
containerCtrl && containerCtrl.setHasValue(selectMenuCtrl.selectedLabels().length > 0 || (element[0].validity || {}).badInput);