/// <summary> /// Setup constructor /// </summary> /// <param name="biomes">Biome list</param> public BiomeListLatitudeDistributionModel( BiomeListModel biomes ) { Arguments.CheckNotNull( biomes, "biomes" ); m_Biomes = biomes; m_Biomes.Models.ListChanged += Models_ListChanged; float latitudeStep = 1.0f / biomes.Models.Count; for ( int biomeIndex = 0; biomeIndex < biomes.Models.Count; ++biomeIndex ) { BiomeModel biome = biomes.Models[ biomeIndex ]; float minLatitude = biomeIndex * latitudeStep; float maxLatitude = ( biomeIndex + 1 ) * latitudeStep; BiomeLatitudeRangeDistribution distribution = new BiomeLatitudeRangeDistribution( biome, minLatitude, maxLatitude ); distribution.DistributionChanged += OnDistributionChanged; m_Distributions.Add( distribution ); } }
/// <summary> /// Called when a distribution changes /// </summary> private void OnDistributionChanged( BiomeLatitudeRangeDistribution distribution ) { if ( DistributionChanged != null ) { DistributionChanged( distribution ); } }
/// <summary> /// Adds a distribution of the model /// </summary> private void AddDistribution( int insertAt, BiomeLatitudeRangeDistribution distribution ) { m_Distributions.Insert( insertAt, distribution ); if ( DistributionAdded != null ) { DistributionAdded( distribution ); } distribution.DistributionChanged += OnDistributionChanged; }
/// <summary> /// Splits this distribution in two, changing this distribution in place and returning /// a new distribution representing the other area /// </summary> public IBiomeDistribution Split( BiomeModel model ) { float midLatitude = ( m_MinLatitude + m_MaxLatitude ) / 2; BiomeLatitudeRangeDistribution distribution = new BiomeLatitudeRangeDistribution( model, midLatitude, m_MaxLatitude ); m_MaxLatitude = midLatitude; OnDistributionChanged( ); return distribution; }
private void OnDistributionRemoved( BiomeLatitudeRangeDistribution distribution ) { m_View.RemoveDistribution( distribution ); }
private void OnDistributionChanged( BiomeLatitudeRangeDistribution distribution ) { m_View.RefreshDistribution( distribution ); }
private void OnDistributionAdded( BiomeLatitudeRangeDistribution distribution ) { m_View.AddDistribution( distribution ); }