Sha256: 1bd876cdabc1dc7a289ff8ed1bd8ce168fc8cab2a9228bd10be841afbd409f3a
Contents?: true
Size: 958 Bytes
Versions: 3
Compression:
Stored size: 958 Bytes
Contents
# frozen_string_literal: true module Engine::Physics module PhysicsResolver def self.resolve rigidbodies.each do |rb| apply_collisions(rb) end end private 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 def self.rigidbodies Engine::GameObject.objects.map do |go| go.components.find { |c| c.is_a?(Engine::Physics::Components::Rigidbody) } end.compact end def self.colliders Engine::GameObject.objects.map do |go| go.components.select { |c| c.is_a?(Components::SphereCollider) } end.flatten end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby_rpg-0.0.4 | lib/engine/physics/physics_resolver.rb |
ruby_rpg-0.0.3 | lib/engine/physics/physics_resolver.rb |
ruby_rpg-0.0.2 | lib/engine/physics/physics_resolver.rb |