// If it's not our ent or we shot it.
if (attachedEnt == null ||
- args.OtherFixture.Body.Owner != attachedEnt ||
- TryComp<ProjectileComponent>(args.OurFixture.Body.Owner, out var projectile) &&
+ args.OtherEntity != attachedEnt ||
+ TryComp<ProjectileComponent>(uid, out var projectile) &&
projectile.Shooter == attachedEnt)
{
return;
private void OnStartCollide(EntityUid uid, AnomalyComponent component, ref StartCollideEvent args)
{
- if (!TryComp<AnomalousParticleComponent>(args.OtherFixture.Body.Owner, out var particle))
+ if (!TryComp<AnomalousParticleComponent>(args.OtherEntity, out var particle))
return;
if (args.OtherFixture.ID != particle.FixtureId)
private void OnCollide(EntityUid uid, FlammableComponent flammable, ref StartCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
// Normal hard collisions, though this isn't generally possible since most flammable things are mobs
// which don't collide with one another, shouldn't work here.
private void HandleInjection(EntityUid uid, SolutionInjectOnCollideComponent component, ref StartCollideEvent args)
{
- var target = args.OtherFixture.Body.Owner;
+ var target = args.OtherEntity;
- if (!args.OtherFixture.Body.Hard ||
+ if (!args.OtherBody.Hard ||
!EntityManager.TryGetComponent<BloodstreamComponent>(target, out var bloodstream) ||
!_solutionsSystem.TryGetInjectableSolution(component.Owner, out var solution)) return;
var solRemoved = solution.SplitSolution(component.TransferAmount);
var solRemovedVol = solRemoved.Volume;
-
+
var solToInject = solRemoved.SplitSolution(solRemovedVol * component.TransferEfficiency);
_bloodstreamSystem.TryAddToChemicals(target, solToInject, bloodstream);
foreach (var value in contents.Solutions.Values)
{
- value.DoEntityReaction(args.OtherFixture.Body.Owner, ReactionMethod.Touch);
+ value.DoEntityReaction(args.OtherEntity, ReactionMethod.Touch);
}
// Check for collision with a impassable object (e.g. wall) and stop
if (fixture == args.OtherFixture)
continue;
// If still colliding with a climbable, do not stop climbing
- if (HasComp<ClimbableComponent>(fixture.Body.Owner))
+ if (HasComp<ClimbableComponent>(args.OtherEntity))
return;
}
{
if (!EntityManager.HasComponent<DamageableComponent>(uid)) return;
- var otherBody = args.OtherFixture.Body.Owner;
- var speed = args.OurFixture.Body.LinearVelocity.Length;
+ var otherBody = args.OtherEntity;
+ var speed = args.OurBody.LinearVelocity.Length;
if (speed < component.MinimumSpeed) return;
if (door.State != DoorState.Closed)
return;
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
if (Tags.HasTag(otherUid, "DoorBumpOpener"))
TryOpen(uid, door, otherUid);
protected override void CheckDoorBump(DoorComponent component, PhysicsComponent body)
{
+ var uid = body.Owner;
if (component.BumpOpen)
{
- foreach (var other in PhysicsSystem.GetContactingEntities(body, approximate: true))
+ foreach (var other in PhysicsSystem.GetContactingEntities(uid, body, approximate: true))
{
- if (Tags.HasTag(other.Owner, "DoorBumpOpener") &&
- TryOpen(component.Owner, component, other.Owner, false, quiet: true)) break;
+ if (Tags.HasTag(other, "DoorBumpOpener") && TryOpen(uid, component, other, false, quiet: true))
+ break;
}
}
}
private void OnElectrifiedStartCollide(EntityUid uid, ElectrifiedComponent electrified, ref StartCollideEvent args)
{
if (electrified.OnBump)
- TryDoElectrifiedAct(uid, args.OtherFixture.Body.Owner, 1, electrified);
+ TryDoElectrifiedAct(uid, args.OtherEntity, 1, electrified);
}
private void OnElectrifiedAttacked(EntityUid uid, ElectrifiedComponent electrified, AttackedEvent args)
ref (List<TransformComponent> List, HashSet<EntityUid> Processed, EntityQuery<TransformComponent> XformQuery) state,
in FixtureProxy proxy)
{
- var owner = proxy.Fixture.Body.Owner;
+ var owner = proxy.Entity;
return GridQueryCallback(ref state, in owner);
}
ref (List<TransformComponent> List, HashSet<EntityUid> Processed, Matrix3 InvSpaceMatrix, EntityUid LookupOwner, EntityQuery<TransformComponent> XformQuery, Box2 GridBox) state,
in FixtureProxy proxy)
{
- var owner = proxy.Fixture.Body.Owner;
- return SpaceQueryCallback(ref state, in owner);
+ var uid = proxy.Entity;
+ return SpaceQueryCallback(ref state, in uid);
}
/// <summary>
if (args.OurFixture.ID != TriggerOnProximityComponent.FixtureID) return;
_activeProximities.Add(component);
- component.Colliding.Add(args.OtherFixture.Body);
+ component.Colliding.Add(args.OtherBody);
}
private static void OnProximityEndCollide(EntityUid uid, TriggerOnProximityComponent component, ref EndCollideEvent args)
{
if (args.OurFixture.ID != TriggerOnProximityComponent.FixtureID) return;
- component.Colliding.Remove(args.OtherFixture.Body);
+ component.Colliding.Remove(args.OtherBody);
}
private void SetProximityAppearance(EntityUid uid, TriggerOnProximityComponent component)
{
//Ensures the entity trigger will have an active component
EnsureComp<ActiveTriggerOnTimedCollideComponent>(uid);
- var otherUID = args.OtherFixture.Body.Owner;
+ var otherUID = args.OtherEntity;
if (component.Colliding.ContainsKey(otherUID))
return;
component.Colliding.Add(otherUID, 0);
private void OnTimerEndCollide(EntityUid uid, TriggerOnTimedCollideComponent component, ref EndCollideEvent args)
{
- var otherUID = args.OtherFixture.Body.Owner;
+ var otherUID = args.OtherEntity;
component.Colliding.Remove(otherUID);
if (component.Colliding.Count == 0 && HasComp<ActiveTriggerOnTimedCollideComponent>(uid))
private void OnCollide(EntityUid uid, ImmovableRodComponent component, ref StartCollideEvent args)
{
- var ent = args.OtherFixture.Body.Owner;
+ var ent = args.OtherEntity;
if (_random.Prob(component.HitSoundProbability))
{
if (args.OurFixture.ID != SharedProjectileSystem.ProjectileFixture)
return;
- var other = args.OtherFixture.Body.Owner;
+ var other = args.OtherEntity;
if (!component.Whitelist.IsValid(other)
|| component.Blacklist != null && component.Blacklist.IsValid(other))
return;
if (args.OurFixture.ID != ProjectileFixture || !args.OtherFixture.Hard || component.DamagedEntity)
return;
- var otherEntity = args.OtherFixture.Body.Owner;
+ var otherEntity = args.OtherEntity;
// it's here so this check is only done once before possible hit
var attemptEv = new ProjectileReflectAttemptEvent(uid, component, false);
RaiseLocalEvent(otherEntity, ref attemptEv);
}
var otherName = ToPrettyString(otherEntity);
- var direction = args.OurFixture.Body.LinearVelocity.Normalized;
+ var direction = args.OurBody.LinearVelocity.Normalized;
var modifiedDamage = _damageableSystem.TryChangeDamage(otherEntity, component.Damage, component.IgnoreResistances, origin: component.Shooter);
component.DamagedEntity = true;
var deleted = Deleted(otherEntity);
private void OnShuttleCollide(EntityUid uid, ShuttleComponent component, ref StartCollideEvent args)
{
- var ourBody = args.OurFixture.Body;
- var otherBody = args.OtherFixture.Body;
-
- if (!HasComp<ShuttleComponent>(otherBody.Owner))
+ if (!HasComp<ShuttleComponent>(args.OtherEntity))
return;
+ var ourBody = args.OurBody;
+ var otherBody = args.OtherBody;
+
// TODO: Would also be nice to have a continuous sound for scraping.
- var ourXform = Transform(ourBody.Owner);
+ var ourXform = Transform(uid);
if (ourXform.MapUid == null)
return;
- var otherXform = Transform(otherBody.Owner);
+ var otherXform = Transform(args.OtherEntity);
var ourPoint = ourXform.InvWorldMatrix.Transform(args.WorldPoint);
var otherPoint = otherXform.InvWorldMatrix.Transform(args.WorldPoint);
- var ourVelocity = _physics.GetLinearVelocity(ourBody.Owner, ourPoint, ourBody, ourXform);
- var otherVelocity = _physics.GetLinearVelocity(otherBody.Owner, otherPoint, otherBody, otherXform);
+ var ourVelocity = _physics.GetLinearVelocity(uid, ourPoint, ourBody, ourXform);
+ var otherVelocity = _physics.GetLinearVelocity(args.OtherEntity, otherPoint, otherBody, otherXform);
var jungleDiff = (ourVelocity - otherVelocity).Length;
if (jungleDiff < MinimumImpactVelocity)
SubscribeLocalEvent<RoundRestartCleanupEvent>(OnRoundRestart);
SubscribeLocalEvent<GridInitializeEvent>(OnGridInit);
- SubscribeLocalEvent<GridFixtureChangeEvent>(OnGridFixtureChange);
+ SubscribeLocalEvent<FixturesComponent, GridFixtureChangeEvent>(OnGridFixtureChange);
}
public override void Update(float frameTime)
}
}
- private void OnGridFixtureChange(GridFixtureChangeEvent args)
+ private void OnGridFixtureChange(EntityUid uid, FixturesComponent manager, GridFixtureChangeEvent args)
{
- // Look this is jank but it's a placeholder until we design it.
- if (args.NewFixtures.Count == 0)
- return;
-
- var uid = args.NewFixtures[0].Body.Owner;
- var manager = Comp<FixturesComponent>(uid);
-
foreach (var fixture in args.NewFixtures)
{
_physics.SetDensity(uid, fixture, TileMassMultiplier, false, manager);
_fixtures.SetRestitution(uid, fixture, 0.1f, false, manager);
}
-
- _fixtures.FixtureUpdate(uid, manager: manager);
}
private void OnGridInit(GridInitializeEvent ev)
private void OnCollide(EntityUid uid, SpaceGarbageComponent component, ref StartCollideEvent args)
{
- if (args.OtherFixture.Body.BodyType != BodyType.Static) return;
+ if (args.OtherBody.BodyType != BodyType.Static) return;
- var ourXform = Transform(args.OurFixture.Body.Owner);
- var otherXform = Transform(args.OtherFixture.Body.Owner);
+ var ourXform = Transform(uid);
+ var otherXform = Transform(args.OtherEntity);
if (ourXform.GridUid == otherXform.GridUid) return;
/// </summary>
private void HandleGeneratorCollide(EntityUid uid, ContainmentFieldGeneratorComponent component, ref StartCollideEvent args)
{
- if (_tags.HasTag(args.OtherFixture.Body.Owner, component.IDTag))
+ if (_tags.HasTag(args.OtherEntity, component.IDTag))
{
ReceivePower(component.PowerReceived, component);
component.Accumulator = 0f;
private void HandleFieldCollide(EntityUid uid, ContainmentFieldComponent component, ref StartCollideEvent args)
{
- var otherBody = args.OtherFixture.Body.Owner;
+ var otherBody = args.OtherEntity;
if (TryComp<SpaceGarbageComponent>(otherBody, out var garbage))
{
if (args.OurFixture.ID != comp.HorizonFixtureId)
return;
- AttemptConsumeEntity(args.OtherFixture.Body.Owner, comp);
+ AttemptConsumeEntity(args.OtherEntity, comp);
}
/// <summary>
/// <param name="args">The state of the beginning of the collision.</param>
private void HandleParticleCollide(EntityUid uid, ParticleProjectileComponent component, ref StartCollideEvent args)
{
- if (EntityManager.TryGetComponent<SingularityGeneratorComponent?>(args.OtherFixture.Body.Owner, out var singularityGeneratorComponent))
+ if (EntityManager.TryGetComponent<SingularityGeneratorComponent?>(args.OtherEntity, out var singularityGeneratorComponent))
{
SetPower(
singularityGeneratorComponent,
{
if (args.OurFixture.ID != component.FixtureID) return;
- TryDoCollideStun(uid, component, args.OtherFixture.Body.Owner);
+ TryDoCollideStun(uid, component, args.OtherEntity);
}
private void HandleThrow(EntityUid uid, StunOnCollideComponent component, ThrowDoHitEvent args)
private void OnCollide(EntityUid uid, ArtifactAnalyzerComponent component, ref StartCollideEvent args)
{
- var otherEnt = args.OtherFixture.Body.Owner;
+ var otherEnt = args.OtherEntity;
if (!HasComp<ArtifactComponent>(otherEnt))
return;
private void OnEndCollide(EntityUid uid, ArtifactAnalyzerComponent component, ref EndCollideEvent args)
{
- var otherEnt = args.OtherFixture.Body.Owner;
+ var otherEnt = args.OtherEntity;
if (!HasComp<ArtifactComponent>(otherEnt))
return;
private void OnCollide(EntityUid uid, TraversalDistorterComponent component, ref StartCollideEvent args)
{
- var otherEnt = args.OtherFixture.Body.Owner;
+ var otherEnt = args.OtherEntity;
if (!HasComp<ArtifactComponent>(otherEnt))
return;
private void OnEndCollide(EntityUid uid, TraversalDistorterComponent component, ref EndCollideEvent args)
{
- var otherEnt = args.OtherFixture.Body.Owner;
+ var otherEnt = args.OtherEntity;
if (!HasComp<ArtifactComponent>(otherEnt))
return;
private void OnEntityExit(EntityUid uid, DamageContactsComponent component, ref EndCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
if (!TryComp<PhysicsComponent>(uid, out var body))
return;
var damageQuery = GetEntityQuery<DamageContactsComponent>();
- foreach (var contact in _physics.GetContactingEntities(body))
+ foreach (var ent in _physics.GetContactingEntities(uid, body))
{
- var ent = contact.Owner;
if (ent == uid)
continue;
private void OnEntityEnter(EntityUid uid, DamageContactsComponent component, ref StartCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
if (HasComp<DamagedByContactComponent>(otherUid))
return;
return;
if (!TryComp<MaterialReclaimerComponent>(uid, out var reclaimer))
return;
- TryStartProcessItem(uid, args.OtherFixture.Body.Owner, reclaimer);
+ TryStartProcessItem(uid, args.OtherEntity, reclaimer);
}
private void OnActiveStartup(EntityUid uid, ActiveMaterialReclaimerComponent component, ComponentStartup args)
var sprintSpeed = 1.0f;
bool remove = true;
- foreach (var colliding in _physics.GetContactingEntities(physicsComponent))
+ foreach (var ent in _physics.GetContactingEntities(uid, physicsComponent))
{
- var ent = colliding.Owner;
if (!TryComp<SlowContactsComponent>(ent, out var slowContactsComponent))
continue;
private void OnEntityExit(EntityUid uid, SlowContactsComponent component, ref EndCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
if (HasComp<MovementSpeedModifierComponent>(otherUid))
_toUpdate.Add(otherUid);
}
private void OnEntityEnter(EntityUid uid, SlowContactsComponent component, ref StartCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
if (!HasComp<MovementSpeedModifierComponent>(otherUid))
return;
private void OnConveyorStartCollide(EntityUid uid, ConveyorComponent component, ref StartCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
- if (args.OtherFixture.Body.BodyType == BodyType.Static || component.State == ConveyorState.Off)
+ if (args.OtherBody.BodyType == BodyType.Static || component.State == ConveyorState.Off)
return;
component.Intersecting.Add(otherUid);
private void OnConveyorEndCollide(EntityUid uid, ConveyorComponent component, ref EndCollideEvent args)
{
- component.Intersecting.Remove(args.OtherFixture.Body.Owner);
+ component.Intersecting.Remove(args.OtherEntity);
if (component.Intersecting.Count == 0)
RemComp<ActiveConveyorComponent>(uid);
private void OnStartCollide(EntityUid uid, StepTriggerComponent component, ref StartCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
if (!args.OtherFixture.Hard)
return;
private void OnEndCollide(EntityUid uid, StepTriggerComponent component, ref EndCollideEvent args)
{
- var otherUid = args.OtherFixture.Body.Owner;
+ var otherUid = args.OtherEntity;
if (!component.Colliding.Remove(otherUid))
return;
if (!ShouldCollide(args.OurFixture, args.OtherFixture))
return;
- var subject = args.OtherFixture.Body.Owner;
+ var subject = args.OtherEntity;
// best not.
if (Transform(subject).Anchored)
if (!ShouldCollide(args.OurFixture, args.OtherFixture))
return;
- var subject = args.OtherFixture.Body.Owner;
+ var subject = args.OtherEntity;
// if they came from (not us), remove the timeout
if (TryComp<PortalTimeoutComponent>(subject, out var timeout) && timeout.EnteredPortal != uid)
return;
var thrower = component.Thrower;
- var otherBody = args.OtherFixture.Body;
+ if (args.OtherEntity == thrower)
+ return;
- if (otherBody.Owner == thrower) return;
- ThrowCollideInteraction(thrower, args.OurFixture.Body, otherBody);
+ ThrowCollideInteraction(thrower, args.OurBody, args.OtherBody);
}
private void PreventCollision(EntityUid uid, ThrownItemComponent component, ref PreventCollideEvent args)