mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
Fixed elevation calculations
This commit is contained in:
1
client/@types/olympus/index.d.ts
vendored
1
client/@types/olympus/index.d.ts
vendored
@@ -1957,6 +1957,7 @@ declare module "server/servermanager" {
|
||||
blue: number;
|
||||
red: number;
|
||||
}, eras: string[], setupTime: number, callback?: CallableFunction): void;
|
||||
reloadDatabases(callback?: CallableFunction): void;
|
||||
startUpdate(): void;
|
||||
refreshAll(): void;
|
||||
checkSessionHash(newSessionHash: string): void;
|
||||
|
||||
5420
client/package-lock.json
generated
5420
client/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -258,6 +258,10 @@ export class DatabaseManagerPlugin implements OlympusPlugin {
|
||||
this.#app?.getHelicopterDatabase().load(() => {});
|
||||
this.#app?.getGroundUnitDatabase().load(() => {});
|
||||
this.#app?.getNavyUnitDatabase().load(() => {});
|
||||
|
||||
this.#app?.getServerManager().reloadDatabases(() => {
|
||||
this.#app?.getPopupsManager().get("infoPopup")?.setText("Olympus core databases reloaded");
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -282,6 +286,10 @@ export class DatabaseManagerPlugin implements OlympusPlugin {
|
||||
this.#app?.getNavyUnitDatabase().load(() => {
|
||||
this.#loadDatabases();
|
||||
|
||||
this.#app?.getServerManager().reloadDatabases(() => {
|
||||
this.#app?.getPopupsManager().get("infoPopup")?.setText("Olympus core databases reloaded");
|
||||
})
|
||||
|
||||
this.#hideAll();
|
||||
this.#aircraftEditor.show();
|
||||
this.#button1.classList.add("selected");
|
||||
@@ -309,6 +317,10 @@ export class DatabaseManagerPlugin implements OlympusPlugin {
|
||||
this.#app?.getNavyUnitDatabase().load(() => {
|
||||
this.#loadDatabases();
|
||||
|
||||
this.#app?.getServerManager().reloadDatabases(() => {
|
||||
this.#app?.getPopupsManager().get("infoPopup")?.setText("Olympus core databases reloaded");
|
||||
})
|
||||
|
||||
this.#hideAll();
|
||||
this.#aircraftEditor.show();
|
||||
this.#button1.classList.add("selected");
|
||||
|
||||
@@ -275,7 +275,9 @@
|
||||
"name": "Desert",
|
||||
"countries": "All"
|
||||
}
|
||||
}
|
||||
},
|
||||
"barrelHeight": 1.25,
|
||||
"muzzleVelocity": 900
|
||||
},
|
||||
"BMP-1": {
|
||||
"name": "BMP-1",
|
||||
@@ -451,7 +453,9 @@
|
||||
"name": "Desert",
|
||||
"countries": "All"
|
||||
}
|
||||
}
|
||||
},
|
||||
"barrelHeight": 1.95,
|
||||
"muzzleVelocity": 970
|
||||
},
|
||||
"BMP-3": {
|
||||
"name": "BMP-3",
|
||||
@@ -901,7 +905,9 @@
|
||||
"name": "Desert",
|
||||
"countries": "All"
|
||||
}
|
||||
}
|
||||
},
|
||||
"barrelHeight": 2.35,
|
||||
"muzzleVelocity": 1440
|
||||
},
|
||||
"Grad-URAL": {
|
||||
"name": "Grad-URAL",
|
||||
@@ -2075,7 +2081,7 @@
|
||||
"filename": "",
|
||||
"type": "Infantry",
|
||||
"enabled": true,
|
||||
"muzzleVelocity": 860,
|
||||
"muzzleVelocity": 900,
|
||||
"barrelHeight": 0.9
|
||||
},
|
||||
"KAMAZ Truck": {
|
||||
@@ -4521,7 +4527,9 @@
|
||||
"name": "GRC_Winter",
|
||||
"countries": "All"
|
||||
}
|
||||
}
|
||||
},
|
||||
"muzzleVelocity": 900,
|
||||
"barrelHeight": 0.9
|
||||
},
|
||||
"Soldier M249": {
|
||||
"name": "Soldier M249",
|
||||
|
||||
@@ -605,7 +605,7 @@ export class Map extends L.Map {
|
||||
}
|
||||
}
|
||||
else if (selectedUnitTypes.length === 1 && ["GroundUnit", "NavyUnit"].includes(selectedUnitTypes[0])) {
|
||||
if (selectedUnits.every((unit: Unit) => { return ["Gun Artillery", "Rocket Artillery", "Infantry", "IFV", "Tank", "Cruiser", "Destroyer", "Frigate"].includes(unit.getType()) })) {
|
||||
if (selectedUnits.every((unit: Unit) => { return ["AAA", "Gun Artillery", "Rocket Artillery", "Infantry", "IFV", "Tank", "Cruiser", "Destroyer", "Frigate"].includes(unit.getType()) })) {
|
||||
options["fire-at-area"] = { text: "Fire at area", tooltip: "Fire at a large area" };
|
||||
options["simulate-fire-fight"] = { text: "Simulate fire fight", tooltip: "Simulate a fire fight by shooting randomly in a certain large area" };
|
||||
}
|
||||
|
||||
@@ -356,6 +356,11 @@ export class ServerManager {
|
||||
this.PUT(data, callback);
|
||||
}
|
||||
|
||||
reloadDatabases(callback: CallableFunction = () => {}) {
|
||||
var data = { "reloadDatabases": {} };
|
||||
this.PUT(data, callback);
|
||||
}
|
||||
|
||||
startUpdate() {
|
||||
window.setInterval(() => {
|
||||
if (!this.getPaused()) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Marker, LatLng, Polyline, Icon, DivIcon, CircleMarker, Map, Point } from 'leaflet';
|
||||
import { getApp } from '..';
|
||||
import { enumToCoalition, enumToEmissioNCountermeasure, getMarkerCategoryByName, enumToROE, enumToReactionToThreat, enumToState, getUnitDatabaseByCategory, mToFt, msToKnots, rad2deg, bearing, deg2rad, ftToM } from '../other/utils';
|
||||
import { enumToCoalition, enumToEmissioNCountermeasure, getMarkerCategoryByName, enumToROE, enumToReactionToThreat, enumToState, getUnitDatabaseByCategory, mToFt, msToKnots, rad2deg, bearing, deg2rad, ftToM, getGroundElevation } from '../other/utils';
|
||||
import { CustomMarker } from '../map/markers/custommarker';
|
||||
import { SVGInjector } from '@tanem/svg-injector';
|
||||
import { UnitDatabase } from './databases/unitdatabase';
|
||||
@@ -723,8 +723,20 @@ export class Unit extends CustomMarker {
|
||||
getApp().getServerManager().fireAtArea(this.ID, latlng);
|
||||
}
|
||||
|
||||
simulateFireFight(latlng: LatLng, groundElevation: number | null) {
|
||||
getApp().getServerManager().simulateFireFight(this.ID, latlng, groundElevation?? 0);
|
||||
simulateFireFight(latlng: LatLng, targetGroundElevation: number | null) {
|
||||
getGroundElevation(this.getPosition(), (response: string) => {
|
||||
var unitGroundElevation: number | null = null;
|
||||
try {
|
||||
unitGroundElevation = parseFloat(response);
|
||||
} catch {
|
||||
console.log("Simulate fire fight: could not retrieve ground elevation")
|
||||
}
|
||||
|
||||
/* DCS and SRTM altitude data is not exactly the same so to minimize error we use SRTM only to compute relative elevation difference */
|
||||
var altitude = this.getPosition().alt;
|
||||
if (altitude !== undefined && targetGroundElevation !== null && unitGroundElevation !== null)
|
||||
getApp().getServerManager().simulateFireFight(this.ID, latlng, altitude + targetGroundElevation - unitGroundElevation);
|
||||
});
|
||||
}
|
||||
|
||||
/***********************************************/
|
||||
|
||||
Reference in New Issue
Block a user