public Runtime PrepareToExecuteOnEntitiesIn(ref ArchetypeChunk chunk)
 {
     return(new Runtime()
     {
         _objects = chunk.GetComponentObjects(_type, _entityManager)
     });
 }
            protected override void OnUpdate()
            {
                var boxChunks     = boxGroup.CreateArchetypeChunkArray(Allocator.TempJob);
                var sphereChuncks = sphereGroup.CreateArchetypeChunkArray(Allocator.TempJob);
                var capsuleChunks = capsuleGroup.CreateArchetypeChunkArray(Allocator.TempJob);

                for (int i = 0, length = boxChunks.Length; i < length; ++i)
                {
                    ArchetypeChunk       boxChunk   = boxChunks[i];
                    var                  tempEntity = boxChunk.GetNativeArray(GetArchetypeChunkEntityType());
                    NativeArray <Entity> entities   = new NativeArray <Entity>(tempEntity.Length, Allocator.TempJob);
                    tempEntity.CopyTo(entities);
                    UpdateBoxColliders(entities,
                                       boxChunk.GetComponentObjects(GetArchetypeChunkComponentType <BoxCollider>(true), EntityManager));
                    entities.Dispose();
                }

                for (int i = 0, length = sphereChuncks.Length; i < length; ++i)
                {
                    ArchetypeChunk       sphereChunk = sphereChuncks[i];
                    var                  tempEntity  = sphereChunk.GetNativeArray(GetArchetypeChunkEntityType());
                    NativeArray <Entity> entities    = new NativeArray <Entity>(tempEntity.Length, Allocator.TempJob);
                    tempEntity.CopyTo(entities);
                    UpdateSphereColliders(entities,
                                          sphereChunk.GetComponentObjects(GetArchetypeChunkComponentType <SphereCollider>(true), EntityManager));
                    entities.Dispose();
                }

                for (int i = 0, length = capsuleChunks.Length; i < length; ++i)
                {
                    ArchetypeChunk       capsuleChunk = capsuleChunks[i];
                    var                  tempEntity   = capsuleChunk.GetNativeArray(GetArchetypeChunkEntityType());
                    NativeArray <Entity> entities     = new NativeArray <Entity>(tempEntity.Length, Allocator.TempJob);
                    tempEntity.CopyTo(entities);
                    UpdateCapsuleColliders(entities,
                                           capsuleChunk.GetComponentObjects(GetArchetypeChunkComponentType <CapsuleCollider>(true), EntityManager));
                    entities.Dispose();
                }

                boxChunks.Dispose();
                sphereChuncks.Dispose();
                capsuleChunks.Dispose();

                var colliderChunks = colliderGroup.CreateArchetypeChunkArray(Allocator.TempJob);

                for (int i = 0, length = colliderChunks.Length; i < length; ++i)
                {
                    ArchetypeChunk       colliderChunk = colliderChunks[i];
                    var                  tempEntity    = colliderChunk.GetNativeArray(GetArchetypeChunkEntityType());
                    NativeArray <Entity> entities      = new NativeArray <Entity>(tempEntity.Length, Allocator.TempJob);
                    tempEntity.CopyTo(entities);
                    for (int j = 0, entityCount = entities.Length; j < entityCount; ++j)
                    {
                        ColliderComponentData colliderInfo = new ColliderComponentData();
                        Entity entity = entities[j];
                        if (GetComponentDataFromEntity <BoxColliderComponentData>(true).Exists(entity))
                        {
                            colliderInfo.Volume |= E_CollisionVolume.BOX;
                        }
                        if (GetComponentDataFromEntity <SphereColliderComponentData>(true).Exists(entity))
                        {
                            colliderInfo.Volume |= E_CollisionVolume.SPHERE;
                        }
                        if (GetComponentDataFromEntity <CapsuleColliderComponentData>(true).Exists(entity))
                        {
                            colliderInfo.Volume |= E_CollisionVolume.CAPSULE;
                        }
                        Utils.Utils.AddOrSetComponent(entity, colliderInfo, GetComponentDataFromEntity <ColliderComponentData>(true), EntityManager);
                        EntityManager.RemoveComponent <DirtyColliderComponentData>(entity);
                    }
                    entities.Dispose();
                }
                if (World.GetExistingManager <PreCollisionSystem>() != null)
                {
                    World.GetExistingManager <PreCollisionSystem>().HasChanged = true;
                }
                if (colliderChunks.IsCreated)
                {
                    colliderChunks.Dispose();
                }
            }