renamed Pos and Pos3

This commit is contained in:
2024-10-14 21:40:26 +02:00
parent 08f41ccb0b
commit e0f8d274e7
25 changed files with 236 additions and 131 deletions

View File

@@ -5,7 +5,7 @@ import lib.KVStore;
import kernel.net.Net;
import kernel.net.INetworkInterface;
import kernel.net.Package;
import lib.Pos3;
import lib.WorldPos;
using tink.CoreApi;
@@ -18,17 +18,17 @@ class GPS {
private static var shouldRespond = true;
private static var shouldDoWholeNumberCheck = true;
private static var posAccuracy = 0; // 0 = unkown, 1 = (ins,best guess), 2 = (stored/manual,should be right), 3 = (gps,confirmed)
private static var cachedPosition:Pos3;
private static var lastPositionResponse:Array<{pos:Pos3, dist:Float}> = [];
private static var cachedPosition:WorldPos;
private static var lastPositionResponse:Array<{pos:WorldPos, dist:Float}> = [];
private static var futureResolve:(pos:Null<Pos3>) -> Void = null;
private static var futureResolve:(pos:Null<WorldPos>) -> Void = null;
@:allow(kernel.Init)
private static function init() {
loadCachedPosition();
}
public static function setManualPosition(pos:Pos3) {
public static function setManualPosition(pos:WorldPos) {
var kvstore = new KVStore("gps");
kvstore.set("mpos", pos);
kvstore.save();
@@ -40,12 +40,12 @@ class GPS {
}
@:allow(kernel.gps.INS)
private static function setINSPosition(pos:Pos3) {
private static function setINSPosition(pos:WorldPos) {
cachedPosition = pos;
posAccuracy = 1;
}
public static function getPosition():Null<Pos3> {
public static function getPosition():Null<WorldPos> {
return cachedPosition;
}
@@ -58,17 +58,17 @@ class GPS {
posAccuracy = 0;
}
public static function locate():Future<Null<Pos3>> {
public static function locate():Future<Null<WorldPos>> {
// TODO: implenet a timeout
// TODO: dont send a request twice if the last one is still pending or we moved
return new Future<Null<Pos3>>((resolve) -> {
return new Future<Null<WorldPos>>((resolve) -> {
futureResolve = resolve;
sendPositionRequest();
return null;
});
}
private static function resolveFuture(pos:Null<Pos3>) {
private static function resolveFuture(pos:Null<WorldPos>) {
futureResolve(pos);
}
@@ -85,8 +85,8 @@ class GPS {
var kvstore = new KVStore("gps");
kvstore.load();
var mPos:Null<Pos3> = kvstore.get("mpos"); // Manual set position
var cPos:Null<Pos3> = kvstore.get("cpos"); // Cached position
var mPos:Null<WorldPos> = kvstore.get("mpos"); // Manual set position
var cPos:Null<WorldPos> = kvstore.get("cpos"); // Cached position
if (mPos != null && cPos != null && mPos == cPos) {
// Both are the same, so we can use the cached position
@@ -163,7 +163,7 @@ class GPS {
}
}
private static function calculatePosition():Null<Pos3> {
private static function calculatePosition():Null<WorldPos> {
if (lastPositionResponse.length < 3)
return null;
@@ -219,7 +219,7 @@ class GPS {
/**
Determines the position(s) of a point given 3 other points and the distance to each of them.
**/
private static function trilateration(p1:Pos3, p2:Pos3, p3:Pos3, r1:Float, r2:Float, r3:Float):Pair<Pos3, Pos3> {
private static function trilateration(p1:WorldPos, p2:WorldPos, p3:WorldPos, r1:Float, r2:Float, r3:Float):Pair<WorldPos, WorldPos> {
var a2b = p2 - p1;
var a2c = p3 - p1;