Beispiel #1
0
        //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);
 }