protected override JobHandle OnUpdate(JobHandle inputDeps) { EntityArray boltSpawnerEntityDataArray = boltSpawnerEntityDataGroup.GetEntityArray(); if (boltSpawnerEntityDataArray.Length == 0) { return(inputDeps); } BoltSpawnerEntityData boltSpawnerEntityData = GetComponentDataFromEntity <BoltSpawnerEntityData>()[boltSpawnerEntityDataArray[0]]; uniqueEntityTypes.Clear(); EntityManager.GetAllUniqueSharedComponentData(uniqueEntityTypes); JobHandle spawnJobHandle = new JobHandle(); JobHandle spawnJobDependency = inputDeps; for (int i = 0; i != uniqueEntityTypes.Count; i++) { EntityTypeData entityTypeData = uniqueEntityTypes[i]; if (entityTypeData.entityType == EntityTypeData.EntityType.EnemyShip || entityTypeData.entityType == EntityTypeData.EntityType.AllyShip) { aiSpawnBoltDataGroup.SetFilter(uniqueEntityTypes[i]); NativeQueue <Entity> .Concurrent spawnBoltEntityQueueToUse = boltSpawnerEntityData.enemyBoltSpawnQueueConcurrent; if (entityTypeData.entityType == EntityTypeData.EntityType.AllyShip) { spawnBoltEntityQueueToUse = boltSpawnerEntityData.allyBoltSpawnQueueConcurrent; } AISpawnBoltJob aiSpawnBoltJob = new AISpawnBoltJob { entityArray = aiSpawnBoltDataGroup.GetEntityArray(), aiPositionArray = aiSpawnBoltDataGroup.GetComponentDataArray <Position>(), aiRotationArray = aiSpawnBoltDataGroup.GetComponentDataArray <Rotation>(), aiSpawnBoltDataArray = aiSpawnBoltDataGroup.GetComponentDataArray <AISpawnBoltData>(), spawnBoltEntityQueue = spawnBoltEntityQueueToUse, deltaTime = Time.deltaTime }; JobHandle tmpJobHandle = aiSpawnBoltJob.Schedule(aiSpawnBoltJob.aiSpawnBoltDataArray.Length, MonoBehaviourECSBridge.Instance.GetJobBatchCount(aiSpawnBoltJob.aiSpawnBoltDataArray.Length), spawnJobDependency); spawnJobHandle = JobHandle.CombineDependencies(spawnJobHandle, tmpJobHandle); spawnJobDependency = JobHandle.CombineDependencies(spawnJobDependency, tmpJobHandle); } } aiSpawnBoltDataGroup.ResetFilter(); return(spawnJobHandle); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { AISpawnBoltJob aiSpawnBoltJob = new AISpawnBoltJob { entityArray = aiMoveSpawnBoltDataGroup.entityArray, aiMoveDataArray = aiMoveSpawnBoltDataGroup.aiMoveDataArray, aiSpawnBoltDataArray = aiMoveSpawnBoltDataGroup.aiSpawnBoltDataArray, spawnBoltEntityQueue = boltSpawnerEntityDataGroup.boltSpawnerEntityData[0].aiBoltSpawnQueueConcurrent, deltaTime = Time.deltaTime }; return(aiSpawnBoltJob.Schedule(aiMoveSpawnBoltDataGroup.Length, MonoBehaviourECSBridge.Instance.GetJobBatchCount(aiMoveSpawnBoltDataGroup.Length), inputDeps)); }