47 if (mode_ ==
mode)
return;
53 void reset() { hit_index_ = 0; }
58 return {base_seed,
true,
true};
60 return {advance_seed(base_seed),
true,
true};
62 return {base_seed,
false,
false};
64 return {base_seed,
true,
false};
66 return {advance_seed(base_seed),
true,
false};
68 return {base_seed,
true,
true};
75 std::uint32_t advance_seed(std::uint32_t base_seed) {
77 return base_seed +
static_cast<std::uint32_t
>(hit_index_ * 2654435761u);
81 std::uint32_t hit_index_ = 0;
HitLifeMode mode() const
Definition hit_life.hpp:51
HitLife(HitLifeMode mode=HitLifeMode::fixed_seed)
Definition hit_life.hpp:43
HitLifeDecision trigger(std::uint32_t base_seed)
Definition hit_life.hpp:55
void set_mode(HitLifeMode mode)
Definition hit_life.hpp:46
void reset()
Definition hit_life.hpp:53
HitLifeMode
Selects the intentional source of variation between otherwise identical hits.
Definition hit_life.hpp:26
@ advancing_seed
Definition hit_life.hpp:28
@ advancing_seed_preserved_body
Definition hit_life.hpp:31
@ fixed_seed_preserved_body
Definition hit_life.hpp:30
@ preserved_state
Definition hit_life.hpp:29
@ fixed_seed
Definition hit_life.hpp:27
Definition hit_life.hpp:34
bool reseed_excitation
Definition hit_life.hpp:36
std::uint32_t seed
Definition hit_life.hpp:35
bool reset_dsp_state
Definition hit_life.hpp:37