From b1dcd100a2ec43448739a0225536de148429c380 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Tue, 5 Feb 2013 11:01:46 +0000 Subject: [PATCH] meshviewer: use our File class to read the mesh data. --- test/MeshViewer.cpp | 65 +++++++++++---------------------------------- 1 file changed, 16 insertions(+), 49 deletions(-) diff --git a/test/MeshViewer.cpp b/test/MeshViewer.cpp index 27055e68..9e3a4f2b 100644 --- a/test/MeshViewer.cpp +++ b/test/MeshViewer.cpp @@ -62,7 +62,8 @@ public: m_camera->SetOrtho((float)video_size.x, (float)video_size.y, .1f, 1000.f); } - MeshViewer(char *file_buffer = "MeshViewerBuffer.txt") + MeshViewer(char const *file_name = "MeshViewerBuffer.txt") + : m_file_name(file_name) { //Input setup Input::LinkActionToKey(IPT_CAM_RESET, Key::Return); @@ -133,20 +134,7 @@ public: mat4::rotate(m_angle, vec3(0, 1, 0)) * mat4::rotate(m_mesh_rotation.y, vec3(0, 1, 0)); - //File management -#ifdef HAVE_STDIO_H - m_file_buffer = fopen("MeshViewerBuffer.txt", "r"); - - if (!m_file_buffer) - Ticker::Shutdown(); -#else //Full FAIL, kill the viewer - Ticker::Shutdown(); -#endif - - m_last_stream_size = 0; - m_last_stream_cmd << 0; - - m_stream_update_time = 0.0f; + m_stream_update_time = 2.0f; m_stream_update_timer = 1.0f; } @@ -155,9 +143,6 @@ public: Ticker::Unref(m_camera); for (int i = 0; i < m_lights.Count(); ++i) Ticker::Unref(m_lights[i]); -#ifdef HAVE_STDIO_H - fclose(m_file_buffer); -#endif } void SetDefaultMeshTransform() @@ -273,38 +258,23 @@ public: m_stream_update_time = m_stream_update_timer + 1.0f; m_stream_update_time += seconds; -#ifdef HAVE_STDIO_H - // obtain file size: - fseek(m_file_buffer, 0 , SEEK_END); - long new_stream_size = ftell(m_file_buffer); - rewind(m_file_buffer); -#else - long new_stream_size = 0; -#endif - - if (new_stream_size && (new_stream_size != m_last_stream_size || m_stream_update_time > m_stream_update_timer)) + if (m_stream_update_time > m_stream_update_timer) { - Array new_stream_cmd; - m_stream_update_time = .0f; - - //Reserve the needed datas & read the file - new_stream_cmd.Resize((int)new_stream_size); -#ifdef HAVE_STDIO_H - size_t result = fread(&new_stream_cmd[0], 1, new_stream_size, m_file_buffer); -#else -#endif + m_stream_update_time = 0.f; + + File f; + f.Open(m_file_name.C(), FileAccess::Read); + String cmd = f.ReadString(); + f.Close(); - //if the new cmd is different from the previous one - if (new_stream_cmd.Count() != m_last_stream_cmd.Count() || - strcmp(&new_stream_cmd[0], &m_last_stream_cmd[0])) + if (cmd.Count() + && (!m_cmdlist.Count() || cmd != m_cmdlist.Last())) { - //store the current datas - m_last_stream_cmd = new_stream_cmd; - m_last_stream_size = new_stream_size; + m_cmdlist << cmd; //Create a new mesh m_meshes.Push(EasyMesh(), false, .0f, vec3(.0f)); - m_meshes.Last().m1.Compile(&new_stream_cmd[0]); + m_meshes.Last().m1.Compile(cmd.C()); } } } @@ -370,11 +340,8 @@ private: vec2 m_mesh_offset; //Mesh Offset after first mesh (x: offset, y: scale) //File data -#ifdef HAVE_STDIO_H - FILE * m_file_buffer; -#endif - long m_last_stream_size; - Array m_last_stream_cmd; + String m_file_name; + Array m_cmdlist; float m_stream_update_time; float m_stream_update_timer;