import { Transform } from './transform.js'; import { Matrix } from './matrix.js'; import { getConfig } from './config.js'; export class Entity { constructor() { this.transform = new Transform(); this.boundingBox = { width: 0, height: 0 }; } draw(ctx, camera) { const config = getConfig(); const viewMatrix = camera.getViewMatrix(); const worldMatrix = this.transform.getWorldMatrix(); const finalMatrix = Matrix.multiply(worldMatrix, viewMatrix); const position = Matrix.transformPoint(finalMatrix, { x: 0, y: 0, z: 0 }); const scale = this.transform.scale.x * camera.scale; // Draw entity as a simple red semi-transparent rectangle const width = this.boundingBox.width * scale; const height = this.boundingBox.height * scale; ctx.fillStyle = 'rgba(255, 0, 0, 0.2)'; ctx.fillRect( position.x - width / 2, position.y - height / 2, width, height ); // Draw debug bounding box if enabled if (config.debug.showBoundingBoxes) { ctx.save(); ctx.strokeStyle = 'red'; ctx.lineWidth = 1; ctx.strokeRect( position.x - width / 2, position.y - height / 2, width, height ); ctx.restore(); } } // Override this in derived classes drawEntity(ctx, position, scale) { } }