summaryrefslogtreecommitdiffhomepage
path: root/lib/rules/limit.rb
blob: b2a8f32c0193d357429bba8cd68cb33e17dbe20a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# This special function is already called by apply_boid_calculations.rb
# do not add or call this function elsewhere
FF::Sys.new('Limit') do
  unless $config.limit < 0
    FF::Cmp::Boids.each do |boid|
      if boid.entities[0].components[FF::Cmp::Piranha].nil?
        multi = 1.0
      else
        multi = 0.3
      end

      absolute_velocity = Math.sqrt((boid.vx**2) + (boid.vy**2))
      if absolute_velocity > $config.limit
        boid.vx = (boid.vx / absolute_velocity) * $config.limit * multi
        boid.vy = (boid.vy / absolute_velocity) * $config.limit * multi
      end
    end
  end
end