Banner Image

Module Core.Spot

Core - Management of spotting logistics, that can be activated and deactivated upon command.


SPOT implements the DCS Spot class functionality, but adds additional luxury to be able to:

  • Spot for a defined duration.
  • Updates of laser spot position every 0.2 seconds for moving targets.
  • Wiggle the spot at the target.
  • Provide a Wrapper.Unit as a target, instead of a point.
  • Implement a status machine, LaseOn, LaseOff.

Demo Missions

Demo Missions on GitHub


Author: FlightControl

Contributions:

  • Ciribob: Showing the way how to lase targets + how laser codes work!!! Explained the autolase script.
  • EasyEB: Ideas and Beta Testing
  • Wingthor: Beta Testing

Global(s)

Global SPOT

Implements the target spotting or marking functionality, but adds additional luxury to be able to:

  • Mark targets for a defined duration.
#SPOT SPOT

Implements the target spotting or marking functionality, but adds additional luxury to be able to:

  • Mark targets for a defined duration.
  • Updates of laser spot position every 0.25 seconds for moving targets.
  • Wiggle the spot at the target.
  • Provide a Wrapper.Unit as a target, instead of a point.
  • Implement a status machine, LaseOn, LaseOff.

1. SPOT constructor

  • SPOT.New(): Creates a new SPOT object.

2. SPOT is a FSM

Process

2.1 SPOT States

  • Off: Lasing is switched off.
  • On: Lasing is switched on.
  • Destroyed: Target is destroyed.

2.2 SPOT Events

3. Check if a Target is being lased

The method SPOT.IsLasing() indicates whether lasing is on or off.

Type(s)

SPOT , extends Core.Fsm#FSM
Fields and Methods inherited from SPOT Description

SPOT:Destroyed()

Destroyed Trigger for SPOT

SPOT:IsLasing()

Check if the SPOT is lasing

SPOT:LaseOff()

LaseOff Trigger for SPOT

SPOT:LaseOn(Target, LaserCode, Duration)

LaseOn Trigger for SPOT

SPOT:LaseOnCoordinate(Coordinate, LaserCode, Duration)

LaseOnCoordinate Trigger for SPOT.

SPOT.LaseScheduler

SPOT.LaserCode

SPOT.Lasing

SPOT:New(Recce)

SPOT Constructor.

SPOT:OnAfterDestroyed(From, Event, To)

Destroyed Handler OnAfter for SPOT

SPOT:OnAfterLaseOff(From, Event, To)

LaseOff Handler OnAfter for SPOT

SPOT:OnAfterLaseOn(From, Event, To)

LaseOn Handler OnAfter for SPOT

SPOT:OnAfterLaseOnCoordinate(From, Event, To)

LaseOnCoordinate Handler OnAfter for SPOT.

SPOT:OnBeforeDestroyed(From, Event, To)

Destroyed Handler OnBefore for SPOT

SPOT:OnBeforeLaseOff(From, Event, To)

LaseOff Handler OnBefore for SPOT

SPOT:OnBeforeLaseOn(From, Event, To)

LaseOn Handler OnBefore for SPOT

SPOT:OnBeforeLaseOnCoordinate(From, Event, To)

LaseOnCoordinate Handler OnBefore for SPOT.

SPOT:OnEventDead(EventData)

SPOT.Recce

SPOT.RecceName

SPOT.ScheduleID

SPOT:SetRelativeStartPosition(position)

Set laser start position relative to the lasing unit.

SPOT.SpotIR

SPOT.SpotLaser

SPOT.Target

SPOT.TargetCoord

SPOT.TargetName

SPOT:__Destroyed(Delay)

Destroyed Asynchronous Trigger for SPOT

SPOT:__LaseOff(Delay)

LaseOff Asynchronous Trigger for SPOT

SPOT:__LaseOn(Delay, Target, LaserCode, Duration)

LaseOn Asynchronous Trigger for SPOT

SPOT:onafterLaseOff(From, Event, To)

SPOT:onafterLaseOn(From, Event, To, Target, LaserCode, Duration)

On after LaseOn event.

SPOT:onafterLaseOnCoordinate(From, Event, To, Coordinate, LaserCode, Duration)

On after LaseOnCoordinate event.

SPOT:onafterLasing(From, Event, To)

SPOT.relstartpos

Fields and Methods inherited from FSM Description

SPOT:AddEndState(State)

Adds an End state.

SPOT:AddProcess(From, Event, Process, ReturnEvents)

Set the default #FSM_PROCESS template with key ProcessName providing the ProcessClass and the process object when it is assigned to a Wrapper.Controllable by the task.

SPOT:AddScore(State, ScoreText, Score)

