DashboardItemText
Inherits DashboardItem
Members
Name |
Documentation |
Type |
Description |
Optional |
---|---|---|---|---|
|
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 |
|
Value of type ‘String’ |
Yes |
|
This value determines the size of the font that is used to render the distance |
|
Value of type ‘Double’ |
Yes |
|
The text to be displayed |
|
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}