public T this[TilePosition p] { get { TilePosition rounded = p.Round(); return(this [(int)rounded.GetX(), (int)rounded.GetY(), (int)rounded.GetZ()]); } set { TilePosition rounded = p.Round(); this [(int)rounded.GetX(), (int)rounded.GetY(), (int)rounded.GetZ()] = value; } }