RealWorldTerrainUnzipHeightmapPhase.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* INFINITY CODE 2013-2019 */
  2. /* http://www.infinity-code.com */
  3. using System.Threading;
  4. using InfinityCode.RealWorldTerrain.Generators;
  5. namespace InfinityCode.RealWorldTerrain.Phases
  6. {
  7. public class RealWorldTerrainUnzipHeightmapPhase : RealWorldTerrainPhase
  8. {
  9. private RealWorldTerrainElevationGenerator activeElevation;
  10. public override string title
  11. {
  12. get { return "Unzip Elevations..."; }
  13. }
  14. public override void Enter()
  15. {
  16. if (activeElevation != null && !activeElevation.unziped) return;
  17. if (index >= RealWorldTerrainElevationGenerator.elevations.Count)
  18. {
  19. Complete();
  20. return;
  21. }
  22. activeElevation = RealWorldTerrainElevationGenerator.elevations[index];
  23. progress = index / (float)RealWorldTerrainElevationGenerator.elevations.Count;
  24. if (activeElevation.unziped)
  25. {
  26. index++;
  27. return;
  28. }
  29. RealWorldTerrainElevationGenerator generator = activeElevation;
  30. if (generateInThread) new Thread(generator.UnzipHeightmap).Start();
  31. else generator.UnzipHeightmap();
  32. }
  33. public override void Finish()
  34. {
  35. activeElevation = null;
  36. }
  37. public override void Start()
  38. {
  39. if (prefs.elevationProvider != RealWorldTerrainElevationProvider.SRTM &&
  40. prefs.elevationProvider != RealWorldTerrainElevationProvider.SRTM30)
  41. {
  42. Complete();
  43. }
  44. }
  45. }
  46. }