Module Zone

This module contains the ZONE classes, inherited from Zone#ZONE_BASE.

There are essentially two core functions that zones accomodate:

  • Test if an object is within the zone boundaries.
  • Provide the zone behaviour. Some zones are static, while others are moveable.

The object classes are using the zone classes to test the zone boundaries, which can take various forms:

  • Test if completely within the zone.
  • Test if partly within the zone (for Group#GROUP objects).
  • Test if not in the zone.
  • Distance to the nearest intersecting point of the zone.
  • Distance to the center of the zone.
  • ...

Each of these ZONE classes have a zone name, and specific parameters defining the zone type:


1) Zone#ZONE_BASE class, extends Base#BASE

This class is an abstract BASE class for derived classes, and is not meant to be instantiated.

1.1) Each zone has a name:

1.2) Each zone implements two polymorphic functions defined in Zone#ZONE_BASE:

1.3) A zone has a probability factor that can be set to randomize a selection between zones:

1.4) A zone manages Vectors:

1.5) A zone has a bounding square:

1.6) A zone can be marked:


2) Zone#ZONE_RADIUS class, extends Zone#ZONE_BASE

The ZONERADIUS class defined by a zone name, a location and a radius. This class implements the inherited functions from Zone#ZONEBASE taking into account the own zone format and properties.

2.1) Zone#ZONE_RADIUS constructor:

2.2) Manage the radius of the zone:

2.3) Manage the location of the zone:


3) Zone#ZONE class, extends Zone#ZONE_RADIUS

The ZONE class, defined by the zone name as defined within the Mission Editor. This class implements the inherited functions from {Zone#ZONE_RADIUS} taking into account the own zone format and properties.


4) Zone#ZONE_UNIT class, extends Zone#ZONE_RADIUS

The ZONE_UNIT class defined by a zone around a Unit#UNIT with a radius. This class implements the inherited functions from Zone#ZONE_RADIUS taking into account the own zone format and properties.


5) Zone#ZONE_GROUP class, extends Zone#ZONE_RADIUS

The ZONE_GROUP class defines by a zone around a Group#GROUP with a radius. The current leader of the group defines the center of the zone. This class implements the inherited functions from Zone#ZONE_RADIUS taking into account the own zone format and properties.


6) Zone#ZONEPOLYGONBASE class, extends Zone#ZONE_BASE

The ZONEPOLYGONBASE class defined by a sequence of Group#GROUP waypoints within the Mission Editor, forming a polygon. This class implements the inherited functions from Zone#ZONE_RADIUS taking into account the own zone format and properties. This class is an abstract BASE class for derived classes, and is not meant to be instantiated.


7) Zone#ZONE_POLYGON class, extends Zone#ZONEPOLYGONBASE

The ZONE_POLYGON class defined by a sequence of Group#GROUP waypoints within the Mission Editor, forming a polygon. This class implements the inherited functions from Zone#ZONE_RADIUS taking into account the own zone format and properties.


API CHANGE HISTORY

The underlying change log documents the API changes. Please read this carefully. The following notation is used:

  • Added parts are expressed in bold type face.
  • Removed parts are expressed in italic type face.

Hereby the change log:

2016-08-15: ZONE_BASE:GetName() added.

2016-08-15: ZONE_BASE:SetZoneProbability( ZoneProbability ) added.

2016-08-15: ZONE_BASE:GetZoneProbability() added.

2016-08-15: ZONE_BASE:GetZoneMaybe() added.


Global(s)

ZONE
ZONE_BASE
ZONE_GROUP
ZONE_POLYGON
ZONE_POLYGON_BASE
ZONE_RADIUS
ZONE_UNIT

Type ZONE

ZONE.ClassName
ZONE:New(ZoneName)

Constructor of ZONE, taking the zone name.

Type ZONE_BASE

ZONE_BASE.ClassName
ZONE_BASE:GetBoundingSquare()

Get the bounding square the zone.

ZONE_BASE:GetName()

Returns the name of the zone.

