| @@ -13,16 +13,11 @@ function CmdVarObj() { } | |||||
| function CmdVar(m_type, m_syntax) | function CmdVar(m_type, m_syntax) | ||||
| { | { | ||||
| var current_dict = GetCmdDictionnary(); | var current_dict = GetCmdDictionnary(); | ||||
| new_obj = new CmdVarObj(); | new_obj = new CmdVarObj(); | ||||
| new_obj.m_type = m_type; | new_obj.m_type = m_type; | ||||
| new_obj.m_syntax = m_syntax; | new_obj.m_syntax = m_syntax; | ||||
| new_obj.ToString = function() | |||||
| { | |||||
| var res = m_type + ' '; | |||||
| if (m_syntax != undefined) | |||||
| for (var i = 0; i < m_syntax.length; i++) | |||||
| res += m_syntax[i] + ' '; | |||||
| } | |||||
| current_dict.m_vars[current_dict.m_vars.length] = new_obj; | current_dict.m_vars[current_dict.m_vars.length] = new_obj; | ||||
| } | } | ||||
| @@ -33,15 +28,11 @@ function CmdArgObj() { } | |||||
| function CmdArg(m_type, m_name, m_optional) | function CmdArg(m_type, m_name, m_optional) | ||||
| { | { | ||||
| new_obj = new CmdArgObj(); | new_obj = new CmdArgObj(); | ||||
| new_obj.m_type = m_type; | new_obj.m_type = m_type; | ||||
| new_obj.m_name = m_name; | new_obj.m_name = m_name; | ||||
| new_obj.m_optional = m_optional; | new_obj.m_optional = m_optional; | ||||
| new_obj.ToString = function() | |||||
| { | |||||
| if (m_optional != undefined) | |||||
| return m_type + ' ' + m_name + ' = ' + m_optional; | |||||
| return m_type + ' ' + m_name; | |||||
| } | |||||
| return new_obj; | return new_obj; | ||||
| } | } | ||||
| @@ -52,34 +43,12 @@ function CmdTypeObj() { } | |||||
| function CmdType(m_name, m_comment, m_arg) | function CmdType(m_name, m_comment, m_arg) | ||||
| { | { | ||||
| var current_dict = GetCmdDictionnary(); | var current_dict = GetCmdDictionnary(); | ||||
| new_obj = new CmdTypeObj(); | new_obj = new CmdTypeObj(); | ||||
| new_obj.m_name = m_name; | new_obj.m_name = m_name; | ||||
| new_obj.m_comment = m_comment; | new_obj.m_comment = m_comment; | ||||
| new_obj.m_arg = m_arg; | new_obj.m_arg = m_arg; | ||||
| new_obj.ToString = function() | |||||
| { | |||||
| var str = m_name.toString() + ' [' + m_comment + ']'; | |||||
| if (m_arg != undefined) | |||||
| { | |||||
| str += '{'; | |||||
| var found_optional = false; | |||||
| for (var vi = 0; vi < m_arg.length; vi++) | |||||
| { | |||||
| if (m_arg[vi].m_optional != undefined && found_optional == false) | |||||
| { | |||||
| str += ' ['; | |||||
| found_optional = true; | |||||
| } | |||||
| if (vi != 0) | |||||
| str += ', '; | |||||
| str += m_arg[vi].ToString(); | |||||
| } | |||||
| if (found_optional == true) | |||||
| str += ']'; | |||||
| str += '}'; | |||||
| } | |||||
| return str; | |||||
| } | |||||
| new_obj.CheckCommand = function(check_name) | new_obj.CheckCommand = function(check_name) | ||||
| { | { | ||||
| if (m_name != undefined && check_name.length > 0) | if (m_name != undefined && check_name.length > 0) | ||||
| @@ -1,3 +1,85 @@ | |||||
| //----------------------------------------------------------------------------- | |||||
| // COOKIE MANAGEMENT - nom nom nom nom - | |||||
| //----------------------------------------------------------------------------- | |||||
| function LolCookie() { } | |||||
| function LolCookieDays(m_name, m_value, m_expire_days) | |||||
| { | |||||
| var cookie = new LolCookie(); | |||||
| cookie.m_name = m_name; | |||||
| cookie.m_value = m_value; | |||||
| cookie.m_expire_date = new Date(); | |||||
| cookie.m_expire_date.setDate(cookie.m_expire_date.getDate() + m_expire_days); | |||||
| return cookie; | |||||
| } | |||||
| function LolCookieDate(m_name, m_value, m_expire_date) | |||||
| { | |||||
| var cookie = new LolCookie(); | |||||
| cookie.m_name = m_name; | |||||
| cookie.m_value = m_value; | |||||
| cookie.m_expire_date = m_expire_date; | |||||
| return cookie; | |||||
| } | |||||
| //Set a cookie | |||||
| function StoreLolCookie(cookie) | |||||
| { | |||||
| //Get the cookie and removes it if it exists. | |||||
| GetLolCookie(cookie.m_name, true); | |||||
| var enc_value = escape(cookie.m_value) + ";"; | |||||
| //Add expire days | |||||
| if (cookie.m_expire_date) | |||||
| enc_value += " expires=" + cookie.m_expire_date.toUTCString() + ";"; | |||||
| enc_value = cookie.m_name + "=" + enc_value; | |||||
| //Store cookies | |||||
| document.cookie = enc_value; | |||||
| } | |||||
| //Get a cookie | |||||
| function GetLolCookie(name, remove) | |||||
| { | |||||
| var cki_doc = document.cookie; | |||||
| var cookie = null; | |||||
| var cki_start = cki_doc.indexOf(name + "="); | |||||
| if (cki_start > -1) | |||||
| { | |||||
| cookie = new LolCookie(); | |||||
| cookie.m_name = name; | |||||
| cookie.m_expire_date = null; | |||||
| //Retrieve value | |||||
| var val_start = cki_doc.indexOf("=", cki_start) + 1; | |||||
| var val_end = cki_doc.indexOf(";", cki_start); | |||||
| cookie.m_value = unescape(cki_doc.substring(val_start, val_end)); | |||||
| if (remove) | |||||
| document.cookie = name + "=; expires=0;"; | |||||
| } | |||||
| return cookie; | |||||
| } | |||||
| //Check the existence of a cookie | |||||
| function DoesLolCookieExist(name) | |||||
| { | |||||
| var cki_doc = document.cookie; | |||||
| if (cki_doc.indexOf(name + "=") > -1) | |||||
| return true; | |||||
| return false; | |||||
| } | |||||
| //----------------------------------------------------------------------------- | |||||
| // FILE MANAGEMENT | |||||
| //----------------------------------------------------------------------------- | |||||
| //Dynamic load | |||||
| function DynLoadFile(filename) | function DynLoadFile(filename) | ||||
| { | { | ||||
| var filetype = filename.match(/\.[a-zA-Z]+$/); | var filetype = filename.match(/\.[a-zA-Z]+$/); | ||||
| @@ -20,6 +102,7 @@ function DynLoadFile(filename) | |||||
| document.getElementsByTagName("head")[0].appendChild(fileref); | document.getElementsByTagName("head")[0].appendChild(fileref); | ||||
| } | } | ||||
| //Dynamic remove | |||||
| function DynRemoveFile(filename) | function DynRemoveFile(filename) | ||||
| { | { | ||||
| var filetype = filename.match(/\.[a-zA-Z]+$/); | var filetype = filename.match(/\.[a-zA-Z]+$/); | ||||
| @@ -158,7 +158,7 @@ public: | |||||
| //Compile ref meshes | //Compile ref meshes | ||||
| m_gizmos << new EasyMesh(); | m_gizmos << new EasyMesh(); | ||||
| m_gizmos.Last()->Compile("[sc#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 dup[rz 90 ry 90 scv#00f dup[ry 90 scv#f00]]][sc#fff ab .1]"); | |||||
| m_gizmos.Last()->Compile("[sc#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .075 ty .5 dup[rz 90 ry 90 scv#00f dup[ry 90 scv#f00]]][sc#fff ab .1]"); | |||||
| m_gizmos << new EasyMesh(); | m_gizmos << new EasyMesh(); | ||||
| m_gizmos.Last()->Compile("[sc#666 acap 1 .5 .5 ty -.5 sc#fff asph 2 1]"); | m_gizmos.Last()->Compile("[sc#666 acap 1 .5 .5 ty -.5 sc#fff asph 2 1]"); | ||||
| m_gizmos << new EasyMesh(); | m_gizmos << new EasyMesh(); | ||||
| @@ -105,13 +105,15 @@ progress::-webkit-progress-value | |||||
| //This is the module pointer : can be either the NaCl or Em one depending on the context. | //This is the module pointer : can be either the NaCl or Em one depending on the context. | ||||
| g_embed_module = null; | g_embed_module = null; | ||||
| var g_autosave_timer = 4.0; | |||||
| var g_autosave_time = 4.0; | |||||
| var g_code_addin = ['custom setmesh "#CODE#"', '#CODE#']; | var g_code_addin = ['custom setmesh "#CODE#"', '#CODE#']; | ||||
| var g_code_base = []; | var g_code_base = []; | ||||
| var CodeDictionnary = []; | var CodeDictionnary = []; | ||||
| g_code_id = 0; | g_code_id = 0; | ||||
| g_code_base[0] = "//This is a comment\nsc#f8f afcb 1 1 1 0"; | |||||
| g_code_base[1] = "//This is a comment\naddlight 0.0 position (4 -1 -4) color (.0 .2 .5 1)\naddlight 0.0 position (8 2 6) color #ffff\nshowgizmo true\nshowlight true"; | |||||
| g_code_base = ["//This is a comment\nsc#f8f afcb 1 1 1 0", | |||||
| "//This is a comment\naddlight 0.0 position (4 -1 -4) color (.0 .2 .5 1)\naddlight 0.0 position (8 2 6) color #ffff\nshowgizmo true\nshowlight true"]; | |||||
| function machinchose() { return 'test machin '; } | function machinchose() { return 'test machin '; } | ||||
| function GetTextAreaCodeSrc() { return g_txtarea_code_src; } | function GetTextAreaCodeSrc() { return g_txtarea_code_src; } | ||||
| @@ -180,7 +182,16 @@ function machinchose() { return 'test machin '; } | |||||
| VarInit(); | VarInit(); | ||||
| //Put here any cookie update | //Put here any cookie update | ||||
| if (!g_txtarea_code_src.value) | |||||
| if (DoesLolCookieExist("LolMeshViewerAutosave")) | |||||
| { | |||||
| var lol_cookie = GetLolCookie("LolMeshViewerAutosave"); | |||||
| var value_list = lol_cookie.m_value.split(";"); | |||||
| for (var i = 0; i < g_code_base.length && i < value_list.length; i++) | |||||
| g_code_base[i] = value_list[i]; | |||||
| g_txtarea_code_src.value = g_code_base[g_code_id]; | |||||
| } | |||||
| else if (!g_txtarea_code_src.value) | |||||
| g_txtarea_code_src.value = g_code_base[g_code_id]; | g_txtarea_code_src.value = g_code_base[g_code_id]; | ||||
| //Fill the TOC | //Fill the TOC | ||||
| @@ -220,18 +231,38 @@ function machinchose() { return 'test machin '; } | |||||
| g_frame_embed.onload = function() { VarInit(); } | g_frame_embed.onload = function() { VarInit(); } | ||||
| //Tick has been done, start Tick | //Tick has been done, start Tick | ||||
| window.setTimeout("Tick()", 200); | |||||
| window.setTimeout("Tick(.2)", 200); | |||||
| } | } | ||||
| function Tick() | |||||
| function Tick(seconds) | |||||
| { | { | ||||
| window.setTimeout("Tick()", 100); | |||||
| window.setTimeout("Tick(.1)", 100); | |||||
| var text_src = g_txtarea_code_src; | var text_src = g_txtarea_code_src; | ||||
| var div_cmds = g_div_helper_cmd; | var div_cmds = g_div_helper_cmd; | ||||
| var div_args = g_div_helper_args; | var div_args = g_div_helper_args; | ||||
| var div_cmnt = g_div_helper_cmnt; | var div_cmnt = g_div_helper_cmnt; | ||||
| var div_vars = g_div_helper_vars; | var div_vars = g_div_helper_vars; | ||||
| CmdLookup(div_cmds, div_args, div_cmnt, div_vars, text_src); | CmdLookup(div_cmds, div_args, div_cmnt, div_vars, text_src); | ||||
| g_autosave_timer -= seconds; | |||||
| if (g_autosave_timer < 0.0) | |||||
| { | |||||
| g_autosave_timer = g_autosave_time; | |||||
| StoreLolCookie("LolMeshViewerAutosave", GetTextValue(true), 10); | |||||
| } | |||||
| } | |||||
| function GetTextValue(getall) | |||||
| { | |||||
| var result = ''; | |||||
| for (var i = (getall)?(0):(g_code_id); i < g_code_base.length; i++) | |||||
| { | |||||
| result += g_code_addin[i].replace('#CODE#', g_code_base[i]) + (getall)?(';'):(''); | |||||
| if (getall && i == g_code_id) | |||||
| break; | |||||
| } | |||||
| return result; | |||||
| } | } | ||||
| function StoreTextAreaValue() | function StoreTextAreaValue() | ||||
| @@ -263,7 +294,10 @@ function machinchose() { return 'test machin '; } | |||||
| { | { | ||||
| StoreTextAreaValue(); | StoreTextAreaValue(); | ||||
| if (g_embed_module) | if (g_embed_module) | ||||
| g_embed_module.SendMessage(g_code_addin[g_code_id].replace('#CODE#', g_code_base[g_code_id])); | |||||
| { | |||||
| StoreLolCookie("LolMeshViewerAutosave", GetTextValue(true), 10); | |||||
| g_embed_module.SendMessage(GetTextValue(false)); | |||||
| } | |||||
| else | else | ||||
| alert("Module not loaded !"); | alert("Module not loaded !"); | ||||
| } | } | ||||