Gate library prop collision coverage across venues
This commit is contained in:
1 parent
fe3ba3054e
commit
5dec59355a
4 files changed
+84
-1
No files matched your search
@@ -41,6 +41,11 @@ const LIBRARY_PROPS := ["bollard", "bench", "trash_bin", "planter_box",
|
||||
"newspaper_box", "fire_hydrant", "street_lamp", "street_tree", "traffic_cone",
|
||||
"palm_tree", "round_planter", "a_frame_sign", "crowd_barrier", "stanchion",
|
||||
"security_podium"]
|
||||
## Library pieces that are mounted above head height, part of the building shell or
|
||||
## purely decorative, so they intentionally publish no walk-blocking body. Anything
|
||||
## else in `library_nodes` must carry a `StaticBody3D` + `NavigationObstacle3D`
|
||||
## (guarded by `test_library_dressing_collision_matches_the_documented_exemptions`).
|
||||
const NON_BLOCKING_LIBRARY := ["marquee", "wall_lantern", "handrail", "double_door"]
|
||||
|
||||
var root: Node3D = null
|
||||
## Door lock indicator mesh near the handle; toggled by GameManager.
|
||||
@@ -336,6 +341,7 @@ func _build_building() -> void:
|
||||
door_model.position = Vector3(0, 0.0, front + 0.16)
|
||||
building.add_child(door_model)
|
||||
library_nodes.append(door_model)
|
||||
door_model.set_meta("library_prop", "double_door")
|
||||
_apply_library_ao(door_model, "double_door")
|
||||
for material in _emissive_materials(door_model):
|
||||
if not _lamp_bulb_mats.has(material):
|
||||
@@ -1674,6 +1680,7 @@ func _build_marquee() -> void:
|
||||
library.position = Vector3(0, 5.62, -3.9)
|
||||
root.add_child(library)
|
||||
library_nodes.append(library)
|
||||
library.set_meta("library_prop", "marquee")
|
||||
_apply_library_ao(library, "marquee")
|
||||
for material in _emissive_materials(library):
|
||||
if not _marquee_emissive.has(material):
|
||||
@@ -1714,6 +1721,7 @@ func _build_library_dressing() -> void:
|
||||
rail.rotation_degrees.y = 90.0
|
||||
root.add_child(rail)
|
||||
library_nodes.append(rail)
|
||||
rail.set_meta("library_prop", "handrail")
|
||||
_apply_library_ao(rail, "handrail")
|
||||
if _feature("sedan") and ResourceLoader.exists(BLENDER_PROP_DIR + "sedan.glb"):
|
||||
var sedan_pos: Vector3 = spec.get("sedan_position", Vector3(6.0, 0.1, 17.0))
|
||||
@@ -1724,6 +1732,7 @@ func _build_library_dressing() -> void:
|
||||
_apply_car_paint(sedan)
|
||||
if not library_nodes.has(sedan):
|
||||
library_nodes.append(sedan)
|
||||
sedan.set_meta("library_prop", "sedan")
|
||||
for material in _emissive_materials(sedan):
|
||||
if not _lamp_bulb_mats.has(material):
|
||||
_lamp_bulb_mats.append(material)
|
||||
@@ -1795,6 +1804,7 @@ func _add_wall_lantern(pos: Vector3, with_light: bool) -> void:
|
||||
lantern.position = pos
|
||||
root.add_child(lantern)
|
||||
library_nodes.append(lantern)
|
||||
lantern.set_meta("library_prop", "wall_lantern")
|
||||
_apply_library_ao(lantern, "wall_lantern")
|
||||
for material in _emissive_materials(lantern):
|
||||
if not _lamp_bulb_mats.has(material):
|
||||
@@ -2095,6 +2105,7 @@ func _add_prop_model(parent: Node3D, prop: String, pos: Vector3,
|
||||
if ResourceLoader.exists(BLENDER_PROP_DIR + prop + ".glb"):
|
||||
library_props.append(prop)
|
||||
library_nodes.append(holder)
|
||||
holder.set_meta("library_prop", prop)
|
||||
_apply_library_ao(model, prop)
|
||||
else:
|
||||
var fallback := _fallback_prop(prop)
|
||||
|
||||
Reference in new issue
Block a user