2 using System.Collections.Generic;
3 using System.Collections.ObjectModel;
6 using Vintagestory.API.MathTools;
13 public struct ColumnMeta
16 public Vec2i Location;
19 public TimeSpan ChunkAge;//In game, calendar?
22 public float Temperature;// Temperature
25 public ushort YMax;// Y feature height
28 public Dictionary<int,uint> RockRatio;//(surface) Geographic region (rock) Ratio. [BlockID * count]
31 public float Fertility;
34 public float ForestDensity;
37 public float Rainfall;
40 public float ShrubDensity;
42 public ColumnMeta(Vec2i loc)
45 ChunkAge = TimeSpan.Zero;
48 RockRatio = new Dictionary<int, uint>( 10 );
56 public class ColumnsMetadata : KeyedCollection<Vec2i, ColumnMeta>
58 private ColumnsMetadata( )
60 throw new NotSupportedException();
63 public ColumnsMetadata(Vec2i startChunkColumn)
65 North_mostChunk = startChunkColumn.Y;
66 South_mostChunk = startChunkColumn.Y;
67 East_mostChunk = startChunkColumn.X;
68 West_mostChunk = startChunkColumn.X;
71 public int North_mostChunk {
75 public int South_mostChunk {
79 public int East_mostChunk {
83 public int West_mostChunk {
87 protected override Vec2i GetKeyForItem(ColumnMeta item)
92 internal void Update(ColumnMeta metaData)
94 if (this.Contains(metaData.Location)) {
95 this.Remove(metaData.Location);
104 public new void Add(ColumnMeta newItem)
106 if (North_mostChunk > newItem.Location.Y) {
107 North_mostChunk = newItem.Location.Y;
110 if (South_mostChunk < newItem.Location.Y) {
111 South_mostChunk = newItem.Location.Y;
114 if (East_mostChunk < newItem.Location.X) {
115 East_mostChunk = newItem.Location.X;
118 if (West_mostChunk > newItem.Location.X) {
119 West_mostChunk = newItem.Location.X;