Fixes singularity collision and consume range (#13424)
Co-authored-by: keronshb <keronshb@live.com>
This commit is contained in:
@@ -8,6 +8,7 @@ namespace Content.Shared.Singularity.Components;
|
||||
/// Also makes the associated entity destroy other entities upon contact.
|
||||
/// Primarily managed by <see cref="SharedEventHorizonSystem"/> and its server/client versions.
|
||||
/// </summary>
|
||||
[Access(friends: typeof(SharedEventHorizonSystem))]
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed class EventHorizonComponent : Component
|
||||
{
|
||||
@@ -17,7 +18,6 @@ public sealed class EventHorizonComponent : Component
|
||||
/// If you want to set this go through <see cref="SharedEventHorizonSystem.SetRadius"/>.
|
||||
/// </summary>
|
||||
[DataField("radius")]
|
||||
[Access(friends:typeof(SharedEventHorizonSystem))]
|
||||
public float Radius;
|
||||
|
||||
/// <summary>
|
||||
@@ -25,7 +25,7 @@ public sealed class EventHorizonComponent : Component
|
||||
/// If you want to set this go through <see cref="SharedEventHorizonSystem.SetCanBreachContainment"/>.
|
||||
/// </summary>
|
||||
[DataField("canBreachContainment")]
|
||||
[Access(friends:typeof(SharedEventHorizonSystem))]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool CanBreachContainment = false;
|
||||
|
||||
/// <summary>
|
||||
@@ -33,9 +33,18 @@ public sealed class EventHorizonComponent : Component
|
||||
/// Can be set to null, in which case no such fixture is used.
|
||||
/// If you want to set this go through <see cref="SharedEventHorizonSystem.SetHorizonFixtureId"/>.
|
||||
/// </summary>
|
||||
[DataField("horizonFixtureId")]
|
||||
[Access(friends:typeof(SharedEventHorizonSystem))]
|
||||
public string? HorizonFixtureId = "EventHorizon";
|
||||
[DataField("consumerFixtureId")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public string? ConsumerFixtureId = "EventHorizonConsumer";
|
||||
|
||||
/// <summary>
|
||||
/// The ID of the fixture used to detect if the event horizon has collided with any physics objects.
|
||||
/// Can be set to null, in which case no such fixture is used.
|
||||
/// If you want to set this go through <see cref="SharedEventHorizonSystem.SetHorizonFixtureId"/>.
|
||||
/// </summary>
|
||||
[DataField("colliderFixtureId")]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public string? ColliderFixtureId = "EventHorizonCollider";
|
||||
|
||||
/// <summary>
|
||||
/// Whether the entity this event horizon is attached to is being consumed by another event horizon.
|
||||
@@ -49,22 +58,19 @@ public sealed class EventHorizonComponent : Component
|
||||
/// The amount of time that should elapse between this event horizon consuming everything it overlaps with.
|
||||
/// </summary>
|
||||
[DataField("consumePeriod")]
|
||||
[ViewVariables(VVAccess.ReadOnly)]
|
||||
[Access(typeof(SharedEventHorizonSystem))]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public TimeSpan TargetConsumePeriod { get; set; } = TimeSpan.FromSeconds(0.5);
|
||||
|
||||
/// <summary>
|
||||
/// The last time at which this consumed everything it overlapped with.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadOnly)]
|
||||
[Access(typeof(SharedEventHorizonSystem))]
|
||||
public TimeSpan LastConsumeWaveTime { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// The next time at which this consumed everything it overlapped with.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadOnly)]
|
||||
[Access(typeof(SharedEventHorizonSystem))]
|
||||
public TimeSpan NextConsumeWaveTime { get; set; } = default!;
|
||||
|
||||
#endregion Update Timing
|
||||
|
||||
@@ -18,8 +18,8 @@ public sealed class SingularityComponent : Component
|
||||
/// Used as a scaling factor for things like visual size, event horizon radius, gravity well radius, radiation output, etc.
|
||||
/// If you want to set this use <see cref="SharedSingularitySystem.SetLevel"/>().
|
||||
/// </summary>
|
||||
[Access(friends: typeof(SharedSingularitySystem), Other = AccessPermissions.Read, Self = AccessPermissions.Read)]
|
||||
[DataField("level")]
|
||||
[Access(friends:typeof(SharedSingularitySystem), Other=AccessPermissions.Read, Self=AccessPermissions.Read)]
|
||||
public byte Level = 1;
|
||||
|
||||
/// <summary>
|
||||
@@ -27,8 +27,8 @@ public sealed class SingularityComponent : Component
|
||||
/// Has to be on shared in case someone attaches a RadiationPulseComponent to the singularity.
|
||||
/// If you want to set this use <see cref="SharedSingularitySystem.SetRadsPerLevel"/>().
|
||||
/// </summary>
|
||||
[Access(friends: typeof(SharedSingularitySystem), Other = AccessPermissions.Read, Self = AccessPermissions.Read)]
|
||||
[DataField("radsPerLevel")]
|
||||
[Access(friends:typeof(SharedSingularitySystem), Other=AccessPermissions.Read, Self=AccessPermissions.Read)]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public float RadsPerLevel = 2f;
|
||||
|
||||
@@ -88,7 +88,7 @@ public sealed class SingularityComponent : Component
|
||||
/// The amount of time that should elapse between automated updates to this singularity.
|
||||
/// </summary>
|
||||
[DataField("updatePeriod")]
|
||||
[ViewVariables(VVAccess.ReadOnly)]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public TimeSpan TargetUpdatePeriod = TimeSpan.FromSeconds(1.0);
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user