protected override JobHandle OnUpdate(JobHandle inputDeps) { int currentTime = Mathf.FloorToInt(DayNightSystem.worldTime); if (currentTime != savedTime) { var newPositions = new NativeArray <float3>(m_WandererData.Instances.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); for (int i = 0; i < newPositions.Length; ++i) { newPositions[i] = new float3(Random.Range(minX, maxX), ECSBootstrapper.humanPositionY, Random.Range(minZ, maxZ)); } var SetTargetJob = new setTargetJob { Instance = m_WandererData.Instances, target = m_WandererData.Targets, homePosition = m_WandererData.homePositions, randomPositions = newPositions, currTime = currentTime, commandBuffer = addBoidBuffer.CreateCommandBuffer() }.Schedule(m_WandererData.Targets.Length, 64, inputDeps); savedTime = currentTime; newPositions.Dispose(); return(SetTargetJob); } else { return(inputDeps); } }
protected override JobHandle OnUpdate(JobHandle inputDeps) { var SetTargetJob = new setTargetJob { Instance = m_HumanData.Instances, target = m_HumanData.Targets, homePosition = m_HumanData.homePositions, workPosition = m_HumanData.workPositions, //workerSchedules = m_HumanData.workerSchedules, currentTime = Mathf.FloorToInt(DayNightSystem.worldTime), commandBuffer = addBoidBuffer.CreateCommandBuffer() }.Schedule(m_HumanData.Targets.Length, 64, inputDeps); return(SetTargetJob); }