public ConduitFlowVisualizer(ConduitFlow flow_manager, Game.ConduitVisInfo vis_info, string overlay_sound, Tuning tuning)
 {
     flowManager    = flow_manager;
     visInfo        = vis_info;
     overlaySound   = overlay_sound;
     this.tuning    = tuning;
     movingBallMesh = new ConduitFlowMesh();
     staticBallMesh = new ConduitFlowMesh();
     RenderMeshTask.Ball.InitializeResources();
 }
 public void Finish(ConduitFlowMesh moving_ball_mesh, ConduitFlowMesh static_ball_mesh, Vector3 camera_pos, ConduitFlowVisualizer visualizer)
 {
     for (int i = 0; i != moving_balls.Count; i++)
     {
         moving_balls[i].Consume(moving_ball_mesh);
     }
     moving_balls.Recycle();
     for (int j = 0; j != static_balls.Count; j++)
     {
         static_balls[j].Consume(static_ball_mesh);
     }
     static_balls.Recycle();
     if (visualizer != null)
     {
         foreach (ConduitFlow.Conduit moving_conduit in moving_conduits)
         {
             visualizer.AddAudioSource(moving_conduit, camera_pos);
         }
     }
     moving_conduits.Recycle();
 }
            public void Consume(ConduitFlowMesh mesh)
            {
                UVPack uVPack = GetUVPack(direction);

                mesh.AddQuad(pos, color, size, (float)(foreground ? 1 : 0), (float)(highlight ? 1 : 0), uVPack.bl, uVPack.tl, uVPack.br, uVPack.tr);
            }