OSSIA
Open Scenario System for Interactive Application
rand_float.hpp
1 #pragma once
2 #include <ossia/dataflow/graph_node.hpp>
3 #include <ossia/dataflow/port.hpp>
4 
5 #include <random>
6 
7 namespace ossia::nodes
8 {
9 struct rand_float final : public ossia::nonowning_graph_node
10 {
11  ossia::value_outlet value_out;
12 
13 public:
14  std::uniform_real_distribution<float> dist;
15  rand_float(float min, float max)
16  : dist{min, max}
17  {
18  m_outlets.push_back(&value_out);
19  }
20 
21  void run(const ossia::token_request& t, ossia::exec_state_facade e) noexcept override
22  {
23  thread_local std::mt19937 gen;
24  auto& out = *value_out.target<ossia::value_port>();
25  auto tm = e.timings(t);
26  out.write_value(dist(gen), tm.start_sample);
27  }
28 };
29 }
constexpr OSSIA_INLINE auto min(const T a, const U b) noexcept -> typename std::conditional<(sizeof(T) > sizeof(U)), T, U >::type
min function tailored for values
Definition: math.hpp:125
constexpr OSSIA_INLINE auto max(const T a, const U b) noexcept -> typename std::conditional<(sizeof(T) > sizeof(U)), T, U >::type
max function tailored for values
Definition: math.hpp:96