迫击炮车行为树搭建完成

This commit is contained in:
2025-10-09 09:48:26 +08:00
parent 08a1c8747b
commit 76e62a75fa
10 changed files with 232 additions and 185 deletions

View File

@@ -1,40 +0,0 @@
# File generated by Wizard 2.9.0 on Sep 19, 2025.
advanced_behavior behavior_engage
script_variables
WsfWeapon missile;
#WsfTaskManager taskManager=(WsfTaskManager)PROCESSOR;
end_script_variables
on_init
missile = PLATFORM.Weapon("sam");
writeln("on_init");
end_on_init
on_message
default
script
WsfControlMessage msg=(WsfControlMessage)MESSAGE;
writeln("receive",msg.AuxDataString("task"));
end_script
end_on_message
precondition
# writeln("precondition");
return true;
# return (taskManager.TasksReceivedFor(WsfTrackId(), "ENGAGE") > 0);
end_precondition
execute
# WsfTaskList engageTasks = taskManager.ReceivedTaskList(WsfTrackId(), "ENGAGE");
# WsfTask myTask = engageTasks.Entry(0);
# WsfTrackId trackId = myTask.TrackId();
# WsfLocalTrackList trackList = PLATFORM.TrackList("data_mgr");
# WsfTrack track = trackList.FindTrack(trackId);
# WsfTrack targetTrack = WsfSimulation.FindTrack();
# missile.Fire(track);
# writeln("Successfully engaged target");
return Success();
end_execute
end_advanced_behavior

View File

@@ -0,0 +1,52 @@
# File generated by Wizard 2.9.0 on Sep 19, 2025.
advanced_behavior behavior_fire
script_variables
WsfWeapon missile;
WsfControlMessage msg=WsfControlMessage();
string str="";
WsfTrack track=WsfTrack();
end_script_variables
on_init
missile = PLATFORM.Weapon("sam");
writeln("on_init");
end_on_init
on_message
type WSF_CONTROL_MESSAGE
script
msg=(WsfControlMessage)MESSAGE;
writeln("receive",msg.AuxDataString("task"));
str=msg.AuxDataString("task");
track=(WsfTrack)msg.AuxDataObject("track");
writeln(str);
# if(msg.AuxDataString("task")=="FIRE")
# {
# writeln("in fire");
# WsfTrack track=(WsfTrack)msg.AuxDataObject("track");
# missile.Fire(track);
# writeln("fire,remain weapon:", missile.QuantityRemaining());
# }
end_script
end_on_message
precondition
writeln(str);
if( str=="FIRE")
{
writeln("in fire");
return true;
}
return false;
end_precondition
execute
missile.Fire(track);
writeln("fire,remain weapon:", missile.QuantityRemaining());
str="";
return Success();
end_execute
end_advanced_behavior

View File

@@ -0,0 +1,46 @@
# File generated by Wizard 2.9.0 on Sep 23, 2025.
advanced_behavior behavior_move
script_variables
WsfControlMessage msg=WsfControlMessage();
string str="";
WsfTrack track=WsfTrack();
end_script_variables
on_init
end_on_init
on_message
type WSF_CONTROL_MESSAGE
script
WsfControlMessage msg=(WsfControlMessage)MESSAGE;
writeln("receive",msg.AuxDataString("task"));
str=msg.AuxDataString("task");
track=(WsfTrack)msg.AuxDataObject("track");
writeln(str);
end_script
end_on_message
precondition
if(str=="MOVE")
{
return true;
}
return false;
end_precondition
execute
if(!track.WithinZoneOf(PLATFORM,"battalion_sector"))
{
double relativeAzimuthOf=
PLATFORM.RelativeAzimuthOf(track.CurrentLocation());
PLATFORM.TurnToRelativeHeading(relativeAzimuthOf);
PLATFORM.GoToSpeed(16);#m/s
}
str="";
return Success();
end_execute
end_advanced_behavior

View File

@@ -0,0 +1,36 @@
# File generated by Wizard 2.9.0 on Sep 23, 2025.
advanced_behavior behavior_wait
script_variables
WsfWeapon missile;
WsfControlMessage msg=WsfControlMessage();
string str="";
end_script_variables
on_init
end_on_init
on_message
type WSF_CONTROL_MESSAGE
script
WsfControlMessage msg=(WsfControlMessage)MESSAGE;
writeln("receive",msg.AuxDataString("task"));
str=msg.AuxDataString("tsak");
end_script
end_on_message
precondition
if(str=="WAIT")
{
return true;
}
return false;
end_precondition
execute
PLATFORM.GoToSpeed(0);#m/s
return Success();
end_execute
end_advanced_behavior