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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user