return false;
shuttleDockedAABB = matty.TransformBox(shuttleAABB);
- gridRotation = (targetGridRotation + offsetAngle).Reduced();
+ gridRotation = offsetAngle.Reduced();
return true;
}
public DockingConfig? GetDockingConfigAt(EntityUid shuttleUid,
EntityUid targetGrid,
EntityCoordinates coordinates,
- Angle angle)
+ Angle angle,
+ bool fallback = true)
{
var gridDocks = GetDocks(targetGrid);
var shuttleDocks = GetDocks(shuttleUid);
}
}
+ if (fallback && configs.Count > 0)
+ {
+ return configs.First();
+ }
+
return null;
}
_audio.SetGridAudio(audio);
component.StartupStream = audio?.Entity;
- // TODO: Play previs here for docking arrival.
-
// Make sure the map is setup before we leave to avoid pop-in (e.g. parallax).
EnsureFTLMap();
return true;
if (entity.Comp1.VisualizerProto != null)
{
- comp.VisualizerEntity = SpawnAtPosition(entity.Comp1.VisualizerProto, entity.Comp1.TargetCoordinates);
+ comp.VisualizerEntity = SpawnAttachedTo(entity.Comp1.VisualizerProto, entity.Comp1.TargetCoordinates);
+ DebugTools.Assert(Transform(comp.VisualizerEntity.Value).ParentUid == entity.Comp1.TargetCoordinates.EntityId);
var visuals = Comp<FtlVisualizerComponent>(comp.VisualizerEntity.Value);
visuals.Grid = entity.Owner;
Dirty(comp.VisualizerEntity.Value, visuals);
// Set position
var mapCoordinates = _transform.ToMapCoordinates(config.Coordinates);
var mapUid = _mapSystem.GetMap(mapCoordinates.MapId);
- _transform.SetCoordinates(shuttle.Owner, shuttle.Comp, new EntityCoordinates(mapUid, mapCoordinates.Position), rotation: config.Angle);
+ _transform.SetCoordinates(shuttle.Owner, shuttle.Comp, new EntityCoordinates(mapUid, mapCoordinates.Position), rotation: config.Angle + _transform.GetWorldRotation(config.Coordinates.EntityId));
// Connect everything
foreach (var (dockAUid, dockBUid, dockA, dockB) in config.Docks)