Ver Fonte

added optional data to process::init

Michele Caini há 8 anos atrás
pai
commit
c801afddcb
2 ficheiros alterados com 5 adições e 5 exclusões
  1. 4 4
      src/entt/process/process.hpp
  2. 1 1
      test/entt/process/process.cpp

+ 4 - 4
src/entt/process/process.hpp

@@ -75,9 +75,9 @@ class Process {
     using tag = std::integral_constant<State, state>;
 
     template<typename Target = Derived>
-    auto tick(int, tag<State::UNINITIALIZED>)
-    -> decltype(std::declval<Target>().init()) {
-        static_cast<Target *>(this)->init();
+    auto tick(int, tag<State::UNINITIALIZED>, void *data)
+    -> decltype(std::declval<Target>().init(data)) {
+        static_cast<Target *>(this)->init(data);
     }
 
     template<typename Target = Derived>
@@ -223,7 +223,7 @@ public:
     void tick(Delta delta, void *data = nullptr) {
         switch (current) {
         case State::UNINITIALIZED:
-            tick(0, tag<State::UNINITIALIZED>{});
+            tick(0, tag<State::UNINITIALIZED>{}, data);
             current = State::RUNNING;
             // no break on purpose, tasks are executed immediately
         case State::RUNNING:

+ 1 - 1
test/entt/process/process.cpp

@@ -10,7 +10,7 @@ struct FakeProcess: entt::Process<FakeProcess, int> {
     void pause() noexcept { process_type::pause(); }
     void unpause() noexcept { process_type::unpause(); }
 
-    void init() { initInvoked = true; }
+    void init(void *) { initInvoked = true; }
     void succeeded() { succeededInvoked = true; }
     void failed() { failedInvoked = true; }
     void aborted() { abortedInvoked = true; }