mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
34 lines
922 B
Python
34 lines
922 B
Python
from __future__ import annotations
|
|
|
|
from typing import Iterator
|
|
|
|
from PySide2.QtCore import Property, QObject, Signal
|
|
|
|
from game import Game
|
|
from game.server.leaflet import LeafletLatLon
|
|
|
|
|
|
class UnculledZone(QObject):
|
|
positionChanged = Signal()
|
|
radiusChanged = Signal()
|
|
|
|
def __init__(self, position: LeafletLatLon, radius: float) -> None:
|
|
super().__init__()
|
|
self._position = position
|
|
self._radius = radius
|
|
|
|
@Property(list, notify=positionChanged)
|
|
def position(self) -> LeafletLatLon:
|
|
return self._position
|
|
|
|
@Property(float, notify=radiusChanged)
|
|
def radius(self) -> float:
|
|
return self._radius
|
|
|
|
@classmethod
|
|
def each_from_game(cls, game: Game) -> Iterator[UnculledZone]:
|
|
for zone in game.get_culling_zones():
|
|
yield UnculledZone(
|
|
zone.latlng().as_list(), game.settings.perf_culling_distance * 1000
|
|
)
|