]> git.tdb.fi Git - libs/game.git/blobdiff - source/game/owned.h
Adjust some things to make header dependencies easier to manage
[libs/game.git] / source / game / owned.h
index df3cd94f2fde19079742f1a317be059b576e672d..19daa7efe12afbbffeb3676d635088daca4889ff 100644 (file)
@@ -3,13 +3,12 @@
 
 #include <stdexcept>
 #include "handle.h"
+#include "stage.h"
 
 namespace Msp::Game {
 
 class Component;
 class Entity;
-class Root;
-class Stage;
 
 template<typename T>
 class Owned: public Handle<T>
@@ -68,13 +67,10 @@ template<typename T>
 template<typename O>
 Stage &Owned<T>::get_stage(O &obj)
 {
-       using DependentRoot = std::conditional_t<sizeof(T), Root, Root>;
        if constexpr(std::is_base_of_v<Component, O>)
                return get_stage(*obj.get_entity());
-       else if constexpr(std::is_base_of_v<Entity, O>)
-               return dynamic_cast<DependentRoot &>(*obj.get_root()).get_stage();
        else
-               return obj;
+               return obj.get_stage();
 }
 
 template<typename T>