summaryrefslogtreecommitdiffhomepage
path: root/lib/felecs/order.rb
blob: 3e9b656ba93c69ceb98d97d40909ce1d7a1386f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# frozen_string_literal: true

module FelECS
  module Order
    # Sets the priority of all items passed into this method
    # according to the order they were passed.
    # If an array is one of the elements then it will give all
    # of those elements in the array the same priority.
    # @param sortables [(Systems and Array<Systems>) or (Scenes and Array<Scenes>)]
    # @return [Boolean] +true+.
    def self.sort(*sortables)
      sortables.each_with_index do |sorted, index|
        if sorted.respond_to? :priority
          sorted.priority = index
        else
          sorted.each do |item|
            item.priority = index
          end
        end
      end
      true
    end
  end
end