Ejemplo n.º 1
0
            public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex)
            {
                BufferAccessor <StatefulTriggerEvent> triggerEventsBufferAccessor =
                    chunk.GetBufferAccessor(triggerEventBufferType);

                for (var i = 0; i < chunk.Count; i++)
                {
                    DynamicBuffer <StatefulTriggerEvent> triggerEventsBuffer =
                        triggerEventsBufferAccessor[i];

                    for (var j = triggerEventsBuffer.Length - 1; j >= 0; j--)
                    {
                        StatefulTriggerEvent triggerEvent = triggerEventsBuffer[j];

                        if (triggerEvent._isStale)
                        {
                            if (triggerEvent.State == PhysicsEventState.Exit)
                            {
                                triggerEventsBuffer.RemoveAt(j);
                            }
                            else
                            {
                                triggerEvent.State     = PhysicsEventState.Exit;
                                triggerEventsBuffer[j] = triggerEvent;
                            }
                        }
                    }
                }
            }
Ejemplo n.º 2
0
            public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex)
            {
                BufferAccessor <StatefulTriggerEvent> triggerEventsBufferAccessor =
                    chunk.GetBufferAccessor(triggerEventBufferType);

                for (var i = 0; i < chunk.Count; i++)
                {
                    DynamicBuffer <StatefulTriggerEvent> triggerEventsBuffer =
                        triggerEventsBufferAccessor[i];

                    for (var j = triggerEventsBuffer.Length - 1; j >= 0; j--)
                    {
                        StatefulTriggerEvent triggerEventElement = triggerEventsBuffer[j];
                        triggerEventElement._isStale = true;
                        triggerEventsBuffer[j]       = triggerEventElement;
                    }
                }
            }
Ejemplo n.º 3
0
            private void ProcessForEntity(Entity entity, Entity otherEntity)
            {
                if (triggerEventBufferFromEntity.HasComponent(entity))
                {
                    DynamicBuffer <StatefulTriggerEvent> triggerEventBuffer =
                        triggerEventBufferFromEntity[entity];

                    var foundMatch = false;

                    for (var i = 0; i < triggerEventBuffer.Length; i++)
                    {
                        StatefulTriggerEvent triggerEvent = triggerEventBuffer[i];

                        // If entity is already there, update to Stay
                        if (triggerEvent.Entity == otherEntity)
                        {
                            foundMatch            = true;
                            triggerEvent.State    = PhysicsEventState.Stay;
                            triggerEvent._isStale = false;
                            triggerEventBuffer[i] = triggerEvent;

                            break;
                        }
                    }

                    // If it's a new entity, add as Enter
                    if (!foundMatch)
                    {
                        triggerEventBuffer.Add(
                            new StatefulTriggerEvent
                        {
                            Entity   = otherEntity,
                            State    = PhysicsEventState.Enter,
                            _isStale = false
                        }
                            );
                    }
                }
            }