37 return this->affected;
44 this->affected |= other.affected;
87 return this->x || this->y || this->z;
113 return {{
true}, {
true}, {
true}};
127 operator bool()
const
129 return this->euler || this->axis || this->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);
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);
223 using T = std::decay_t<
decltype(value)>;
224 value.merge(std::get<T>(other.
elem));
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)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
unsigned long long int uint64_t
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
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, const Args &...args)
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)