@@ -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 !"); | ||||
} | } | ||||