#pragma once #include #include using json = nlohmann::json; struct DriftModel : IModel { float base, drift_rate; size_t period_ticks; DriftModel(const json& params, float defaultVal) : base(defaultVal), drift_rate(params.value("drift_rate", 0.0f)) , period_ticks(params.value("period_ms", 0) / 20) {} float evaluate(size_t t) override { if (period_ticks > 0) t %= period_ticks; return base + drift_rate * t; } };