mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
* Fix warnings in SharedJointSystem * Fix reference to EC TransformComponent method Replaces call to TransformComponent.GetMapUid with SharedTransformSystem.GetMap * Fix obsolete calls in SharedPhysicsSystem.Contacts.cs Fixes a couple calls to obsolete varients of SetAwake and an obsolete call to RegenerateContacts by converting them to their Entity<T> varients * Fix obsolete call in SharedPhysicsSystem.Components.cs Adds one set of parenthesis to convert a 'uid, comp, comp, comp' call to an 'Entity<T, T, T> call. * Removes unused local var Removes an unused list of broadphases that was being allocated in TryCollideRect * One-line fixes in SharedPhysicsSystem.Islands.cs Fixes all of the easy warnings regarding physics island processing, the rest require more complicated changes than a simple argument rearrangement * Fix obsolete method call in SharedMapSystem * Fix a few obsolete ToMap calls in EntityLookup.Queries * Fix calls to obsolete EntityCoordinate methods in SharedMapSystem.Grids * Fix calls to obsolete EntityCoordinate methods in SharedLookupSystem.ComponentQueries * Fix a few obsolete method calls in entity spawning * Fix obsolete method calls in MapLoaderSystem * Fix obsolete method call in GridFixtureSystem * Fix obsolete IsMapInitialized call in SaveMap command * Fix obsolete MapPosition reference in Client.EyeSystem * Fix obsolete EntitySystem.Get<TSystem> references in DebugLightTreeSystem * Fix obsolete EntitySystem.Get<TSystem> reference in DebugEntityLookup command * Fix obsolete method calls in SpriteBoundsOverlay Slightly more complicated than the rest, but it's really just changing an unused dependency over to use SharedTransformSystem * Remove unused IClyde references from controls LineEdit and TextEdit never use their IClyde dependencies and it generates a warning so yeet * Remove use of EntitySystem.Get from lightbb command * Fix DebugDrawingSystem Removes a bunch of unused private IEntityManager vars Also removes an obsolete use of TransformComponent.GetWorldPositionRotation * Removes duplicate position set when splitting grids There's nothing saying why this is this way and the blame looks like it was an oversight when replacing a bit where they set position and then rotation Please, oh Chesterton's Fence, spare me your wrath * Fix obsolete method use in PlacementMode * Fix obsolete method use in Placement Modes * Removes unused local var in gamestate management * Fix unreachable code warnings in gamestate management Use #else sections to make sure they don't complain about being on the wrong side of a throw * Fix obsolete ToMap use in EyeManager * Make InputManager use a sawmill to log * Fix obsolete ContainerManagerComponent method calls in ContainerSystem * Make ClientPrototypeManager use a sawmill for logging * poke tests * Use LocalizedEntityCommands for SpriteBoundsOverlay toggle * Use LocalizedEntityCommands for system toggles --------- Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
134 lines
4.1 KiB
C#
134 lines
4.1 KiB
C#
using System.Collections.Generic;
|
|
using System.Numerics;
|
|
using Robust.Client.Graphics;
|
|
using Robust.Shared.Console;
|
|
using Robust.Shared.Enums;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.IoC;
|
|
using Robust.Shared.Maths;
|
|
using Robust.Shared.Physics.Dynamics;
|
|
using Color = Robust.Shared.Maths.Color;
|
|
|
|
namespace Robust.Client.GameObjects;
|
|
|
|
public sealed class DebugEntityLookupCommand : LocalizedEntityCommands
|
|
{
|
|
[Dependency] private readonly DebugEntityLookupSystem _system = default!;
|
|
|
|
public override string Command => "togglelookup";
|
|
|
|
public override void Execute(IConsoleShell shell, string argStr, string[] args)
|
|
{
|
|
_system.Enabled ^= true;
|
|
}
|
|
}
|
|
|
|
public sealed class DebugEntityLookupSystem : EntitySystem
|
|
{
|
|
public bool Enabled
|
|
{
|
|
get => _enabled;
|
|
set
|
|
{
|
|
if (_enabled == value) return;
|
|
|
|
_enabled = value;
|
|
|
|
if (_enabled)
|
|
{
|
|
IoCManager.Resolve<IOverlayManager>().AddOverlay(
|
|
new EntityLookupOverlay(
|
|
EntityManager,
|
|
EntityManager.System<EntityLookupSystem>(),
|
|
EntityManager.System<SharedTransformSystem>()));
|
|
}
|
|
else
|
|
{
|
|
IoCManager.Resolve<IOverlayManager>().RemoveOverlay<EntityLookupOverlay>();
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool _enabled;
|
|
}
|
|
|
|
public sealed class EntityLookupOverlay : Overlay
|
|
{
|
|
private readonly IEntityManager _entityManager;
|
|
private readonly EntityLookupSystem _lookup;
|
|
private readonly SharedTransformSystem _transform;
|
|
|
|
private EntityQuery<TransformComponent> _xformQuery;
|
|
|
|
public override OverlaySpace Space => OverlaySpace.WorldSpace;
|
|
|
|
public EntityLookupOverlay(IEntityManager entManager, EntityLookupSystem lookup, SharedTransformSystem transform)
|
|
{
|
|
_entityManager = entManager;
|
|
_lookup = lookup;
|
|
_xformQuery = entManager.GetEntityQuery<TransformComponent>();
|
|
_transform = transform;
|
|
}
|
|
|
|
protected internal override void Draw(in OverlayDrawArgs args)
|
|
{
|
|
var worldHandle = args.WorldHandle;
|
|
var worldBounds = args.WorldBounds;
|
|
|
|
// TODO: Static version
|
|
_lookup.FindLookupsIntersecting(args.MapId, worldBounds, (uid, lookup) =>
|
|
{
|
|
var (_, rotation, matrix, invMatrix) = _transform.GetWorldPositionRotationMatrixWithInv(uid);
|
|
|
|
worldHandle.SetTransform(matrix);
|
|
|
|
var lookupAABB = invMatrix.TransformBox(worldBounds);
|
|
var ents = new List<EntityUid>();
|
|
|
|
lookup.DynamicTree.QueryAabb(ref ents, static (ref List<EntityUid> state, in FixtureProxy value) =>
|
|
{
|
|
state.Add(value.Entity);
|
|
return true;
|
|
}, lookupAABB);
|
|
|
|
lookup.StaticTree.QueryAabb(ref ents, static (ref List<EntityUid> state, in FixtureProxy value) =>
|
|
{
|
|
state.Add(value.Entity);
|
|
return true;
|
|
}, lookupAABB);
|
|
|
|
lookup.StaticSundriesTree.QueryAabb(ref ents, static (ref List<EntityUid> state, in EntityUid value) =>
|
|
{
|
|
state.Add(value);
|
|
return true;
|
|
}, lookupAABB);
|
|
|
|
lookup.SundriesTree.QueryAabb(ref ents, static (ref List<EntityUid> state, in EntityUid value) =>
|
|
{
|
|
state.Add(value);
|
|
return true;
|
|
}, lookupAABB);
|
|
|
|
foreach (var ent in ents)
|
|
{
|
|
if (_entityManager.Deleted(ent))
|
|
continue;
|
|
|
|
var xform = _xformQuery.GetComponent(ent);
|
|
|
|
//DebugTools.Assert(!ent.IsInContainer(_entityManager));
|
|
var (entPos, entRot) = _transform.GetWorldPositionRotation(ent);
|
|
|
|
var lookupPos = Vector2.Transform(entPos, invMatrix);
|
|
var lookupRot = entRot - rotation;
|
|
|
|
var aabb = _lookup.GetAABB(ent, lookupPos, lookupRot, xform, _xformQuery);
|
|
|
|
worldHandle.DrawRect(aabb, Color.Blue.WithAlpha(0.2f));
|
|
}
|
|
});
|
|
|
|
worldHandle.SetTransform(Matrix3x2.Identity);
|
|
}
|
|
}
|