-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.ts
76 lines (66 loc) · 2.72 KB
/
main.ts
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { OutSim, OutSimPack2, OutSimWheel } from 'node-insim';
const outSim = new OutSim(10000);
console.log('Connecting...');
outSim.connect({
Host: '127.0.0.1',
Port: 30000,
OutSimOpts: 0x1ff, // This value needs to match the "OutSim Opts" value in cfg.txt
});
outSim.on('connect', () => {
console.log('Connected');
});
outSim.on('disconnect', () => {
console.log('Disconnected');
});
outSim.on('timeout', () => {
console.log('Timed out');
process.exit(1);
});
outSim.on('packet', (data) => {
if (!(data instanceof OutSimPack2)) {
return;
}
console.clear();
row('AngVel', formatVector(data.OSMain.AngVel));
row('Heading', formatNumber(data.OSMain.Heading));
row('Pitch', formatNumber(data.OSMain.Pitch));
row('Roll', formatNumber(data.OSMain.Roll));
row('Accel', formatVector(data.OSMain.Accel));
row('Vel', formatVector(data.OSMain.Vel));
row('Pos', formatVector(data.OSMain.Pos));
row('Throttle', formatNumber(data.OSInputs.Throttle));
row('Brake', formatNumber(data.OSInputs.Brake));
row('InputSteer', formatNumber(data.OSInputs.InputSteer));
row('Clutch', formatNumber(data.OSInputs.Clutch));
row('Handbrake', formatNumber(data.OSInputs.Handbrake));
row('Gear', formatNumber(data.Gear));
row('EngineAngVel', formatNumber(data.EngineAngVel));
row('MaxTorqueAtVel', formatNumber(data.MaxTorqueAtVel));
row('CurrentLapDist', formatNumber(data.CurrentLapDist));
row('IndexedDistance', formatNumber(data.IndexedDistance));
data.OSWheels.forEach((wheel: OutSimWheel, index: number) => {
row(`OSWheels[${index}] - SuspDeflect`, formatNumber(wheel.SuspDeflect));
row(`OSWheels[${index}] - Steer`, formatNumber(wheel.Steer));
row(`OSWheels[${index}] - XForce`, formatNumber(wheel.XForce));
row(`OSWheels[${index}] - YForce`, formatNumber(wheel.YForce));
row(`OSWheels[${index}] - VerticalLoad`, formatNumber(wheel.VerticalLoad));
row(`OSWheels[${index}] - AngVel`, formatNumber(wheel.AngVel));
row(
`OSWheels[${index}] - LeanRelToRoad`,
formatNumber(wheel.LeanRelToRoad),
);
row(`OSWheels[${index}] - SlipFraction`, formatNumber(wheel.SlipFraction));
row(`OSWheels[${index}] - SlipRatio`, formatNumber(wheel.SlipRatio));
row(`OSWheels[${index}] - TanSlipAngle`, formatNumber(wheel.TanSlipAngle));
});
row('SteerTorque', formatNumber(data.SteerTorque));
});
const formatVector = (value: number[]) =>
value.map((v) => formatNumber(v)).join('');
const formatNumber = (value: number) => value.toString().padStart(25);
const formatLabel = (value: string) => `${value}:`.toString().padEnd(28);
const row = (label: string, data: string) =>
console.log(`${formatLabel(label)} ${data}`);
process.on('uncaughtException', (error) => {
console.log(error);
});