Fix InteriorMap not hiding its multi-mesh instances when hidden
This commit is contained in:
parent
821c1ac8c4
commit
8d014d69a9
|
@ -41,9 +41,9 @@ class Chunk:
|
||||||
##
|
##
|
||||||
func invalidate(interior_map: InteriorMap, coordinate: Vector2i) -> void:
|
func invalidate(interior_map: InteriorMap, coordinate: Vector2i) -> void:
|
||||||
# TODO: Once this is all lowered into native code, look for ways to parallelize the loops.
|
# TODO: Once this is all lowered into native code, look for ways to parallelize the loops.
|
||||||
for multimesh_instance in _multimesh_instances:
|
for multi_mesh_instance in _multimesh_instances:
|
||||||
RenderingServer.free_rid(multimesh_instance._instance_rid)
|
RenderingServer.free_rid(multi_mesh_instance._instance_rid)
|
||||||
RenderingServer.free_rid(multimesh_instance._multimesh_rid)
|
RenderingServer.free_rid(multi_mesh_instance._multimesh_rid)
|
||||||
|
|
||||||
_multimesh_instances.clear()
|
_multimesh_instances.clear()
|
||||||
|
|
||||||
|
@ -85,11 +85,11 @@ class Chunk:
|
||||||
var global_transform := interior_map.global_transform
|
var global_transform := interior_map.global_transform
|
||||||
|
|
||||||
for chunk_mesh in transforms_by_mesh:
|
for chunk_mesh in transforms_by_mesh:
|
||||||
var multimesh_instance := MultiMeshInstance.new(
|
var multi_mesh_instance := MultiMeshInstance.new(
|
||||||
scenario_rid, chunk_mesh.get_rid(), transforms_by_mesh[chunk_mesh])
|
scenario_rid, chunk_mesh.get_rid(), transforms_by_mesh[chunk_mesh])
|
||||||
|
|
||||||
multimesh_instance.set_offset(global_transform)
|
multi_mesh_instance.set_offset(global_transform)
|
||||||
_multimesh_instances.append(multimesh_instance)
|
_multimesh_instances.append(multi_mesh_instance)
|
||||||
|
|
||||||
##
|
##
|
||||||
## Sets the floor mesh in the chunk at the location relative [code]coordinatess[/code] to
|
## Sets the floor mesh in the chunk at the location relative [code]coordinatess[/code] to
|
||||||
|
@ -140,11 +140,17 @@ class MultiMeshInstance:
|
||||||
RenderingServer.multimesh_instance_set_transform(_multimesh_rid, i, transforms[i])
|
RenderingServer.multimesh_instance_set_transform(_multimesh_rid, i, transforms[i])
|
||||||
|
|
||||||
##
|
##
|
||||||
## Sets the parent transform of all mesh instances under it to [code]offset[/code].
|
## Sets the transform of the instance to [code]offset[/code].
|
||||||
##
|
##
|
||||||
func set_offset(offset: Transform3D) -> void:
|
func set_offset(offset: Transform3D) -> void:
|
||||||
RenderingServer.instance_set_transform(_instance_rid, offset)
|
RenderingServer.instance_set_transform(_instance_rid, offset)
|
||||||
|
|
||||||
|
##
|
||||||
|
## Sets the visibility of the instance to [code]is_visible[/code].
|
||||||
|
##
|
||||||
|
func set_visible(is_visible: bool) -> void:
|
||||||
|
RenderingServer.instance_set_visible(_instance_rid, is_visible)
|
||||||
|
|
||||||
var _chunks: Array[Chunk] = []
|
var _chunks: Array[Chunk] = []
|
||||||
|
|
||||||
var _chunks_size := Vector2i.ZERO
|
var _chunks_size := Vector2i.ZERO
|
||||||
|
@ -172,8 +178,13 @@ func _notification(what: int) -> void:
|
||||||
match what:
|
match what:
|
||||||
NOTIFICATION_TRANSFORM_CHANGED:
|
NOTIFICATION_TRANSFORM_CHANGED:
|
||||||
for chunk in _chunks:
|
for chunk in _chunks:
|
||||||
for multimesh_instance in chunk._multimesh_instances:
|
for multi_mesh_instance in chunk._multimesh_instances:
|
||||||
multimesh_instance.set_offset_transform(global_transform)
|
multi_mesh_instance.set_offset_transform(global_transform)
|
||||||
|
|
||||||
|
NOTIFICATION_VISIBILITY_CHANGED:
|
||||||
|
for chunk in _chunks:
|
||||||
|
for multi_mesh_instance in chunk._multimesh_instances:
|
||||||
|
multi_mesh_instance.set_visible(visible)
|
||||||
|
|
||||||
##
|
##
|
||||||
## Clears the entirety of the tile grid to only contain tiles of instance [code]tile[/code] pointing
|
## Clears the entirety of the tile grid to only contain tiles of instance [code]tile[/code] pointing
|
||||||
|
|
BIN
map_editor.scn (Stored with Git LFS)
BIN
map_editor.scn (Stored with Git LFS)
Binary file not shown.
Loading…
Reference in New Issue