diff --git a/lib/cyberarm_engine/common.rb b/lib/cyberarm_engine/common.rb index 0ac664b..cd8324f 100644 --- a/lib/cyberarm_engine/common.rb +++ b/lib/cyberarm_engine/common.rb @@ -48,6 +48,12 @@ module CyberarmEngine end end + def opacity(color, ratio = 1.0) + alpha = 255 * ratio + + return Gosu::Color.rgba(color.red, color.green, color.blue, alpha) + end + def get_asset(path, hash, klass) asset = nil hash.detect do |_asset, instance| diff --git a/lib/cyberarm_engine/lib/bounding_box.rb b/lib/cyberarm_engine/lib/bounding_box.rb index 954954f..83cd68e 100644 --- a/lib/cyberarm_engine/lib/bounding_box.rb +++ b/lib/cyberarm_engine/lib/bounding_box.rb @@ -2,9 +2,23 @@ module CyberarmEngine class BoundingBox attr_accessor :min, :max - def initialize(minx = 0, miny = 0, minz = 0, maxx = 0, maxy = 0, maxz = 0) - @min = Vector.new(minx, miny, minz) - @max = Vector.new(maxx, maxy, maxz) + def initialize(*args) + case args.size + when 0 + @min = Vector.new(0, 0, 0) + @max = Vector.new(0, 0, 0) + when 2 + @min = args.first.clone + @max = args.last.clone + when 4 + @min = Vector.new(args[0], args[1], 0) + @max = Vector.new(args[2], args[3], 0) + when 6 + @min = Vector.new(args[0], args[1], args[2]) + @max = Vector.new(args[3], args[4], args[5]) + else + raise "Invalid number of arguments! Got: #{args.size}, expected: 0, 2, 4, or 6." + end end def ==(other) diff --git a/lib/cyberarm_engine/lib/vector.rb b/lib/cyberarm_engine/lib/vector.rb index 0e46ecd..77a2fc8 100644 --- a/lib/cyberarm_engine/lib/vector.rb +++ b/lib/cyberarm_engine/lib/vector.rb @@ -31,7 +31,7 @@ module CyberarmEngine end # Performs math operation, excluding @weight - def operator(function, other) + private def operator(function, other) if other.is_a?(Numeric) Vector.new( @x.send(:"#{function}", other),