improcket/js/world/tracer.mjs
2018-03-06 10:35:54 +00:00

51 lines
1.1 KiB
JavaScript

import Body from './body.mjs';
import {modules} from '../data.mjs';
import {playerShip} from './index.mjs';
import {images as assets} from '../assets.mjs';
import {celestials, particles, entities} from './index.mjs';
import * as particle from './particle.mjs';
import * as consts from '../consts.mjs';
import * as events from '../game/events.mjs';
export default class Tracer extends Body {
constructor(ship) {
super(...ship.pos, 0.1);
this.ship = ship;
this.path = [];
}
run(distance) {
this.path = [];
[this.x, this.y] = this.ship.com;
[this.xvel, this.yvel] = [this.ship.xvel, this.ship.yvel];
let dis = 0;
let last = this.pos;
let factor = 5;
for (let i = 0; dis < distance; i++) {
if (this.tickPath(factor)) break;
this.path.push(this.pos);
if (i % 10 === 0) {
let [lx, ly] = last;
dis += Math.sqrt((this.x - lx) ** 2 + (this.y - ly) ** 2);
last = this.pos;
}
if (i > distance * 5) break;
}
[this.x, this.y] = this.ship.com;
}
tick() {
this.run(100);
}
tickPath(speed) {
this.tickMotion(speed);
this.tickGravity(celestials, speed);
return !!this.getCelestialCollision(celestials);
}
}