//struct UpdateColorFlagging : IJob //{ // public NativeHashMap<Entity, int> UpdateEntities; // public EntityCommandBuffer CommandBuffer; // public void Execute() // { // UpdateEntities.GetKeyArray(Allocator.Temp); // CommandBuffer.AddComponent() // } //} protected override JobHandle OnUpdate(JobHandle inputDeps) { if (m_EventGroup.CalculateLength() > 0) { m_TargetToEvent.Clear(); var selectableColorType = GetArchetypeChunkComponentType <SelectableColor>(true); var selectableType = GetArchetypeChunkComponentType <Selectable>(); var colorMultiplierType = GetArchetypeChunkComponentType <VertexColorMultiplier>(); var entityType = GetArchetypeChunkEntityType(); CreateTargetToEventMap createTargetToEvent = new CreateTargetToEventMap() { EntityType = GetArchetypeChunkEntityType(), EventType = GetArchetypeChunkComponentType <PointerEvent>(true), TargetToEvent = m_TargetToEvent.ToConcurrent() }; inputDeps = createTargetToEvent.Schedule(m_EventGroup, inputDeps); SetColorValueJob setJob = new SetColorValueJob() { SelectableColorType = selectableColorType, SelectableType = selectableType, ColorMultiplierType = colorMultiplierType, EntityType = entityType, PointerInputType = GetBufferFromEntity <PointerInputBuffer>(), TargetToEvent = m_TargetToEvent, }; inputDeps = setJob.Schedule(m_SelectableGroup, inputDeps); inputDeps.Complete(); EntityManager.AddComponent(m_TargetToEvent.GetKeyArray(Allocator.Temp), typeof(UpdateElementColor)); } return(inputDeps); }
protected sealed override JobHandle OnUpdate(JobHandle inputDeps) { if (m_PointerEventQuery.CalculateEntityCount() > 0) { ClearHashMap <Entity, Entity> clearContainer = new ClearHashMap <Entity, Entity>() { Container = m_TargetToEvent }; inputDeps = clearContainer.Schedule(inputDeps); CreateTargetToEventMap createMap = new CreateTargetToEventMap() { EntityType = GetArchetypeChunkEntityType(), EventType = GetArchetypeChunkComponentType <PointerEvent>(true), TargetToEvent = m_TargetToEvent.AsParallelWriter(), TargetType = GetComponentDataFromEntity <T>(true) }; inputDeps = createMap.Schedule(m_PointerEventQuery, inputDeps); inputDeps = OnUpdateInput(inputDeps, m_TargetToEvent, GetBufferFromEntity <PointerInputBuffer>(true)); } return(inputDeps); }