Esempio n. 1
0
        public static EntityId ECS_SYSTEM <T1>(World world, SystemAction <T1> systemImpl, SystemKind kind, SystemSignatureBuilder signatureBuilder) where T1 : unmanaged
        {
            SystemActionDelegate del = delegate(ref Rows rows)
            {
                var set1 = (T1 *)_ecs.column(ref rows, Heap.SizeOf <T1>(), 1);
                systemImpl(ref rows, new Span <T1>(set1, (int)rows.count), ecs.get_delta_time(world));
            };

            // ensure our system doesnt get GCd and that our Component is registered
            Caches.AddSystemAction(world, del);

            var systemNamePtr = Caches.AddUnmanagedString(systemImpl.Target.GetType().FullName);

            return(ecs.new_system(world, systemNamePtr, kind, signatureBuilder.Build(), del));
        }