ZONE_BASE:GetRandomVec2()

Define a random DCSTypes#Vec2 within the zone.

ZONE_BASE:GetVec2()

Returns the DCSTypes#Vec2 coordinate of the zone.

ZONE_BASE:GetZoneMaybe()

Get the zone taking into account the randomization probability of a zone to be selected.

ZONE_BASE:GetZoneProbability()

Get the randomization probability of a zone to be selected.

ZONE_BASE:IsPointVec2InZone(Vec2)

Returns if a location is within the zone.

ZONE_BASE:IsPointVec3InZone(Vec3)

Returns if a point is within the zone.

ZONE_BASE:New(ZoneName)

ZONE_BASE constructor

ZONE_BASE:SetZoneProbability(ZoneProbability)

Set the randomization probability of a zone to be selected.

ZONE_BASE:SmokeZone(SmokeColor)

Smokes the zone boundaries in a color.

ZONE_BASE.ZoneName

Name of the zone.

ZONE_BASE.ZoneProbability

A value between 0 and 1. 0 = 0% and 1 = 100% probability.

Type ZONE_BASE.BoundingSquare

ZONE_BASE.BoundingSquare.x1

The lower x coordinate (left down)

ZONE_BASE.BoundingSquare.x2

The higher x coordinate (right up)

ZONE_BASE.BoundingSquare.y1

The lower y coordinate (left down)

ZONE_BASE.BoundingSquare.y2

The higher y coordinate (right up)

Type ZONE_GROUP

ZONE_GROUP.ClassName
ZONE_GROUP:GetRandomVec2()

Returns a random location within the zone of the Group.

ZONE_GROUP:GetVec2()

Returns the current location of the Group.

ZONE_GROUP:New(ZoneName, ZoneGROUP, Radius)

Constructor to create a ZONE_GROUP instance, taking the zone name, a zone Group#GROUP and a radius.

ZONE_GROUP.ZoneGROUP

Type ZONE_POLYGON

ZONE_POLYGON.ClassName
ZONE_POLYGON:New(ZoneName, ZoneGroup)

Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the Group#GROUP defined within the Mission Editor.

Type ZONE_POLYGON_BASE

ZONE_POLYGON_BASE.ClassName
ZONE_POLYGON_BASE:Flush()

Flush polygon coordinates as a table in DCS.log.

ZONE_POLYGON_BASE:GetBoundingSquare()

Get the bounding square the zone.

ZONE_POLYGON_BASE:GetRandomVec2()

Define a random DCSTypes#Vec2 within the zone.

ZONE_POLYGON_BASE:IsPointVec2InZone(Vec2)

Returns if a location is within the zone.

ZONE_POLYGON_BASE:New(ZoneName, PointsArray)

Constructor to create a ZONEPOLYGONBASE instance, taking the zone name and an array of DCSTypes#Vec2, forming a polygon.

ZONE_POLYGON_BASE.Polygon

The polygon defined by an array of DCSTypes#Vec2.

ZONE_POLYGON_BASE:SmokeZone(SmokeColor)

Smokes the zone boundaries in a color.

Type ZONE_RADIUS

ZONE_RADIUS.ClassName
ZONE_RADIUS:FlareZone(FlareColor, Points, Azimuth)

Flares the zone boundaries in a color.

ZONE_RADIUS:GetRadius()

Returns the radius of the zone.

ZONE_RADIUS:GetRandomVec2()

Returns a random location within the zone.

ZONE_RADIUS:GetVec2()

Returns the DCSTypes#Vec2 of the zone.

ZONE_RADIUS:GetVec3(Height)

Returns the DCSTypes#Vec3 of the ZONE_RADIUS.

ZONE_RADIUS:IsPointVec2InZone(Vec2)

Returns if a location is within the zone.

ZONE_RADIUS:IsPointVec3InZone(Vec3)

Returns if a point is within the zone.

ZONE_RADIUS:New(ZoneName, Vec2, Radius)

