MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / load

Method load

source/frontend/StarCinematic.cpp:19–100  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17}
18
19void Cinematic::load(Json const& definition) {
20 stop();
21
22 for (auto timeSkipDefinition : definition.getArray("timeSkips", JsonArray())) {
23 TimeSkip timeSkip;
24 timeSkip.availableTime = timeSkipDefinition.getFloat("available");
25 timeSkip.skipToTime = timeSkipDefinition.getFloat("skipTo");
26 m_timeSkips.append(timeSkip);
27 }
28 sort(m_timeSkips, [](TimeSkip const& a, TimeSkip const& b) -> bool {
29 return a.availableTime < b.availableTime;
30 });
31
32 for (auto cameraDefinition : definition.getArray("camera", JsonArray())) {
33 CameraKeyFrame keyFrame;
34 keyFrame.timecode = cameraDefinition.getFloat("timecode");
35 keyFrame.zoom = cameraDefinition.getFloat("zoom", 1.0f);
36 if (cameraDefinition.contains("pan"))
37 keyFrame.pan = jsonToVec2F(cameraDefinition.get("pan"));
38 m_cameraKeyFrames.append(keyFrame);
39 }
40
41 for (auto panelDefinition : definition.getArray("panels")) {
42 PanelPtr panel = make_shared<Panel>();
43 panel->useCamera = panelDefinition.getBool("useCamera", true);
44 panel->drawables = panelDefinition.getArray("drawables", {});
45 panel->animationFrames = panelDefinition.getInt("animationFrames", std::numeric_limits<int>::max());
46 panel->text = panelDefinition.getString("text", "");
47 panel->textPosition = TextPositioning(panelDefinition.get("textPosition", JsonObject()));
48 panel->textStyle = panelDefinition.get("textStyle", Json());
49 panel->textStyle.color = panelDefinition.opt("fontColor").apply(jsonToVec4B).value(panel->textStyle.color);
50 panel->textStyle.fontSize = panelDefinition.getUInt("fontSize", panel->textStyle.fontSize);
51 panel->avatar = panelDefinition.getString("avatar", "");
52 panel->startTime = panelDefinition.getFloat("startTime", 0);
53 panel->endTime = panelDefinition.getFloat("endTime", 0);
54 panel->loopTime = panelDefinition.getFloat("loopTime", 0);
55 for (auto keyframeDefinition : panelDefinition.getArray("keyframes")) {
56 KeyFrame keyframe;
57 keyframe.timecode = keyframeDefinition.getFloat("timecode");
58 keyframe.command = keyframeDefinition;
59 panel->keyFrames.append(keyframe);
60 float endTimecode = panel->endTime > 0 ? std::min(panel->endTime, panel->startTime + keyframe.timecode) : panel->startTime + keyframe.timecode;
61 m_completionTime = std::max(m_completionTime, endTimecode);
62 }
63 m_panels.append(panel);
64 }
65
66 for (auto audioDefinition : definition.getArray("audio")) {
67 AudioCue cue;
68 cue.timecode = audioDefinition.getFloat("timecode");
69 cue.loops = audioDefinition.getInt("loops", 0);
70 cue.endTimecode = audioDefinition.getFloat("endTimecode", 0);
71 cue.resource = audioDefinition.getString("resource");
72 m_audioCues.append(cue);
73 m_completionTime = std::max(m_completionTime, cue.timecode);
74 m_completionTime = std::max(m_completionTime, cue.endTimecode);
75 }
76 m_activeAudio = std::vector<AudioInstancePtr>(m_audioCues.size());

Callers 3

cinemaMethod · 0.45
updateMethod · 0.45
closeMethod · 0.45

Calls 15

jsonToVec2FFunction · 0.85
TextPositioningClass · 0.85
JsonClass · 0.85
jsonToVec4BFunction · 0.85
getArrayMethod · 0.80
getFloatMethod · 0.80
getBoolMethod · 0.80
getIntMethod · 0.80
getStringMethod · 0.80
getUIntMethod · 0.80
sortFunction · 0.50
appendMethod · 0.45

Tested by

no test coverage detected