mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Add navmesh support to the new map.
https://github.com/dcs-liberation/dcs_liberation/issues/2039
This commit is contained in:
@@ -6,6 +6,7 @@ import CombatLayer from "../combatlayer";
|
||||
import ControlPointsLayer from "../controlpointslayer";
|
||||
import FlightPlansLayer from "../flightplanslayer";
|
||||
import FrontLinesLayer from "../frontlineslayer";
|
||||
import NavMeshLayer from "../navmesh/NavMeshLayer";
|
||||
import SupplyRoutesLayer from "../supplyrouteslayer";
|
||||
import TgosLayer from "../tgoslayer/TgosLayer";
|
||||
import { CoalitionThreatZones } from "../threatzones";
|
||||
@@ -87,6 +88,12 @@ export default function LiberationMap() {
|
||||
<LayersControl position="topleft">
|
||||
<CoalitionThreatZones blue={true} />
|
||||
<CoalitionThreatZones blue={false} />
|
||||
<LayersControl.Overlay name="Blue navmesh">
|
||||
<NavMeshLayer blue={true} />
|
||||
</LayersControl.Overlay>
|
||||
<LayersControl.Overlay name="Red navmesh">
|
||||
<NavMeshLayer blue={false} />
|
||||
</LayersControl.Overlay>
|
||||
</LayersControl>
|
||||
</MapContainer>
|
||||
);
|
||||
|
||||
33
client/src/components/navmesh/NavMeshLayer.tsx
Normal file
33
client/src/components/navmesh/NavMeshLayer.tsx
Normal file
@@ -0,0 +1,33 @@
|
||||
import { selectNavMeshes } from "../../api/navMeshSlice";
|
||||
import { useAppSelector } from "../../app/hooks";
|
||||
import { LatLng } from "leaflet";
|
||||
import { LayerGroup, Polygon } from "react-leaflet";
|
||||
|
||||
interface NavMeshLayerProps {
|
||||
blue: boolean;
|
||||
}
|
||||
|
||||
export default function NavMeshLayer(props: NavMeshLayerProps) {
|
||||
const meshes = useAppSelector(selectNavMeshes);
|
||||
const mesh = props.blue ? meshes.blue : meshes.red;
|
||||
return (
|
||||
<LayerGroup>
|
||||
{mesh.map((zone, idx) => {
|
||||
const positions = zone.poly.map(([lat, lng]) => new LatLng(lat, lng));
|
||||
return (
|
||||
<Polygon
|
||||
key={idx}
|
||||
positions={positions}
|
||||
color="#000000"
|
||||
weight={1}
|
||||
fill
|
||||
fillColor={zone.threatened ? "#ff0000" : "#00ff00"}
|
||||
fillOpacity={0.1}
|
||||
noClip
|
||||
interactive={false}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</LayerGroup>
|
||||
);
|
||||
}
|
||||
1
client/src/components/navmesh/index.ts
Normal file
1
client/src/components/navmesh/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export { default } from "./NavMeshLayer";
|
||||
Reference in New Issue
Block a user