Constructor of #ZONE_RADIUS, taking the zone name, the zone location and a radius.

ZONE_RADIUS.Radius

The radius of the zone.

ZONE_RADIUS:SetRadius(Radius)

Sets the radius of the zone.

ZONE_RADIUS:SetVec2(Vec2)

Sets the DCSTypes#Vec2 of the zone.

ZONE_RADIUS:SmokeZone(SmokeColor, Points)

Smokes the zone boundaries in a color.

ZONE_RADIUS.Vec2

The current location of the zone.

Type ZONE_UNIT

ZONE_UNIT.ClassName
ZONE_UNIT:GetRandomVec2()

Returns a random location within the zone.

ZONE_UNIT:GetVec2()

Returns the current location of the Unit#UNIT.

ZONE_UNIT:GetVec3(Height)

Returns the DCSTypes#Vec3 of the ZONE_UNIT.

ZONE_UNIT.LastVec2
ZONE_UNIT:New(ZoneName, ZoneUNIT, Radius)

Constructor to create a ZONE_UNIT instance, taking the zone name, a zone unit and a radius.

ZONE_UNIT.ZoneUNIT

Global(s)

#ZONE ZONE
#ZONE_BASE ZONE_BASE
#ZONE_GROUP ZONE_GROUP
#ZONE_POLYGON ZONE_POLYGON
#ZONE_POLYGON_BASE ZONE_POLYGON_BASE
#ZONE_RADIUS ZONE_RADIUS
#ZONE_UNIT ZONE_UNIT

Type Zone

Type POINT_VEC3.SmokeColor

Type ZONE

The ZONE class, defined by the zone name as defined within the Mission Editor.

The location and the radius are automatically collected from the mission settings.

Field(s)

#string ZONE.ClassName
ZONE:New(ZoneName)

Constructor of ZONE, taking the zone name.

Parameter

  • #string ZoneName : The name of the zone as defined within the mission editor.

Return value

#ZONE:

Type ZONE_BASE

The ZONE_BASE class

Field(s)

#string ZONE_BASE.ClassName
ZONE_BASE:GetBoundingSquare()

Get the bounding square the zone.

Return value

#nil: The bounding square.

ZONE_BASE:GetName()

Returns the name of the zone.

Return value

#string: The name of the zone.

ZONE_BASE:GetRandomVec2()

Define a random DCSTypes#Vec2 within the zone.

Return value

DCSTypes#Vec2: The Vec2 coordinates.

ZONE_BASE:GetVec2()

Returns the DCSTypes#Vec2 coordinate of the zone.

Return value

#nil:

ZONE_BASE:GetZoneMaybe()

Get the zone taking into account the randomization probability of a zone to be selected.

Return values

  1. #ZONE_BASE: The zone is selected taking into account the randomization probability factor.

  2. #nil: The zone is not selected taking into account the randomization probability factor.

ZONE_BASE:GetZoneProbability()

Get the randomization probability of a zone to be selected.

Return value

#number: A value between 0 and 1. 0 = 0% and 1 = 100% probability.

ZONE_BASE:IsPointVec2InZone(Vec2)

Returns if a location is within the zone.

Parameter

Return value

#boolean: true if the location is within the zone.

ZONE_BASE:IsPointVec3InZone(Vec3)

Returns if a point is within the zone.

Parameter

Return value

#boolean: true if the point is within the zone.

ZONE_BASE:New(ZoneName)

ZONE_BASE constructor

Parameter

  • #string ZoneName : Name of the zone.

Return value

#ZONE_BASE: self

ZONE_BASE:SetZoneProbability(ZoneProbability)

Set the randomization probability of a zone to be selected.

Parameter

  • ZoneProbability : A value between 0 and 1. 0 = 0% and 1 = 100% probability.

ZONE_BASE:SmokeZone(SmokeColor)

Smokes the zone boundaries in a color.

Parameter

  • SmokeColor : The smoke color.

#string ZONE_BASE.ZoneName

Name of the zone.

#number ZONE_BASE.ZoneProbability

