|
|
@@ -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<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 |
|
|
|
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<char> m_last_stream_cmd; |
|
|
|
String m_file_name; |
|
|
|
Array<String> m_cmdlist; |
|
|
|
float m_stream_update_time; |
|
|
|
float m_stream_update_timer; |
|
|
|
|
|
|
|