ORDER_MASK = 24
};
- struct Dependency
+ class Dependency
{
+ friend class System;
+
+ private:
DependencyFlags flags = NO_DEPENDENCY;
const Reflection::ClassBase &type;
void (*prepare)(Stage &) = nullptr;
void (*unblock)(DependencyFlags) = nullptr;
void (*block)(DependencyFlags) = nullptr;
+ public:
Dependency(const Reflection::ClassBase &t): type(t) { }
+
+ DependencyFlags get_flags() const { return flags; }
+ const Reflection::ClassBase &get_type() const { return type; }
};
class Activator: public NonCopyable
void declare_dependency(DependencyFlags);
public:
+ const std::vector<Dependency> &get_dependencies() const { return dependencies; }
+
void begin_tick();
virtual void tick(Time::TimeDelta) = 0;
void end_tick();