A value between 0 and 1. 0 = 0% and 1 = 100% probability.

Type ZONE_BASE.BoundingSquare

The ZONE_BASE.BoundingSquare

Field(s)

DCSTypes#Distance ZONE_BASE.BoundingSquare.x1

The lower x coordinate (left down)

DCSTypes#Distance ZONE_BASE.BoundingSquare.x2

The higher x coordinate (right up)

DCSTypes#Distance ZONE_BASE.BoundingSquare.y1

The lower y coordinate (left down)

DCSTypes#Distance ZONE_BASE.BoundingSquare.y2

The higher y coordinate (right up)

Type ZONE_GROUP

The ZONE_GROUP class defined by a zone around a Group, taking the average center point of all the units within the Group, with a radius.

Field(s)

#string ZONE_GROUP.ClassName
ZONE_GROUP:GetRandomVec2()

Returns a random location within the zone of the Group.

Return value

DCSTypes#Vec2: The random location of the zone based on the Group location.

ZONE_GROUP:GetVec2()

Returns the current location of the Group.

Return value

DCSTypes#Vec2: The location of the zone based on the Group location.

ZONE_GROUP:New(ZoneName, ZoneGROUP, Radius)

Constructor to create a ZONE_GROUP instance, taking the zone name, a zone Group#GROUP and a radius.

Parameters

Return value

#ZONE_GROUP: self

Group#GROUP ZONE_GROUP.ZoneGROUP

Type ZONE_POLYGON

The ZONE_POLYGON class defined by a sequence of Group#GROUP waypoints within the Mission Editor, forming a polygon.

Field(s)

#string ZONE_POLYGON.ClassName
ZONE_POLYGON:New(ZoneName, ZoneGroup)

Constructor to create a ZONE_POLYGON instance, taking the zone name and the name of the Group#GROUP defined within the Mission Editor.

The Group#GROUP waypoints define the polygon corners. The first and the last point are automatically connected by ZONE_POLYGON.

Parameters

  • #string ZoneName : Name of the zone.

  • Group#GROUP ZoneGroup : The GROUP waypoints as defined within the Mission Editor define the polygon shape.

Return value

#ZONE_POLYGON: self

Type ZONE_POLYGON_BASE

The ZONEPOLYGONBASE class defined by an array of DCSTypes#Vec2, forming a polygon.

Field(s)

#string ZONE_POLYGON_BASE.ClassName
ZONE_POLYGON_BASE:Flush()

Flush polygon coordinates as a table in DCS.log.

Return value

#ZONEPOLYGONBASE: self

ZONE_POLYGON_BASE:GetBoundingSquare()

Get the bounding square the zone.

Return value

#ZONEPOLYGONBASE.BoundingSquare: The bounding square.

ZONE_POLYGON_BASE:GetRandomVec2()

Define a random DCSTypes#Vec2 within the zone.

Return value

DCSTypes#Vec2: The Vec2 coordinate.

ZONE_POLYGON_BASE:IsPointVec2InZone(Vec2)

Returns if a location is within the zone.

Source learned and taken from: https://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html

Parameter

Return value

#boolean: true if the location is within the zone.

ZONE_POLYGON_BASE:New(ZoneName, PointsArray)

Constructor to create a ZONEPOLYGONBASE instance, taking the zone name and an array of DCSTypes#Vec2, forming a polygon.

The Group#GROUP waypoints define the polygon corners. The first and the last point are automatically connected.

Parameters

Return value

#ZONEPOLYGONBASE: self

#ZONE_POLYGON_BASE.ListVec2 ZONE_POLYGON_BASE.Polygon

The polygon defined by an array of DCSTypes#Vec2.

ZONE_POLYGON_BASE:SmokeZone(SmokeColor)

Smokes the zone boundaries in a color.

Parameter

Return value

#ZONEPOLYGONBASE: self

Type ZONE_POLYGON_BASE.BoundingSquare

Type ZONE_POLYGON_BASE.ListVec2

A points array.

