From 5c62149f554ceeeeed4f2eb3d9c65f17b6731dea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20=E2=80=98Touky=E2=80=99=20Huet?=
 <huet.benjamin@gmail.com>
Date: Thu, 3 Oct 2013 14:31:57 +0000
Subject: [PATCH] MV : added small test bench.

---
 test/meshviewer.cpp | 83 ++++++++++++++++++++++++++++++---------------
 1 file changed, 55 insertions(+), 28 deletions(-)

diff --git a/test/meshviewer.cpp b/test/meshviewer.cpp
index dee2bc4b..a0649765 100644
--- a/test/meshviewer.cpp
+++ b/test/meshviewer.cpp
@@ -124,6 +124,7 @@ public:
       : m_file_name(file_name)
     {
         m_init = false;
+        m_first_tick = false;
     }
 
     ~MeshViewer()
@@ -236,11 +237,30 @@ public:
         m_camera->UseShift(true);
         g_scene->PushCamera(m_camera);
 
+        m_ssetup = nullptr;
+
         //Lights setup
         m_ssetup = new SceneSetup();
+#define MV_TEST 0
+#if MV_TEST
+        m_ssetup->m_lights << new Light();
+        m_ssetup->m_lights.Last()->SetPosition(vec4(4.f, -1.f, -4.f, 0.f));
+        m_ssetup->m_lights.Last()->SetColor(vec4(.0f, .2f, .5f, 1.f));
+        m_ssetup->m_lights << new Light();
+        m_ssetup->m_lights.Last()->SetPosition(vec4(8.f, 2.f, 6.f, 0.f));
+        m_ssetup->m_lights.Last()->SetColor(vec4(1.f));
+        EasyMesh* em = new EasyMesh();
+        if (em->Compile("sc#fff ab 1"))
+        {
+            if (m_mesh_id == m_meshes.Count() - 1)
+                m_mesh_id++;
+            m_meshes.Push(em);
+        }
+#else
         m_ssetup->Compile(" addlight 0.0 position (4 -1 -4) color (.0 .2 .5 1)"
                           " addlight 0.0 position (8 2 6) color #ffff"
                           " custom setmesh \"sc#fff ab 1\"");
+#endif //MV_TEST
         m_ssetup->Startup();
 
         //stream update
@@ -261,6 +281,8 @@ public:
         if (!m_init)
             return;
 
+        m_first_tick = true;
+
         //TODO : This should probably be "standard LoL behaviour"
 #if NO_NACL_EM
         {
@@ -449,45 +471,49 @@ public:
                 SceneSetup* new_ssetup = new SceneSetup();
                 if (new_ssetup->Compile(mesh.C()))
                 {
-                    delete(m_ssetup);
+                    if (m_ssetup)
+                        delete(m_ssetup);
                     m_ssetup = new_ssetup;
                     m_ssetup->Startup();
                     m_mat_prev = mat4(quat::fromeuler_xyz(vec3::zero));
-                    for (int i = 0; i < m_ssetup->m_custom_cmd.Count(); ++i)
-                    {
-                        if (m_ssetup->m_custom_cmd[i].m1 == "setmesh")
-                        {
-                            //Create a new mesh
-                            EasyMesh* em = new EasyMesh();
-                            if (em->Compile(m_ssetup->m_custom_cmd[i].m2.C()))
-                            {
-                                if (m_mesh_id == m_meshes.Count() - 1)
-                                    m_mesh_id++;
-                                m_meshes.Push(em);
-                            }
-                            else
-                                delete(em);
-                        }
-                    }
-                    m_ssetup->m_custom_cmd.Empty();
                 }
+                else
+                    delete(new_ssetup);
+            }
+        }
+        //Check the custom cmd even if we don't have new messages.
+        for (int i = 0; i < m_ssetup->m_custom_cmd.Count(); ++i)
+        {
+            if (m_ssetup->m_custom_cmd[i].m1 == "setmesh")
+            {
+                //Create a new mesh
+                EasyMesh* em = new EasyMesh();
+                if (em->Compile(m_ssetup->m_custom_cmd[i].m2.C()))
+                {
+                    if (m_mesh_id == m_meshes.Count() - 1)
+                        m_mesh_id++;
+                    m_meshes.Push(em);
+                }
+                else
+                    delete(em);
             }
         }
+        m_ssetup->m_custom_cmd.Empty();
 
 #if NACL_EM
-        if (m_stream_update_time > .0f)
-        {
-            m_stream_update_time = -1.f;
-            MessageService::Send(MessageBucket::AppIn,
-                             " addlight 0.0 position (4 -1 -4) color (.0 .2 .5 1) \
-                               addlight 0.0 position (8 2 6) color #ffff \
-                               custom setmesh \"[sc#f8f ab 1]\"");
+        //if (m_stream_update_time > .0f)
+        //{
+        //    m_stream_update_time = -1.f;
+        //    MessageService::Send(MessageBucket::AppIn,
+        //                     " addlight 0.0 position (4 -1 -4) color (.0 .2 .5 1) \
+        //                       addlight 0.0 position (8 2 6) color #ffff \
+        //                       custom setmesh \"[sc#f8f ab 1]\"");
 //            MessageService::Send(MessageBucket::AppIn, "[sc#f8f ab 1]");
 //            MessageService::Send(MessageBucket::AppIn, "[sc#f8f ab 1 splt 4 twy 90]");
 //            MessageService::Send(MessageBucket::AppIn, "[sc#8ff afcb 1 1 1 0]");
 //            MessageService::Send(MessageBucket::AppIn, "[sc#ff8 afcb 1 1 1 0]");
-        }
-#elif WIN32
+        //}
+#elif WIN32 && 0
         //--
         //File management
         //--
@@ -520,7 +546,7 @@ public:
     {
         WorldEntity::TickDraw(seconds);
 
-        if (!m_init)
+        if (!m_init || !m_first_tick)
             return;
 
         //TODO : This should probably be "standard LoL behaviour"
@@ -607,6 +633,7 @@ private:
     mat4                m_mat;
     mat4                m_mat_prev;
     bool                m_init;
+    bool                m_first_tick;
 
     //Camera Setup
     Camera *            m_camera;