Add blood decals, gore, mobile HUD, web start gate + touch/perf tests

Remove tools/fstest.html scratch page used to probe browser
fullscreen/orientation APIs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EznnY8rH2dXhtono1kwsXg
This commit is contained in:
2026-09-04 14:07:57 +03:00
parent 01d6ecf475
commit 981ebf1910
32 changed files with 1536 additions and 113 deletions
+15
View File
@@ -0,0 +1,15 @@
extends Node
## Stateless façade (autoload `Gore`) for spawning persistent blood splats. Callers just say
## Gore.splat(pos, dir, size) at each wound; this routes to the level's BloodDecals pool
## (group &"blood_decals"), which the game shell rebuilds into LevelRoot on every load so the
## stains die with the level. No-ops when there's no pool (menus, headless tests without a
## level) or when the player has turned gore off — so the gate lives in one place.
func splat(world_pos: Vector3, dir: Vector3 = Vector3.ZERO, size: float = 0.6) -> void:
if not Settings.gore:
return
var pool := get_tree().get_first_node_in_group(&"blood_decals")
if pool == null:
return
pool.call(&"splat", world_pos, dir, size * DP.f("blood_scale"))