Exemple #1
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            var actorOwnerFromEntity       = GetComponentDataFromEntity <ActorOwner>(true);
            var playerActorArrayFromEntity = GetComponentDataFromEntity <PlayerActorArray>();
            var slotFromEntity             = GetComponentDataFromEntity <Slot>(true);

            inputDeps = new WeaponUninstallJob
            {
                actorOwnerFromEntity       = actorOwnerFromEntity,
                playerActorArrayFromEntity = playerActorArrayFromEntity,
                slotFromEntity             = slotFromEntity,
            }
            .ScheduleSingle(this, inputDeps);

            inputDeps = new WeaponInstallJob
            {
                actorOwnerFromEntity       = actorOwnerFromEntity,
                playerActorArrayFromEntity = playerActorArrayFromEntity,
                slotFromEntity             = slotFromEntity,
            }
            .ScheduleSingle(this, inputDeps);


            inputDeps = new ShipDestroyMessageJob
            {
                Player_OnShipDestroy_NextFrameMessage = typeof(Player_OnShipDestroyMessage),
                endCommandBuffer = endBarrier.CreateCommandBuffer().ToConcurrent(),
            }
            .Schedule(this, inputDeps);

            endBarrier.AddJobHandleForProducer(inputDeps);
            return(inputDeps);
        }
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
            using (var commandBuffer = new EntityCommandBuffer(Allocator.TempJob))
            {
                inputDeps = new ShipDestroyMessageJob
                {
                    OnDestroyMessage = typeof(OnDestroyMessage),

                    Weapon_OnShipDestroyMessage = typeof(Weapon_OnShipDestroyMessage),
                    Player_OnShipDestroyMessage = typeof(Player_OnShipDestroyMessage),

                    commandBuffer    = commandBuffer.ToConcurrent(),
                    endCommandBuffer = endBarrier.CreateCommandBuffer().ToConcurrent(),

                    playerFromEntity = GetComponentDataFromEntity <Player>(true),
                }
                .Schedule(this, inputDeps);

                inputDeps.Complete();
                commandBuffer.Playback(EntityManager);
            }

            return(inputDeps);
        }