Changeset 2364


Ignore:
Timestamp:
Feb 5, 2013, 12:01:46 PM (6 years ago)
Author:
sam
Message:

meshviewer: use our File class to read the mesh data.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/MeshViewer.cpp

    r2356 r2364  
    6363    }
    6464
    65     MeshViewer(char *file_buffer = "MeshViewerBuffer.txt")
     65    MeshViewer(char const *file_name = "MeshViewerBuffer.txt")
     66      : m_file_name(file_name)
    6667    {
    6768        //Input setup
     
    134135                mat4::rotate(m_mesh_rotation.y, vec3(0, 1, 0));
    135136
    136         //File management
    137 #ifdef HAVE_STDIO_H
    138         m_file_buffer = fopen("MeshViewerBuffer.txt", "r");
    139 
    140         if (!m_file_buffer)
    141             Ticker::Shutdown();
    142 #else //Full FAIL, kill the viewer
    143         Ticker::Shutdown();
    144 #endif
    145 
    146         m_last_stream_size = 0;
    147         m_last_stream_cmd << 0;
    148 
    149         m_stream_update_time = 0.0f;
     137        m_stream_update_time = 2.0f;
    150138        m_stream_update_timer = 1.0f;
    151139    }
     
    156144        for (int i = 0; i < m_lights.Count(); ++i)
    157145            Ticker::Unref(m_lights[i]);
    158 #ifdef HAVE_STDIO_H
    159         fclose(m_file_buffer);
    160 #endif
    161146    }
    162147
     
    274259        m_stream_update_time += seconds;
    275260
    276 #ifdef HAVE_STDIO_H
    277         // obtain file size:
    278         fseek(m_file_buffer, 0 , SEEK_END);
    279         long new_stream_size = ftell(m_file_buffer);
    280         rewind(m_file_buffer);
    281 #else
    282         long new_stream_size = 0;
    283 #endif
    284 
    285         if (new_stream_size && (new_stream_size != m_last_stream_size || m_stream_update_time > m_stream_update_timer))
    286         {
    287             Array<char> new_stream_cmd;
    288             m_stream_update_time = .0f;
    289 
    290             //Reserve the needed datas & read the file
    291             new_stream_cmd.Resize((int)new_stream_size);
    292 #ifdef HAVE_STDIO_H
    293             size_t result = fread(&new_stream_cmd[0], 1, new_stream_size, m_file_buffer);
    294 #else
    295 #endif
    296 
    297             //if the new cmd is different from the previous one
    298             if (new_stream_cmd.Count() != m_last_stream_cmd.Count() ||
    299                 strcmp(&new_stream_cmd[0], &m_last_stream_cmd[0]))
     261        if (m_stream_update_time > m_stream_update_timer)
     262        {
     263            m_stream_update_time = 0.f;
     264
     265            File f;
     266            f.Open(m_file_name.C(), FileAccess::Read);
     267            String cmd = f.ReadString();
     268            f.Close();
     269
     270            if (cmd.Count()
     271                 && (!m_cmdlist.Count() || cmd != m_cmdlist.Last()))
    300272            {
    301                 //store the current datas
    302                 m_last_stream_cmd  = new_stream_cmd;
    303                 m_last_stream_size = new_stream_size;
     273                m_cmdlist << cmd;
    304274
    305275                //Create a new mesh
    306276                m_meshes.Push(EasyMesh(), false, .0f, vec3(.0f));
    307                 m_meshes.Last().m1.Compile(&new_stream_cmd[0]);
     277                m_meshes.Last().m1.Compile(cmd.C());
    308278            }
    309279        }
     
    371341
    372342    //File data
    373 #ifdef HAVE_STDIO_H
    374     FILE *          m_file_buffer;
    375 #endif
    376     long            m_last_stream_size;
    377     Array<char>     m_last_stream_cmd;
     343    String          m_file_name;
     344    Array<String>   m_cmdlist;
    378345    float           m_stream_update_time;
    379346    float           m_stream_update_timer;
Note: See TracChangeset for help on using the changeset viewer.