|
|
@ -41,6 +41,7 @@ namespace SemiColinGames { |
|
|
|
|
|
|
|
List<Tile> hazardTiles = new List<Tile>(); |
|
|
|
List<Tile> obstacleTiles = new List<Tile>(); |
|
|
|
List<Tile> obstacleTiles8 = new List<Tile>(); |
|
|
|
List<Tile> decorationTiles = new List<Tile>(); |
|
|
|
List<Tile> backgroundTiles = new List<Tile>(); |
|
|
|
foreach (JToken layer in root.SelectToken("layers").Children()) { |
|
|
@ -55,6 +56,8 @@ namespace SemiColinGames { |
|
|
|
hazardTiles = tileList; |
|
|
|
} else if (layerName == "obstacles") { |
|
|
|
obstacleTiles = tileList; |
|
|
|
} else if (layerName == "obstacles-8") { |
|
|
|
obstacleTiles8 = tileList; |
|
|
|
} else if (layerName == "decorations") { |
|
|
|
decorationTiles = tileList; |
|
|
|
} else if (layerName == "background") { |
|
|
@ -62,6 +65,7 @@ namespace SemiColinGames { |
|
|
|
} |
|
|
|
} |
|
|
|
// Get all the obstacles into a single array, sorted by X.
|
|
|
|
obstacleTiles.AddRange(obstacleTiles8); |
|
|
|
obstacleTiles.AddRange(hazardTiles); |
|
|
|
obstacles = obstacleTiles.ToArray(); |
|
|
|
Array.Sort(obstacles, Tile.CompareByX); |
|
|
@ -79,11 +83,10 @@ namespace SemiColinGames { |
|
|
|
CollisionTargets[0] = new AABB(new Vector2(-1, 0), new Vector2(1, float.MaxValue)); |
|
|
|
|
|
|
|
// Now add all the normal collisionTargets for every obstacle.
|
|
|
|
Vector2 halfSize = new Vector2(TileSize / 2, TileSize / 2); |
|
|
|
for (int i = 0; i < obstacles.Length; i++) { |
|
|
|
Vector2 center = new Vector2( |
|
|
|
obstacles[i].Position.Left + halfSize.X, obstacles[i].Position.Top + halfSize.Y); |
|
|
|
CollisionTargets[i + 1] = new AABB(center, halfSize, obstacles[i]); |
|
|
|
Tile obstacle = obstacles[i]; |
|
|
|
CollisionTargets[i + 1] = new AABB( |
|
|
|
obstacle.Position.Center.ToVector2(), obstacle.Position.HalfSize(), obstacle); |
|
|
|
} |
|
|
|
|
|
|
|
// Add a final synthetic collisionTarget on the right side of the world.
|
|
|
|