示例#1
0
 private GenerationJob ReadJob(CsvReader reader, ParameterSetting[] parameters)
 {
     while (reader.LoadLine(out int columns))
     {
         if (columns >= parameters.Length + 2)
         {
             var localParameters = CloneParameters(parameters);
             var job             = new Job()
             {
                 ProcessedBy = null,
                 Processed   = false,
                 Processing  = false,
                 Parameters  = localParameters
             };
             reader.Get(out int generation, 0);
             GenerationJob genJob = new GenerationJob(job, generation);
             // we don't load the generation
             reader.Get(out job.Value, 1);
             for (int i = 0; i < localParameters.Length; i++)
             {
                 reader.Get(out localParameters[i].Current, i + 2);
             }
             return(genJob);
         }
     }
     return(null);
 }
示例#2
0
    public GenJobInfo(Chunk chunk)
    {
        this.chunk = chunk;

        GenerationJob job = new GenerationJob {
            blocks        = chunk.blocks,
            lights        = chunk.lights,
            chunkWorldPos = chunk.GetWorldPos(),
        };

        handle = job.Schedule();

        //Assert.IsTrue(!genInfo.handle.IsCompleted);
    }
示例#3
0
 private VoxelModelGenerationRequest(GenerationJob generator, bool async)
 {
     m_Generator = generator;
     if (async)
     {
         m_Task = TaskFactory.Instance.StartNew(generator);
     }
     else
     {
         m_Task = null;
         generator.ExecuteTask();
     }
     m_OutputMesh = null;
 }
示例#4
0
        public Mesh GetMeshOutput()
        {
            if (m_OutputMesh == null)
            {
                if (m_Task != null)
                {
                    m_Task.AwaitCompletion();
                }

                m_OutputMesh = m_Generator.UploadMesh();

                // Release everything except the output
                m_Task      = null;
                m_Generator = default;
            }

            return(m_OutputMesh);
        }
示例#5
0
 private GenerationJob ReadJob(CsvReader reader, ParameterSetting[] parameters)
 {
     int columns;
     while ( reader.LoadLine( out columns ) )
     {
         if ( columns >= parameters.Length + 2 )
         {
             var localParameters = CloneParameters( parameters );
             var job = new Job()
             {
                 ProcessedBy = null,
                 Processed = false,
                 Processing = false,
                 Parameters = localParameters
             };
             int generation;
             reader.Get( out generation, 0 );
             GenerationJob genJob = new GenerationJob( job, generation );
             // we don't load the generation
             reader.Get( out job.Value, 1 );
             for ( int i = 0; i < localParameters.Length; i++ )
             {
                 reader.Get( out localParameters[i].Current, i + 2 );
             }
             return genJob;
         }
     }
     return null;
 }
示例#6
0
 private void OutputBest(GenerationJob[] best)
 {
     if ( best.Length == 0 ) return;
     using (var writer = new StreamWriter( this.OutputResultFile.GetFilePath() ))
     {
         writer.Write( "Generation,Value" );
         //write header
         foreach ( var parameter in best[0].Job.Parameters )
         {
             foreach ( var name in parameter.Names )
             {
                 writer.Write( ',' );
                 writer.Write( name );
             }
         }
         writer.WriteLine();
         for ( int i = 0; i < best.Length; i++ )
         {
             writer.Write( best[i].Generation );
             writer.Write( ',' );
             writer.Write( best[i].Job.Value );
             for ( int j = 0; j < best[i].Job.Parameters.Length; j++ )
             {
                 for ( int k = 0; k < best[i].Job.Parameters[j].Names.Length; k++ )
                 {
                     writer.Write( ',' );
                     writer.Write( best[i].Job.Parameters[j].Current );
                 }
             }
             writer.WriteLine();
         }
     }
 }