]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix shuttle audio clipping (#27527)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Wed, 29 May 2024 07:32:20 +0000 (17:32 +1000)
committerGitHub <noreply@github.com>
Wed, 29 May 2024 07:32:20 +0000 (17:32 +1000)
Changed engine to use grid local-center and very high maxdistance / refdistance values so it's seamless.

Content.Server/Shuttles/Components/FTLComponent.cs
Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs
Content.Server/Shuttles/Systems/ShuttleSystem.cs

index edcf25981ba7a8276b80736a95ffafe11e8b422a..0a01bb7636e2533e1819e8df7af0274f609f3daa 100644 (file)
@@ -50,6 +50,9 @@ public sealed partial class FTLComponent : Component
         Params = AudioParams.Default.WithVolume(-3f).WithLoop(true)
     };
 
+    [DataField]
+    public EntityUid? StartupStream;
+
     [DataField]
     public EntityUid? TravelStream;
 }
index 11cc16e0cd09c64c3f70eafcb77739805825d6f4..28f784f1dda01b8ce49f00a991a746e1cfa915e0 100644 (file)
@@ -24,6 +24,7 @@ using Robust.Shared.Map;
 using Robust.Shared.Map.Components;
 using Robust.Shared.Physics;
 using Robust.Shared.Physics.Components;
+using Robust.Shared.Player;
 using Robust.Shared.Utility;
 using FTLMapComponent = Content.Shared.Shuttles.Components.FTLMapComponent;
 
@@ -343,12 +344,8 @@ public sealed partial class ShuttleSystem
         component = AddComp<FTLComponent>(uid);
         component.State = FTLState.Starting;
         var audio = _audio.PlayPvs(_startupSound, uid);
-        audio.Value.Component.Flags |= AudioFlags.GridAudio;
-
-        if (_physicsQuery.TryGetComponent(uid, out var gridPhysics))
-        {
-            _transform.SetLocalPosition(audio.Value.Entity, gridPhysics.LocalCenter);
-        }
+        _audio.SetGridAudio(audio);
+        component.StartupStream = audio?.Entity;
 
         // TODO: Play previs here for docking arrival.
 
@@ -377,6 +374,17 @@ public sealed partial class ShuttleSystem
         var body = _physicsQuery.GetComponent(entity);
         var shuttleCenter = body.LocalCenter;
 
+        // Leave audio at the old spot
+        // Just so we don't clip
+        if (fromMapUid != null && TryComp(comp.StartupStream, out AudioComponent? startupAudio))
+        {
+            var clippedAudio = _audio.PlayStatic(_startupSound, Filter.Broadcast(),
+                new EntityCoordinates(fromMapUid.Value, _maps.GetGridPosition(entity.Owner)), true, startupAudio.Params);
+
+            _audio.SetPlaybackPosition(clippedAudio, entity.Comp1.StartupTime);
+            clippedAudio.Value.Component.Flags |= AudioFlags.NoOcclusion;
+        }
+
         // Offset the start by buffer range just to avoid overlap.
         var ftlStart = new EntityCoordinates(ftlMap, new Vector2(_index + width / 2f, 0f) - shuttleCenter);
 
@@ -402,15 +410,7 @@ public sealed partial class ShuttleSystem
         // Audio
         var wowdio = _audio.PlayPvs(comp.TravelSound, uid);
         comp.TravelStream = wowdio?.Entity;
-        if (wowdio?.Component != null)
-        {
-            wowdio.Value.Component.Flags |= AudioFlags.GridAudio;
-
-            if (_physicsQuery.TryGetComponent(uid, out var gridPhysics))
-            {
-                _transform.SetLocalPosition(wowdio.Value.Entity, gridPhysics.LocalCenter);
-            }
-        }
+        _audio.SetGridAudio(wowdio);
     }
 
     /// <summary>
@@ -509,13 +509,7 @@ public sealed partial class ShuttleSystem
 
         comp.TravelStream = _audio.Stop(comp.TravelStream);
         var audio = _audio.PlayPvs(_arrivalSound, uid);
-        audio.Value.Component.Flags |= AudioFlags.GridAudio;
-        // TODO: Shitcode til engine fix
-
-        if (_physicsQuery.TryGetComponent(uid, out var gridPhysics))
-        {
-            _transform.SetLocalPosition(audio.Value.Entity, gridPhysics.LocalCenter);
-        }
+        _audio.SetGridAudio(audio);
 
         if (TryComp<FTLDestinationComponent>(uid, out var dest))
         {
index 6fe2324d51ee5b82dc7888a837655d5c733ea6e5..bbafef022c80c82f4e0d8072c73ec764f129a113 100644 (file)
@@ -41,6 +41,7 @@ public sealed partial class ShuttleSystem : SharedShuttleSystem
     [Dependency] private readonly MapLoaderSystem _loader = default!;
     [Dependency] private readonly MetaDataSystem _metadata = default!;
     [Dependency] private readonly SharedAudioSystem _audio = default!;
+    [Dependency] private readonly SharedMapSystem _maps = default!;
     [Dependency] private readonly SharedPhysicsSystem _physics = default!;
     [Dependency] private readonly SharedTransformSystem _transform = default!;
     [Dependency] private readonly ShuttleConsoleSystem _console = default!;