diff --git a/lib/cyberarm_engine.rb b/lib/cyberarm_engine.rb index 62e349d..7971f77 100644 --- a/lib/cyberarm_engine.rb +++ b/lib/cyberarm_engine.rb @@ -5,7 +5,6 @@ rescue LoadError => e require "gosu" end - require_relative "cyberarm_engine/version" require_relative "cyberarm_engine/common" @@ -13,15 +12,15 @@ require_relative "cyberarm_engine/common" require_relative "cyberarm_engine/game_object" require_relative "cyberarm_engine/engine" -require_relative "cyberarm_engine/lib/bounding_box" -require_relative "cyberarm_engine/lib/vector" -require_relative "cyberarm_engine/lib/matrix" -require_relative "cyberarm_engine/lib/ray" -require_relative "cyberarm_engine/lib/shader" if defined?(OpenGL) +require_relative "cyberarm_engine/bounding_box" +require_relative "cyberarm_engine/vector" +require_relative "cyberarm_engine/transform" +require_relative "cyberarm_engine/ray" +require_relative "cyberarm_engine/shader" if defined?(OpenGL) require_relative "cyberarm_engine/background" -require_relative "cyberarm_engine/objects/text" -require_relative "cyberarm_engine/objects/timer" +require_relative "cyberarm_engine/text" +require_relative "cyberarm_engine/timer" require_relative "cyberarm_engine/ui/theme" require_relative "cyberarm_engine/ui/event" diff --git a/lib/cyberarm_engine/lib/bounding_box.rb b/lib/cyberarm_engine/bounding_box.rb similarity index 100% rename from lib/cyberarm_engine/lib/bounding_box.rb rename to lib/cyberarm_engine/bounding_box.rb diff --git a/lib/cyberarm_engine/lib/ray.rb b/lib/cyberarm_engine/ray.rb similarity index 100% rename from lib/cyberarm_engine/lib/ray.rb rename to lib/cyberarm_engine/ray.rb diff --git a/lib/cyberarm_engine/lib/shader.rb b/lib/cyberarm_engine/shader.rb similarity index 100% rename from lib/cyberarm_engine/lib/shader.rb rename to lib/cyberarm_engine/shader.rb diff --git a/lib/cyberarm_engine/objects/text.rb b/lib/cyberarm_engine/text.rb similarity index 100% rename from lib/cyberarm_engine/objects/text.rb rename to lib/cyberarm_engine/text.rb diff --git a/lib/cyberarm_engine/objects/timer.rb b/lib/cyberarm_engine/timer.rb similarity index 100% rename from lib/cyberarm_engine/objects/timer.rb rename to lib/cyberarm_engine/timer.rb diff --git a/lib/cyberarm_engine/lib/matrix.rb b/lib/cyberarm_engine/transform.rb similarity index 67% rename from lib/cyberarm_engine/lib/matrix.rb rename to lib/cyberarm_engine/transform.rb index 7dc3d2d..878a2ed 100644 --- a/lib/cyberarm_engine/lib/matrix.rb +++ b/lib/cyberarm_engine/transform.rb @@ -1,41 +1,15 @@ module CyberarmEngine - class Matrix - attr_reader :elements, :rows, :columns - def initialize(matrix, rows:, columns:) + class Transform + attr_reader :elements + def initialize(matrix) @elements = matrix - @rows = rows - @columns = columns - raise "Matrix is wrong size! Got #{@elements.size}, expected #{@rows * @columns}" if @rows * @columns != @elements.size + raise "Transform is wrong size! Got #{@elements.size}, expected 16" if 16 != @elements.size end - def +(other) - end - - def -(other) - end - - def *(other) - end - - def cofactor - end - - def adjoint - sign = 1 - matrix = @elements.clone - - @rows.times do |row| - @columns.times do |columns| - end - end - end - - def determinant - end - - # https://www.geeksforgeeks.org/adjoint-inverse-matrix/ - def inverse + def error(pos) + p @elements + Vector.new(@elements[3], @elements[7]) - pos end def self.rotate(angle, rotate_around = nil) @@ -48,7 +22,7 @@ module CyberarmEngine 0, 0, 0, 1, ] - rotate_matrix = Matrix.new(matrix, rows: 4, columns: 4) + rotate_matrix = Transform.new(matrix, rows: 4, columns: 4) if rotate_around && (rotate_around.x != 0.0 || rotate_around.y != 0.0) negative_rotate_around = Vector.new(-rotate_around.x, -rotate_around.y, -rotate_around.z) @@ -71,7 +45,7 @@ module CyberarmEngine x, y, z, 1, ] - Matrix.new(matrix, rows: 4, columns: 4) + Transform.new(matrix) end def self.scale(vector, center_around = nil) @@ -83,7 +57,7 @@ module CyberarmEngine 0, 0, 0, 1, ] - scale_matrix = Matrix.new(matrix, rows: 4, columns: 4) + scale_matrix = Transform.new(matrix) if center_around && (center_around.x != 0.0 || center_around.y != 0.0) negative_center_around = Vector.new(-center_around.x, -center_around.y, -center_around.z) @@ -99,7 +73,7 @@ module CyberarmEngine def self.concat(left, right) matrix = Array.new(left.elements.size) - rows = left.rows + rows = 4 matrix.size.times do |i| matrix[i] = 0 @@ -109,7 +83,7 @@ module CyberarmEngine end end - Matrix.new(matrix, rows: 4, columns: 4) + Transform.new(matrix) end end end \ No newline at end of file diff --git a/lib/cyberarm_engine/lib/vector.rb b/lib/cyberarm_engine/vector.rb similarity index 100% rename from lib/cyberarm_engine/lib/vector.rb rename to lib/cyberarm_engine/vector.rb