6#include <unordered_map>
16class MRVIEWER_CLASS SceneCache
23 template <
typename ObjectType>
24 using ObjectList = std::vector<std::shared_ptr<ObjectType>>;
27 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
31 MRVIEWER_API
static SceneCache& instance_();
32 SceneCache() =
default;
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 );
virtual ~BasicVectorHolder()=default
ObjectList< ObjectType > value
Definition MRSceneCache.h:44
static SceneRootObject & get()
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 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