@@ -13,16 +13,11 @@ function CmdVarObj() { } | |||
function CmdVar(m_type, m_syntax) | |||
{ | |||
var current_dict = GetCmdDictionnary(); | |||
new_obj = new CmdVarObj(); | |||
new_obj.m_type = m_type; | |||
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; | |||
} | |||
@@ -33,15 +28,11 @@ function CmdArgObj() { } | |||
function CmdArg(m_type, m_name, m_optional) | |||
{ | |||
new_obj = new CmdArgObj(); | |||
new_obj.m_type = m_type; | |||
new_obj.m_name = m_name; | |||
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; | |||
} | |||
@@ -52,34 +43,12 @@ function CmdTypeObj() { } | |||
function CmdType(m_name, m_comment, m_arg) | |||
{ | |||
var current_dict = GetCmdDictionnary(); | |||
new_obj = new CmdTypeObj(); | |||
new_obj.m_name = m_name; | |||
new_obj.m_comment = m_comment; | |||
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) | |||
{ | |||
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) | |||
{ | |||
var filetype = filename.match(/\.[a-zA-Z]+$/); | |||
@@ -20,6 +102,7 @@ function DynLoadFile(filename) | |||
document.getElementsByTagName("head")[0].appendChild(fileref); | |||
} | |||
//Dynamic remove | |||
function DynRemoveFile(filename) | |||
{ | |||
var filetype = filename.match(/\.[a-zA-Z]+$/); | |||
@@ -158,7 +158,7 @@ public: | |||
//Compile ref meshes | |||
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.Last()->Compile("[sc#666 acap 1 .5 .5 ty -.5 sc#fff asph 2 1]"); | |||
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. | |||
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_base = []; | |||
var CodeDictionnary = []; | |||
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 GetTextAreaCodeSrc() { return g_txtarea_code_src; } | |||
@@ -180,7 +182,16 @@ function machinchose() { return 'test machin '; } | |||
VarInit(); | |||
//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]; | |||
//Fill the TOC | |||
@@ -220,18 +231,38 @@ function machinchose() { return 'test machin '; } | |||
g_frame_embed.onload = function() { VarInit(); } | |||
//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 div_cmds = g_div_helper_cmd; | |||
var div_args = g_div_helper_args; | |||
var div_cmnt = g_div_helper_cmnt; | |||
var div_vars = g_div_helper_vars; | |||
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() | |||
@@ -263,7 +294,10 @@ function machinchose() { return 'test machin '; } | |||
{ | |||
StoreTextAreaValue(); | |||
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 | |||
alert("Module not loaded !"); | |||
} | |||