Type ZONE_RADIUS

The ZONE_RADIUS class, defined by a zone name, a location and a radius.

Field(s)

#string ZONE_RADIUS.ClassName
ZONE_RADIUS:FlareZone(FlareColor, Points, Azimuth)

Flares the zone boundaries in a color.

Parameters

  • Utils#FLARECOLOR FlareColor : The flare color.

  • #number Points : (optional) The amount of points in the circle.

  • DCSTypes#Azimuth Azimuth : (optional) Azimuth The azimuth of the flare.

Return value

#ZONE_RADIUS: self

ZONE_RADIUS:GetRadius()

Returns the radius of the zone.

Return value

DCSTypes#Distance: The radius of the zone.

ZONE_RADIUS:GetRandomVec2()

Returns a random location within the zone.

Return value

DCSTypes#Vec2: The random location within the zone.

ZONE_RADIUS:GetVec2()

Returns the DCSTypes#Vec2 of the zone.

Return value

DCSTypes#Vec2: The location of the zone.

ZONE_RADIUS:GetVec3(Height)

Returns the DCSTypes#Vec3 of the ZONE_RADIUS.

Parameter

  • DCSTypes#Distance Height : The height to add to the land height where the center of the zone is located.

Return value

DCSTypes#Vec3: The point of the zone.

ZONE_RADIUS:IsPointVec2InZone(Vec2)

Returns if a location is within the zone.

Parameter

Return value

#boolean: true if the location is within the zone.

ZONE_RADIUS:IsPointVec3InZone(Vec3)

Returns if a point is within the zone.

Parameter

Return value

#boolean: true if the point is within the zone.

ZONE_RADIUS:New(ZoneName, Vec2, Radius)

Constructor of #ZONE_RADIUS, taking the zone name, the zone location and a radius.

Parameters

Return value

#ZONE_RADIUS: self

DCSTypes#Distance ZONE_RADIUS.Radius

The radius of the zone.

ZONE_RADIUS:SetRadius(Radius)

Sets the radius of the zone.

Parameter

Return value

DCSTypes#Distance: The radius of the zone.

ZONE_RADIUS:SetVec2(Vec2)

Sets the DCSTypes#Vec2 of the zone.

Parameter

Return value

DCSTypes#Vec2: The new location of the zone.

ZONE_RADIUS:SmokeZone(SmokeColor, Points)

Smokes the zone boundaries in a color.

Parameters

  • #POINT_VEC3.SmokeColor SmokeColor : The smoke color.

  • #number Points : (optional) The amount of points in the circle.

Return value

#ZONE_RADIUS: self

DCSTypes#Vec2 ZONE_RADIUS.Vec2

The current location of the zone.

Type ZONE_UNIT

The ZONE_UNIT class defined by a zone around a Unit#UNIT with a radius.

Field(s)

#string ZONE_UNIT.ClassName
ZONE_UNIT:GetRandomVec2()

Returns a random location within the zone.

Return value

DCSTypes#Vec2: The random location within the zone.

ZONE_UNIT:GetVec2()

Returns the current location of the Unit#UNIT.

Return value

DCSTypes#Vec2: The location of the zone based on the Unit#UNITlocation.

ZONE_UNIT:GetVec3(Height)

Returns the DCSTypes#Vec3 of the ZONE_UNIT.

Parameter

  • DCSTypes#Distance Height : The height to add to the land height where the center of the zone is located.

Return value

DCSTypes#Vec3: The point of the zone.

ZONE_UNIT.LastVec2
ZONE_UNIT:New(ZoneName, ZoneUNIT, Radius)

Constructor to create a ZONE_UNIT instance, taking the zone name, a zone unit and a radius.

Parameters

  • #string ZoneName : Name of the zone.

  • Unit#UNIT ZoneUNIT : The unit as the center of the zone.

  • DCSTypes#Distance Radius : The radius of the zone.

Return value

#ZONE_UNIT: self

Unit#UNIT ZONE_UNIT.ZoneUNIT