local separations = {}
-- Create spent booster
function separations.booster_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=0,z=-1}
local svel = 0.001
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=-4.625})
vs:set(t)
oapi.create_vessel("VanTV4stg1", "VanTV4stg1", vs)
sustainer()
vi:record_event("JET","BOOSTER")
end
function separations.booster_playback()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=0,z=-1}
local svel = 0.001
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=-9.85})
vs:set(t)
oapi.create_vessel("VanTV4stg1", "VanTV4stg1", vs)
sustainer()
end
-- Create spent fairing
function separations.fairing1_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=1,y=-1,z=0}
local svel = 3.0
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=4.202})
t.vrot = {x=-1,y=1,z=0}
vs:set(t)
oapi.create_vessel("VanTV4fairing1", "VanTV4fairing1", vs)
no_fairing()
vi:record_event("SPLIT","FAIRINGS")
end
-- Create spent fairing
function separations.fairing2_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=-1,y=1,z=0}
local svel = 3.0
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=4.202})
t.vrot = {x=1,y=-1,z=0}
vs:set(t)
oapi.create_vessel("VanTV4fairing2", "VanTV4fairing2", vs)
end
-- Create spent sustainer
function separations.sustainer_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=0,z=-1}
local svel = 0.0
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=0})
vs:set(t)
oapi.create_vessel("VanTV4stg2", "VanTV4stg2", vs)
third()
vi:record_event("JET","THIRD")
end
-- Create spent sustainer during playback of a recording
function separations.sustainer_playback()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=0,z=-1}
local svel = 0.0
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=-2.61})
vs:set(t)
oapi.create_vessel("VanTV4stg2", "VanTV4stg2", vs)
third()
end
-- Create jettisoned arm
function separations.arm1_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=1,z=0}
local svel = 0.1
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0.21,z=0.655})
t.vrot = {x=0,y=0,z=-0.2}
vs:set(t)
oapi.create_vessel("VanTV4arm1", "VanTV4arm1", vs)
no_arm()
vi:record_event("SPLIT","ARMS")
end
-- Create jettisoned arm
function separations.arm2_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=-1,y=0,z=0}
local svel = 0.06
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=-0.21,y=0,z=0.655})
t.vrot = {x=0,y=0,z=-0.25}
vs:set(t)
oapi.create_vessel("VanTV4arm2", "VanTV4arm2", vs)
end
-- Create jettisoned arm
function separations.arm3_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=-1,z=0}
local svel = 0.08
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=-0.21,z=0.655})
t.vrot = {x=0,y=0,z=-0.15}
vs:set(t)
oapi.create_vessel("VanTV4arm3", "VanTV4arm3", vs)
end
-- Create jettisoned arm
function separations.arm4_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=1,y=0,z=0}
local svel = 0.1
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0.21,y=0,z=0.655})
t.vrot = {x=0,y=0,z=-0.2}
vs:set(t)
oapi.create_vessel("VanTV4arm4", "VanTV4arm4", vs)
end
-- Create spent third stage
function separations.third_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=0,z=-1}
local svel = 0.03
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=-0.138})
vs:set(t)
oapi.create_vessel("VanTV4stg3", "VanTV4stg3", vs)
sat()
vi:record_event("JET","SAT")
end
-- Create jettisoned strap
function separations.strap_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=-0.01,y=0.01,z=0.08}
local svel = 0.5
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=-1.113})
vs:set(t)
oapi.create_vessel("VanTV4strap", "VanTV4strap", vs)
end
-- Create jettisoned girth rings
function separations.girth1_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=1,y=0,z=-1.5}
local svel = 0.03
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0.010,y=0,z=-0.281})
vs:set(t)
oapi.create_vessel("VanTV4girth1", "VanTV4girth1", vs)
end
function separations.girth2_separation()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=-1,y=0,z=-1.5}
local svel = 0.03
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=-0.010,y=0,z=-0.281})
vs:set(t)
oapi.create_vessel("VanTV4girth2", "VanTV4girth2", vs)
end
function separations.third_playback()
local vs = vi:get_rawstatus(1)
local t = vs:get()
local sdir = {x=0,y=0,z=-1}
local svel = 0.03
local rofs = vi:globalrot(sdir)
t.rvel.x = t.rvel.x + rofs.x * svel
t.rvel.y = t.rvel.y + rofs.y * svel
t.rvel.z = t.rvel.z + rofs.z * svel
t.rpos = vi:local2rel({x=0,y=0,z=-0.98})
vs:set(t)
oapi.create_vessel("VanTV4stg3", "VanTV4stg3", vs)
sat()
end
return separations