Add atmos grid impulses, disabled by default.

This commit is contained in:
Vera Aguilera Puerto
2021-07-23 17:27:16 +02:00
parent da25266dd5
commit 4ade87c040
3 changed files with 22 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ using System.Collections.Generic;
using Content.Server.Atmos.Components;
using Content.Server.Coordinates.Helpers;
using Content.Shared.Atmos;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Map;
using Robust.Shared.Maths;
@@ -462,6 +463,17 @@ namespace Content.Server.Atmos.EntitySystems
HandleDecompressionFloorRip(mapGrid, otherTile, sum);
}
if (GridImpulse && tileCount > 0)
{
var direction = ((Vector2)tiles[tileCount - 1].GridIndices - tile.GridIndices).Normalized;
var gridPhysics = ComponentManager.GetComponent<PhysicsComponent>(mapGrid.GridEntityId);
// TODO ATMOS: Come up with better values for these.
gridPhysics.ApplyLinearImpulse(direction * totalGasesRemoved * gridPhysics.Mass);
gridPhysics.ApplyAngularImpulse(Vector2.Cross(tile.GridIndices - gridPhysics.LocalCenter, direction) * totalGasesRemoved);
}
ArrayPool<TileAtmosphere>.Shared.Return(tiles);
ArrayPool<TileAtmosphere>.Shared.Return(spaceTiles);
ArrayPool<TileAtmosphere>.Shared.Return(progressionOrder);