Exemplo n.º 1
0
 public ThisSystemJob(
     BufferTuple <NativeBuffer <PositionEntityStruct>, NativeBuffer <VelocityEntityStruct>,
                  NativeBuffer <SpeedEntityStruct> > doofuses, float deltaTime)
 {
     _doofuses  = doofuses;
     _deltaTime = deltaTime;
 }
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            var foods = entitiesDB.QueryEntities <PositionEntityStruct, MealEntityStruct>(GameGroups.FOOD);
            BufferTuple <NativeBuffer <PositionEntityStruct>, NativeBuffer <MealEntityStruct> > foodcount =
                foods.ToNativeBuffers <PositionEntityStruct, MealEntityStruct>();

            JobHandle combinedDependencies = default;

            foreach (var doofusGroup in GameGroups.DOOFUSES.Groups)
            {
                var doofuses = entitiesDB
                               .QueryEntities <PositionEntityStruct, VelocityEntityStruct, HungerEntityStruct>(doofusGroup);
                BufferTuple <NativeBuffer <PositionEntityStruct>, NativeBuffer <VelocityEntityStruct>,
                             NativeBuffer <HungerEntityStruct> > bufferTuple = doofuses
                                                                               .ToNativeBuffers <PositionEntityStruct, VelocityEntityStruct, HungerEntityStruct>();

                var deps = new LookingForFoodDoofusesJob(bufferTuple, foodcount).Schedule((int)doofuses.length,
                                                                                          (int)(doofuses.length / 8), inputDeps);

                combinedDependencies = JobHandle.CombineDependencies(combinedDependencies,
                                                                     new DisposeJob <BufferTuple <NativeBuffer <PositionEntityStruct>,
                                                                                                  NativeBuffer <VelocityEntityStruct>,
                                                                                                  NativeBuffer <HungerEntityStruct> > >(bufferTuple).Schedule(deps));
            }

            return(new DisposeJob <BufferTuple <NativeBuffer <PositionEntityStruct>, NativeBuffer <MealEntityStruct> >
                                   >(foodcount).Schedule(combinedDependencies));
        }