22 constexpr static const
char*
StaticTypeName() noexcept {
return "DistanceMeasurementObject"; }
102 bool isNegative_ =
false;
108 mutable std::optional<float> cachedValue_;
110 std::optional<ComparisonTolerance> tolerance_;
112 std::optional<float> referenceValue_;
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
named object in the data model
Definition MRObject.h:62
void setupRenderObject_() const override
virtual void setLocalPoint(const MR::Vector3f &point)
Set the start point in the local coordinates.
ComparisonReferenceValue getComparisonReferenceValue(std::size_t i) const override
DistanceMeasurementObject(const DistanceMeasurementObject &other)=default
ObjectComparableWithReference()=default
We have no member variables, so lack of the implicit copy operations wouldn't matter,...
void onWorldXfChanged_() override
Emits worldXfChangedSignal, but derived classes can add additional behavior to it.
virtual std::string classNameInPlural() const override
Definition MRDistanceMeasurementObject.h:29
static constexpr const char * StaticClassNameInPlural() noexcept
Definition MRDistanceMeasurementObject.h:28
DistanceMeasurementObject()
The xf encodes the distance: the origin is one point, and (1,0,0) is another.
Definition MRDistanceMeasurementObject.h:17
virtual void setLocalDelta(const MR::Vector3f &delta)
Set the delta vector in the local coordinates.
Vector3f getWorldPoint() const
Get the starting point in world coordinates.
std::shared_ptr< Object > shallowClone() const override
std::shared_ptr< Object > clone() const override
DistanceMode getDistanceMode() const
Whether we should draw the individual X/Y/Z deltas in addition to the distance itself.
const char * typeName() const override
Definition MRDistanceMeasurementObject.h:23
Vector3f getWorldDelta() const
The delta from the starting point to the other point.
std::optional< ComparisonTolerance > getComparisonTolerence(std::size_t i) const override
DistanceMeasurementObject(DistanceMeasurementObject &&) noexcept=default
std::size_t numComparableProperties() const override
Implement ObjectComparableWithReference:
float computeDistance() const
std::string_view getComparisonReferenceValueName(std::size_t i) const override
i goes up to numComparisonReferenceValues(), exclusive.
DistanceMeasurementObject(ProtectedStruct, const DistanceMeasurementObject &obj)
For std::make_shared() in clone().
Definition MRDistanceMeasurementObject.h:32
void setComparisonReferenceValue(std::size_t i, std::optional< ComparisonReferenceValue::Var > value) override
std::string_view getComparablePropertyName(std::size_t i) const override
i goes up to numComparableProperties(), exclusive.
void setComparisonTolerance(std::size_t i, std::optional< ComparisonTolerance > newTolerance) override
virtual void setDistanceMode(DistanceMode mode)
std::optional< ComparableProperty > computeComparableProperty(std::size_t i) const override
void serializeFields_(Json::Value &root) const override
Vector3f getLocalDelta() const
static constexpr const char * StaticClassName() noexcept
Definition MRDistanceMeasurementObject.h:25
static constexpr const char * StaticTypeName() noexcept
Definition MRDistanceMeasurementObject.h:22
DistanceMode
Definition MRDistanceMeasurementObject.h:56
bool isNegative() const
Whether the distance should be displayed as a negative one.
virtual std::string className() const override
Definition MRDistanceMeasurementObject.h:26
void deserializeFields_(const Json::Value &root) override
void swapBase_(Object &other) override
swaps this object with other
std::vector< std::string > getInfoLines() const override
return several info lines that can better describe the object in the UI
virtual void setIsNegative(bool value)
Vector3f getLocalPoint() const
Get the starting point in local coordinates.
@ other
Angle, normally float. Measure in radians.
Definition MRFeatureObject.h:27
@ xAbsolute
Definition MRDistanceMeasurementObject.h:62
@ euclidean
Definition MRDistanceMeasurementObject.h:57
@ euclideanWithSignedDeltasPerAxis
Euclidean distance.
Definition MRDistanceMeasurementObject.h:58
@ yAbsolute
Definition MRDistanceMeasurementObject.h:63
@ euclideanWithAbsoluteDeltasPerAxis
Euclidean distance, but also display per-axis deltas with signs.
Definition MRDistanceMeasurementObject.h:59
@ zAbsolute
Definition MRDistanceMeasurementObject.h:64
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
This can't be std::optional<Var>, because we still need the variant to know the correct type.
Definition MRObjectComparableWithReference.h:90
Definition MRObject.h:284