File size: 882 Bytes
30c32c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* eslint-disable no-mixed-operators */
const translateForCamera = (runtime, screen, x, y) => {
    const {pos, scale, dir} = runtime.getCamera(screen);
    const radians = (dir / 180) * Math.PI;
    const sin = Math.sin(radians);
    const cos = Math.cos(radians);
    const offX = x - pos[0];
    const offY = y - pos[1];
    return [
        scale * (offX * cos - offY * sin),
        scale * (offX * sin + offY * cos)
    ];
};

const translateScreenPos = (runtime, screen, x, y) => {
    const {pos, scale, dir} = runtime.getCamera(screen);
    const invScale = 1 / scale;
    const radians = (-dir / 180) * Math.PI;
    const sin = Math.sin(radians);
    const cos = Math.cos(radians);
    return [
        pos[0] + invScale * (x * cos - y * sin),
        pos[1] + invScale * (x * sin + y * cos)
    ];
};

module.exports = {
    translateForCamera,
    translateScreenPos
};