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>
32 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
36 MRVIEWER_API
static SceneCache& instance_();
37 SceneCache() =
default;
39 struct MRVIEWER_CLASS BasicVectorHolder
46 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
47 struct MRVIEWER_CLASS VectorHolder : BasicVectorHolder
52 template <
typename ObjectType, ObjectSelectivityType SelectivityType>
53 struct MRVIEWER_CLASS TopmostVectorHolder : BasicVectorHolder
57 std::unordered_map<std::type_index, std::shared_ptr<BasicVectorHolder>> cachedData_;
60template <
typename ObjectType, ObjectSelectivityType SelectivityType>
63 using ResultType = VectorHolder<ObjectType, SelectivityType>;
64 const auto typeIndex = std::type_index(
typeid( ResultType ) );
65 auto& cachedData = instance_().cachedData_;
66 auto& cachedVec = cachedData[typeIndex];
69 auto dataList = std::make_shared<ResultType>();
74 auto resPtr = dynamic_pointer_cast< ResultType >( cachedVec );
79template <
typename ObjectType, ObjectSelectivityType SelectivityType>
82 using ResultType = TopmostVectorHolder<ObjectType, SelectivityType>;
83 const auto typeIndex = std::type_index(
typeid( ResultType ) );
84 auto& cachedData = instance_().cachedData_;
85 auto& cachedVec = cachedData[typeIndex];
88 auto dataList = std::make_shared<ResultType>();
93 auto resPtr = dynamic_pointer_cast< ResultType >( cachedVec );
virtual ~BasicVectorHolder()=default
ObjectList< ObjectType > value
Definition MRSceneCache.h:49
static const ObjectList< ObjectType > & getAllTopmostObjects()
Definition MRSceneCache.h:80
static SceneRootObject & get()
BasicVectorHolder()=default
ObjectList< ObjectType > value
Definition MRSceneCache.h:55
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
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 ...
BasicVectorHolder(const BasicVectorHolder &)=default
static const ObjectList< ObjectType > & getAllObjects()
Definition MRSceneCache.h:61
only for bindings generation
Definition MRCameraOrientationPlugin.h:8