diff --git a/source/ecs/manager.d b/source/ecs/manager.d index 0d77132..2a34d27 100644 --- a/source/ecs/manager.d +++ b/source/ecs/manager.d @@ -514,19 +514,6 @@ class EntityManager return ret; } - string genParamsChecking()() - { - string ret; - foreach (func; __traits(getOverloads, Sys, "onUpdate")) - { - if ((Parameters!(func)).length == 1) - ret ~= "\"" ~ (fullyQualifiedName!(Sys.EntitiesData)) ~ "\" == \"" ~ ( - fullyQualifiedName!((Parameters!(func))[0])) ~ "\" || "; - } - ret ~= "false"; - return ret; - } - static string genFillInputData()() { string ret; @@ -596,8 +583,22 @@ class EntityManager { mixin(genFillInputData()); } + + bool checkOnUpdateParams()() + { + bool ret = false; + foreach (func; __traits(getOverloads, Sys, "onUpdate")) + { + if ((Parameters!(func)).length == 1 && is(Parameters!(func)[0] == Sys.EntitiesData)) + { + ret = true; + break; + } + } + return ret; + } - static if (hasMember!(Sys, "onUpdate") && (mixin(genParamsChecking()))) + static if (hasMember!(Sys, "onUpdate") && checkOnUpdateParams()) { static void callUpdate(ref CallData data) { diff --git a/tests/tests.d b/tests/tests.d index 50c31b6..60fed07 100644 --- a/tests/tests.d +++ b/tests/tests.d @@ -329,7 +329,7 @@ struct Sys3 void onUpdate(EntitiesData data) { - + } }