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); }