summaryrefslogtreecommitdiffhomepage
path: root/app/systems/rules/minimum_speed.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/systems/rules/minimum_speed.rb')
-rw-r--r--app/systems/rules/minimum_speed.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/app/systems/rules/minimum_speed.rb b/app/systems/rules/minimum_speed.rb
new file mode 100644
index 0000000..a78ee21
--- /dev/null
+++ b/app/systems/rules/minimum_speed.rb
@@ -0,0 +1,13 @@
+FF::Scn::BoidRules.add(
+ FF::Sys.new('BoidMinimumSpeed', priority: 98) do
+ FF::Cmp::BoidMinimumSpeed.each do |minspeed_component|
+ boid = minspeed_component.entities[0].components[FF::Cmp::Boid][0]
+ mag = Math.sqrt((boid.vx ** 2) + (boid.vy ** 2))
+ if mag < minspeed_component.speed
+ boid.vx = (boid.vx / mag) * minspeed_component.speed
+ boid.vy = (boid.vy / mag) * minspeed_component.speed
+ end
+ end
+ end
+)
+