| @@ -62,7 +62,8 @@ public: | |||||
| m_camera->SetOrtho((float)video_size.x, (float)video_size.y, .1f, 1000.f); | 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 setup | ||||
| Input::LinkActionToKey(IPT_CAM_RESET, Key::Return); | Input::LinkActionToKey(IPT_CAM_RESET, Key::Return); | ||||
| @@ -133,20 +134,7 @@ public: | |||||
| mat4::rotate(m_angle, vec3(0, 1, 0)) * | mat4::rotate(m_angle, vec3(0, 1, 0)) * | ||||
| mat4::rotate(m_mesh_rotation.y, 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; | m_stream_update_timer = 1.0f; | ||||
| } | } | ||||
| @@ -155,9 +143,6 @@ public: | |||||
| Ticker::Unref(m_camera); | Ticker::Unref(m_camera); | ||||
| for (int i = 0; i < m_lights.Count(); ++i) | for (int i = 0; i < m_lights.Count(); ++i) | ||||
| Ticker::Unref(m_lights[i]); | Ticker::Unref(m_lights[i]); | ||||
| #ifdef HAVE_STDIO_H | |||||
| fclose(m_file_buffer); | |||||
| #endif | |||||
| } | } | ||||
| void SetDefaultMeshTransform() | void SetDefaultMeshTransform() | ||||
| @@ -273,38 +258,23 @@ public: | |||||
| m_stream_update_time = m_stream_update_timer + 1.0f; | m_stream_update_time = m_stream_update_timer + 1.0f; | ||||
| m_stream_update_time += seconds; | 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<char> 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 | //Create a new mesh | ||||
| m_meshes.Push(EasyMesh(), false, .0f, vec3(.0f)); | 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) | vec2 m_mesh_offset; //Mesh Offset after first mesh (x: offset, y: scale) | ||||
| //File data | //File data | ||||
| #ifdef HAVE_STDIO_H | |||||
| FILE * m_file_buffer; | |||||
| #endif | |||||
| long m_last_stream_size; | |||||
| Array<char> m_last_stream_cmd; | |||||
| String m_file_name; | |||||
| Array<String> m_cmdlist; | |||||
| float m_stream_update_time; | float m_stream_update_time; | ||||
| float m_stream_update_timer; | float m_stream_update_timer; | ||||