protected override void OnEraseTile(Vector2Int tileXY) { // Add game coordinates tileXY += Vector2Int.one; // Find structure on tile int playerIndex = 0; int unitIndex = -1; for (playerIndex = 0; playerIndex < UserData.current.selectedVariant.players.Count; ++playerIndex) { PlayerData.ResourceData resData = UserData.current.GetPlayerResourceData(playerIndex); for (int i = 0; i < resData.units.Count; ++i) { UnitData unit = resData.units[i]; RectInt structureArea = StructureData.GetStructureArea(new Vector2Int(unit.position.x, unit.position.y), unit.typeID); if (structureArea.Contains(tileXY)) { unitIndex = i; break; } } if (unitIndex >= 0) { break; } } if (unitIndex < 0) { return; } PlayerData.ResourceData playerResData = UserData.current.GetPlayerResourceData(playerIndex); UnitData structureToRemove = playerResData.units[unitIndex]; // Remove structure from tile playerResData.units.RemoveAt(unitIndex); UserData.current.SetUnsaved(); m_UnitRenderer.RemoveUnit(structureToRemove); m_MapRenderer.RefreshTiles(StructureData.GetBulldozedStructureArea(new Vector2Int(structureToRemove.position.x - 1, structureToRemove.position.y - 1), structureToRemove.typeID)); }