Beispiel #1
0
        public static List <ICollisionObject> MapObjects(TilePos tile)
        {
            List <ICollisionObject> result = new List <ICollisionObject>();

            foreach (TileDir dir in gmap.ReverseDirs(tile))
            {
                result.Add(new CollisionSide(tile, dir));
            }

            HashSet <TileDir> edgeDirs = new HashSet <TileDir>();

            foreach (TileDir dir1 in gmap.Dirs(tile))
            {
                foreach (TileDir dir2 in gmap.Dirs(tile))
                {
                    if (dir1 != dir2)
                    {
                        edgeDirs.Add(dir1 + dir2);
                    }
                }
            }
            edgeDirs.ExceptWith(new HashSet <TileDir> {
                TileDir.Zero
            });

            foreach (TileDir dir in edgeDirs)
            {
                result.Add(new CollisionCircle(tile.ToVector(0.5 * (1 + dir.X), 0.5 * (1 + dir.Y)), game.TrackTileMargin));
            }

            return(result);
        }