mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Rotate ground-units as in the campaign miz
This implements a logic to rotate groups which are generated from templates like the origin (ground unit) which was placed by the campaign designer
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import math
|
||||
|
||||
from dcs import Point
|
||||
from game.utils import Heading
|
||||
|
||||
@@ -16,3 +18,12 @@ class PointWithHeading(Point):
|
||||
p.y = point.y
|
||||
p.heading = heading
|
||||
return p
|
||||
|
||||
def rotate(self, origin: Point, heading: Heading) -> None:
|
||||
"""Rotates the Point by a given angle clockwise around the origin"""
|
||||
ox, oy = origin.x, origin.y
|
||||
px, py = self.x, self.y
|
||||
radians = heading.radians
|
||||
|
||||
self.x = ox + math.cos(radians) * (px - ox) - math.sin(radians) * (py - oy)
|
||||
self.y = oy + math.sin(radians) * (px - ox) + math.cos(radians) * (py - oy)
|
||||
|
||||
@@ -472,12 +472,14 @@ class LhaGroundObject(GenericCarrierGroundObject):
|
||||
|
||||
|
||||
class MissileSiteGroundObject(TheaterGroundObject):
|
||||
def __init__(self, name: str, position: Point, control_point: ControlPoint) -> None:
|
||||
def __init__(
|
||||
self, name: str, position: Point, heading: Heading, control_point: ControlPoint
|
||||
) -> None:
|
||||
super().__init__(
|
||||
name=name,
|
||||
category="missile",
|
||||
position=position,
|
||||
heading=Heading.from_degrees(0),
|
||||
heading=heading,
|
||||
control_point=control_point,
|
||||
sea_object=False,
|
||||
)
|
||||
@@ -534,13 +536,14 @@ class SamGroundObject(IadsGroundObject):
|
||||
self,
|
||||
name: str,
|
||||
position: Point,
|
||||
heading: Heading,
|
||||
control_point: ControlPoint,
|
||||
) -> None:
|
||||
super().__init__(
|
||||
name=name,
|
||||
category="aa",
|
||||
position=position,
|
||||
heading=Heading.from_degrees(0),
|
||||
heading=heading,
|
||||
control_point=control_point,
|
||||
sea_object=False,
|
||||
)
|
||||
@@ -599,13 +602,14 @@ class VehicleGroupGroundObject(TheaterGroundObject):
|
||||
self,
|
||||
name: str,
|
||||
position: Point,
|
||||
heading: Heading,
|
||||
control_point: ControlPoint,
|
||||
) -> None:
|
||||
super().__init__(
|
||||
name=name,
|
||||
category="armor",
|
||||
position=position,
|
||||
heading=Heading.from_degrees(0),
|
||||
heading=heading,
|
||||
control_point=control_point,
|
||||
sea_object=False,
|
||||
)
|
||||
@@ -624,13 +628,14 @@ class EwrGroundObject(IadsGroundObject):
|
||||
self,
|
||||
name: str,
|
||||
position: Point,
|
||||
heading: Heading,
|
||||
control_point: ControlPoint,
|
||||
) -> None:
|
||||
super().__init__(
|
||||
name=name,
|
||||
category="ewr",
|
||||
position=position,
|
||||
heading=Heading.from_degrees(0),
|
||||
heading=heading,
|
||||
control_point=control_point,
|
||||
sea_object=False,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user