mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-15 23:52:35 +00:00
Restructured 'objects' folder into a meaningful 'assets' folder, added 'war_factory' model, refactored GameObject#bind_model and ModelLoader to understand the restructuring.
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
class IMICFPS
|
||||
def self.assets_path
|
||||
File.expand_path("./../../assets", __FILE__)
|
||||
end
|
||||
|
||||
module CommonMethods
|
||||
|
||||
def window; $window; end
|
||||
|
||||
@@ -16,7 +16,7 @@ class IMICFPS
|
||||
object.debug_color = Color.new(1.0,0.0,0.0)
|
||||
b.debug_color = Color.new(1.0,0.0,0.0)
|
||||
|
||||
@game_state.game_objects.delete(object) unless object.is_a?(Player)
|
||||
# @game_state.game_objects.delete(object) unless object.is_a?(Player)
|
||||
puts "#{object} is intersecting #{b}" if object.is_a?(Player)
|
||||
else
|
||||
object.debug_color = Color.new(0,1,0)
|
||||
@@ -31,4 +31,4 @@ class IMICFPS
|
||||
# @aabb_tree.rebuild
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -43,7 +43,9 @@ class IMICFPS
|
||||
return self
|
||||
end
|
||||
|
||||
def bind_model(model)
|
||||
def bind_model(package, name)
|
||||
model = ModelLoader.new(manifest_file: IMICFPS.assets_path + "/#{package}/#{name}/#{name}.yaml", game_object: @dummy_game_object)
|
||||
|
||||
raise "model isn't a model!" unless model.is_a?(ModelLoader)
|
||||
@bound_model = model
|
||||
@bound_model.model.game_object = self
|
||||
|
||||
@@ -7,7 +7,7 @@ class IMICFPS
|
||||
attr_reader :name, :bound_model, :first_person_view
|
||||
|
||||
def setup
|
||||
bind_model(ModelLoader.new(type: :obj, file_path: "objects/biped.obj", game_object: self))
|
||||
bind_model("base", "biped")
|
||||
@speed = 2.5 # meter's per second
|
||||
@running_speed = 6.8 # meter's per second
|
||||
@old_speed = @speed
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class IMICFPS
|
||||
class Skydome < GameObject
|
||||
def setup
|
||||
bind_model(ModelLoader.new(type: :obj, file_path: "objects/skydome.obj", game_object: self))
|
||||
bind_model("base", "skydome")
|
||||
end
|
||||
|
||||
def draw
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class IMICFPS
|
||||
class Terrain < GameObject
|
||||
def setup
|
||||
bind_model(ModelLoader.new(type: :obj, file_path: "objects/randomish_terrain.obj", game_object: self))
|
||||
bind_model("base", "randomish_terrain")
|
||||
# bind_model(ModelLoader.new(type: :obj, file_path: "/home/cyberarm/Documents/blends/untitled.obj", game_object: self))
|
||||
self.scale = 1
|
||||
@nearest_vertex_lookup = {}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class IMICFPS
|
||||
class TestObject < GameObject
|
||||
def setup
|
||||
bind_model(ModelLoader.new(type: :obj, file_path: "objects/sponza.obj", game_object: self))
|
||||
bind_model("base", "war_factory")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
class IMICFPS
|
||||
class Tree < GameObject
|
||||
def setup
|
||||
bind_model(ModelLoader.new(type: :obj, file_path: "objects/tree.obj", game_object: self))
|
||||
bind_model("base", "tree")
|
||||
vert = @terrain.find_nearest_vertex(self, 4.5)
|
||||
if vert
|
||||
self.x = vert.x
|
||||
self.y = vert.y
|
||||
self.z = vert.z
|
||||
end
|
||||
|
||||
# @y_rotation += rand(1..100)
|
||||
end
|
||||
|
||||
# def update
|
||||
|
||||
@@ -8,10 +8,13 @@ class IMICFPS
|
||||
|
||||
attr_reader :model, :name, :debug_color
|
||||
|
||||
def initialize(type:, file_path:, game_object: nil)
|
||||
@type = type
|
||||
@file_path = file_path
|
||||
@name = file_path.split("/").last.split(".").first
|
||||
def initialize(manifest_file:, game_object: nil)
|
||||
@manifest = YAML.load(File.read(manifest_file))
|
||||
pp @manifest
|
||||
@file_path = File.expand_path("./../model/", manifest_file) + "/#{@manifest["model"]}"
|
||||
@name = @manifest["name"]
|
||||
|
||||
@type = File.basename(@file_path).split(".").last.to_sym
|
||||
@debug_color = Color.new(0.0, 1.0, 0.0)
|
||||
|
||||
@model = nil
|
||||
|
||||
@@ -14,6 +14,8 @@ class IMICFPS
|
||||
Tree.new(x: rand(@terrain.width)-(@terrain.width/2.0), z: rand(@terrain.depth)-(@terrain.depth/2.0), terrain: @terrain, game_state: self)
|
||||
end
|
||||
|
||||
TestObject.new(terrain: @terrain, game_state: self, scale: 1.0)
|
||||
|
||||
@player = Player.new(x: 1, y: 0, z: -1, terrain: @terrain, game_state: self)
|
||||
@camera = Camera.new(x: 0, y: -2, z: 1)
|
||||
@camera.attach_to(@player)
|
||||
@@ -142,4 +144,4 @@ eos
|
||||
puts 'Bye'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,10 +10,10 @@ class IMICFPS
|
||||
@dummy_game_object = nil
|
||||
@assets = []
|
||||
@asset_index = 0
|
||||
add_asset(:obj, "objects/randomish_terrain.obj")
|
||||
add_asset(:obj, "objects/skydome.obj")
|
||||
add_asset(:obj, "objects/tree.obj")
|
||||
add_asset(:obj, "objects/biped.obj")
|
||||
add_asset(:model, "base", "randomish_terrain")
|
||||
add_asset(:model, "base", "skydome")
|
||||
add_asset(:model, "base", "tree")
|
||||
add_asset(:model, "base", "biped")
|
||||
|
||||
# Currently broken
|
||||
# Shader.new(name: "lighting", vertex_file: "shaders/vertex/lighting.glsl", fragment_file: "shaders/fragment/lighting.glsl")
|
||||
@@ -46,7 +46,13 @@ class IMICFPS
|
||||
@cycled = false
|
||||
|
||||
hash = @assets[@asset_index]
|
||||
ModelLoader.new(type: hash[:type], file_path: hash[:path], game_object: @dummy_game_object)
|
||||
case hash[:type]
|
||||
when :model
|
||||
ModelLoader.new(manifest_file: IMICFPS.assets_path + "/#{hash[:package]}/#{hash[:name]}/#{hash[:name]}.yaml", game_object: @dummy_game_object)
|
||||
# when :shader
|
||||
else
|
||||
warn "Unknown asset: #{hash}"
|
||||
end
|
||||
|
||||
@asset_index+=1
|
||||
end
|
||||
@@ -60,14 +66,14 @@ class IMICFPS
|
||||
@lock = true
|
||||
end
|
||||
else
|
||||
@state.text = "Loading #{@assets[@asset_index][:path].split('/').last}..."
|
||||
@state.text = "Loading #{@assets[@asset_index][:name].split('/').last}..."
|
||||
@state.x = (window.width/2)-(@state.width/2)
|
||||
@cycled = true
|
||||
end
|
||||
end
|
||||
|
||||
def add_asset(type, path)
|
||||
@assets << {type: type, path: path}
|
||||
def add_asset(type, package, name)
|
||||
@assets << {type: type, package: package, name: name}
|
||||
end
|
||||
|
||||
def progressbar(x = window.width/4, y = window.height - 104)
|
||||
|
||||
@@ -14,7 +14,7 @@ class IMICFPS
|
||||
end
|
||||
|
||||
def set_texture(texture_path)
|
||||
# puts "#{name} texture #{texture_path}"
|
||||
puts "#{name} texture #{texture_path}"
|
||||
@texture = Gosu::Image.new(texture_path, retro: false)
|
||||
array_of_pixels = @texture.to_blob
|
||||
|
||||
|
||||
Reference in New Issue
Block a user