/// <summary>
 /// Animation generator function
 /// </summary>
 private void GenerateAnimationWorker( IProgressMonitor monitor, WaveAnimationParameters model )
 {
     WaveAnimationGenerator generator = new WaveAnimationGenerator( );
     WaveAnimation animation = generator.GenerateHeightmapSequence( model, monitor );
     m_Marshaller.PostAction( m_View.ShowAnimation, animation );
 }
        /// <summary>
        /// Executes this task
        /// </summary>
        public override bool Execute( )
        {
            string definitionFile = SourceFile.ItemSpec;

            WaveAnimationParameters buildParams;
            using ( FileStream stream = new FileStream( definitionFile, FileMode.Open, FileAccess.Read ) )
            {
                buildParams = ( WaveAnimationParameters )s_BuildParametersSerializer.Deserialize( stream );
            }

            //bool dependenciesAreUpToDate = true;
            //DateTime inputTimestamp = File.GetLastWriteTime( SourceFile.ItemSpec );
            //for ( int frame = 0; frame < buildParams.Frames; ++frame )
            //{
            //    string filename = Path.Combine( OutputDirectory.ItemSpec, frame + ".png" );
            //    if ( !File.Exists( filename ) || File.GetLastWriteTime( filename ) < inputTimestamp )
            //    {
            //        dependenciesAreUpToDate = false;
            //        break;
            //    }
            //}
            //if ( dependenciesAreUpToDate )
            //{
            //    Log.LogMessage( "All dependencies for wave animation \"{0}\" are up to date", SourceFile.ItemSpec );
            //    return true;
            //}

            //	Bitmap[] animationBitmaps = new WaveAnimationGenerator( ).GenerateHeightmapSequence( buildParams );

            //if ( !Directory.Exists( OutputDirectory.ItemSpec ) )
            //{
            //    Directory.CreateDirectory( OutputDirectory.ItemSpec );
            //}

            //for ( int frame = 0; frame < animationBitmaps.Length; ++frame )
            //{
            //    animationBitmaps[ frame ].Save( Path.Combine( OutputDirectory.ItemSpec, frame + ".png" ), ImageFormat.Png );
            //}
            Log.LogMessage( "Generating wave animation as " + ( buildParams.StoreHeights ? "heightmaps" : "bump maps" ) );
            WaveAnimation animation = new WaveAnimationGenerator( ).GenerateSequence( buildParams, null );
            animation.Save( OutputFile.ItemSpec );
            //	animation.Frames[0].Save( OutputFile.ItemSpec + ".0.png" );

            return true;
        }