mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
AI_AIR
Fixed task in onafterPatrolRoute function
This commit is contained in:
parent
d3a3d96436
commit
6dd73dba44
@ -287,16 +287,20 @@ function AI_A2A_PATROL:onafterPatrol( AIPatrol, From, Event, To )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- This statis method is called from the route path within the last task at the last waaypoint of the AIPatrol.
|
||||||
--- @param Wrapper.Group#GROUP AIPatrol
|
|
||||||
-- This statis method is called from the route path within the last task at the last waaypoint of the AIPatrol.
|
|
||||||
-- Note that this method is required, as triggers the next route when patrolling for the AIPatrol.
|
-- Note that this method is required, as triggers the next route when patrolling for the AIPatrol.
|
||||||
|
-- @param Wrapper.Group#GROUP AIPatrol The AI group.
|
||||||
|
-- @param #AI_A2A_PATROL Fsm The FSM.
|
||||||
function AI_A2A_PATROL.PatrolRoute( AIPatrol, Fsm )
|
function AI_A2A_PATROL.PatrolRoute( AIPatrol, Fsm )
|
||||||
|
|
||||||
AIPatrol:F( { "AI_A2A_PATROL.PatrolRoute:", AIPatrol:GetName() } )
|
AIPatrol:F( { "AI_A2A_PATROL.PatrolRoute:", AIPatrol:GetName() } )
|
||||||
|
|
||||||
if AIPatrol:IsAlive() then
|
if AIPatrol and AIPatrol:IsAlive() then
|
||||||
|
if Fsm then
|
||||||
Fsm:Route()
|
Fsm:Route()
|
||||||
|
else
|
||||||
|
AIPatrol:E("WARNING: FSM in AI_A2A_PATROL.PatrolRoute is nil!")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@ -80,7 +80,8 @@ AI_AIR_ENGAGE = {
|
|||||||
|
|
||||||
--- Creates a new AI_AIR_ENGAGE object
|
--- Creates a new AI_AIR_ENGAGE object
|
||||||
-- @param #AI_AIR_ENGAGE self
|
-- @param #AI_AIR_ENGAGE self
|
||||||
-- @param Wrapper.Group#GROUP AIGroup
|
-- @param AI.AI_Air#AI_AIR AI_Air The AI_AIR FSM.
|
||||||
|
-- @param Wrapper.Group#GROUP AIGroup The AI group.
|
||||||
-- @param DCS#Speed EngageMinSpeed (optional, default = 50% of max speed) The minimum speed of the @{Wrapper.Group} in km/h when engaging a target.
|
-- @param DCS#Speed EngageMinSpeed (optional, default = 50% of max speed) The minimum speed of the @{Wrapper.Group} in km/h when engaging a target.
|
||||||
-- @param DCS#Speed EngageMaxSpeed (optional, default = 75% of max speed) The maximum speed of the @{Wrapper.Group} in km/h when engaging a target.
|
-- @param DCS#Speed EngageMaxSpeed (optional, default = 75% of max speed) The maximum speed of the @{Wrapper.Group} in km/h when engaging a target.
|
||||||
-- @param DCS#Altitude EngageFloorAltitude (optional, default = 1000m ) The lowest altitude in meters where to execute the engagement.
|
-- @param DCS#Altitude EngageFloorAltitude (optional, default = 1000m ) The lowest altitude in meters where to execute the engagement.
|
||||||
|
|||||||
@ -99,7 +99,8 @@ AI_AIR_PATROL = {
|
|||||||
|
|
||||||
--- Creates a new AI_AIR_PATROL object
|
--- Creates a new AI_AIR_PATROL object
|
||||||
-- @param #AI_AIR_PATROL self
|
-- @param #AI_AIR_PATROL self
|
||||||
-- @param Wrapper.Group#GROUP AIGroup
|
-- @param AI.AI_Air#AI_AIR AI_Air The AI_AIR FSM.
|
||||||
|
-- @param Wrapper.Group#GROUP AIGroup The AI group.
|
||||||
-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
|
-- @param Core.Zone#ZONE_BASE PatrolZone The @{Zone} where the patrol needs to be executed.
|
||||||
-- @param DCS#Altitude PatrolFloorAltitude (optional, default = 1000m ) The lowest altitude in meters where to execute the patrol.
|
-- @param DCS#Altitude PatrolFloorAltitude (optional, default = 1000m ) The lowest altitude in meters where to execute the patrol.
|
||||||
-- @param DCS#Altitude PatrolCeilingAltitude (optional, default = 1500m ) The highest altitude in meters where to execute the patrol.
|
-- @param DCS#Altitude PatrolCeilingAltitude (optional, default = 1500m ) The highest altitude in meters where to execute the patrol.
|
||||||
@ -270,14 +271,15 @@ function AI_AIR_PATROL:onafterPatrol( AIPatrol, From, Event, To )
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- @param Wrapper.Group#GROUP AIPatrol
|
--- This statis method is called from the route path within the last task at the last waaypoint of the AIPatrol.
|
||||||
-- This statis method is called from the route path within the last task at the last waaypoint of the AIPatrol.
|
|
||||||
-- Note that this method is required, as triggers the next route when patrolling for the AIPatrol.
|
-- Note that this method is required, as triggers the next route when patrolling for the AIPatrol.
|
||||||
|
-- @param Wrapper.Group#GROUP AIPatrol The AI group.
|
||||||
|
-- @param #AI_AIR_PATROL Fsm The FSM.
|
||||||
function AI_AIR_PATROL.___PatrolRoute( AIPatrol, Fsm )
|
function AI_AIR_PATROL.___PatrolRoute( AIPatrol, Fsm )
|
||||||
|
|
||||||
AIPatrol:F( { "AI_AIR_PATROL.___PatrolRoute:", AIPatrol:GetName() } )
|
AIPatrol:F( { "AI_AIR_PATROL.___PatrolRoute:", AIPatrol:GetName() } )
|
||||||
|
|
||||||
if AIPatrol:IsAlive() then
|
if AIPatrol and AIPatrol:IsAlive() then
|
||||||
Fsm:PatrolRoute()
|
Fsm:PatrolRoute()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -299,7 +301,7 @@ function AI_AIR_PATROL:onafterPatrolRoute( AIPatrol, From, Event, To )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
if AIPatrol:IsAlive() then
|
if AIPatrol and AIPatrol:IsAlive() then
|
||||||
|
|
||||||
local PatrolRoute = {}
|
local PatrolRoute = {}
|
||||||
|
|
||||||
@ -316,13 +318,7 @@ function AI_AIR_PATROL:onafterPatrolRoute( AIPatrol, From, Event, To )
|
|||||||
local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed )
|
local ToTargetSpeed = math.random( self.PatrolMinSpeed, self.PatrolMaxSpeed )
|
||||||
local speedkmh=ToTargetSpeed
|
local speedkmh=ToTargetSpeed
|
||||||
|
|
||||||
local FromWP = CurrentCoord:WaypointAir(
|
local FromWP = CurrentCoord:WaypointAir(self.PatrolAltType or "RADIO", POINT_VEC3.RoutePointType.TurningPoint, POINT_VEC3.RoutePointAction.TurningPoint, ToTargetSpeed, true)
|
||||||
self.PatrolAltType or "RADIO",
|
|
||||||
POINT_VEC3.RoutePointType.TurningPoint,
|
|
||||||
POINT_VEC3.RoutePointAction.TurningPoint,
|
|
||||||
ToTargetSpeed,
|
|
||||||
true
|
|
||||||
)
|
|
||||||
PatrolRoute[#PatrolRoute+1] = FromWP
|
PatrolRoute[#PatrolRoute+1] = FromWP
|
||||||
|
|
||||||
if self.racetrack then
|
if self.racetrack then
|
||||||
@ -360,7 +356,8 @@ function AI_AIR_PATROL:onafterPatrolRoute( AIPatrol, From, Event, To )
|
|||||||
local taskOrbit=AIPatrol:TaskOrbit(c1, altitude, UTILS.KmphToMps(speedkmh), c2)
|
local taskOrbit=AIPatrol:TaskOrbit(c1, altitude, UTILS.KmphToMps(speedkmh), c2)
|
||||||
|
|
||||||
-- Task function to redo the patrol at other random position.
|
-- Task function to redo the patrol at other random position.
|
||||||
local taskPatrol=AIPatrol:TaskFunction("AI_A2A_PATROL.PatrolRoute", self)
|
--local taskPatrol=AIPatrol:TaskFunction("AI_A2A_PATROL.PatrolRoute", self)
|
||||||
|
local taskPatrol=AIPatrol:TaskFunction("AI_AIR_PATROL.___PatrolRoute", self)
|
||||||
|
|
||||||
-- Controlled task with task condition.
|
-- Controlled task with task condition.
|
||||||
local taskCond=AIPatrol:TaskCondition(nil, nil, nil, nil, duration, nil)
|
local taskCond=AIPatrol:TaskCondition(nil, nil, nil, nil, duration, nil)
|
||||||
@ -372,14 +369,7 @@ function AI_AIR_PATROL:onafterPatrolRoute( AIPatrol, From, Event, To )
|
|||||||
else
|
else
|
||||||
|
|
||||||
--- Create a route point of type air.
|
--- Create a route point of type air.
|
||||||
local ToWP = ToTargetCoord:WaypointAir(
|
local ToWP = ToTargetCoord:WaypointAir(self.PatrolAltType, POINT_VEC3.RoutePointType.TurningPoint, POINT_VEC3.RoutePointAction.TurningPoint, ToTargetSpeed, true)
|
||||||
self.PatrolAltType,
|
|
||||||
POINT_VEC3.RoutePointType.TurningPoint,
|
|
||||||
POINT_VEC3.RoutePointAction.TurningPoint,
|
|
||||||
ToTargetSpeed,
|
|
||||||
true
|
|
||||||
)
|
|
||||||
|
|
||||||
PatrolRoute[#PatrolRoute+1] = ToWP
|
PatrolRoute[#PatrolRoute+1] = ToWP
|
||||||
|
|
||||||
local Tasks = {}
|
local Tasks = {}
|
||||||
@ -401,7 +391,7 @@ end
|
|||||||
function AI_AIR_PATROL.Resume( AIPatrol, Fsm )
|
function AI_AIR_PATROL.Resume( AIPatrol, Fsm )
|
||||||
|
|
||||||
AIPatrol:F( { "AI_AIR_PATROL.Resume:", AIPatrol:GetName() } )
|
AIPatrol:F( { "AI_AIR_PATROL.Resume:", AIPatrol:GetName() } )
|
||||||
if AIPatrol:IsAlive() then
|
if AIPatrol and AIPatrol:IsAlive() then
|
||||||
Fsm:__Reset( Fsm.TaskDelay )
|
Fsm:__Reset( Fsm.TaskDelay )
|
||||||
Fsm:__PatrolRoute( Fsm.TaskDelay )
|
Fsm:__PatrolRoute( Fsm.TaskDelay )
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user