gravity/sim-tools.js
2025-12-31 18:41:50 -06:00

68 lines
1.7 KiB
JavaScript

import { Overlay } from './overlay.js';
import { Pointer } from './pointer.js';
import { ModeSwitch } from './tool/modes.js';
import { OptionsTool } from './tool/options.js';
import { PlayPause } from './tool/play-pause.js';
import { Zoom } from './tool/zoom.js';
import { UtilityTool } from './tool/utility.js';
import { Toolbar } from './toolbar.js';
import { ToolbarGroup } from './toolbar-group.js';
export function initializeTools(sim) {
sim.toolbars = {
tools: new Toolbar(sim, 'Tools'),
modes: new Toolbar(sim, 'Modes'),
utils: new Toolbar(sim, 'Utils', { expanded: false }),
options: new Toolbar(sim, 'Options'),
params: new Toolbar(sim, 'Params'),
debug: new Toolbar(sim, 'Debug', { expanded: false }),
};
const { tools, modes, options, params, debug, utils } = sim.toolbars;
sim.toolbarGroups = {
left: new ToolbarGroup(sim)
.addToolbar(tools)
.addToolbar(modes)
.addToolbar(utils),
right: new ToolbarGroup(sim).topRight()
.addToolbar(options)
.addToolbar(params)
.addToolbar(debug),
};
sim.overlay = new Overlay(sim);
sim.pointer = new Pointer(sim);
// Configure toolbars
// Primary
tools.addTool(new Zoom(tools));
tools.addTool(new PlayPause(tools));
// Secondary
modes.addTool(new ModeSwitch(modes));
// Utility
utils.addTool(new UtilityTool(utils));
// Options
options.addTool(new OptionsTool(options, [
'pauseDuring',
'display',
'collision'
]));
// Parameters
params.addTool(new OptionsTool(params, [
'param'
]));
// Debug
debug.addTool(new OptionsTool(debug, [
'debug'
]));
for (const id in sim.toolbars) {
const toolbar = sim.toolbars[id];
toolbar.applyExpanded();
}
}