DashboardItemText

Inherits DashboardItem

Members

Name

Documentation

Type

Description

Optional

FontName

This value is the name of the font that is used. It can either refer to an internal name registered previously, or it can refer to a path that is used

String

Value of type ‘String’

Yes

FontSize

This value determines the size of the font that is used to render the distance

Double

Value of type ‘Double’

Yes

Text

The text to be displayed

String

Value of type ‘String’

Yes

Asset Examples

  1asset.require("spice/core") -- openspace.time.advancedTime depends on SPICE
  2asset.require("scene/solarsystem/planets/earth/atmosphere")
  3
  4-- Function to advance a time stamp in the given number of days, hours, minutes and
  5-- seconds. returns the new time stamp
  6local function advance(time, days, hours, minutes, seconds)
  7  local result = openspace.time.advancedTime(time, tostring(days) .. "d")
  8  result = openspace.time.advancedTime(result, tostring(hours) .. "h")
  9  result = openspace.time.advancedTime(result, tostring(minutes) .. "m")
 10  result = openspace.time.advancedTime(result, tostring(seconds) .. "s")
 11
 12  return result
 13end
 14
 15local LaunchTime = "2021-12-25T12:20:00.000"
 16local DetachTime = "2021-12-25T12:50:00.000"
 17
 18-- JWST timelapse timeline, forwards
 19local function createForwardTimelapse()
 20  local timelapse = [[
 21    -- Mission start, setup 2 sec after, reset night layer
 22    openspace.scriptScheduler.loadScheduledScript("]] ..
 23      advance(LaunchTime, 0, 0, 0, 2) .. [[",
 24      "openspace.setPropertyValueSingle(\"Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma\", 1.0)" ..
 25      "openspace.setPropertyValueSingle(\"Scene.EarthAtmosphere.Renderable.Enabled\", true)"
 26    )
 27
 28    -- Mission start, GO 3 sec after
 29    openspace.scriptScheduler.loadScheduledScript("]] ..
 30      advance(LaunchTime, 0, 0, 0, 3) .. [[",
 31      "openspace.time.interpolateDeltaTime(5)" ..
 32      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 5 seconds/second\")"
 33    )
 34
 35    -- Speed up when reaching higher altitude
 36    openspace.scriptScheduler.loadScheduledScript("]] ..
 37      advance(LaunchTime, 0, 0, 2, 0) .. [[",
 38      "openspace.time.interpolateDeltaTime(300)" ..
 39      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 5 minutes/second\")"
 40    )
 41
 42    -- array deploy
 43    openspace.scriptScheduler.loadScheduledScript("]] ..
 44      advance(LaunchTime, 0, 0, 30 - 2, 20 - 40) .. [[", -- 2 min 40 sec pre delay
 45      "openspace.time.interpolateDeltaTime(1)" ..
 46      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 1 second/second\")"
 47    )
 48
 49    -- array complete
 50    openspace.scriptScheduler.loadScheduledScript("]] ..
 51      advance(LaunchTime, 0, 0, 30, 42) .. [[",
 52      "openspace.time.interpolateDeltaTime(2400)" ..
 53      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 40 minutes/second\")"
 54    )
 55
 56    -- Make night layer more visible, at around 14:00
 57    openspace.scriptScheduler.loadScheduledScript("]] ..
 58      advance(DetachTime, 0, 1, 10, 0) .. [[",
 59      "openspace.time.interpolateDeltaTime(7200)" ..
 60      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 hours/second\")" ..
 61      "openspace.setPropertyValueSingle(\"Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma\", 0.7)" ..
 62      "openspace.setPropertyValueSingle(\"Scene.EarthAtmosphere.Renderable.Enabled\", false)"
 63    )
 64
 65    -- antenna deploy
 66    openspace.scriptScheduler.loadScheduledScript("]] ..
 67    advance(LaunchTime, 0, 18, 0, 0) .. [[",
 68      "openspace.time.interpolateDeltaTime(1800)" ..
 69      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
 70    )
 71
 72    -- antenna complete
 73    openspace.scriptScheduler.loadScheduledScript("]] ..
 74      advance(LaunchTime, 0, 23, 39, 0) .. [[",
 75      "openspace.time.interpolateDeltaTime(18000)" ..
 76      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 5 hours/second\")"
 77    )
 78
 79    -- fw palette deploy
 80    openspace.scriptScheduler.loadScheduledScript("]] ..
 81      advance(LaunchTime, 2, 18 - 2, 20, 35) .. [[", -- 2h pre delay so time to interpolate
 82      "openspace.time.interpolateDeltaTime(3600)" ..
 83      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 1 hour/second\")"
 84    )
 85
 86    -- fw palette complete
 87    openspace.scriptScheduler.loadScheduledScript("]] ..
 88      advance(LaunchTime, 3, 6, 0, 0) .. [[",
 89      "openspace.time.interpolateDeltaTime(1800)" ..
 90      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
 91    )
 92
 93    -- r palette deploy
 94    openspace.scriptScheduler.loadScheduledScript("]] ..
 95      advance(LaunchTime, 3, 8, 51, 0) .. [[",
 96      "openspace.time.interpolateDeltaTime(1800)" ..
 97      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
 98    )
 99
100    -- r palette complete
101    openspace.scriptScheduler.loadScheduledScript("]] ..
102      advance(LaunchTime, 3, 12, 0, 0) .. [[",
103      "openspace.time.interpolateDeltaTime(120)" ..
104      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 minutes/second\")"
105    )
106
107    -- base rise deploy
108    openspace.scriptScheduler.loadScheduledScript("]] ..
109      advance(LaunchTime, 3, 12, 22, 0) .. [[",
110      "openspace.time.interpolateDeltaTime(7200)" ..
111      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 hours/second\")"
112    )
113
114    -- base rise complete
115    openspace.scriptScheduler.loadScheduledScript("]] ..
116      advance(LaunchTime, 4, 17, 35, 0) .. [[",
117      "openspace.time.interpolateDeltaTime(1800)" ..
118      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
119    )
120
121    -- aft flap deploy
122    openspace.scriptScheduler.loadScheduledScript("]] ..
123      advance(LaunchTime, 4, 21, 0, 0) .. [[",
124      "openspace.time.interpolateDeltaTime(600)" ..
125      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 10 minutes/second\")"
126    )
127
128    -- aft flap complete
129    openspace.scriptScheduler.loadScheduledScript("]] ..
130      advance(LaunchTime, 5, 1, 37, 0) .. [[",
131      "openspace.time.interpolateDeltaTime(3600)" ..
132      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 1 hour/second\")"
133    )
134
135    -- mid booms extend
136    openspace.scriptScheduler.loadScheduledScript("]] ..
137      advance(LaunchTime, 5, 11, 29, 43) .. [[",
138      "openspace.time.interpolateDeltaTime(1800)" ..
139      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
140    )
141
142    -- first boom stop
143    openspace.scriptScheduler.loadScheduledScript("]] ..
144      advance(LaunchTime, 5, 12, 16, 16) .. [[",
145      "openspace.time.interpolateDeltaTime(1800)" ..
146      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
147    )
148
149    -- right boom complete
150    openspace.scriptScheduler.loadScheduledScript("]] ..
151      advance(LaunchTime, 5, 17, 42, 5) .. [[",
152      "openspace.time.interpolateDeltaTime(1800)" ..
153      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
154    )
155
156    -- left booms complete
157    openspace.scriptScheduler.loadScheduledScript("]] ..
158      advance(LaunchTime, 5, 22, 6, 0) .. [[",
159      "openspace.time.interpolateDeltaTime(30)" ..
160      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 seconds/second\")"
161    )
162
163    -- tension sun shield membranes
164    openspace.scriptScheduler.loadScheduledScript("]] ..
165      advance(LaunchTime, 5, 22, 9, 14) .. [[",
166      "openspace.time.interpolateDeltaTime(60)" ..
167      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 1 minute/second\")"
168    )
169
170    -- membrane tension complete
171    openspace.scriptScheduler.loadScheduledScript("]] ..
172      advance(LaunchTime, 5, 22, 20, 0) .. [[",
173      "openspace.time.interpolateDeltaTime(7200)" ..
174      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 hours/second\")"
175    )
176
177    -- membranes separate
178    openspace.scriptScheduler.loadScheduledScript("]] ..
179      advance(LaunchTime, 6, 12, 36, 49) .. [[",
180      "openspace.time.interpolateDeltaTime(3600)" ..
181      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 1 hour/second\")"
182    )
183
184    -- secondary mirror deploy
185    openspace.scriptScheduler.loadScheduledScript("]] ..
186      advance(LaunchTime, 7, 0, 0, 0) .. [[",
187      "openspace.time.interpolateDeltaTime(18000)" ..
188      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 5 hours/second\")"
189    )
190
191    -- secondary mirror complete
192    openspace.scriptScheduler.loadScheduledScript("]] ..
193      advance(LaunchTime, 11, 10, 33, 0) .. [[",
194      "openspace.time.interpolateDeltaTime(1200)" ..
195      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 20 minutes/second\")"
196    )
197
198    -- aft radiator deploy
199    openspace.scriptScheduler.loadScheduledScript("]] ..
200      advance(LaunchTime, 11, 12, 20, 48) .. [[",
201      "openspace.time.interpolateDeltaTime(1800)" ..
202      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 30 minutes/second\")"
203    )
204
205    -- aft radiator complete, forward
206    openspace.scriptScheduler.loadScheduledScript("]] ..
207      advance(LaunchTime, 11, 16, 5, 0) .. [[",
208      "openspace.time.interpolateDeltaTime(7200)" ..
209      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 hours/second\")"
210    )
211
212    -- rt cord fold wings deploy
213    openspace.scriptScheduler.loadScheduledScript("]] ..
214      advance(LaunchTime, 12, 9, 30, 0) .. [[",
215      "openspace.time.interpolateDeltaTime(7200)" ..
216      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 hours/second\")"
217    )
218
219    -- rt cord fold wings complete
220    openspace.scriptScheduler.loadScheduledScript("]] ..
221      advance(LaunchTime, 13, 12, 40, 48) .. [[",
222      "openspace.time.interpolateDeltaTime(7200)" ..
223      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 hours/second\")"
224    )
225
226    -- lft cord fold wings deploy
227    openspace.scriptScheduler.loadScheduledScript("]] ..
228      advance(LaunchTime, 13, 23, 0, 0) .. [[",
229      "openspace.time.interpolateDeltaTime(7200)" ..
230      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: 2 hours/second\")"
231    )
232
233    -- lft cord fold wings complete
234    openspace.scriptScheduler.loadScheduledScript("]] ..
235      advance(LaunchTime, 14, 19, 0, 0) .. [[",
236      "openspace.time.interpolateDeltaTime(1)" ..
237      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"\")" ..
238      "openspace.setPropertyValueSingle(\"Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma\", 1.0)" ..
239      "openspace.setPropertyValueSingle(\"Scene.EarthAtmosphere.Renderable.Enabled\", true)"
240    )
241
242    -- Finished, slow down, 1 sec after end
243    openspace.scriptScheduler.loadScheduledScript("]] ..
244      advance(LaunchTime, 14, 19, 0, 2) .. [[",
245      "openspace.scriptScheduler.clear(0)"
246    )
247  ]]
248
249  return timelapse
250end
251
252
253
254
255
256-- JWST timelapse timeline, backwards
257local function createBackwardTimelapse()
258  local timelapse = [[
259    -- Finished
260    openspace.scriptScheduler.loadScheduledScript("]] ..
261      advance(LaunchTime, 0, 0, 30, 20) .. [[",
262      "",
263      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"\")" ..
264      "openspace.scriptScheduler.clear(0)"
265    )
266
267    -- array complete
268    openspace.scriptScheduler.loadScheduledScript("]] ..
269      advance(LaunchTime, 0, 0, 30 + 1, 42 + 10) .. [[", -- 1 min 10 sec pre delay so time to interpolate
270      "",
271      "openspace.time.interpolateDeltaTime(-1)" ..
272      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -1 second/second\")"
273    )
274    -- array complete, prepare
275    openspace.scriptScheduler.loadScheduledScript("]] ..
276      advance(LaunchTime, 0, 0 + 1, 30 + 10, 42) .. [[", -- 1h 10 min delay for interpolation
277      "",
278      "openspace.time.interpolateDeltaTime(-120)" ..
279      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 minutes/second\")"
280    )
281
282    -- Reset night layer, at around 14:00
283    openspace.scriptScheduler.loadScheduledScript("]] ..
284      advance(DetachTime, 0, 1 + 1, 10, 0) .. [[", -- 1h pre delay so time to interpolate
285      "",
286      "openspace.time.interpolateDeltaTime(-2400)" ..
287      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -40 minutes/second\")" ..
288      "openspace.setPropertyValueSingle(\"Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma\", 1.0)" ..
289      "openspace.setPropertyValueSingle(\"Scene.EarthAtmosphere.Renderable.Enabled\", true)"
290    )
291
292    -- antenna deploy
293    openspace.scriptScheduler.loadScheduledScript("]] ..
294    advance(LaunchTime, 0, 18, 0, 0) .. [[",
295      "",
296      "openspace.time.interpolateDeltaTime(-7200)" ..
297      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 hours/second\")"
298    )
299
300    -- antenna complete
301    openspace.scriptScheduler.loadScheduledScript("]] ..
302      advance(LaunchTime, 0, 23 + 1, 39, 0) .. [[", -- 1h pre delay so time to interpolate
303      "",
304      "openspace.time.interpolateDeltaTime(-1800)" ..
305      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
306    )
307
308    -- fw palette deploy
309    openspace.scriptScheduler.loadScheduledScript("]] ..
310      advance(LaunchTime, 2, 18, 20, 35) .. [[",
311      "",
312      "openspace.time.interpolateDeltaTime(-18000)" ..
313      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -5 hours/second\")"
314    )
315
316    -- fw palette complete
317    openspace.scriptScheduler.loadScheduledScript("]] ..
318      advance(LaunchTime, 3, 6, 0, 0) .. [[",
319      "",
320      "openspace.time.interpolateDeltaTime(-3600)" ..
321      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -1 hour/second\")"
322    )
323
324    -- r palette deploy
325    openspace.scriptScheduler.loadScheduledScript("]] ..
326      advance(LaunchTime, 3, 8, 51, 0) .. [[",
327      "",
328      "openspace.time.interpolateDeltaTime(-1800)" ..
329      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
330    )
331
332    -- r palette complete
333    openspace.scriptScheduler.loadScheduledScript("]] ..
334      advance(LaunchTime, 3, 12, 0, 0) .. [[",
335      "",
336      "openspace.time.interpolateDeltaTime(-1800)" ..
337      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
338    )
339
340    -- base rise deploy
341    openspace.scriptScheduler.loadScheduledScript("]] ..
342      advance(LaunchTime, 3, 12, 22, 0) .. [[",
343      "",
344      "openspace.time.interpolateDeltaTime(-120)" ..
345      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 minutes/second\")"
346    )
347
348    -- base rise complete
349    openspace.scriptScheduler.loadScheduledScript("]] ..
350      advance(LaunchTime, 4, 17, 35, 0) .. [[",
351      "",
352      "openspace.time.interpolateDeltaTime(-7200)" ..
353      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 hours/second\")"
354    )
355
356    -- aft flap deploy
357    openspace.scriptScheduler.loadScheduledScript("]] ..
358      advance(LaunchTime, 4, 21, 0, 0) .. [[",
359      "",
360      "openspace.time.interpolateDeltaTime(-1800)" ..
361      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
362    )
363
364    -- aft flap complete
365    openspace.scriptScheduler.loadScheduledScript("]] ..
366      advance(LaunchTime, 5, 1, 37 + 30, 0) .. [[", -- 30 min pre delay so time to interpolate
367      "",
368      "openspace.time.interpolateDeltaTime(-600)" ..
369      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -10 minutes/second\")"
370    )
371
372    -- mid booms extend
373    openspace.scriptScheduler.loadScheduledScript("]] ..
374      advance(LaunchTime, 5, 11, 29, 43) .. [[",
375      "",
376      "openspace.time.interpolateDeltaTime(-3600)" ..
377      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -1 hour/second\")"
378    )
379
380    -- first boom stop
381    openspace.scriptScheduler.loadScheduledScript("]] ..
382      advance(LaunchTime, 5, 12, 16, 16) .. [[",
383      "",
384      "openspace.time.interpolateDeltaTime(-1800)" ..
385      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
386    )
387
388    -- right boom complete
389    openspace.scriptScheduler.loadScheduledScript("]] ..
390      advance(LaunchTime, 5, 17, 42, 5) .. [[",
391      "",
392      "openspace.time.interpolateDeltaTime(-1800)" ..
393      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
394    )
395
396    -- left booms complete
397    openspace.scriptScheduler.loadScheduledScript("]] ..
398      advance(LaunchTime, 5, 22, 6, 0) .. [[",
399      "",
400      "openspace.time.interpolateDeltaTime(-1800)" ..
401      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
402    )
403
404    -- tension sun shield membranes
405    openspace.scriptScheduler.loadScheduledScript("]] ..
406      advance(LaunchTime, 5, 22, 9, 14) .. [[",
407      "",
408      "openspace.time.interpolateDeltaTime(-30)" ..
409      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 seconds/second\")"
410    )
411
412    -- membrane tension complete
413    openspace.scriptScheduler.loadScheduledScript("]] ..
414      advance(LaunchTime, 5, 22, 20, 0) .. [[",
415      "",
416      "openspace.time.interpolateDeltaTime(-60)" ..
417      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -1 minute/second\")"
418    )
419
420    -- membranes separate
421    openspace.scriptScheduler.loadScheduledScript("]] ..
422      advance(LaunchTime, 6, 12, 36, 49) .. [[",
423      "",
424      "openspace.time.interpolateDeltaTime(-7200)" ..
425      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 hours/second\")"
426    )
427
428    -- secondary mirror deploy
429    openspace.scriptScheduler.loadScheduledScript("]] ..
430      advance(LaunchTime, 7, 0, 0, 0) .. [[",
431      "",
432      "openspace.time.interpolateDeltaTime(-3600)" ..
433      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -1 hour/second\")"
434    )
435
436    -- secondary mirror complete
437    openspace.scriptScheduler.loadScheduledScript("]] ..
438      advance(LaunchTime, 11, 10, 33, 0) .. [[",
439      "",
440      "openspace.time.interpolateDeltaTime(-18000)" ..
441      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -5 hours/second\")"
442    )
443
444    -- aft radiator deploy
445    openspace.scriptScheduler.loadScheduledScript("]] ..
446      advance(LaunchTime, 11, 12, 20, 48) .. [[",
447      "",
448      "openspace.time.interpolateDeltaTime(-1200)" ..
449      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -20 minutes/second\")"
450    )
451
452    -- aft radiator complete
453    openspace.scriptScheduler.loadScheduledScript("]] ..
454      advance(LaunchTime, 11, 16 + 1, 5, 0) .. [[", -- 1h pre delay so time to interpolate
455      "",
456      "openspace.time.interpolateDeltaTime(-1800)" ..
457      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -30 minutes/second\")"
458    )
459
460    -- rt cord fold wings deploy
461    openspace.scriptScheduler.loadScheduledScript("]] ..
462      advance(LaunchTime, 12, 9, 30, 0) .. [[",
463      "",
464      "openspace.time.interpolateDeltaTime(-7200)" ..
465      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 hours/second\")"
466    )
467
468    -- rt cord fold wings complete
469    openspace.scriptScheduler.loadScheduledScript("]] ..
470      advance(LaunchTime, 13, 12, 40, 48) .. [[",
471      "",
472      "openspace.time.interpolateDeltaTime(-7200)" ..
473      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 hours/second\")"
474    )
475
476    -- lft cord fold wings deploy
477    openspace.scriptScheduler.loadScheduledScript("]] ..
478      advance(LaunchTime, 13, 23, 0, 0) .. [[",
479      "",
480      "openspace.time.interpolateDeltaTime(-7200)" ..
481      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 hours/second\")"
482    )
483
484    -- lft cord fold wings complete
485    openspace.scriptScheduler.loadScheduledScript("]] ..
486      advance(LaunchTime, 14, 19, 0, 0) .. [[",
487      "",
488      "openspace.time.interpolateDeltaTime(-7200)" ..
489      "openspace.setPropertyValueSingle(\"Dashboard.JWSTStateText.Text\", \"Time speed: -2 hours/second\")" ..
490      "openspace.setPropertyValueSingle(\"Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma\", 0.7)" ..
491      "openspace.setPropertyValueSingle(\"Scene.EarthAtmosphere.Renderable.Enabled\", false)"
492    )
493  ]]
494
495  return timelapse
496end
497
498
499-- We have define the actual content of these actions in the onInitialize function since
500-- the `advanceTime` function is not available at Asset load time and we have to wait
501-- until the initialize function for it
502local PlayForwards
503local PlayDetach
504local PlayBackwards
505local ClearTimelapse
506local ToggleDirection
507
508local Text = {
509  Type = "DashboardItemText",
510  Identifier = "JWSTStateText",
511  GuiName = "JWST State Dashboard Text",
512  Text = ""
513}
514
515
516asset.onInitialize(function()
517  PlayForwards = {
518    Identifier = "os.jwst.PlayForwards",
519    Name = "Play JWST from start",
520    Command = [[
521      openspace.scriptScheduler.clear(0)
522      openspace.time.setDeltaTime(1)
523      openspace.setPropertyValueSingle("Dashboard.JWSTStateText.Text", "")
524      openspace.time.setTime("]] .. advance(LaunchTime, 0, 0, 0, 1) .. [[")
525      ]] .. createForwardTimelapse() .. [[
526      openspace.time.setDeltaTime(1)
527    ]],
528    Documentation = "Jump to the JWST launch time and play the timelapse of deployment forward",
529    GuiPath = "/JWST",
530    IsLocal = false
531  }
532
533  PlayDetach = {
534    Identifier = "os.jwst.PlayDetach",
535    Name = "Play JWST from detach",
536    Command = [[
537      openspace.scriptScheduler.clear(0)
538      openspace.time.setDeltaTime(1)
539      openspace.setPropertyValueSingle("Dashboard.JWSTStateText.Text", "")
540      openspace.setPropertyValueSingle("Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma", 1.0)
541      openspace.setPropertyValueSingle("Scene.EarthAtmosphere.Renderable.Enabled", true)
542      openspace.time.setTime("]] .. DetachTime .. [[")
543      ]] .. createForwardTimelapse() .. [[
544      openspace.time.setDeltaTime(1)
545    ]],
546    Documentation = "Jump to the JWST detach time and play the timelapse of deployment forward",
547    GuiPath = "/JWST",
548    IsLocal = false
549  }
550
551  PlayBackwards = {
552    Identifier = "os.jwst.PlayBackwards",
553    Name = "Play JWST from end",
554    Command = [[
555      openspace.scriptScheduler.clear(0)
556      openspace.time.setDeltaTime(-1)
557      openspace.setPropertyValueSingle("Dashboard.JWSTStateText.Text", "")
558      openspace.time.setTime("2022 JAN 09 07:20:01")
559      ]] .. createBackwardTimelapse() .. [[
560      openspace.time.setDeltaTime(-1)
561    ]],
562    Documentation = "Jump to the end of JWST deployment time and play the timelapse of deployment in reverse",
563    GuiPath = "/JWST",
564    IsLocal = false
565  }
566
567  ClearTimelapse = {
568    Identifier = "os.jwst.ClearTimelapse",
569    Name = "Clear JWST timelapse",
570    Command = [[
571      openspace.scriptScheduler.clear(0)
572      openspace.setPropertyValueSingle("Dashboard.JWSTStateText.Text", "")
573      openspace.setPropertyValueSingle("Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma", 1.0)
574      openspace.setPropertyValueSingle("Scene.EarthAtmosphere.Renderable.Enabled", true)
575      local deltaTime = openspace.time.deltaTime()
576      if deltaTime >= 0 then
577        openspace.time.setDeltaTime(1)
578      else
579        openspace.time.setDeltaTime(-1)
580      end
581    ]],
582    Documentation = "Set delta time back to realtime and clear the JWST deployment timelapse",
583    GuiPath = "/JWST",
584    IsLocal = false
585  }
586
587  ToggleDirection = {
588    Identifier = "os.jwst.ToggleDirection",
589    Name = "Toggle forwards / backwards",
590    Command = [[
591      -- Flip deltatime
592      local deltaTime = openspace.time.deltaTime()
593      openspace.time.setDeltaTime(-deltaTime)
594
595      -- Switch timelapse script
596      if deltaTime < 0 then
597        -- Going backwards and switching to forwards
598        openspace.scriptScheduler.clear(0)
599        ]] .. createForwardTimelapse() .. [[
600      else
601        -- Going forwards and switching to backwards
602        openspace.scriptScheduler.clear(0)
603        ]] .. createBackwardTimelapse() .. [[
604      end
605
606      -- Update the dashboard text
607      local text = openspace.propertyValue("Dashboard.JWSTStateText.Text")
608      if string.len(text) > 14 then
609        local newText = ""
610        if text:sub(13, 13) == "-" then
611          newText = text:sub(1,12) .. text:sub(14)
612        else
613          newText = text:sub(1,12) .. "-" .. text:sub(13)
614        end
615        openspace.setPropertyValueSingle("Dashboard.JWSTStateText.Text", newText)
616      else
617        openspace.setPropertyValueSingle("Dashboard.JWSTStateText.Text", "")
618      end
619    ]],
620    Documentation = "Toggle deployment timelapse direction between forwards and backwards",
621    GuiPath = "/JWST",
622    IsLocal = false
623  }
624
625  openspace.action.registerAction(PlayForwards)
626  openspace.action.registerAction(PlayDetach)
627  openspace.action.registerAction(PlayBackwards)
628  openspace.action.registerAction(ClearTimelapse)
629  openspace.action.registerAction(ToggleDirection)
630
631  openspace.dashboard.addDashboardItem(Text)
632end)
633
634asset.onDeinitialize(function()
635  openspace.scriptScheduler.clear()
636  openspace.dashboard.removeDashboardItem(Text)
637
638  openspace.action.removeAction(PlayForwards)
639  openspace.action.removeAction(PlayDetach)
640  openspace.action.removeAction(PlayBackwards)
641  openspace.action.removeAction(ClearTimelapse)
642  openspace.action.removeAction(ToggleDirection)
643end)
644
645
646
647asset.meta = {
648  Name = "James Webb Space Telescope Timelapse",
649  Version = "1.1",
650  Description = [[
651    Scripts that are scheduled to alter the speed of the simulation time so the deployment
652    of the James Webb Space Telescope looks smoother.
653  ]],
654  Author = "OpenSpace Team",
655  URL = "http://openspaceproject.com",
656  License = "MIT license"
657}