From 8b35bf037e931dfc63dfe6a94e8cb32226b35c33 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Thu, 30 Jan 2020 11:25:31 -0600 Subject: [PATCH] Added evergreen_tree model, added work-in-progress collada parser, renamed ModelLoader to ModelCache --- Gemfile | 1 + assets/base/evergreen_tree/manifest.yaml | 4 + .../evergreen_tree/model/evergreen_tree.dae | 376 ++++++++++++++++++ blends/evergreen_tree.blend | Bin 0 -> 618652 bytes i-mic-fps.rb | 4 +- lib/game_objects/entity.rb | 4 +- lib/model.rb | 11 +- lib/model/parser.rb | 21 + lib/model/parsers/collada_parser.rb | 107 +++++ lib/model/parsers/wavefront_parser.rb | 23 +- .../model_loader.rb => model_cache.rb} | 15 +- lib/states/game_states/loading_state.rb | 2 +- maps/test_map.json | 2 +- 13 files changed, 529 insertions(+), 41 deletions(-) create mode 100644 assets/base/evergreen_tree/manifest.yaml create mode 100644 assets/base/evergreen_tree/model/evergreen_tree.dae create mode 100644 blends/evergreen_tree.blend create mode 100644 lib/model/parsers/collada_parser.rb rename lib/{game_objects/model_loader.rb => model_cache.rb} (75%) diff --git a/Gemfile b/Gemfile index d03df08..7e9925f 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "opengl-bindings", require: "opengl" gem "cyberarm_engine", git: "https://github.com/cyberarm/cyberarm_engine" +gem "nokogiri" group(:packaging) do gem "ocra" diff --git a/assets/base/evergreen_tree/manifest.yaml b/assets/base/evergreen_tree/manifest.yaml new file mode 100644 index 0000000..3c7f5d5 --- /dev/null +++ b/assets/base/evergreen_tree/manifest.yaml @@ -0,0 +1,4 @@ +--- +name: "evergreen_tree" +model: "evergreen_tree.dae" +collision: "boundingbox" \ No newline at end of file diff --git a/assets/base/evergreen_tree/model/evergreen_tree.dae b/assets/base/evergreen_tree/model/evergreen_tree.dae new file mode 100644 index 0000000..358efcc --- /dev/null +++ b/assets/base/evergreen_tree/model/evergreen_tree.dae @@ -0,0 +1,376 @@ + + + + + Blender User + Blender 2.81.16 commit date:2019-12-04, commit time:11:32, hash:f1aa4d18d49d + + 2020-01-30T08:56:21 + 2020-01-30T08:56:21 + + Z_UP + + + + + + + 39.59775 + 1.777778 + 0.1 + 100 + + + + + + 0 + 0 + 10 + + + + + + + + + 1000 1000 1000 + 1 + 0 + 0.00111109 + + + + + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1000 + 29.99998 + 75 + 0.15 + 0 + 1 + 2 + 0.04999995 + 30.002 + 1 + 3 + 2880 + 3 + 1 + 1 + 0.1 + 0.1 + 1 + + + + + + + + + + + 0 0 0 1 + + + 0 0.4868966 0.07537682 1 + + + 1.45 + + + + + + + + + + + 0 0 0 1 + + + 0 0.5173332 0.03164556 1 + + + 1.45 + + + + + + + + + + + 0 0 0 1 + + + 0.3031975 0.1076129 0.05296437 1 + + + 1.45 + + + + + + + + + + + + + + + + + + + + + + + -0.7701593 -0.7701593 0 0.7701593 -0.7701593 0 -0.7701593 0.7701593 0 0.7701593 0.7701593 0 0 0 0.6063125 + + + + + + + + + + 0 0 -1 0 -0.6185703 0.7857296 0.6185703 0 0.7857295 -0.6185703 0 0.7857295 0 0.6185703 0.7857296 + + + + + + + + + + 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 + + + + + + + + + + + + + + +

2 0 0 1 0 1 0 0 2 0 1 3 1 1 4 4 1 5 1 2 6 3 2 7 4 2 8 2 3 9 0 3 10 4 3 11 3 4 12 2 4 13 4 4 14 2 0 15 3 0 16 1 0 17

+
+
+
+ + + + -1 -1 0 1 -1 0 -1 1 0 1 1 0 -0.4597772 -0.4597772 0.5360521 0.4597772 -0.4597772 0.5360521 -0.4597772 0.4597772 0.5360521 0.4597772 0.4597772 0.5360521 + + + + + + + + + + 0 0 -1 0 0 1 0 -0.7043614 0.7098416 0.7043614 0 0.7098416 -0.7043614 0 0.7098416 0 0.7043614 0.7098416 0 -0.7043614 0.7098415 0.7043614 0 0.7098416 -0.7043614 0 0.7098416 0 0.7043614 0.7098415 + + + + + + + + + + 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 + + + + + + + + + + + + + + +

2 0 0 1 0 1 0 0 2 5 1 3 6 1 4 4 1 5 1 2 6 4 2 7 0 2 8 3 3 9 5 3 10 1 3 11 0 4 12 6 4 13 2 4 14 2 5 15 7 5 16 3 5 17 2 0 18 3 0 19 1 0 20 5 1 21 7 1 22 6 1 23 1 6 24 5 6 25 4 6 26 3 7 27 7 7 28 5 7 29 0 8 30 4 8 31 6 8 32 2 9 33 6 9 34 7 9 35

+
+
+
+ + + + -1.366034 -1.366034 0 1.366034 -1.366034 0 -1.366034 1.366034 0 1.366034 1.366034 0 -0.7 -0.7 0.5 0.7 -0.7 0.5 -0.7 0.7 0.5 0.7 0.7 0.5 + + + + + + + + + + 0 0 -1 0 0 1 0 -0.6003649 0.7997263 0.6003648 0 0.7997263 -0.6003648 0 0.7997263 0 0.6003649 0.7997263 0 -0.6003648 0.7997263 0.6003648 0 0.7997263 -0.6003648 0 0.7997263 0 0.6003648 0.7997263 + + + + + + + + + + 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 + + + + + + + + + + + + + + +

2 0 0 1 0 1 0 0 2 5 1 3 6 1 4 4 1 5 1 2 6 4 2 7 0 2 8 3 3 9 5 3 10 1 3 11 0 4 12 6 4 13 2 4 14 2 5 15 7 5 16 3 5 17 2 0 18 3 0 19 1 0 20 5 1 21 7 1 22 6 1 23 1 6 24 5 6 25 4 6 26 3 7 27 7 7 28 5 7 29 0 8 30 4 8 31 6 8 32 2 9 33 6 9 34 7 9 35

+
+
+
+ + + + 0 0.5 0 -0.4755282 0.1545085 0 -0.2938926 -0.4045085 0 0.2938927 -0.4045085 0 0.4755282 0.1545085 0 0 0.4 2 -0.3804226 0.1236068 2 -0.235114 -0.3236068 2 0.2351141 -0.3236068 2 0.3804226 0.1236068 2 3.64108e-7 0.42 4.3 -0.3043377 0.1988854 4.3 -0.1880909 -0.1588854 4.3 0.1880916 -0.1588854 4.3 0.3043384 0.1988855 4.3 -8.83978e-7 0.156 6 -0.2434713 -0.0208916 6 -0.1504738 -0.3071084 6 0.1504722 -0.3071084 6 0.2434695 -0.02089154 6 -1.64407e-6 0.02799999 7 -0.1217368 -0.06044578 7 -0.0752381 -0.2035542 7 0.07523488 -0.2035542 7 0.1217336 -0.06044578 7 + + + + + + + + + + 0 0 -1 0.5877706 0.8089972 -0.007034838 -0.587305 0.8083561 0.04041773 0.9502794 -0.3087643 0.04041779 -0.9502794 -0.3087645 0.04041779 0.5873049 0.808356 0.04041779 0 -0.9991829 0.04041779 0.95104 -0.3090115 -0.005896985 0 -0.9974453 0.07143497 -0.5877708 0.808997 -0.007034659 0.9502357 -0.3087501 0.04153919 -0.9502357 -0.3087502 0.04153949 0.5846588 0.8047139 0.1030038 -0.9510399 -0.3090118 -0.005898416 0.5832006 0.8027067 0.124656 0 -0.9962205 -0.08686035 -0.5832004 0.8027069 0.1246552 0 0 1 0 -0.994681 0.1030034 -0.5846592 0.8047137 0.1030029 0.9459978 -0.3073732 0.1030041 -0.945998 -0.3073735 0.1030026 0.5877708 0.808997 -0.007034838 -0.587305 0.808356 0.04041779 0.9502794 -0.3087643 0.04041779 -0.9502794 -0.3087646 0.04041779 0.587305 0.808356 0.04041779 0 -0.9991829 0.04041779 0.9510402 -0.3090113 -0.005896985 0 -0.9974453 0.07143497 -0.5877707 0.808997 -0.007034659 0.9502358 -0.3087501 0.04153919 -0.9502357 -0.3087503 0.04153949 0.5846586 0.804714 0.1030038 -0.9510401 -0.3090116 -0.005898416 0.5832004 0.8027068 0.124656 0 -0.9962205 -0.08686041 -0.5832005 0.802707 0.1246553 -1.10718e-5 0 1 0 -0.994681 0.1030033 -0.5846592 0.8047137 0.1030029 0.9459979 -0.3073732 0.1030041 -0.9459978 -0.3073736 0.1030027 + + + + + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + + + + + + + + + + + + + +

4 0 0 3 0 1 2 0 2 5 1 3 14 1 4 9 1 5 1 2 6 5 2 7 0 2 8 4 3 9 8 3 10 3 3 11 2 4 12 6 4 13 1 4 14 0 5 15 9 5 16 4 5 17 3 6 18 7 6 19 2 6 20 13 7 21 19 7 22 18 7 23 8 8 24 12 8 25 7 8 26 5 9 27 11 9 28 10 9 29 9 10 30 13 10 31 8 10 32 6 11 33 12 11 34 11 11 35 15 12 36 24 12 37 19 12 38 12 13 39 16 13 40 11 13 41 14 14 42 15 14 43 19 14 44 12 15 45 18 15 46 17 15 47 11 16 48 15 16 49 10 16 50 22 17 51 24 17 52 20 17 53 17 18 54 23 18 55 22 18 56 16 19 57 20 19 58 15 19 59 18 20 60 24 20 61 23 20 62 16 21 63 22 21 64 21 21 65 2 0 66 1 0 67 0 0 68 0 0 69 4 0 70 2 0 71 5 22 72 10 22 73 14 22 74 1 23 75 6 23 76 5 23 77 4 24 78 9 24 79 8 24 80 2 25 81 7 25 82 6 25 83 0 26 84 5 26 85 9 26 86 3 27 87 8 27 88 7 27 89 13 28 90 14 28 91 19 28 92 8 29 93 13 29 94 12 29 95 5 30 96 6 30 97 11 30 98 9 31 99 14 31 100 13 31 101 6 32 102 7 32 103 12 32 104 15 33 105 20 33 106 24 33 107 12 34 108 17 34 109 16 34 110 14 35 111 10 35 112 15 35 113 12 36 114 13 36 115 18 36 116 11 37 117 16 37 118 15 37 119 20 38 120 21 38 121 22 38 122 22 17 123 23 17 124 24 17 125 17 39 126 18 39 127 23 39 128 16 40 129 21 40 130 20 40 131 18 41 132 19 41 133 24 41 134 16 42 135 17 42 136 22 42 137

+
+
+
+
+ + + + 1.326094 0.4826588 0 0 -0.4826588 1.326094 0 0 0 0 3.66912 5.393049 0 0 0 1 + + + + + + + + + + + + 1.544178 0.2722803 0 0 -0.2722803 1.544178 0 0 0 0 4.0768 3.677205 0 0 0 1 + + + + + + + + + + + + 1.6 0 0 0 0 1.6 0 0 0 0 4.16 2 0 0 0 1 + + + + + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 + + + + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 + + + + + + + +
\ No newline at end of file diff --git a/blends/evergreen_tree.blend b/blends/evergreen_tree.blend new file mode 100644 index 0000000000000000000000000000000000000000..06563a768647378aadfa2ccd25d9846018943604 GIT binary patch literal 618652 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

Gz7#idh%~nu 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 SchTj&sNM~Ab6|GF-+uuQMm~oC literal 0 HcmV?d00001 diff --git a/i-mic-fps.rb b/i-mic-fps.rb index 8d3b31c..0c1f3e1 100644 --- a/i-mic-fps.rb +++ b/i-mic-fps.rb @@ -6,6 +6,7 @@ require "time" require "opengl" require "glu" +require "nokogiri" begin require_relative "../cyberarm_engine/lib/cyberarm_engine" @@ -75,7 +76,6 @@ require_relative "lib/component" require_relative "lib/components/building" require_relative "lib/game_objects/entity" -require_relative "lib/game_objects/model_loader" require_relative "lib/game_objects/light" require_relative "lib/game_objects/camera" @@ -84,11 +84,13 @@ require_relative "lib/game_objects/entities/skydome" require_relative "lib/game_objects/entities/terrain" require_relative "lib/model" +require_relative "lib/model_cache" require_relative "lib/model/parser" require_relative "lib/model/model_object" require_relative "lib/model/material" require_relative "lib/model/parsers/wavefront_parser" +require_relative "lib/model/parsers/collada_parser" require_relative "lib/map_parser" require_relative "lib/manifest" diff --git a/lib/game_objects/entity.rb b/lib/game_objects/entity.rb index a623b22..85ddc39 100644 --- a/lib/game_objects/entity.rb +++ b/lib/game_objects/entity.rb @@ -57,9 +57,9 @@ class IMICFPS end def bind_model - model = ModelLoader.new(manifest: @manifest, entity: @dummy_entity) + model = ModelCache.new(manifest: @manifest, entity: @dummy_entity) - raise "model isn't a model!" unless model.is_a?(ModelLoader) + raise "model isn't a model!" unless model.is_a?(ModelCache) @bound_model = model @bound_model.model.entity = self @bounding_box = normalize_bounding_box_with_offset diff --git a/lib/model.rb b/lib/model.rb index 69c8722..a346590 100644 --- a/lib/model.rb +++ b/lib/model.rb @@ -33,7 +33,14 @@ class IMICFPS @bounding_box = BoundingBox.new start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) - parse( Model::Parser.find(File.basename(file_path).split(".").last.to_sym) ) + type = File.basename(file_path).split(".").last.to_sym + parser = Model::Parser.find(type) + unless parser + raise "Unsupported model type '.#{type}', supported models are: #{Model::Parser.supported_formats}" + end + + parse(parser) + puts "#{@file_path.split('/').last} took #{((Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)-start_time)/1000.0).round(2)} seconds to parse" if window.config.get(:debug_options, :stats) @@ -131,7 +138,7 @@ class IMICFPS @faces.each do |face| pos << face.vertices.map { |vert| [vert.x, vert.y, vert.z] } - colors << face.colors.map { |vert| [vert.x, vert.y, vert.z] } + colors << face.colors.map { |color| [color.red, color.green, color.blue] } norms << face.normals.map { |vert| [vert.x, vert.y, vert.z, vert.weight] } if has_texture? diff --git a/lib/model/parser.rb b/lib/model/parser.rb index f81a3f8..f9da6f6 100644 --- a/lib/model/parser.rb +++ b/lib/model/parser.rb @@ -19,12 +19,33 @@ class IMICFPS return found_parser end + def self.supported_formats + @@parsers.map { |parser| parser.handles }.flatten.map { |s| ".#{s}" }.join(", ") + end + def initialize(model) @model = model end def parse end + + def change_object(name) + @model.objects << Model::ModelObject.new(name) + @model.current_object = @model.objects.last + end + + def set_material(name) + @model.current_material = name + end + + def add_material(name, material) + @model.materials[name] = material + end + + def current_material + @model.materials[@model.current_material] + end end end end \ No newline at end of file diff --git a/lib/model/parsers/collada_parser.rb b/lib/model/parsers/collada_parser.rb new file mode 100644 index 0000000..44dc14d --- /dev/null +++ b/lib/model/parsers/collada_parser.rb @@ -0,0 +1,107 @@ +class IMICFPS + class ColladaParser < Model::Parser + def self.handles + [:dae] + end + + def parse + @collada = Nokogiri::XML(File.read(@model.file_path)) + + @collada.css("library_materials material").each do |material| + parse_material(material) + end + + @collada.css("library_geometries geometry").each do |geometry| + parse_geometry(geometry) + end + + @model.calculate_bounding_box(@model.vertices, @model.bounding_box) + @model.objects.each do |o| + @model.calculate_bounding_box(o.vertices, o.bounding_box) + end + end + + def parse_material(material) + name = material.attributes["id"].value + effect_id = material.at_css("instance_effect").attributes["url"].value + + mat = Model::Material.new(name) + effect = @collada.at_css("[id=\"#{effect_id.sub('#', '')}\"]") + + emission = effect.at_css("emission color") + diffuse = effect.at_css("diffuse color").children.first.to_s.split(" ").map { |c| Float(c) } + + mat.diffuse = Color.new(*diffuse[0..2]) + + add_material(name, mat) + end + + def parse_geometry(geometry) + geometry_id = geometry.attributes["id"].value + geometry_name = geometry.attributes["name"].value + + change_object(geometry_name) + + mesh = geometry.at_css("mesh") + + get_positions(geometry_id, mesh) + get_normals(geometry_id, mesh) + get_texture_coordinates(geometry_id, mesh) + + build_faces(geometry_id, mesh) + end + + def get_positions(id, mesh) + positions = mesh.at_css("[id=\"#{id}-positions\"]") + array = positions.at_css("[id=\"#{id}-positions-array\"]") + + stride = Integer(positions.at_css("[source=\"##{id}-positions-array\"]").attributes["stride"].value) + list = array.children.first.to_s.split(" ").map{ |f| Float(f) }.each_slice(stride).each do |slice| + position = Vector.new(*slice) + @model.current_object.vertices << position + @model.vertices << position + end + end + + def get_normals(id, mesh) + normals = mesh.at_css("[id=\"#{id}-normals\"]") + array = normals.at_css("[id=\"#{id}-normals-array\"]") + + stride = Integer(normals.at_css("[source=\"##{id}-normals-array\"]").attributes["stride"].value) + list = array.children.first.to_s.split(" ").map{ |f| Float(f) }.each_slice(stride).each do |slice| + normal = Vector.new(*slice) + @model.current_object.normals << normal + @model.normals << normal + end + end + + def get_texture_coordinates(id, mesh) + end + + def build_faces(id, mesh) + material_name = mesh.at_css("triangles").attributes["material"].value + + mesh.at_css("triangles p").children.first.to_s.split(" ").map { |i| Integer(i) }.each_slice(3).each do |slice| + set_material(material_name) + + face = Face.new + face.vertices = [] + face.uvs = [] + face.normals = [] + face.colors = [] + face.material = current_material + face.smoothing= @model.smoothing + + slice.each do |index| + face.vertices << @model.vertices[index] + # face.uvs << @model.uvs[index] + face.normals << @model.normals[index] + face.colors << current_material.diffuse + end + + @model.current_object.faces << face + @model.faces << face + end + end + end +end \ No newline at end of file diff --git a/lib/model/parsers/wavefront_parser.rb b/lib/model/parsers/wavefront_parser.rb index 4ddd76e..c4566e5 100644 --- a/lib/model/parsers/wavefront_parser.rb +++ b/lib/model/parsers/wavefront_parser.rb @@ -49,11 +49,11 @@ class IMICFPS face.uvs = [] face.normals = [] face.colors = [] - face.material = material + face.material = current_material face.smoothing= @model.smoothing mat = face.material.diffuse - color = Vector.new(mat.red, mat.green, mat.blue) + color = mat verts.each_with_index do |v, index| @@ -110,11 +110,6 @@ class IMICFPS end end - def change_object(name) - @model.objects << Model::ModelObject.new(name) - @model.current_object = @model.objects.last - end - def set_smoothing(value) if value == "1" @model.smoothing = true @@ -123,20 +118,6 @@ class IMICFPS end end - def set_material(name) - @model.current_material = name - end - - def material - @model.materials[@model.current_material] - end - - def faces_count - count = 0 - @model.objects.each {|o| count+=o.faces.count} - return count - end - def add_vertex(array) @model.vertex_count+=1 vert = nil diff --git a/lib/game_objects/model_loader.rb b/lib/model_cache.rb similarity index 75% rename from lib/game_objects/model_loader.rb rename to lib/model_cache.rb index 05eacdd..4757105 100644 --- a/lib/game_objects/model_loader.rb +++ b/lib/model_cache.rb @@ -1,9 +1,5 @@ class IMICFPS - class ModelLoader - def self.supported_models - ["Wavefront OBJ"] - end - + class ModelCache CACHE = {} attr_reader :model, :name, :debug_color @@ -16,20 +12,13 @@ class IMICFPS @debug_color = Color.new(0.0, 1.0, 0.0) @model = nil - @supported_models = ["OBJ"] unless load_model_from_cache - case @type - when :obj - @model = IMICFPS::Model.new(file_path: @model_file) - else - raise "Unsupported model type, supported models are: #{@supported_models.join(', ')}" - end + @model = IMICFPS::Model.new(file_path: @model_file) cache_model end - return self end diff --git a/lib/states/game_states/loading_state.rb b/lib/states/game_states/loading_state.rb index 3ce2da8..73a400e 100644 --- a/lib/states/game_states/loading_state.rb +++ b/lib/states/game_states/loading_state.rb @@ -53,7 +53,7 @@ class IMICFPS hash = @assets[@asset_index] case hash[:type] when :model - ModelLoader.new(manifest: hash[:manifest], entity: @dummy_entity) + ModelCache.new(manifest: hash[:manifest], entity: @dummy_entity) when :shader if window.config.get(:debug_options, :use_shaders) shader = Shader.new(name: hash[:name], includes_dir: "shaders/include", vertex: "shaders/vertex/#{hash[:name]}.glsl", fragment: "shaders/fragment/#{hash[:name]}.glsl") diff --git a/maps/test_map.json b/maps/test_map.json index 62b4b0d..ecb45e0 100644 --- a/maps/test_map.json +++ b/maps/test_map.json @@ -23,7 +23,7 @@ "entities":[ { "package":"base", - "name":"tree", + "name":"evergreen_tree", "position": { "x":0, "y":0.6,