From bf8fac84cf9697aa06f758ed504fa9988f5356a1 Mon Sep 17 00:00:00 2001 From: Mergul Date: Sat, 6 Apr 2019 15:03:29 +0000 Subject: [PATCH] -removed comments --- source/ecs/manager.d | 127 +++++++++++++------------------------------ 1 file changed, 37 insertions(+), 90 deletions(-) diff --git a/source/ecs/manager.d b/source/ecs/manager.d index 56e887c..eb49475 100644 --- a/source/ecs/manager.d +++ b/source/ecs/manager.d @@ -246,124 +246,71 @@ class EntityManager static assert(0, "System should gave \"EntitiesData\" struct for input components"); } - //dfmt off - static if(hasMember!(Sys,"EventInput")) + static if (hasMember!(Sys, "EventInput")) { - /* static void genEventCompList(Sys)(ref EventCallData data, EntityInfo* info, ref Sys.EventInput input) - {*/ - static void callEventHandler(Type)(ref EventCallData data){ - Sys.EventInput input; + static void callEventHandler(Type)(ref EventCallData data) + { + Sys.EventInput input; Sys* dataSystem = cast(Sys*) data.system_pointer; EntityInfo* info = data.block.type_info; - alias EventFields=Fields!(Sys.EventInput); + alias EventFields = Fields!(Sys.EventInput); foreach (eventFieldNum, ref eventField; input.tupleof) - { + { alias EventFieldType = Unqual!(typeof(*eventField)); - enum bool isEntity = is( EventFieldType == ecs.entity.Entity ); - - static if(isEntity) + enum bool isEntity = is(EventFieldType == ecs.entity.Entity); + + static if (isEntity) { - eventField=cast(Entity*) data.block.dataBegin() + data.id; + eventField = cast(Entity*) data.block.dataBegin() + data.id; continue; } else - { - enum long indexInEntitiesData=getIndexOfTypeInEntitiesData!(Sys.EntitiesData, EventFieldType); - static assert(indexInEntitiesData != -1, "Component present in EventInput has to be present in EntitiesData!");// Type present in EventInput has to be present in EntitiesData + { + enum long indexInEntitiesData = getIndexOfTypeInEntitiesData!(Sys.EntitiesData, + EventFieldType); + static assert(indexInEntitiesData != -1, + "Component present in EventInput has to be present in EntitiesData!"); // Type present in EventInput has to be present in EntitiesData - enum bool isOptional = hasUDA!(Sys.EntitiesData.tupleof[indexInEntitiesData], "optional"); - static if(isOptional) + enum bool isOptional = hasUDA!(Sys.EntitiesData.tupleof[indexInEntitiesData], + "optional"); + static if (isOptional) { - eventField=null; + eventField = null; } - else + else { - eventField = cast(EventFieldType*)(cast(void*) data.block - + info.deltas[EventFieldType.component_id] - + data.id * EventFieldType.sizeof); + eventField = cast(EventFieldType*)(cast(void*) data.block + + info.deltas[EventFieldType.component_id] + + data.id * EventFieldType.sizeof); } } - + } - dataSystem.handleEvent(input, *cast(Type*)data.event); + dataSystem.handleEvent(input, *cast(Type*) data.event); } - static void setEventCallers(Sys)(ref System system){ - enum allEventHandlers=__traits(getOverloads, Sys, "handleEvent").length; - system.m_event_callers = Mallocator.instance.makeArray!(System.EventCaller)(allEventHandlers); - - foreach(j, func; __traits(getOverloads, Sys, "handleEvent")) + static void setEventCallers(Sys)(ref System system) + { + enum allEventHandlers = __traits(getOverloads, Sys, "handleEvent").length; + system.m_event_callers = Mallocator.instance.makeArray!( + System.EventCaller)(allEventHandlers); + + foreach (j, func; __traits(getOverloads, Sys, "handleEvent")) { - alias EventParamType=Parameters!( __traits(getOverloads, Sys, "handleEvent")[j] )[1]; - system.m_event_callers[j].callback = cast(void*)&callEventHandler!(EventParamType); + alias EventParamType = Parameters!(__traits(getOverloads, + Sys, "handleEvent")[j])[1]; + system.m_event_callers[j].callback = cast( + void*)&callEventHandler!(EventParamType); system.m_event_callers[j].id = EventParamType.event_id; } } - static if(__traits(hasMember, Sys, "handleEvent")) + static if (__traits(hasMember, Sys, "handleEvent")) { setEventCallers!(Sys)(system); } - - /*static string checkHandler()(string member) - { - string ret; - ret ~= "(Parameters!(Sys."~member~")).length == 2 && "; - ret ~= "((is(Parameters!(Sys."~member~")[0] == Sys.EventInput) && hasStaticMember!(Parameters!(Sys."~member~")[1],\"event_id\")) ||"; - ret ~= " (is(Parameters!(Sys."~member~")[1] == Sys.EventInput) && hasStaticMember!(Parameters!(Sys."~member~")[0],\"event_id\")))"; - return ret; - }*/ - - /*static struct Handler - { - ushort id; - void* callback; - }*/ - - /*static string catchEventHanlders()() - { - int event_handlers = 0; - string ret; - string event_param; - - static if(__traits(hasMember, Sys, "handleEvent")) - { - foreach(func; __traits(getOverloads, Sys, "handleEvent")) - { - event_handlers++;//pragma(msg,"kupa"); - } - - //ret ~= "Handler[] handlers = (cast(Handler*)alloca("~event_handlers.to!string~" * (Handler).sizeof))[0 .. "~event_handlers.to!string~"];\n"; - ret ~= "system.m_event_callers = Mallocator.instance.makeArray!(System.EventCaller)("~event_handlers.to!string~");"; - event_handlers = 0; - - foreach(j,func; __traits(getOverloads, Sys, "handleEvent")) - { - event_param = "Parameters!(__traits(getOverloads, Sys, \"handleEvent\")["~j.to!string~"])[1]"; - ret ~= "static void callHandler"~event_handlers.to!string~"(ref EventCallData data)\n{\n"; - ret ~= "Sys* s = cast(Sys*) data.system_pointer; - EntityInfo* info = data.block.type_info;"; - //ret ~= genEventCompList(); - ret ~= "Sys.EventInput input;\n"; - ret ~= "genEventCompList!(Sys)(data, info, input);"; - ret ~= "s.handleEvent(input, *cast("~event_param~"*)data.event);"; - ret ~= "}\n"; - ret ~= "system.m_event_callers["~event_handlers.to!string~"].callback = cast(void*)&callHandler"~event_handlers.to!string~";"; - ret ~= "system.m_event_callers["~event_handlers.to!string~"].id = "~event_param~".event_id;"; - event_handlers++; - } - } - - return ret; - } - - //pragma(msg,catchEventHanlders()); - mixin(catchEventHanlders());*/ - - } - //dfmt on static string genCompList()() {