AddAndLinkTiledNodeWorld() публичный Метод

public AddAndLinkTiledNodeWorld ( float worldX, float worldY ) : PositionedNode
worldX float
worldY float
Результат PositionedNode
Пример #1
0
        public static TileNodeNetwork CreateFrom(LayeredTileMap layeredTileMap, DirectionalType directionalType,
                                                 Func <List <TMXGlueLib.DataTypes.NamedValue>, bool> predicate)
        {
            var numberOfTilesWide =
                MathFunctions.RoundToInt(layeredTileMap.Width / layeredTileMap.WidthPerTile.Value);
            var numberOfTilesTall =
                MathFunctions.RoundToInt(layeredTileMap.Height / layeredTileMap.HeightPerTile.Value);

            var tileWidth = layeredTileMap.WidthPerTile.Value;

            var dimensionHalf = tileWidth / 2.0f;

            TileNodeNetwork nodeNetwork = new TileNodeNetwork(
                0 + dimensionHalf,
                -layeredTileMap.Height + tileWidth / 2.0f,
                tileWidth,
                numberOfTilesWide,
                numberOfTilesTall,
                directionalType);


            var properties = layeredTileMap.TileProperties;

            foreach (var kvp in properties)
            {
                string name        = kvp.Key;
                var    namedValues = kvp.Value;

                if (predicate(namedValues))
                {
                    foreach (var layer in layeredTileMap.MapLayers)
                    {
                        var dictionary = layer.NamedTileOrderedIndexes;

                        if (dictionary.ContainsKey(name))
                        {
                            var indexList = dictionary[name];

                            foreach (var index in indexList)
                            {
                                float left;
                                float bottom;
                                layer.GetBottomLeftWorldCoordinateForOrderedTile(index, out left, out bottom);

                                var centerX = left + dimensionHalf;
                                var centerY = bottom + dimensionHalf;

                                nodeNetwork.AddAndLinkTiledNodeWorld(centerX, centerY);
                            }
                        }
                    }
                }
            }

            nodeNetwork.Visible = true;

            return(nodeNetwork);
        }
Пример #2
0
        public static void FillFromPredicate(this TileNodeNetwork nodeNetwork, LayeredTileMap layeredTileMap, Func <List <NamedValue>, bool> predicate)
        {
            var dimensionHalf = layeredTileMap.WidthPerTile.Value / 2.0f;

            var properties = layeredTileMap.TileProperties;

            foreach (var kvp in properties)
            {
                string name        = kvp.Key;
                var    namedValues = kvp.Value;

                if (predicate(namedValues))
                {
                    foreach (var layer in layeredTileMap.MapLayers)
                    {
                        var dictionary = layer.NamedTileOrderedIndexes;

                        if (dictionary.ContainsKey(name))
                        {
                            var indexList = dictionary[name];

                            foreach (var index in indexList)
                            {
                                float left;
                                float bottom;
                                layer.GetBottomLeftWorldCoordinateForOrderedTile(index, out left, out bottom);

                                var centerX = left + dimensionHalf;
                                var centerY = bottom + dimensionHalf;

                                nodeNetwork.AddAndLinkTiledNodeWorld(centerX, centerY);
                            }
                        }
                    }
                }
            }
        }