fix NetEntity datafield in JointVisualsComponent (#39987)

fix netentity datafield
This commit is contained in:
slarticodefast
2025-10-11 01:59:56 +02:00
committed by GitHub
parent 871d262214
commit af05313f37
3 changed files with 18 additions and 9 deletions

View File

@@ -36,7 +36,7 @@ public sealed class JointVisualsOverlay : Overlay
if (xform.MapID != args.MapId)
continue;
var other = _entManager.GetEntity(visuals.Target);
var other = visuals.Target;
if (!xformQuery.TryGetComponent(other, out var otherXform))
continue;
@@ -45,7 +45,7 @@ public sealed class JointVisualsOverlay : Overlay
continue;
var texture = spriteSystem.Frame0(visuals.Sprite);
var width = texture.Width / (float) EyeManager.PixelsPerMeter;
var width = texture.Width / (float)EyeManager.PixelsPerMeter;
var coordsA = xform.Coordinates;
var coordsB = otherXform.Coordinates;
@@ -58,7 +58,7 @@ public sealed class JointVisualsOverlay : Overlay
var posA = xformSystem.ToMapCoordinates(coordsA).Position;
var posB = xformSystem.ToMapCoordinates(coordsB).Position;
var diff = (posB - posA);
var diff = posB - posA;
var length = diff.Length();
var midPoint = diff / 2f + posA;

View File

@@ -10,21 +10,30 @@ namespace Content.Shared.Physics;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class JointVisualsComponent : Component
{
[ViewVariables(VVAccess.ReadWrite), DataField("sprite", required: true), AutoNetworkedField]
/// <summary>
/// The sprite to use for the line.
/// </summary>
[DataField(required: true), AutoNetworkedField]
public SpriteSpecifier Sprite = default!;
[ViewVariables(VVAccess.ReadWrite), DataField("target"), AutoNetworkedField]
public NetEntity? Target;
/// <summary>
/// The line is drawn between this target and the entity owning the component.
/// </summary>
/// <summary>
/// TODO: WeakEntityReference.
/// </summary>
[DataField, AutoNetworkedField]
public EntityUid? Target;
/// <summary>
/// Offset from Body A.
/// </summary>
[ViewVariables(VVAccess.ReadWrite), DataField("offsetA"), AutoNetworkedField]
[DataField, AutoNetworkedField]
public Vector2 OffsetA;
/// <summary>
/// Offset from Body B.
/// </summary>
[ViewVariables(VVAccess.ReadWrite), DataField("offsetB"), AutoNetworkedField]
[DataField, AutoNetworkedField]
public Vector2 OffsetB;
}

View File

@@ -66,7 +66,7 @@ public abstract class SharedGrapplingGunSystem : EntitySystem
var visuals = EnsureComp<JointVisualsComponent>(shotUid.Value);
visuals.Sprite = component.RopeSprite;
visuals.OffsetA = new Vector2(0f, 0.5f);
visuals.Target = GetNetEntity(uid);
visuals.Target = uid;
Dirty(shotUid.Value, visuals);
}