Update content vectors to numerics (#17759)

This commit is contained in:
metalgearsloth
2023-07-08 14:08:32 +10:00
committed by GitHub
parent 15772478c9
commit 68480af109
383 changed files with 978 additions and 575 deletions

View File

@@ -1,3 +1,4 @@
using System.Numerics;
using System.Threading.Tasks;
using Content.Shared.Decals;
using Content.Shared.Procedural;
@@ -64,7 +65,7 @@ public sealed partial class DungeonJob
roomA.Sort((x, y) =>
string.Compare(x.ID, y.ID, StringComparison.Ordinal));
}
var tiles = new List<(Vector2i, Tile)>();
var dungeon = new Dungeon();
var availablePacks = new List<DungeonRoomPackPrototype>();
@@ -183,7 +184,7 @@ public sealed partial class DungeonJob
{
for (var y = roomSize.Bottom; y < roomSize.Top; y++)
{
var index = matty.Transform(new Vector2(x, y) + grid.TileSize / 2f - packCenter).Floored();
var index = matty.Transform(new Vector2(x, y) + grid.TileSizeHalfVector - packCenter).Floored();
tiles.Add((index, new Tile(_tileDefManager["FloorPlanetGrass"].TileId)));
}
}
@@ -221,7 +222,7 @@ public sealed partial class DungeonJob
var roomCenter = (room.Offset + room.Size / 2f) * grid.TileSize;
var roomTiles = new HashSet<Vector2i>(room.Size.X * room.Size.Y);
var exterior = new HashSet<Vector2i>(room.Size.X * 2 + room.Size.Y * 2);
var tileOffset = -roomCenter + grid.TileSize / 2f;
var tileOffset = -roomCenter + grid.TileSizeHalfVector;
Box2i? mapBounds = null;
// Load tiles
@@ -262,7 +263,7 @@ public sealed partial class DungeonJob
foreach (var tile in roomTiles)
{
center += (Vector2) tile + grid.TileSize / 2f;
center += (Vector2) tile + grid.TileSizeHalfVector;
}
center /= roomTiles.Count;
@@ -308,8 +309,8 @@ public sealed partial class DungeonJob
// Offset by 0.5 because decals are offset from bot-left corner
// So we convert it to center of tile then convert it back again after transform.
// Do these shenanigans because 32x32 decals assume as they are centered on bottom-left of tiles.
var position = dungeonMatty.Transform(decal.Coordinates + 0.5f - roomCenter);
position -= 0.5f;
var position = dungeonMatty.Transform(decal.Coordinates + Vector2Helpers.Half - roomCenter);
position -= Vector2Helpers.Half;
// Umm uhh I love decals so uhhhh idk what to do about this
var angle = (decal.Angle + finalRoomRotation).Reduced();

View File

@@ -1,4 +1,5 @@
using System.Linq;
using System.Numerics;
using System.Threading.Tasks;
using Content.Server.NodeContainer;
using Content.Shared.Doors.Components;
@@ -301,7 +302,7 @@ public sealed partial class DungeonJob
if (!blocked)
continue;
var nextDir = (Direction) ((i + 1) * 2 % 8);
blocked = HasWall(grid, tile + nextDir.ToIntVec());
@@ -326,7 +327,7 @@ public sealed partial class DungeonJob
var pocketDirections = new ValueList<Direction>(4);
var doorQuery = _entManager.GetEntityQuery<DoorComponent>();
var physicsQuery = _entManager.GetEntityQuery<PhysicsComponent>();
var offset = new Vector2(-_grid.TileSize / 2f, -_grid.TileSize / 2f);
var offset = -_grid.TileSizeHalfVector;
var color = decks.Color;
foreach (var tile in dungeon.CorridorTiles)
@@ -649,7 +650,7 @@ public sealed partial class DungeonJob
foreach (var tile in room.Tiles)
{
var tileAngle = ((Vector2) tile + grid.TileSize / 2f - room.Center).ToAngle();
var tileAngle = ((Vector2) tile + grid.TileSizeHalfVector - room.Center).ToAngle();
var roundedAngle = Math.Round(tileAngle.Theta / (Math.PI / 2)) * (Math.PI / 2);
var tileVec = (Vector2i) new Angle(roundedAngle).ToVec().Rounded();
@@ -689,7 +690,7 @@ public sealed partial class DungeonJob
validTiles.Add(windowTile);
}
validTiles.Sort((x, y) => ((Vector2) x + grid.TileSize / 2f - room.Center).LengthSquared.CompareTo(((Vector2) y + grid.TileSize / 2f - room.Center).LengthSquared));
validTiles.Sort((x, y) => ((Vector2) x + grid.TileSizeHalfVector - room.Center).LengthSquared().CompareTo((y + grid.TileSizeHalfVector - room.Center).LengthSquared));
for (var j = 0; j < Math.Min(validTiles.Count, 3); j++)
{
@@ -795,7 +796,7 @@ public sealed partial class DungeonJob
foreach (var entrance in room.Entrances)
{
// Just so we can still actually get in to the entrance we won't deter from a tile away from it.
var normal = ((Vector2) entrance + grid.TileSize / 2f - room.Center).ToWorldAngle().GetCardinalDir().ToIntVec();
var normal = ((Vector2) entrance + grid.TileSizeHalfVector - room.Center).ToWorldAngle().GetCardinalDir().ToIntVec();
deterredTiles.Remove(entrance + normal);
}
}
@@ -1112,7 +1113,7 @@ public sealed partial class DungeonJob
foreach (var node in flipp)
{
center += (Vector2) node + grid.TileSize / 2f;
center += (Vector2) node + grid.TileSizeHalfVector;
}
center /= flipp.Count;
@@ -1121,7 +1122,7 @@ public sealed partial class DungeonJob
foreach (var node in flipp)
{
nodeDistances.Add((node, ((Vector2) node + grid.TileSize / 2f - center).LengthSquared));
nodeDistances.Add((node, ((Vector2) node + grid.TileSizeHalfVector - center).LengthSquared()));
}
nodeDistances.Sort((x, y) => x.Distance.CompareTo(y.Distance));