fix: adjust safe zone elevation and transparency sorting priority to prevent it covering tiles or clipping with terrain
This commit is contained in:
+9
-1
@@ -199,8 +199,16 @@ func _setup_effect_elevation():
|
|||||||
var lift_transform = Transform3D().translated(Vector3(0, 0.08, 0))
|
var lift_transform = Transform3D().translated(Vector3(0, 0.08, 0))
|
||||||
for id in ml.get_item_list():
|
for id in ml.get_item_list():
|
||||||
if id == 4: continue # Skip hidden non-walkable blocks
|
if id == 4: continue # Skip hidden non-walkable blocks
|
||||||
|
|
||||||
|
var apply_transform = lift_transform
|
||||||
|
# TILE_SAFE (2) is painted on Layer 2 (Y=0.10).
|
||||||
|
# We want it below all grid tiles (Layer 0 is at 0.08) but above the terrain (0.06).
|
||||||
|
# We set it to 0.07 by applying a -0.03 offset (0.10 - 0.03 = 0.07).
|
||||||
|
if id == 2:
|
||||||
|
apply_transform = Transform3D().translated(Vector3(0, -0.03, 0))
|
||||||
|
|
||||||
var current_transform = ml.get_item_mesh_transform(id)
|
var current_transform = ml.get_item_mesh_transform(id)
|
||||||
ml.set_item_mesh_transform(id, lift_transform * current_transform)
|
ml.set_item_mesh_transform(id, apply_transform * current_transform)
|
||||||
|
|
||||||
em.mesh_library = ml
|
em.mesh_library = ml
|
||||||
|
|
||||||
|
|||||||
@@ -674,6 +674,8 @@ func _animate_safe_zone_appear():
|
|||||||
# Duplicate mesh+material so we animate without touching the shared .tres on disk.
|
# Duplicate mesh+material so we animate without touching the shared .tres on disk.
|
||||||
var anim_mat: StandardMaterial3D = mat.duplicate()
|
var anim_mat: StandardMaterial3D = mat.duplicate()
|
||||||
anim_mat.albedo_color = Color(mat.albedo_color.r, mat.albedo_color.g, mat.albedo_color.b, 0.0)
|
anim_mat.albedo_color = Color(mat.albedo_color.r, mat.albedo_color.g, mat.albedo_color.b, 0.0)
|
||||||
|
# Force render priority so the transparent decal correctly sorts over the terrain
|
||||||
|
anim_mat.render_priority = 1
|
||||||
|
|
||||||
var anim_mesh = original_mesh.duplicate()
|
var anim_mesh = original_mesh.duplicate()
|
||||||
anim_mesh.material = anim_mat
|
anim_mesh.material = anim_mat
|
||||||
|
|||||||
Reference in New Issue
Block a user