Update content for physics query namespace change (#4701)
This commit is contained in:
@@ -14,38 +14,6 @@ namespace Content.Server.AI.Utils
|
|||||||
{
|
{
|
||||||
public static class Visibility
|
public static class Visibility
|
||||||
{
|
{
|
||||||
// Just do a simple range check, then chuck the ray out. If we get bigger than 1 tile mobs may need to adjust this
|
|
||||||
public static bool InLineOfSight(IEntity owner, IEntity target)
|
|
||||||
{
|
|
||||||
var range = 50.0f;
|
|
||||||
|
|
||||||
if (owner.Transform.GridID != target.Transform.GridID)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (owner.TryGetComponent(out AiControllerComponent? controller))
|
|
||||||
{
|
|
||||||
var targetRange = (target.Transform.Coordinates.Position - owner.Transform.Coordinates.Position).Length;
|
|
||||||
if (targetRange > controller.VisionRadius)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
range = controller.VisionRadius;
|
|
||||||
}
|
|
||||||
|
|
||||||
var angle = new Angle(target.Transform.Coordinates.Position - owner.Transform.Coordinates.Position);
|
|
||||||
var ray = new CollisionRay(
|
|
||||||
owner.Transform.Coordinates.Position,
|
|
||||||
angle.ToVec(),
|
|
||||||
(int)(CollisionGroup.Opaque | CollisionGroup.Impassable | CollisionGroup.MobImpassable));
|
|
||||||
|
|
||||||
var rayCastResults = EntitySystem.Get<SharedBroadphaseSystem>().IntersectRay(owner.Transform.MapID, ray, range, owner).ToList();
|
|
||||||
|
|
||||||
return rayCastResults.Count > 0 && rayCastResults[0].HitEntity == target;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Should this be in robust or something? Fark it
|
// Should this be in robust or something? Fark it
|
||||||
public static IEnumerable<IEntity> GetNearestEntities(EntityCoordinates grid, Type component, float range)
|
public static IEnumerable<IEntity> GetNearestEntities(EntityCoordinates grid, Type component, float range)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ namespace Content.Server.Doors.Components
|
|||||||
|
|
||||||
if (safety && Owner.TryGetComponent(out PhysicsComponent? physicsComponent))
|
if (safety && Owner.TryGetComponent(out PhysicsComponent? physicsComponent))
|
||||||
{
|
{
|
||||||
var broadPhaseSystem = EntitySystem.Get<SharedBroadphaseSystem>();
|
var broadPhaseSystem = EntitySystem.Get<SharedPhysicsSystem>();
|
||||||
|
|
||||||
// Use this version so we can ignore the CanCollide being false
|
// Use this version so we can ignore the CanCollide being false
|
||||||
foreach(var e in broadPhaseSystem.GetCollidingEntities(physicsComponent.Owner.Transform.MapID, physicsComponent.GetWorldAABB()))
|
foreach(var e in broadPhaseSystem.GetCollidingEntities(physicsComponent.Owner.Transform.MapID, physicsComponent.GetWorldAABB()))
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ namespace Content.Server.Singularity.Components
|
|||||||
|
|
||||||
var dirVec = direction.ToVec();
|
var dirVec = direction.ToVec();
|
||||||
var ray = new CollisionRay(Owner.Transform.WorldPosition, dirVec, (int) CollisionGroup.MobMask);
|
var ray = new CollisionRay(Owner.Transform.WorldPosition, dirVec, (int) CollisionGroup.MobMask);
|
||||||
var rawRayCastResults = EntitySystem.Get<SharedBroadphaseSystem>().IntersectRay(Owner.Transform.MapID, ray, 4.5f, Owner, false);
|
var rawRayCastResults = EntitySystem.Get<SharedPhysicsSystem>().IntersectRay(Owner.Transform.MapID, ray, 4.5f, Owner, false);
|
||||||
|
|
||||||
var rayCastResults = rawRayCastResults as RayCastResults[] ?? rawRayCastResults.ToArray();
|
var rayCastResults = rawRayCastResults as RayCastResults[] ?? rawRayCastResults.ToArray();
|
||||||
if(!rayCastResults.Any()) continue;
|
if(!rayCastResults.Any()) continue;
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ namespace Content.Server.Solar.EntitySystems
|
|||||||
// Determine if the solar panel is occluded, and zero out coverage if so.
|
// Determine if the solar panel is occluded, and zero out coverage if so.
|
||||||
// FIXME: The "Opaque" collision group doesn't seem to work right now.
|
// FIXME: The "Opaque" collision group doesn't seem to work right now.
|
||||||
var ray = new CollisionRay(entity.Transform.WorldPosition, TowardsSun.ToWorldVec(), (int) CollisionGroup.Opaque);
|
var ray = new CollisionRay(entity.Transform.WorldPosition, TowardsSun.ToWorldVec(), (int) CollisionGroup.Opaque);
|
||||||
var rayCastResults = EntitySystem.Get<SharedBroadphaseSystem>().IntersectRay(entity.Transform.MapID, ray, SunOcclusionCheckDistance, entity);
|
var rayCastResults = Get<SharedPhysicsSystem>().IntersectRay(entity.Transform.MapID, ray, SunOcclusionCheckDistance, entity);
|
||||||
if (rayCastResults.Any())
|
if (rayCastResults.Any())
|
||||||
coverage = 0;
|
coverage = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ namespace Content.Server.Weapon.Melee
|
|||||||
for (var i = 0; i < increments; i++)
|
for (var i = 0; i < increments; i++)
|
||||||
{
|
{
|
||||||
var castAngle = new Angle(baseAngle + increment * i);
|
var castAngle = new Angle(baseAngle + increment * i);
|
||||||
var res = Get<SharedBroadphaseSystem>().IntersectRay(mapId,
|
var res = Get<SharedPhysicsSystem>().IntersectRay(mapId,
|
||||||
new CollisionRay(position, castAngle.ToWorldVec(),
|
new CollisionRay(position, castAngle.ToWorldVec(),
|
||||||
(int) (CollisionGroup.Impassable | CollisionGroup.MobImpassable)), range, ignore).ToList();
|
(int) (CollisionGroup.Impassable | CollisionGroup.MobImpassable)), range, ignore).ToList();
|
||||||
|
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components
|
|||||||
private void FireHitscan(IEntity shooter, HitscanComponent hitscan, Angle angle)
|
private void FireHitscan(IEntity shooter, HitscanComponent hitscan, Angle angle)
|
||||||
{
|
{
|
||||||
var ray = new CollisionRay(Owner.Transform.Coordinates.ToMapPos(Owner.EntityManager), angle.ToVec(), (int) hitscan.CollisionMask);
|
var ray = new CollisionRay(Owner.Transform.Coordinates.ToMapPos(Owner.EntityManager), angle.ToVec(), (int) hitscan.CollisionMask);
|
||||||
var physicsManager = EntitySystem.Get<SharedBroadphaseSystem>();
|
var physicsManager = EntitySystem.Get<SharedPhysicsSystem>();
|
||||||
var rayCastResults = physicsManager.IntersectRay(Owner.Transform.MapID, ray, hitscan.MaxLength, shooter, false).ToList();
|
var rayCastResults = physicsManager.IntersectRay(Owner.Transform.MapID, ray, hitscan.MaxLength, shooter, false).ToList();
|
||||||
|
|
||||||
if (rayCastResults.Count >= 1)
|
if (rayCastResults.Count >= 1)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace Content.Shared.Construction.Conditions
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// now we need to check that user actually tries to build wallmount on a wall
|
// now we need to check that user actually tries to build wallmount on a wall
|
||||||
var physics = EntitySystem.Get<SharedBroadphaseSystem>();
|
var physics = EntitySystem.Get<SharedPhysicsSystem>();
|
||||||
var rUserToObj = new CollisionRay(userWorldPosition, userToObject.Normalized, (int) CollisionGroup.Impassable);
|
var rUserToObj = new CollisionRay(userWorldPosition, userToObject.Normalized, (int) CollisionGroup.Impassable);
|
||||||
var length = userToObject.Length;
|
var length = userToObject.Length;
|
||||||
var userToObjRaycastResults = physics.IntersectRayWithPredicate(user.Transform.MapID, rUserToObj, maxLength: length,
|
var userToObjRaycastResults = physics.IntersectRayWithPredicate(user.Transform.MapID, rUserToObj, maxLength: length,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace Content.Shared.Interaction
|
|||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public abstract class SharedInteractionSystem : EntitySystem
|
public abstract class SharedInteractionSystem : EntitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly SharedBroadphaseSystem _sharedBroadphaseSystem = default!;
|
[Dependency] private readonly SharedPhysicsSystem _sharedBroadphaseSystem = default!;
|
||||||
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
||||||
|
|
||||||
public const float InteractionRange = 2;
|
public const float InteractionRange = 2;
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ namespace Content.Shared.Maps
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool IsBlockedTurf(this TileRef turf, bool filterMobs)
|
public static bool IsBlockedTurf(this TileRef turf, bool filterMobs)
|
||||||
{
|
{
|
||||||
var physics = EntitySystem.Get<SharedBroadphaseSystem>();
|
var physics = EntitySystem.Get<SharedPhysicsSystem>();
|
||||||
|
|
||||||
var worldBox = GetWorldTileBox(turf);
|
var worldBox = GetWorldTileBox(turf);
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace Content.Shared.Movement
|
|||||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||||
|
|
||||||
private ActionBlockerSystem _blocker = default!;
|
private ActionBlockerSystem _blocker = default!;
|
||||||
private SharedBroadphaseSystem _broadPhaseSystem = default!;
|
private SharedPhysicsSystem _broadPhaseSystem = default!;
|
||||||
|
|
||||||
private bool _relativeMovement;
|
private bool _relativeMovement;
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ namespace Content.Shared.Movement
|
|||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
_broadPhaseSystem = EntitySystem.Get<SharedBroadphaseSystem>();
|
_broadPhaseSystem = EntitySystem.Get<SharedPhysicsSystem>();
|
||||||
_blocker = EntitySystem.Get<ActionBlockerSystem>();
|
_blocker = EntitySystem.Get<ActionBlockerSystem>();
|
||||||
var configManager = IoCManager.Resolve<IConfigurationManager>();
|
var configManager = IoCManager.Resolve<IConfigurationManager>();
|
||||||
configManager.OnValueChanged(CCVars.RelativeMovement, SetRelativeMovement, true);
|
configManager.OnValueChanged(CCVars.RelativeMovement, SetRelativeMovement, true);
|
||||||
@@ -161,12 +161,7 @@ namespace Content.Shared.Movement
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used for weightlessness to determine if we are near a wall.
|
/// Used for weightlessness to determine if we are near a wall.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="broadPhaseSystem"></param>
|
public static bool IsAroundCollider(SharedPhysicsSystem broadPhaseSystem, ITransformComponent transform, IMobMoverComponent mover, IPhysBody collider)
|
||||||
/// <param name="transform"></param>
|
|
||||||
/// <param name="mover"></param>
|
|
||||||
/// <param name="collider"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static bool IsAroundCollider(SharedBroadphaseSystem broadPhaseSystem, ITransformComponent transform, IMobMoverComponent mover, IPhysBody collider)
|
|
||||||
{
|
{
|
||||||
var enlargedAABB = collider.GetWorldAABB().Enlarged(mover.GrabRange);
|
var enlargedAABB = collider.GetWorldAABB().Enlarged(mover.GrabRange);
|
||||||
|
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ namespace Content.Shared.Spawning
|
|||||||
EntityCoordinates coordinates,
|
EntityCoordinates coordinates,
|
||||||
CollisionGroup collisionLayer,
|
CollisionGroup collisionLayer,
|
||||||
in Box2? box = null,
|
in Box2? box = null,
|
||||||
SharedBroadphaseSystem? physicsManager = null)
|
SharedPhysicsSystem? physicsManager = null)
|
||||||
{
|
{
|
||||||
physicsManager ??= EntitySystem.Get<SharedBroadphaseSystem>();
|
physicsManager ??= EntitySystem.Get<SharedPhysicsSystem>();
|
||||||
var mapCoordinates = coordinates.ToMap(entityManager);
|
var mapCoordinates = coordinates.ToMap(entityManager);
|
||||||
|
|
||||||
return entityManager.SpawnIfUnobstructed(prototypeName, mapCoordinates, collisionLayer, box, physicsManager);
|
return entityManager.SpawnIfUnobstructed(prototypeName, mapCoordinates, collisionLayer, box, physicsManager);
|
||||||
@@ -30,10 +30,10 @@ namespace Content.Shared.Spawning
|
|||||||
MapCoordinates coordinates,
|
MapCoordinates coordinates,
|
||||||
CollisionGroup collisionLayer,
|
CollisionGroup collisionLayer,
|
||||||
in Box2? box = null,
|
in Box2? box = null,
|
||||||
SharedBroadphaseSystem? collision = null)
|
SharedPhysicsSystem? collision = null)
|
||||||
{
|
{
|
||||||
var boxOrDefault = box.GetValueOrDefault(Box2.UnitCentered).Translated(coordinates.Position);
|
var boxOrDefault = box.GetValueOrDefault(Box2.UnitCentered).Translated(coordinates.Position);
|
||||||
collision ??= EntitySystem.Get<SharedBroadphaseSystem>();
|
collision ??= EntitySystem.Get<SharedPhysicsSystem>();
|
||||||
|
|
||||||
foreach (var body in collision.GetCollidingEntities(coordinates.MapId, in boxOrDefault))
|
foreach (var body in collision.GetCollidingEntities(coordinates.MapId, in boxOrDefault))
|
||||||
{
|
{
|
||||||
@@ -61,7 +61,7 @@ namespace Content.Shared.Spawning
|
|||||||
CollisionGroup collisionLayer,
|
CollisionGroup collisionLayer,
|
||||||
[NotNullWhen(true)] out IEntity? entity,
|
[NotNullWhen(true)] out IEntity? entity,
|
||||||
Box2? box = null,
|
Box2? box = null,
|
||||||
SharedBroadphaseSystem? physicsManager = null)
|
SharedPhysicsSystem? physicsManager = null)
|
||||||
{
|
{
|
||||||
entity = entityManager.SpawnIfUnobstructed(prototypeName, coordinates, collisionLayer, box, physicsManager);
|
entity = entityManager.SpawnIfUnobstructed(prototypeName, coordinates, collisionLayer, box, physicsManager);
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ namespace Content.Shared.Spawning
|
|||||||
CollisionGroup collisionLayer,
|
CollisionGroup collisionLayer,
|
||||||
[NotNullWhen(true)] out IEntity? entity,
|
[NotNullWhen(true)] out IEntity? entity,
|
||||||
in Box2? box = null,
|
in Box2? box = null,
|
||||||
SharedBroadphaseSystem? physicsManager = null)
|
SharedPhysicsSystem? physicsManager = null)
|
||||||
{
|
{
|
||||||
entity = entityManager.SpawnIfUnobstructed(prototypeName, coordinates, collisionLayer, box, physicsManager);
|
entity = entityManager.SpawnIfUnobstructed(prototypeName, coordinates, collisionLayer, box, physicsManager);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user