MeshLib C++ Docs
Loading...
Searching...
No Matches
MRObjectsAccess.h
Go to the documentation of this file.
1#pragma once
2#include "MRObject.h"
3#include "MRPch/MRBindingMacros.h"
4
5namespace MR
6{
9
10
13
14enum class MRMESH_CLASS ObjectSelectivityType
15{
25 Any
26};
27
29template<typename ObjectT = Object>
30std::shared_ptr<ObjectT> asSelectivityType( std::shared_ptr<Object> obj, const ObjectSelectivityType& type );
31
34template<typename ObjectT = Object>
35std::vector<std::shared_ptr<ObjectT>> getAllObjectsInTree( Object* root, const ObjectSelectivityType& type = ObjectSelectivityType::Selectable );
36template<typename ObjectT = Object>
37MR_BIND_IGNORE inline std::vector<std::shared_ptr<ObjectT>> getAllObjectsInTree( Object& root, const ObjectSelectivityType& type = ObjectSelectivityType::Selectable )
38 { return getAllObjectsInTree<ObjectT>( &root, type ); }
39
41template<typename ObjectT = Object>
42std::vector<std::shared_ptr<ObjectT>> getTopmostVisibleObjects( Object* root, const ObjectSelectivityType& type = ObjectSelectivityType::Selectable )
43 { return getTopmostObjects<ObjectT>( root, type, true ); }
44template<typename ObjectT = Object>
45MR_BIND_IGNORE inline std::vector<std::shared_ptr<ObjectT>> getTopmostVisibleObjects( Object& root, const ObjectSelectivityType& type = ObjectSelectivityType::Selectable )
46 { return getTopmostObjects<ObjectT>( &root, type, true ); }
47
49template<typename ObjectT = Object>
50std::vector<std::shared_ptr<ObjectT>> getTopmostObjects( Object* root, const ObjectSelectivityType& type = ObjectSelectivityType::Selectable, bool visibilityCheck = false );
51template<typename ObjectT = Object>
52MR_BIND_IGNORE inline std::vector<std::shared_ptr<ObjectT>> getTopmostObjects( Object& root, const ObjectSelectivityType& type = ObjectSelectivityType::Selectable, bool visibilityCheck = false )
53 { return getTopmostObjects<ObjectT>( &root, type, visibilityCheck ); }
54
56template<typename ObjectT = Object>
57std::shared_ptr<ObjectT> getDepthFirstObject( Object* root, const ObjectSelectivityType& type );
58template<typename ObjectT = Object>
59MR_BIND_IGNORE inline std::shared_ptr<ObjectT> getDepthFirstObject( Object& root, const ObjectSelectivityType& type )
60 { return getDepthFirstObject<ObjectT>( &root, type ); }
61
63
66inline bool objectHasSelectableChildren( const MR::Object& object, bool recurse = false )
67{
68 for ( const auto& child : object.children() )
69 {
70 if ( !child->isAncillary() || ( recurse && objectHasSelectableChildren( *child, recurse ) ) )
71 return true;
72 }
73 return false;
74}
75
76}
77
78#include "MRObjectsAccess.hpp"
named object in the data model
Definition MRObject.h:62
Selectable
object itself and all its ancestors are selectable
Definition MRObjectsAccess.h:17
LocalSelectable
object itself is selectable
Definition MRObjectsAccess.h:19
std::vector< std::shared_ptr< ObjectT > > getAllObjectsInTree(Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
std::shared_ptr< ObjectT > asSelectivityType(std::shared_ptr< Object > obj, const ObjectSelectivityType &type)
if input object is of given type then returns another pointer on it
LocalSelected
object itself is selected
Definition MRObjectsAccess.h:23
bool objectHasSelectableChildren(const MR::Object &object, bool recurse=false)
Definition MRObjectsAccess.h:66
std::vector< std::shared_ptr< ObjectT > > getTopmostVisibleObjects(Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
Returns all topmost visible objects of given type (if an object is returned, its children are not) ex...
Definition MRObjectsAccess.h:42
Selected
object itself is selected and all its ancestors are selectable
Definition MRObjectsAccess.h:21
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:13
std::vector< std::shared_ptr< ObjectT > > getTopmostObjects(Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable, bool visibilityCheck=false)
Returns all topmost objects of given type (if an object is returned, its children are not) excluding ...
std::shared_ptr< ObjectT > getDepthFirstObject(Object *root, const ObjectSelectivityType &type)
return first object of given type in depth-first traverse order excluding root
only for bindings generation
Definition MRCameraOrientationPlugin.h:8