Files
lab1/weapons/other/gun.txt
2025-09-12 15:20:28 +08:00

122 lines
4.7 KiB
Plaintext

# ****************************************************************************
# CUI
#
# The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
#
# The use, dissemination or disclosure of data in this file is subject to
# limitation or restriction. See accompanying README and LICENSE for details.
# ****************************************************************************
#Launching platform and a scripted launch computer that creates a predicted intercept point needs to be made yet.
#12/05/2014
aero BULLET_AERO WSF_AERO
reference_area 7.0 cm2
cl_max 0.1
mach_and_cd 0.2 .2
mach_and_cd 0.8 .21
mach_and_cd 0.95 .29
mach_and_cd 1.1 .45
mach_and_cd 1.5 .3
mach_and_cd 4.2 .23
end_aero
platform_type BULLET WSF_PLATFORM
icon gbu-15
mover WSF_UNGUIDED_MOVER
# show status
update_interval 0.01 sec
stage 1
total_mass 0.4 kg
aero BULLET_AERO
end_stage
end_mover
processor fuse WSF_AIR_TARGET_FUSE
#update_interval 0.01 sec
gross_update_interval 0.10 sec
fine_update_interval 0.01 sec
end_processor
# processor write_info WSF_SCRIPT_PROCESSOR
# update_interval 1 sec
# on_update
# writeln("Time ", PLATFORM.TimeSinceCreation(), " Speed ", PLATFORM.Speed()*MATH.FT_PER_M(), " Range ", PLATFORM.SlantRangeTo(0,0,0));
# end_on_update
# end_processor
end_platform_type
weapon_effects BULLET_LETHALITY WSF_GRADUATED_LETHALITY
radius_and_pk 10 m 0.9 # bullet dispersion
script void on_weapon_target_engagement(WsfPlatform aTarget)
WsfPlatform weapon = WeaponPlatform();
WsfPlatform target = aTarget;
double slantrange = weapon.SlantRangeTo(TargetLocationAtLaunch());
if ((!target.IsValid()) || (!weapon.IsValid()))
{
return;
}
#if (slantrange > 1300)
if (slantrange > 650) #meters
{
SetPkDegrade(0.5);
}
end_script
end_weapon_effects
launch_computer BULLET_LAUNCH_COMPUTER WSF_SCRIPT_LAUNCH_COMPUTER #first attempt
# This is the required script method name and signature.
script void compute_intercept(WsfTrack aTrack, double aLaunchDelay)
# If needed the following additional script variables are pre-defined:
#
# WEAPON references the WsfWeapon to which the launch computer is attached.
# PLATFORM references the WsfPlatform to which the weapon is attached.
double weaponSpeed = 3000.0; # feet/sec
WsfWaypoint intercept = WsfWaypoint();
#double tti = PLATFORM.InterceptLocation2D(aTrack, intercept, weaponSpeed, aLaunchDelay);
double tti = PLATFORM.InterceptLocation3D(aTrack, intercept, weaponSpeed, aLaunchDelay);
if (tti > 0.0)
{
double az = PLATFORM.RelativeAzimuthOf(intercept.Location());
double el = PLATFORM.RelativeElevationOf(intercept.Location());
if (az < WEAPON.SlewMaximumAzimuth() && az > WEAPON.SlewMinimumAzimuth() &&
el < WEAPON.SlewMaximumElevation() && el > WEAPON.SlewMinimumElevation())
{
#compute additional drop in altitude from gravity
double drop = 0.5 * Earth.ACCEL_OF_GRAVITY() * tti * tti;
#add it back in (so the given point is above actual intercept point)
intercept.SetAltitude(intercept.Altitude()+drop, false);
SetInterceptPoint(intercept.Location());
# The next call is the minimum requirement for reporting an intercept.
SetInterceptTime(TIME_NOW + tti);
SetLaunchTime(TIME_NOW + aLaunchDelay);
SetTimeOfFlight(tti - aLaunchDelay);
}
}
end_script
end_launch_computer
weapon BULLET WSF_EXPLICIT_WEAPON
launch_computer BULLET_LAUNCH_COMPUTER #first attempt
end_launch_computer
launched_platform_type BULLET
weapon_effects BULLET_LETHALITY
# Slew is really not true but only for the air mover platform to be able to align to a target for it to shoot.
slew_mode azimuth_and_elevation
#azimuth_slew_limits -4 deg 4 deg
#elevation_slew_limits -4 deg 4 deg
azimuth_slew_limits -1.0 deg 1.0 deg
elevation_slew_limits -1.0 deg 1.0 deg
quantity 10 #(each shot represents a quantity of bullets as established by Pk)
firing_delay 0.1 sec
salvo_interval 5 sec # 5 seconds between bursts
#launch_delta_v 1900 0 0 ft/s # muzzle velocity
launch_delta_v 3000 0 0 ft/s # muzzle velocity - brawler: GUN_0_MD.GUN
#cue_to_predicted_intercept true
automatic_target_cueing false
cue_to_predicted_intercept false
end_weapon