Add rotation view and path prediction toggles
This commit is contained in:
parent
ce6a707526
commit
5b861cc341
12 changed files with 195 additions and 19 deletions
51
js/world/tracer.mjs
Normal file
51
js/world/tracer.mjs
Normal file
|
@ -0,0 +1,51 @@
|
|||
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);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue