diff options
Diffstat (limited to 'apworld/client/minimap.gd')
-rw-r--r-- | apworld/client/minimap.gd | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/apworld/client/minimap.gd b/apworld/client/minimap.gd index 5640716..bf70114 100644 --- a/apworld/client/minimap.gd +++ b/apworld/client/minimap.gd | |||
@@ -126,6 +126,7 @@ func _process(_delta): | |||
126 | 126 | ||
127 | 127 | ||
128 | func _renderMap(gridmap): | 128 | func _renderMap(gridmap): |
129 | var ap = global.get_node("Archipelago") | ||
129 | var heights = {} | 130 | var heights = {} |
130 | 131 | ||
131 | var rendered = Image.create_empty(cell_width, cell_height, false, Image.FORMAT_RGBA8) | 132 | var rendered = Image.create_empty(cell_width, cell_height, false, Image.FORMAT_RGBA8) |
@@ -133,7 +134,7 @@ func _renderMap(gridmap): | |||
133 | 134 | ||
134 | var meshes_node = get_tree().get_root().get_node("scene/Meshes") | 135 | var meshes_node = get_tree().get_root().get_node("scene/Meshes") |
135 | if meshes_node != null: | 136 | if meshes_node != null: |
136 | _renderMeshNode(gridmap, meshes_node, rendered) | 137 | _renderMeshNode(ap, gridmap, meshes_node, rendered) |
137 | 138 | ||
138 | for pos in gridmap.get_used_cells(): | 139 | for pos in gridmap.get_used_cells(): |
139 | var in_plane = Vector2i(pos.x, pos.z) | 140 | var in_plane = Vector2i(pos.x, pos.z) |
@@ -146,20 +147,22 @@ func _renderMap(gridmap): | |||
146 | var cell_item = gridmap.get_cell_item(pos) | 147 | var cell_item = gridmap.get_cell_item(pos) |
147 | var mesh = gridmap.mesh_library.get_item_mesh(cell_item) | 148 | var mesh = gridmap.mesh_library.get_item_mesh(cell_item) |
148 | var material = mesh.surface_get_material(0) | 149 | var material = mesh.surface_get_material(0) |
149 | var color = material.albedo_color | 150 | var color = ap.color_by_material_path.get(material.resource_path, Color.TRANSPARENT) |
150 | 151 | ||
151 | rendered.set_pixel(pos.x - cell_left, pos.z - cell_top, color) | 152 | rendered.set_pixel(pos.x - cell_left, pos.z - cell_top, color) |
152 | 153 | ||
153 | return rendered | 154 | return rendered |
154 | 155 | ||
155 | 156 | ||
156 | func _renderMeshNode(gridmap, mesh, rendered): | 157 | func _renderMeshNode(ap, gridmap, mesh, rendered): |
157 | if mesh is MeshInstance3D: | 158 | if mesh is MeshInstance3D: |
158 | var local_tl = gridmap.map_to_local(Vector3i(cell_left, 0, cell_top)) | 159 | var local_tl = gridmap.map_to_local(Vector3i(cell_left, 0, cell_top)) |
159 | var global_tl = gridmap.to_global(local_tl) | 160 | var global_tl = gridmap.to_global(local_tl) |
160 | var mesh_material = mesh.get_surface_override_material(0) | 161 | var mesh_material = mesh.get_surface_override_material(0) |
161 | if mesh_material != null: | 162 | if mesh_material != null: |
162 | var mesh_color = mesh_material.albedo_color | 163 | var mesh_color = ap.color_by_material_path.get( |
164 | mesh_material.resource_path, Color.TRANSPARENT | ||
165 | ) | ||
163 | 166 | ||
164 | for y in range( | 167 | for y in range( |
165 | max(mesh.position.z - mesh.scale.z / 2 - global_tl.z, 0), | 168 | max(mesh.position.z - mesh.scale.z / 2 - global_tl.z, 0), |
@@ -172,4 +175,4 @@ func _renderMeshNode(gridmap, mesh, rendered): | |||
172 | rendered.set_pixel(x, y, mesh_color) | 175 | rendered.set_pixel(x, y, mesh_color) |
173 | 176 | ||
174 | for child in mesh.get_children(): | 177 | for child in mesh.get_children(): |
175 | _renderMeshNode(gridmap, child, rendered) | 178 | _renderMeshNode(ap, gridmap, child, rendered) |