33 bool affected =
false;
49 this->affected &= other.affected;
87 return this->x || this->y || this->
z;
99 this->x.
merge(other.x);
100 this->y.
merge(other.y);
101 this->z.
merge(other.z);
113 return {{
true}, {
true}, {
true}};
127 operator bool()
const
129 return this->euler || this->axis || this->
angle;
141 this->euler.
merge(other.euler);
142 this->axis.
merge(other.axis);
143 this->angle.
merge(other.angle);
166 operator bool()
const
168 return this->translation || this->rotation || this->scale || this->
any_non_transform;
176 this->translation, this->rotation, this->scale, this->any_non_transform);
181 this->translation.
merge(other.translation);
182 this->rotation.
merge(other.rotation);
183 this->scale.
merge(other.scale);
184 this->any_non_transform.
merge(other.any_non_transform);
189 this->translation.
intersect(other.translation);
190 this->rotation.
intersect(other.rotation);
192 this->any_non_transform.
intersect(other.any_non_transform);
206 std::variant<BoolElem, FloatElem, IntElem, VectorElem, RotationElem, MatrixElem>
elem;
208 operator bool()
const
210 return std::visit([](
const auto &value) {
return bool(value); }, this->
elem);
215 return std::visit([](
auto &value) {
return value.hash(); }, this->
elem);
220 BLI_assert(this->elem.index() == other.elem.index());
223 using T = std::decay_t<
decltype(value)>;
224 value.merge(std::get<T>(other.elem));
231 BLI_assert(this->elem.index() == other.elem.index());
234 using T = std::decay_t<
decltype(value)>;
235 value.intersect(std::get<T>(other.elem));
244 using T = std::decay_t<
decltype(value)>;
254 using T = std::decay_t<
decltype(value)>;
310 const ElemVariant &old_elem);
#define BLI_STRUCT_EQUALITY_OPERATORS_1(Type, m)
#define BLI_STRUCT_EQUALITY_OPERATORS_3(Type, m1, m2, m3)
#define BLI_STRUCT_EQUALITY_OPERATORS_4(Type, m1, m2, m3, m4)
#define BLI_STRUCT_EQUALITY_OPERATORS_2(Type, m1, m2)
std::optional< ElemVariant > get_elem_variant_for_socket_type(const eNodeSocketDatatype type)
std::optional< ElemVariant > convert_socket_elem(const bNodeSocket &old_socket, const bNodeSocket &new_socket, const ElemVariant &old_elem)
uint64_t get_default_hash(const T &v)
unsigned __int64 uint64_t
std::variant< BoolElem, FloatElem, IntElem, VectorElem, RotationElem, MatrixElem > elem
void merge(const ElemVariant &other)
void intersect(const ElemVariant &other)
void merge(const MatrixElem &other)
void intersect(const MatrixElem &other)
FloatElem any_non_transform
void intersect(const PrimitiveValueElem &other)
void merge(const PrimitiveValueElem &other)
static RotationElem all()
void intersect(const RotationElem &other)
void merge(const RotationElem &other)
const bNodeSocket * socket
void merge(const VectorElem &other)
void intersect(const VectorElem &other)