From 3f7c5e992d64632c0ea667e3cb60d45b456dad8e Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Thu, 7 Feb 2019 15:54:52 -0600 Subject: [PATCH] Add collision manager... --- lib/managers/collision_manager.rb | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/managers/collision_manager.rb diff --git a/lib/managers/collision_manager.rb b/lib/managers/collision_manager.rb new file mode 100644 index 0000000..af39433 --- /dev/null +++ b/lib/managers/collision_manager.rb @@ -0,0 +1,34 @@ +class IMICFPS + class CollisionManager + def initialize(game_state:) + @game_state = game_state + # @aabb_tree = AABBTree.new + end + + def lazy_check_collisions + # Expensive AABB collision detection + @game_state.game_objects.each do |object| + @game_state.game_objects.each do |b| + next if object == b + next if object.is_a?(Terrain) || b.is_a?(Terrain) + + if object.intersect(object, b) + object.debug_color = Color.new(1.0,0.0,0.0) + b.debug_color = Color.new(1.0,0.0,0.0) + + @game_state.game_objects.delete(object) unless object.is_a?(Player) + puts "#{object} is intersecting #{b}" if object.is_a?(Player) + else + object.debug_color = Color.new(0,1,0) + b.debug_color = Color.new(0,1,0) + end + end + end + end + + def update + lazy_check_collisions + # @aabb_tree.rebuild + end + end +end \ No newline at end of file