6#include <unordered_map>
20 template <
typename ObjectType>
21 using ObjectList = std::vector<std::shared_ptr<ObjectType>>;
24 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
31 struct MRVIEWER_CLASS BasicVectorHolder
33 BasicVectorHolder() =
default;
34 BasicVectorHolder(
const BasicVectorHolder& ) =
default;
35 BasicVectorHolder( BasicVectorHolder&& ) =
default;
36 virtual ~BasicVectorHolder() =
default;
38 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
39 struct MRVIEWER_CLASS VectorHolder : BasicVectorHolder
41 ObjectList<ObjectType> value;
43 std::unordered_map<std::type_index, std::shared_ptr<BasicVectorHolder>> cachedData_;
46template <
typename ObjectType, ObjectSelectivityType SelectivityType>
49 using ResultType = VectorHolder<ObjectType, SelectivityType>;
50 const auto typeIndex = std::type_index(
typeid( ResultType ) );
51 auto& cachedData = instance_().cachedData_;
52 auto& cachedVec = cachedData[typeIndex];
55 auto dataList = std::make_shared<ResultType>();
60 auto resPtr = dynamic_pointer_cast< ResultType >( cachedVec );
Definition MRSceneCache.h:14
std::vector< std::shared_ptr< ObjectType > > ObjectList
Definition MRSceneCache.h:21
static MRVIEWER_API void invalidateAll()
static const ObjectList< ObjectType > & getAllObjects()
Definition MRSceneCache.h:47
static MRMESH_API SceneRootObject & get()
Definition MRCameraOrientationPlugin.h:8
std::vector< std::shared_ptr< ObjectT > > getAllObjectsInTree(Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)