28 halp_meta(name,
"Scene Switch")
29 halp_meta(category,
"Visuals/3D/Scene")
30 halp_meta(c_name,
"scene_switch")
31 halp_meta(authors,
"ossia team")
34 "https://ossia.io/score-docs/processes/scene-switch.html")
35 halp_meta(uuid,
"7d5c3f8a-2e9b-4a1c-8f6d-5b3e0d9a7c4f")
41 halp_meta(name,
"Scene 0");
42 ossia::scene_spec scene;
47 halp_meta(name,
"Scene 1");
48 ossia::scene_spec scene;
53 halp_meta(name,
"Scene 2");
54 ossia::scene_spec scene;
59 halp_meta(name,
"Scene 3");
60 ossia::scene_spec scene;
64 halp::spinbox_i32<
"Index", halp::irange{0, 3, 0}> index;
68 const ossia::scene_state* m_cached_state{};
69 int64_t m_cached_version{-1};
70 int m_cached_index{-1};
76 halp_meta(name,
"Scene Out");
77 ossia::scene_spec scene;
84 const int idx = inputs.index.value;
85 const ossia::scene_spec* picked =
nullptr;
88 case 0: picked = &inputs.scene0.scene;
break;
89 case 1: picked = &inputs.scene1.scene;
break;
90 case 2: picked = &inputs.scene2.scene;
break;
91 case 3: picked = &inputs.scene3.scene;
break;
92 default: picked = &inputs.scene0.scene;
break;
94 outputs.scene_out.scene = *picked;
99 const auto* s = picked->state.get();
100 const int64_t v = s ? s->version : -1;
101 const bool changed = (idx != m_cached_index) || (s != m_cached_state)
102 || (v != m_cached_version);
103 outputs.scene_out.dirty = (s && changed) ? 0xFF : 0;
104 m_cached_index = idx;
106 m_cached_version = v;