Example #1
0
        protected override void OnUpdate()
        {
            var ecbSource = DotsNavSystemGroup.EcbSource;
            var buffer    = ecbSource.CreateCommandBuffer().AsParallelWriter();

            Entities
            .WithBurst()
            .WithNone <Navmesh>()
            .ForEach((Entity entity, int entityInQueryIndex, in NavmeshComponent data) =>
            {
                var resources = new Navmesh();
                resources.Allocate(data);
                buffer.AddComponent(entityInQueryIndex, entity, resources);
            })
            .ScheduleParallel();

            buffer = ecbSource.CreateCommandBuffer().AsParallelWriter();
            Entities
            .WithBurst()
            .WithNone <NavmeshComponent>()
            .ForEach((Entity entity, int entityInQueryIndex, Navmesh resources) =>
            {
                resources.Dispose();
                buffer.RemoveComponent <Navmesh>(entityInQueryIndex, entity);
            })
            .Schedule();
            ecbSource.AddJobHandleForProducer(Dependency);
        }