From e9b906258a07b55ad62738552130df51dd872482 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 16 Jun 2019 10:38:03 +0200 Subject: [PATCH] Small refactoring in Block. --- nageru/scene.cpp | 5 ++--- nageru/scene.h | 5 +++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/nageru/scene.cpp b/nageru/scene.cpp index 8df9511..6c3a039 100644 --- a/nageru/scene.cpp +++ b/nageru/scene.cpp @@ -191,8 +191,7 @@ Effect *Scene::instantiate_effects(const Block *block, size_t chain_idx, Scene:: } // Find the chosen alternative for this block in this instance. - size_t chosen_alternative = (chain_idx / block->cardinality_base) % block->alternatives.size(); - EffectType chosen_type = block->alternatives[chosen_alternative]->effect_type; + EffectType chosen_type = block->alternatives[block->chosen_alternative(chain_idx)]->effect_type; Effect *effect; switch (chosen_type) { @@ -225,7 +224,7 @@ Effect *Scene::instantiate_effects(const Block *block, size_t chain_idx, Scene:: break; } default: - effect = instantiate_effect(instantiation->chain.get(), block->alternatives[chosen_alternative]->effect_type); + effect = instantiate_effect(instantiation->chain.get(), chosen_type); instantiation->chain->add_effect(effect, inputs); break; } diff --git a/nageru/scene.h b/nageru/scene.h index bf23fbd..b659429 100644 --- a/nageru/scene.h +++ b/nageru/scene.h @@ -76,6 +76,11 @@ struct Block { // (B_i is alternatives.size().) Not set before finalize() has run. size_t cardinality_base = 0; + // Find the chosen alternative for this block in a given instance. + size_t chosen_alternative(size_t chain_idx) const { + return (chain_idx / cardinality_base) % alternatives.size(); + } + std::vector alternatives; // Must all have the same amount of inputs. Pointers to make things easier for Lua. std::vector inputs; // One for each input of alternatives[0] (ie., typically 0 or 1, occasionally 2). int currently_chosen_alternative = 0; -- 2.39.2