Adds a score for the FSM to be achieved.

SPOT:AddScoreProcess(From, Event, State, ScoreText, Score)

Adds a score for the FSM_PROCESS to be achieved.

SPOT:AddTransition(From, Event, To)

Add a new transition rule to the FSM.

SPOT.CallScheduler

SPOT.Events

SPOT:GetCurrentState()

Get current state.

SPOT:GetEndStates()

Returns the End states.

SPOT:GetProcess(From, Event)

SPOT:GetProcesses()

Returns a table of the SubFSM rules defined within the FSM.

SPOT:GetScores()

Returns a table with the scores defined.

SPOT:GetStartState()

Returns the start state of the FSM.

SPOT:GetState()

Get current state.

SPOT:GetSubs()

Returns a table with the Subs defined.

SPOT:GetTransitions()

Returns a table of the transition rules defined within the FSM.

SPOT:Is(State)

Check if FSM is in state.

SPOT:LoadCallBacks(CallBackTable)

Load call backs.

SPOT:New()

Creates a new FSM object.

SPOT.Scores

SPOT:SetProcess(From, Event, Fsm)

SPOT:SetStartState(State)

Sets the start state of the FSM.

SPOT._EndStates

SPOT._EventSchedules

SPOT._Processes

SPOT._Scores

SPOT._StartState

SPOT._Transitions

SPOT:_add_to_map(Map, Event)

Add to map.

SPOT:_call_handler(step, trigger, params, EventName)

Call handler.

SPOT:_create_transition(EventName)

Create transition.

SPOT:_delayed_transition(EventName)

Delayed transition.

SPOT:_eventmap(Events, EventStructure)

Event map.

SPOT:_gosub(ParentFrom, ParentEvent)

Go sub.

SPOT:_handler(EventName, ...)

Handler.

SPOT:_isendstate(Current)

Is end state.

SPOT:_submap(subs, sub, name)

Sub maps.

SPOT:can(e)

Check if can do an event.

SPOT:cannot(e)

Check if cannot do an event.

SPOT.current

SPOT.endstates

SPOT:is(State, state)

Check if FSM is in state.

SPOT.options

SPOT.subs

Field(s)

#boolean SPOT.Lasing

Function(s)

Destroyed Trigger for SPOT

Defined in:

SPOT

Check if the SPOT is lasing

Defined in:

SPOT

Return value:

#boolean:

true if it is lasing

LaseOff Trigger for SPOT

Defined in:

SPOT

LaseOn Trigger for SPOT

Defined in:

SPOT

Parameters:

#number LaserCode

Laser code.

#number Duration

Duration of lasing in seconds.

LaseOnCoordinate Trigger for SPOT.

Defined in:

SPOT

Parameters:

The coordinate to lase.

#number LaserCode

Laser code.

#number Duration

Duration of lasing in seconds.

SPOT Constructor.

Defined in:

SPOT

Parameter:

Unit that is lasing

Return value:

Destroyed Handler OnAfter for SPOT

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

LaseOff Handler OnAfter for SPOT

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

LaseOn Handler OnAfter for SPOT

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

LaseOnCoordinate Handler OnAfter for SPOT.

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

Destroyed Handler OnBefore for SPOT

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

Return value:

#boolean:

LaseOff Handler OnBefore for SPOT

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

Return value:

#boolean:

LaseOn Handler OnBefore for SPOT

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

Return value:

#boolean:

LaseOnCoordinate Handler OnBefore for SPOT.

Defined in:

SPOT

Parameters:

#string From

#string Event

#string To

Return value:

#boolean:

Defined in:

SPOT

Parameter:

Set laser start position relative to the lasing unit.

Defined in:

SPOT

Parameter:

#table position

Start position of the laser relative to the lasing unit. Default is { x = 0, y = 2, z = 0 }

Return value:

self

Usage:

     -- Set lasing position to be the position of the optics of the Gazelle M:
     myspot:SetRelativeStartPosition({ x = 1.7, y = 1.2, z = 0 })

Destroyed Asynchronous Trigger for SPOT

Defined in:

SPOT

Parameter:

#number Delay

LaseOff Asynchronous Trigger for SPOT

Defined in:

SPOT

Parameter:

#number Delay

LaseOn Asynchronous Trigger for SPOT

Defined in:

SPOT

Parameters:

#number Delay

#number LaserCode

Laser code.

#number Duration

Duration of lasing in seconds.

Defined in:

SPOT

Parameters:

From

Event

To

Return value:

On after LaseOn event.

Activates the laser spot.

Defined in:

SPOT

Parameters:

From

Event

To

Unit that is being lased.

#number LaserCode

Laser code.

