import {Display} from '../display.js'; import {Tool} from '../tool.js'; import {div, sub} from '../vector.js'; export class ObjectTool extends Tool { selected = undefined; display = undefined; textEl = undefined; setContainer(container) { super.setContainer(container); } constructor() { super(); this.display = new Display(); this.display.canvas.width = 150; this.display.canvas.height = 150; this.textEl = document.createElement('div'); this.div.appendChild(this.textEl); this.div.appendChild(this.display.canvas); } frame() { this.display.frame(); const obj = this.sim.select.selectedSingle; this.textEl.innerHTML = `obj id: ${obj?.id}`; if (!obj) return; // Show object details // Distance from center of screen // Render the object // Set up this.display.viewOrigin const {radius, position} = obj; const widthRatio = Math.abs(2 * radius) / this.display.canvas.width; const heightRatio = Math.abs(2 * radius) / this.display.canvas.height; const ratio = Math.max(widthRatio, heightRatio) * 2; this.display.scalePower = Math.log2(1 / ratio); this.display.viewOrigin = sub(position, div({x: this.display.width, y: this.display.height}, 2)); obj.drawObject(this.display); obj.drawArrows(this.display); } }