MeshLib C++ Docs
Loading...
Searching...
No Matches
MRLineObject.h
Go to the documentation of this file.
1#pragma once
2#include "MRPch/MRBindingMacros.h"
3#include "MRMeshFwd.h"
4#include "MRFeatureObject.h"
5#include "MRVisualObject.h"
6
7namespace MR
8{
9
12class MRMESH_CLASS LineObject : public FeatureObject
13{
14public:
16 MRMESH_API LineObject();
18 MRMESH_API LineObject( const std::vector<Vector3f>& pointsToApprox );
19
20 LineObject( LineObject&& ) noexcept = default;
21 LineObject& operator = ( LineObject&& ) noexcept = default;
22
23 constexpr static const char* StaticTypeName() noexcept { return "LineObject"; }
24 virtual const char* typeName() const override { return StaticTypeName(); }
25
26 constexpr static const char* StaticClassName() noexcept { return "Line"; }
27 virtual std::string className() const override { return StaticClassName(); }
28
29 constexpr static const char* StaticClassNameInPlural() noexcept { return "Lines"; }
30 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
31
33 LineObject( ProtectedStruct, const LineObject& obj ) : LineObject( obj )
34 {}
35
36 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
37 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
38
40 MRMESH_API Vector3f getDirection( ViewportId id = {} ) const;
42 MRMESH_API Vector3f getCenter( ViewportId id = {} ) const;
44 MRMESH_API void setDirection( const Vector3f& normal, ViewportId id = {} );
46 MRMESH_API void setCenter( const Vector3f& center, ViewportId id = {} );
48 MRMESH_API void setLength( float size, ViewportId id = {} );
50 [[nodiscard]] MRMESH_API float getLength( ViewportId id = {} ) const;
51 // Returns point considered as base for the feature
52 [[nodiscard]] MRMESH_API virtual Vector3f getBasePoint( ViewportId id = {} ) const override;
53
55 [[nodiscard]] MRMESH_API Vector3f getPointA( ViewportId id = {} ) const;
57 [[nodiscard]] MRMESH_API Vector3f getPointB( ViewportId id = {} ) const;
58
59 [[deprecated( "This confusingly sets half-length. Use `setLength(halfLen * 2)` instead." )]]
60 MR_BIND_IGNORE void setSize( float halfLen, ViewportId id = {} )
61 {
62 setLength( halfLen * 2 , id );
63 }
64
65 [[nodiscard]] MRMESH_API FeatureObjectProjectPointResult projectPoint( const Vector3f& point, ViewportId id = {} ) const override;
66
67 MRMESH_API virtual const std::vector<FeatureObjectSharedProperty>& getAllSharedProperties() const override;
68
69protected:
70 LineObject( const LineObject& other ) = default;
71
73 MRMESH_API virtual void swapBase_( Object& other ) override;
74
75 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
76
77 virtual Expected<std::future<Expected<void>>> serializeModel_( const std::filesystem::path& ) const override
78 { return {}; }
79
80 virtual Expected<void> deserializeModel_( const std::filesystem::path&, ProgressCallback ) override
81 { return {}; }
82
83 MRMESH_API void setupRenderObject_() const override;
84};
85
86}
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRCameraOrientationPlugin.h:8