text: import GameEngine from './game-engine.js'
  import GameObjectComponent from './game-object-component.js'
  
  import * as THREE from '../vendor/three.js/build/three.module.js';
  
  export default class GameObject {
  	constructor() {
  		/** @type {GameEngine} */
  		this.gameEngine = null
  		this.components = [];
  		this.object3D = new THREE.Object3D();
  	}
  
  	/////////////////////////////////////////////////////////////////////////////////////
  	/////////////////////////////////////////////////////////////////////////////////////
  	//	
  	/////////////////////////////////////////////////////////////////////////////////////
  	/////////////////////////////////////////////////////////////////////////////////////
  
  	addComponent(ComponentType, ...args) {
  		const component = new ComponentType(this, ...args);
  		this.components.push(component);
  		return component;
  	}
  	removeComponent(component) {
  		const index = this.components.indexOf(component);
  		if (index === -1) return
  		this.components.splice(index, 1);
  	}
  	getComponent(ComponentType) {
  		return this.components.find(c => c instanceof ComponentType);
  	}
  
  	/////////////////////////////////////////////////////////////////////////////////////
  	/////////////////////////////////////////////////////////////////////////////////////
  	//	
  	/////////////////////////////////////////////////////////////////////////////////////
  	/////////////////////////////////////////////////////////////////////////////////////
  
  	update() {
  		let components = [...this.components]
  		for (const component of components) {
  			component.update();
  		}
  	}
  }