#number Duration

Duration of lasing in seconds.

On after LaseOnCoordinate event.

Activates the laser spot.

Defined in:

SPOT

Parameters:

From

Event

To

The coordinate at which the laser is pointing.

#number LaserCode

Laser code.

#number Duration

Duration of lasing in seconds.

Defined in:

SPOT

Parameters:

From

Event

To

Field(s)

#boolean SPOT.Lasing

Function(s)

Adds an End state.

Defined in:

Parameter:

#string State

The FSM state.

Set the default #FSM_PROCESS template with key ProcessName providing the ProcessClass and the process object when it is assigned to a Wrapper.Controllable by the task.

Defined in:

Parameters:

#table From

Can contain a string indicating the From state or a table of strings containing multiple From states.

#string Event

The Event name.

An sub-process FSM.

#table ReturnEvents

A table indicating for which returned events of the SubFSM which Event must be triggered in the FSM.

Return value:

The SubFSM.

Adds a score for the FSM to be achieved.

Defined in:

Parameters:

#string State

is the state of the process when the score needs to be given. (See the relevant state descriptions of the process).

#string ScoreText

is a text describing the score that is given according the status.

#number Score

is a number providing the score of the status.

Return value:

#FSM:

self

Adds a score for the FSM_PROCESS to be achieved.

Defined in:

Parameters:

#string From

is the From State of the main process.

#string Event

is the Event of the main process.

#string State

is the state of the process when the score needs to be given. (See the relevant state descriptions of the process).

#string ScoreText

is a text describing the score that is given according the status.

#number Score

is a number providing the score of the status.

Return value:

#FSM:

self

Add a new transition rule to the FSM.

A transition rule defines when and if the FSM can transition from a state towards another state upon a triggered event.

Defined in:

Parameters:

#table From

Can contain a string indicating the From state or a table of strings containing multiple From states.

#string Event

The Event name.

#string To

The To state.

Get current state.

Defined in:

Return value:

#string:

Current FSM state.

Returns the End states.

Defined in:

Return value:

#table:

End states.

Defined in:

Parameters:

From

Event

Returns a table of the SubFSM rules defined within the FSM.

Defined in:

Return value:

#table:

Sub processes.

Returns a table with the scores defined.

Defined in:

Return value:

#table:

Scores.

Returns the start state of the FSM.

Defined in:

Return value:

#string:

A string containing the start state.

Get current state.

Defined in:

Return value:

#string:

Current FSM state.

Returns a table with the Subs defined.

Defined in:

Return value:

#table:

Sub processes.

Returns a table of the transition rules defined within the FSM.

Defined in:

Return value:

#table:

Transitions.

Check if FSM is in state.

Defined in:

Parameter:

#string State

State name.

Return value:

#boolean:

If true, FSM is in this state.

Load call backs.

Defined in:

Parameter:

#table CallBackTable

Table of call backs.

Creates a new FSM object.

Defined in:

Return value:

#FSM:

Defined in:

Parameters:

From

Event

Fsm

Sets the start state of the FSM.

Defined in:

Parameter:

#string State

A string defining the start state.

Add to map.

Defined in:

Parameters:

#table Map

Map.

#table Event

Event table.

Call handler.

Defined in:

Parameters:

#string step

Step "onafter", "onbefore", "onenter", "onleave".

#string trigger

Trigger.

#table params

Parameters.

#string EventName

Event name.

Return value:

Value.

Create transition.

Defined in:

Parameter:

#string EventName

Event name.

Return value:

#function:

Function.

Delayed transition.

Defined in:

Parameter:

#string EventName

Event name.

Return value:

#function:

Function.

Event map.

Defined in:

Parameters:

#table Events

Events.

#table EventStructure

Event structure.

Go sub.

Defined in:

Parameters:

#string ParentFrom

Parent from state.

#string ParentEvent

Parent event name.

Return value:

#table:

Subs.

Handler.

Defined in:

Parameters:

#string EventName

Event name.

...

Arguments.

Is end state.

Defined in:

Parameter:

#string Current

Current state name.

Return values:

#table:

FSM parent.

#string:

Event name.

Sub maps.

Defined in:

Parameters:

#table subs

Subs.

#table sub

Sub.

#string name

Name.

Check if can do an event.

Defined in:

Parameter:

#string e

Event name.

Return values:

#boolean:

If true, FSM can do the event.

#string:

To state.

Check if cannot do an event.

Defined in:

Parameter:

#string e

Event name.

Return value:

#boolean:

If true, FSM cannot do the event.

Check if FSM is in state.

Defined in:

Parameters:

#string State

State name.

state

Return value:

#boolean:

If true, FSM is in this state.