Module: Engine::Physics::PhysicsResolver
- Defined in:
- lib/engine/physics/physics_resolver.rb
Class Method Summary collapse
- .apply_collisions(rigidbody) ⇒ Object
- .colliders ⇒ Object
- .register_collider(collider) ⇒ Object
- .register_rigidbody(rigidbody) ⇒ Object
- .resolve ⇒ Object
- .rigidbodies ⇒ Object
- .unregister_collider(collider) ⇒ Object
- .unregister_rigidbody(rigidbody) ⇒ Object
Class Method Details
.apply_collisions(rigidbody) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/engine/physics/physics_resolver.rb', line 37 def self.apply_collisions(rigidbody) other_colliders = colliders.reject { |c| rigidbody.colliders.include?(c) } rigidbody.colliders.map do |collider| other_colliders.map do |other_collider| collider.collision_for(other_collider) end.compact end.flatten.each do |collision| rigidbody.apply_impulse(collision.impulse, collision.point) end end |
.colliders ⇒ Object
15 16 17 |
# File 'lib/engine/physics/physics_resolver.rb', line 15 def self.colliders @cached_colliders ||= [] end |
.register_collider(collider) ⇒ Object
27 28 29 |
# File 'lib/engine/physics/physics_resolver.rb', line 27 def self.register_collider(collider) colliders << collider end |
.register_rigidbody(rigidbody) ⇒ Object
19 20 21 |
# File 'lib/engine/physics/physics_resolver.rb', line 19 def self.register_rigidbody(rigidbody) rigidbodies << rigidbody end |
.resolve ⇒ Object
5 6 7 8 9 |
# File 'lib/engine/physics/physics_resolver.rb', line 5 def self.resolve rigidbodies.each do |rb| apply_collisions(rb) end end |
.rigidbodies ⇒ Object
11 12 13 |
# File 'lib/engine/physics/physics_resolver.rb', line 11 def self.rigidbodies @cached_rigidbodies ||= [] end |
.unregister_collider(collider) ⇒ Object
31 32 33 |
# File 'lib/engine/physics/physics_resolver.rb', line 31 def self.unregister_collider(collider) colliders.delete(collider) end |
.unregister_rigidbody(rigidbody) ⇒ Object
23 24 25 |
# File 'lib/engine/physics/physics_resolver.rb', line 23 def self.unregister_rigidbody(rigidbody) rigidbodies.delete(rigidbody) end |