Bridge: pre-movement camera, munga yaw fix, fogged background; net conf plasma

- fp_cam works before the first vehicle articulation (a freshly dropped
  mech sends no 0x1f until it moves; bailing out left the raw chain
  convention showing the inside of the mech at every drop)
- The FLYK stand-in +90-deg yaw correction no longer applies to munga
  content (it yawed the player's own mech -- and every animated model --
  90 degrees: "looking through the right shoulder")
- With fog on, the clear colour saturates to the fog colour (background
  at infinite distance); the pre-drop hold is FULLY black, as period
  pilots confirm
- net_full.conf: COM2 plasma passthrough + setenv plasma flag

Networked console session verified live: black hold at ready, flash +
fade on console launch, drop-bay doors present, own mech visible, and
the full death sequence captured on the wire (fade-to-black, escape-pod
interior via near-fog exemption, world reload, white flash, blue-violet
respawn fade = the blue swirly's home).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-08 19:15:04 -05:00
co-authored by Claude Fable 5
parent 817c3ad4a4
commit c5659b8d3e
4 changed files with 36 additions and 13 deletions
+14 -7
View File
@@ -83,12 +83,17 @@ def fp_cam(board, cache):
h = chain[-1]
elif anim:
h = max(anim, key=lambda k: float(np.abs(np.array(anim[k][9:12])).sum()))
if h is None:
return None
fp_cam.root = h # player vehicle root DCS (for the pick backchannel)
f = anim[h]
R = np.array(f[:9]).reshape(3, 3)
t = np.array(f[9:12])
# h may be None before the FIRST vehicle articulation arrives (a freshly
# dropped mech that hasn't moved sends no 0x1f yet -- both -egg and the
# console flow). The CHAIN camera below works fine without it; bailing
# out here left the raw default chain convention on screen, which put
# the pre-movement view inside the mech's own geometry.
R = t = None
if h is not None:
fp_cam.root = h # player vehicle root DCS (for the pick backchannel)
f = anim[h]
R = np.array(f[:9]).reshape(3, 3)
t = np.array(f[9:12])
worldup = np.array([0.0, 1.0, 0.0])
eye = fwd = None
if os.environ.get('FP_CAM', 'chain') != 'vehicle':
@@ -97,11 +102,13 @@ def fp_cam(board, cache):
ec, fc = Mc[3, :3], Mc[2, :3] # eye row; look = +Z row here
n = np.linalg.norm(fc)
if (np.isfinite(ec).all() and n > 1e-6 and
np.linalg.norm(ec - t) < 100.0): # sane cockpit offset
(t is None or np.linalg.norm(ec - t) < 100.0)):
eye = ec + worldup * UPOFF[0]
fwd = fc / n
except Exception:
pass
if eye is None and R is None:
return None
if eye is None:
# vehicle-root fallback: -Z row rendered forward (user-verified);
# FP_FWD_SIGN flips it back if needed.