MeshLib C++ Docs
Loading...
Searching...
No Matches
MRObjectMesh.h
Go to the documentation of this file.
1#pragma once
2
4
5namespace MR
6{
7
10class MRMESH_CLASS ObjectMesh : public ObjectMeshHolder
11{
12public:
13 ObjectMesh() = default;
14
15 ObjectMesh( ObjectMesh&& ) noexcept = default;
16 ObjectMesh& operator = ( ObjectMesh&& ) noexcept = default;
17
18 constexpr static const char* StaticTypeName() noexcept { return "ObjectMesh"; }
19 virtual const char* typeName() const override { return StaticTypeName(); }
20
21 constexpr static const char* StaticClassName() noexcept { return "Mesh"; }
22 virtual std::string className() const override { return StaticClassName(); }
23
24 constexpr static const char* StaticClassNameInPlural() noexcept { return "Meshes"; }
25 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
26
28 virtual const std::shared_ptr< Mesh > & varMesh() { return data_.mesh; }
29
31 MRMESH_API virtual void setMesh( std::shared_ptr< Mesh > mesh );
34 MRMESH_API virtual std::shared_ptr< Mesh > updateMesh( std::shared_ptr< Mesh > mesh );
35
36 MRMESH_API virtual std::vector<std::string> getInfoLines() const override;
37
38 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
39 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
40
41 MRMESH_API virtual void setDirtyFlags( uint32_t mask, bool invalidateCaches = true ) override;
42
44 ObjectMesh( ProtectedStruct, const ObjectMesh& obj ) : ObjectMesh( obj ) {}
45
49 MRMESH_API MeshIntersectionResult worldRayIntersection( const Line3f& worldRay, const FaceBitSet* region = nullptr ) const;
50
52 using MeshChangedSignal = Signal<void( uint32_t mask )>;
53 MeshChangedSignal meshChangedSignal;
54
55protected:
56 ObjectMesh( const ObjectMesh& other ) = default;
57
59 MRMESH_API virtual void swapBase_( Object& other ) override;
62 MRMESH_API virtual void swapSignals_( Object& other ) override;
63
64 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
65};
66
68struct ObjectMeshMergeOptions
69{
71 const std::vector<AffineXf3f>* overrideXfs{ nullptr };
72};
73
75[[nodiscard]] MRMESH_API std::shared_ptr<ObjectMesh> merge( const std::vector<std::shared_ptr<ObjectMesh>>& objsMesh, const ObjectMeshMergeOptions& options = {} );
76
79[[nodiscard]] MRMESH_API std::shared_ptr<ObjectMesh> cloneRegion( const std::shared_ptr<ObjectMesh>& objMesh, const FaceBitSet& region, bool copyTexture = true );
80
81}
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRObjectMesh.h:69
new unsafe MR.Std.? Const_Vector_MRAffineXf3f overrideXfs
Definition MRCameraOrientationPlugin.h:8
MRMESH_API std::shared_ptr< ObjectLines > cloneRegion(const std::shared_ptr< ObjectLines > &objLines, const UndirectedEdgeBitSet &region)
constructs new ObjectLines containing the region of data from input object
MRMESH_API std::shared_ptr< ObjectLines > merge(const std::vector< std::shared_ptr< ObjectLines > > &objsLines)
constructs new ObjectLines containing the union of valid data from all input objects