diff --git a/lib/objects/game_object.rb b/lib/objects/game_object.rb index 93678aa..352df63 100644 --- a/lib/objects/game_object.rb +++ b/lib/objects/game_object.rb @@ -63,6 +63,7 @@ class IMICFPS end def update + model.update end # Do two Axis Aligned Bounding Boxes intersect? def intersect(a, b) diff --git a/lib/objects/player.rb b/lib/objects/player.rb index 3b53c51..1a59d8e 100644 --- a/lib/objects/player.rb +++ b/lib/objects/player.rb @@ -21,21 +21,21 @@ class IMICFPS end if button_down?(Gosu::KbUp) || button_down?(Gosu::KbW) - @z+=Math.cos(@y_rotation * Math::PI / 180)*relative_speed - @x-=Math.sin(@y_rotation * Math::PI / 180)*relative_speed - end - if button_down?(Gosu::KbDown) || button_down?(Gosu::KbS) @z-=Math.cos(@y_rotation * Math::PI / 180)*relative_speed @x+=Math.sin(@y_rotation * Math::PI / 180)*relative_speed end - if button_down?(Gosu::KbA) - @z+=Math.sin(@y_rotation * Math::PI / 180)*relative_speed - @x+=Math.cos(@y_rotation * Math::PI / 180)*relative_speed + if button_down?(Gosu::KbDown) || button_down?(Gosu::KbS) + @z+=Math.cos(@y_rotation * Math::PI / 180)*relative_speed + @x-=Math.sin(@y_rotation * Math::PI / 180)*relative_speed end - if button_down?(Gosu::KbD) + if button_down?(Gosu::KbA) @z-=Math.sin(@y_rotation * Math::PI / 180)*relative_speed @x-=Math.cos(@y_rotation * Math::PI / 180)*relative_speed end + if button_down?(Gosu::KbD) + @z+=Math.sin(@y_rotation * Math::PI / 180)*relative_speed + @x+=Math.cos(@y_rotation * Math::PI / 180)*relative_speed + end if button_down?(Gosu::KbLeft) @y_rotation-=relative_speed*100 @@ -44,17 +44,13 @@ class IMICFPS @y_rotation+=relative_speed*100 end - @y-=relative_speed if button_down?(Gosu::KbC) || button_down?(Gosu::KbLeftShift) + @y-=relative_speed if button_down?(Gosu::KbC) || button_down?(Gosu::KbLeftShift) unless @y <= 0 @y+=relative_speed if button_down?(Gosu::KbSpace) + @y = 0 if @y < 0 # distance = 2.0 # x_offset = distance * Math.cos(@bound_model.y_rotation) # z_offset = distance * Math.sin(@bound_model.y_rotation) - model.x = @x - model.y = @y - model.z = @z - - # model.y_rotation = (@y_rotation) end end end diff --git a/lib/objects/skydome.rb b/lib/objects/skydome.rb index 5c5c4f1..9775c35 100644 --- a/lib/objects/skydome.rb +++ b/lib/objects/skydome.rb @@ -2,8 +2,6 @@ class IMICFPS class Skydome < GameObject def setup bind_model(ModelLoader.new(type: :obj, file_path: "objects/skydome.obj", game_object: self)) - p model.class - # raise "Skydome scale: #{self.scale}" unless self.scale == 1 end end end diff --git a/lib/objects/tree.rb b/lib/objects/tree.rb index 59473cf..a3aba91 100644 --- a/lib/objects/tree.rb +++ b/lib/objects/tree.rb @@ -3,5 +3,10 @@ class IMICFPS def setup bind_model(ModelLoader.new(type: :obj, file_path: "objects/tree.obj", game_object: self)) end + + # def update + # super + # @y_rotation+=0.005 + # end end end diff --git a/lib/wavefront/model.rb b/lib/wavefront/model.rb index 6ca90fc..a8453fc 100644 --- a/lib/wavefront/model.rb +++ b/lib/wavefront/model.rb @@ -16,8 +16,7 @@ class IMICFPS def initialize(file_path:, game_object:) @game_object = game_object - @x, @y, @z = game_object.x, game_object.y, game_object.z - @scale = game_object.scale + update @file_path = file_path @file = File.open(file_path, 'r') @material_file = nil @@ -88,6 +87,11 @@ class IMICFPS end $window.number_of_faces+=self.faces.size end + + def update + @x, @y, @z = @game_object.x, @game_object.y, @game_object.z + @scale = @game_object.scale + end end end end diff --git a/lib/window.rb b/lib/window.rb index c33d3a4..f87cb0a 100644 --- a/lib/window.rb +++ b/lib/window.rb @@ -19,13 +19,13 @@ class IMICFPS @delta_time = Gosu.milliseconds @number_of_faces = 0 @draw_skydome = true - @skydome = Skydome.new(scale: 0.1, backface_culling: false, auto_manage: false) + @skydome = Skydome.new(scale: 0.02, backface_culling: false, auto_manage: false) Tree.new(x: 1, y: 0, z: -5) p ObjectManager.objects.map {|o| o.name} # Model.new(type: :obj, file_path: "objects/tree.obj", z: -5) # Model.new(type: :obj, file_path: "objects/tree.obj", x: -2, z: -6) # Model.new(type: :obj, file_path: "objects/sponza.obj", scale: 1, y: -0.2) - # @terrain = Terrain.new(size: 20) + @terrain = Terrain.new(size: 20) @camera = Camera.new(x: 0, y: -2, z: 1) @player = Player.new(x: 1, y: 0, z: -10) @@ -56,7 +56,7 @@ class IMICFPS light.draw end @camera.draw - @skydome.draw# if @skydome.renderable + @skydome.draw if @skydome.renderable glEnable(GL_DEPTH_TEST) ObjectManager.objects.each do |object|