private static void ReadFeatures(ITntSource tnt, MapModel model, List <string> features)
        {
            var enumer = tnt.EnumerateAttrs().GetEnumerator();

            for (var y = 0; y < tnt.DataHeight * 2; y++)
            {
                for (var x = 0; x < tnt.DataWidth * 2; x++)
                {
                    enumer.MoveNext();
                    model.Tile.HeightGrid.Set(x, y, enumer.Current.Height);

                    switch (enumer.Current.Feature)
                    {
                    case TileAttr.FeatureNone:
                    case TileAttr.FeatureUnknown:
                        break;

                    case TileAttr.FeatureVoid:
                        model.Voids.Set(x, y, true);
                        break;

                    default:
                        var inst = new FeatureInstance(Guid.NewGuid(), features[enumer.Current.Feature], x, y);
                        model.AddFeatureInstance(inst);
                        break;
                    }
                }
            }
        }
        public MapModel FromTntAndOta(ITntSource tnt, TdfNode ota)
        {
            var attrs = MapAttributes.Load(ota);
            var model = new MapModel(tnt.DataWidth, tnt.DataHeight, attrs);

            this.ReadTnt(tnt, model);

            var schemaData = ota.Keys["GlobalHeader"].Keys["Schema 0"];

            if (schemaData.Keys.ContainsKey("features"))
            {
                var featureData = schemaData.Keys["features"];
                foreach (var data in featureData.Keys)
                {
                    var node = data.Value;
                    var x    = TdfConvert.ToInt32(node.Entries["XPos"]);
                    var y    = TdfConvert.ToInt32(node.Entries["ZPos"]);
                    var name = node.Entries["Featurename"];

                    if (!model.HasFeatureInstanceAt(x, y))
                    {
                        var inst = new FeatureInstance(Guid.NewGuid(), name, x, y);
                        model.AddFeatureInstance(inst);
                    }
                }
            }

            return(model);
        }