2#include "MRMesh/MRMeshFwd.h"
6#include <unordered_map>
23 template <
typename ObjectType>
24 using ObjectList = std::vector<std::shared_ptr<ObjectType>>;
27 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
34 struct MRVIEWER_CLASS BasicVectorHolder
41 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
42 struct MRVIEWER_CLASS VectorHolder : BasicVectorHolder
46 std::unordered_map<std::type_index, std::shared_ptr<BasicVectorHolder>> cachedData_;
49template <
typename ObjectType, ObjectSelectivityType SelectivityType>
52 using ResultType = VectorHolder<ObjectType, SelectivityType>;
53 const auto typeIndex = std::type_index(
typeid( ResultType ) );
54 auto& cachedData = instance_().cachedData_;
55 auto& cachedVec = cachedData[typeIndex];
58 auto dataList = std::make_shared<ResultType>();
63 auto resPtr = dynamic_pointer_cast< ResultType >( cachedVec );
class to cached scene objects data
Definition MRSceneCache.h:17
virtual ~BasicVectorHolder()=default
static MRMESH_API SceneRootObject & get()
ObjectList< ObjectType > value
Definition MRSceneCache.h:44
BasicVectorHolder()=default
std::vector< std::shared_ptr< ObjectT > > getAllObjectsInTree(Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
std::vector< std::shared_ptr< ObjectType > > ObjectList
Definition MRSceneCache.h:24
static MRVIEWER_API void invalidateAll()
BasicVectorHolder(BasicVectorHolder &&)=default
BasicVectorHolder(const BasicVectorHolder &)=default
static const ObjectList< ObjectType > & getAllObjects()
Definition MRSceneCache.h:50
only for bindings generation
Definition MRCameraOrientationPlugin.h:8