3#include "sound_bakery/core/core_include.h"
9 class NamedParameterValue;
16 template <
typename ParameterType>
19 static_assert(std::is_arithmetic<ParameterType>::value);
49 : SB::Core::DatabaseObject(), m_property(min, min, max), m_defaultValue(min)
56 [[nodiscard]] ParameterType
get()
const {
return m_property.get(); }
58 [[nodiscard]] ParameterType getDefault()
const {
return m_defaultValue; }
65 void set(ParameterType value) { m_property.set(value); }
67 void setDefault(ParameterType value) { m_defaultValue = value; }
74 return m_property.getDelegate();
88 ParameterType m_defaultValue;
91 REGISTER_REFLECTION(
Parameter, DatabaseObject)
136 : m_values(),
Parameter((std::numeric_limits<SB_ID>::min)(), (std::numeric_limits<SB_ID>::max)())
149 if (name.empty() ==
false)
153 parameterValue->setDatabaseName(name);
154 parameterValue->parentParameter =
this;
156 result = parameterValue;
158 m_values.emplace(parameterValue);
170 std::unordered_set<SB::Core::DatabasePtr<NamedParameterValue>>
getValues()
172 if (m_values.empty())
174 setSelectedValue(addNewValue(
"None"));
188 if (m_values.contains(value))
212 std::unordered_set<SB::Core::DatabasePtr<NamedParameterValue>> m_values;
225 std::unordered_set<GlobalFloatParameter> floatParameters;
226 std::unordered_set<GlobalIntParameter> intParameters;
234 std::unordered_map<GlobalFloatParameter, FloatParameter::ParameterProperty> floatParameters;
235 std::unordered_map<GlobalIntParameter, NamedParameter::ParameterProperty> intParameters;
Base object type for any object that can exist in the editor/database. Holds an ID and name.
Definition database_object.h:22
Definition database_ptr.h:23
bool lookup() const
Find the live object referenced by the ID and store it.
Definition database_ptr.h:142
SB_ID id() const noexcept
Get ID of the referenced object.
Definition database_ptr.h:73
Definition parameter.h:95
Definition parameter.h:100
Represents a discrete value for a NamedParameter.
Definition parameter.h:114
Holds discrete named integer values.
Definition parameter.h:125
std::unordered_set< SB::Core::DatabasePtr< NamedParameterValue > > getValues()
Gets all named values in this parameter.
Definition parameter.h:170
NamedParameter()
Creates a NamedParameter with min and max values.
Definition parameter.h:135
SB::Core::DatabasePtr< NamedParameterValue > addNewValue(const std::string_view name)
Adds a new value to the parameter.
Definition parameter.h:145
SB::Core::DatabasePtr< NamedParameterValue > getSelectedValue() const
Get the selected value as a DatabasePtr.
Definition parameter.h:204
void setSelectedValue(SB::Core::DatabasePtr< NamedParameterValue > value)
Sets the parameter value with a DatabasePtr, ensuring the value exists in this parameter.
Definition parameter.h:186
Defines a database object with a changeable property.
Definition parameter.h:18
std::pair< SB_ID, ParameterType > LocalParameterValuePair
Defines an ID to a parameter and a value for that parameter.
Definition parameter.h:39
LocalParameter createLocalParameterFromThis() const
Copies this Parameter to a runtime version, suitable for handling unique variations per game object e...
Definition parameter.h:82
ParameterProperty::PropertyChangedDelegate & getDelegate()
Get the parameter delegate that fires when changing the value.
Definition parameter.h:72
Parameter(ParameterType min, ParameterType max)
Creates a Parameter with min and max values set.
Definition parameter.h:48
void set(ParameterType value)
Set the value of the parameter.
Definition parameter.h:65
std::pair< SB_ID, ParameterProperty > LocalParameter
Defines the type used for passing local versions/variations of this parameter.
Definition parameter.h:32
ParameterType get() const
Get the current value of the parameter.
Definition parameter.h:56
Holds a list of parameters.
Definition parameter.h:224
Holds a list of parameters and their local value.
Definition parameter.h:233