cmd = false part = 0 function nextpart() cmd = true part = part + 1 end keyhandlers = { x = nextpart } function handlekey(k) handler = keyhandlers[k.char] if (handler ~= nil) then handler() return true else return false end end finished = false celestia:registereventhandler("key", handlekey) obs = celestia:getobserver() obs:singleview() days = 1 secs = 1.0 / 86400.0 hours = 1.0 / 24.0 nearlandingtime = celestia:tojulianday(2001, 2, 12, 19, 45, 20) demoparts = { } demoparts[0] = function() celestia:settime(nearlandingtime - 14*hours) local eros = celestia:find("Sol/Eros") local near = celestia:find("Sol/NEAR Shoemaker") obs:singleview() obs:splitview("v", 0.5) local o = celestia:getobservers() o[1]:follow(near) o[1]:gotodistance(near, 0.01, 15) o[2]:follow(eros) o[2]:gotodistance(eros, 100, 10) end demoparts[1] = function() obs:singleview() local obj = celestia:find("Sol/Saturn") obs:goto(obj) end -- Main demo loop repeat celestia:flash("Part " .. part) if (demoparts[part] == nil) then finished = true else demoparts[part]() -- Pause for keyboard input repeat wait() until cmd cmd = false end until finished celestia:flash("Demonstration finished")