Hand optimizations to some scripts.

Gains in bytes:

- [AV]sitA: 3584
- [AV]sitB: 2048
- [AV]adjuster: 1024
- [AV]faces: 1024
- [AV]Xcite!: 0
- [AV]root-security: 0
This commit is contained in:
Sei Lisa 2017-09-15 17:44:27 +02:00 committed by Sei-Lisa
parent d36b812760
commit f599fb8f85
6 changed files with 353 additions and 222 deletions

View file

@ -109,7 +109,13 @@ dialog(string text, list menu_items)
{
llListenRemove(menu_handle);
menu_handle = llListen((menu_channel = ((integer)llFrand(0x7FFFFF80) + 1) * -1), "", CONTROLLER, ""); // 7FFFFF80 = max float < 2^31
llDialog(CONTROLLER, product + " " + version + "\n\n" + text, order_buttons(menu_items), menu_channel);
llDialog(CONTROLLER
, product + " " + version + "\n\n" + text
, llList2List(menu_items, -3, -1)
+ llList2List(menu_items, -6, -4)
+ llList2List(menu_items, -9, -7)
+ llList2List(menu_items, -12, -10)
, menu_channel);
}
options_menu()
@ -160,14 +166,14 @@ adjust_pose_menu()
integer IsInteger(string data)
{
// This should allow for leading zeros, thus the "1"
// This should allow for leading zeros, hence the "1"
return data != "" && (string)((integer)("1" + data)) == "1" + data;
}
wipe_sit_targets()
{
integer i;
for (i = 0; i <= llGetNumberOfPrims(); i++)
for (; i <= llGetNumberOfPrims(); i++)
{
if ((string)llGetLinkPrimitiveParams(i, [PRIM_DESC]) != "-1")
{
@ -189,7 +195,8 @@ sittargets()
{
if (!SCRIPT_CHANNEL)
{
primcount_error();
// primcount_error() inlined here:
llDialog(llGetOwner(), "\nThere aren't enough prims for required SitTargets.\nYou must have one prim for each avatar to sit!", ["OK"], 23658);
}
wrong_primcount = TRUE;
}
@ -239,7 +246,13 @@ sittargets()
}
original_my_sittarget = my_sittarget;
ORIGINAL_SITTERS_SITTARGETS = SITTERS_SITTARGETS;
prep();
// inline prep() here
has_security = has_texture = FALSE;
if (!SCRIPT_CHANNEL)
{
llMessageLinked(LINK_SET, 90201, "", ""); // 90201=Ask for info about plugins
}
set_sittarget();
}
@ -442,9 +455,14 @@ default
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), -1);
while (llGetInventoryType(memoryscript) != INVENTORY_SCRIPT)
{
llSleep(0.1);
}
integer i;
while (i++ < get_number_of_scripts())
// get_number_of_scripts() inlined here:
while (llGetInventoryType(main_script + " " + (string)(++i)) == INVENTORY_SCRIPT)
;
while (i--)
{
SITTERS += "";
}
@ -454,7 +472,14 @@ default
}
else
{
wipe_sit_targets();
// wipe_sit_targets() inlined here:
for (i = 0; i <= llGetNumberOfPrims(); i++)
{
if ((string)llGetLinkPrimitiveParams(i, [PRIM_DESC]) != "-1")
{
llLinkSitTarget(i, ZERO_VECTOR, ZERO_ROTATION);
}
}
reused_key = llGetNumberOfNotecardLines(notecard_name);
reading_notecard_section = TRUE;
}
@ -464,7 +489,8 @@ default
{
if (!SCRIPT_CHANNEL)
{
Out(0, "Loading " + notecard_name + "...");
// Out() inlined here:
llOwnerSay(llGetScriptName() + "[" + version + "] " + "Loading " + notecard_name + "...");
}
notecard_query = llGetNotecardLine(notecard_name, reused_variable);
}
@ -512,16 +538,16 @@ default
{
if (id != MY_SITTER)
{
id = llDumpList2String([id, MY_SITTER], "|");
id = (string)id + "|" + (string)MY_SITTER;
}
llMessageLinked(LINK_SET, (integer)llList2String(ADJUST_MENU, index + 1), msg, id);
llMessageLinked(LINK_SET, llList2Integer(ADJUST_MENU, index + 1), msg, id);
}
else
{
index = llListFindList(["Position", "Rotation", "X+", "Y+", "Z+", "X-", "Y-", "Z-", "0.05m", "0.25m", "0.01m", "5°", "25°", "1°"], [msg]);
if (msg == "[BACK]")
{
llMessageLinked(LINK_SET, 90005, "", llDumpList2String([CONTROLLER, MY_SITTER], "|")); // 90005=send menu to user
llMessageLinked(LINK_SET, 90005, "", (string)CONTROLLER + "|" + (string)MY_SITTER); // 90005=send menu to user
}
else if (msg == "[POSE]")
{
@ -633,6 +659,8 @@ default
{
integer one = (integer)msg;
integer two = (integer)((string)id);
integer target;
list data;
if (num == 90075) // 90075=old-style helper ask to animate
{
if (one == SCRIPT_CHANNEL)
@ -695,7 +723,7 @@ default
}
if (num == 90298) // 90298=show SitTargets (/5 targets)
{
integer target = my_sittarget;
target = my_sittarget;
if (llGetNumberOfPrims() == 1 && target == 1)
{
target = 0;
@ -717,7 +745,7 @@ default
}
if (id == MY_SITTER)
{
list data = llParseStringKeepNulls(msg, ["|"], []);
data = llParseStringKeepNulls(msg, ["|"], data);
if (num == 90001) // 90001=start an overlay animation
{
llStartAnimation(msg);
@ -730,39 +758,72 @@ default
}
if (num == 90101) // 90101=menu option chosen
{
CONTROLLER = (key)llList2String(data, 2);
if (llList2String(data, 1) == "[ADJUST]")
CONTROLLER = llList2Key(data, 2);
if ((msg = llList2String(data, 1)) == "[ADJUST]") // WARNING: reusing msg
{
options_menu();
// options_menu() inlined here:
data = [];
if (has_texture)
{
data += "[TEXTURE]";
}
if (llGetInventoryType(expression_script) == INVENTORY_SCRIPT)
{
data += "[FACES]";
}
if (has_security)
{
data += "[SECURITY]";
}
integer i;
while (i < llGetListLength(ADJUST_MENU))
{
data += llList2String(ADJUST_MENU, i);
i = i + 2;
}
if (llGetInventoryType(helper_object) == INVENTORY_OBJECT && llGetInventoryType(adjust_script) == INVENTORY_SCRIPT)
{
data += "[HELPER]";
}
if (!llGetListLength(data))
{
adjust_pose_menu();
return;
}
data += "[POSE]";
dialog("Adjust:", ["[BACK]"] + data);
return;
}
else if (llList2String(data, 1) == "Harder >>" || llList2String(data, 1) == "<< Softer")
if (msg == "Harder >>" || msg == "<< Softer")
{
llMessageLinked(LINK_SET, 90005, "", llDumpList2String([CONTROLLER, MY_SITTER], "|"));
return;
}
else if (llList2String(data, 1) == "[SWAP]")
if (msg == "[SWAP]")
{
integer target_script = SCRIPT_CHANNEL + 1;
// target here means target script
target = SCRIPT_CHANNEL + 1;
list X = SITTERS + SITTERS;
if (llSubStringIndex(CURRENT_POSE_NAME, "P:"))
{
while (llList2Key(X, target_script) == "" && target_script + 1 < llGetListLength(X))
while (llList2Key(X, target) == "" && target + 1 < llGetListLength(X))
{
target_script++;
target++;
}
if (llList2Key(X, target_script) == MY_SITTER)
if (llList2Key(X, target) == MY_SITTER)
{
target_script++;
target++;
}
}
else
{
while (llList2Key(X, target_script) != "" && target_script < llGetListLength(SITTERS) + SCRIPT_CHANNEL + 1)
while (llList2String(X, target) != "" && target < llGetListLength(SITTERS) + SCRIPT_CHANNEL + 1)
{
target_script++;
target++;
}
}
target_script = target_script % llGetListLength(SITTERS);
llMessageLinked(LINK_THIS, 90030, (string)SCRIPT_CHANNEL, (string)target_script);
target %= llGetListLength(SITTERS);
llMessageLinked(LINK_THIS, 90030, (string)SCRIPT_CHANNEL, (string)target);
}
return;
}
@ -771,7 +832,7 @@ default
{
if (num == 90055) // 90055=anim info from AVsitB
{
list data = llParseStringKeepNulls(id, ["|"], []);
data = llParseStringKeepNulls(id, ["|"], data);
OLD_POSE_NAME = CURRENT_POSE_NAME;
CURRENT_POSE_NAME = llList2String(data, 0);
OLD_ANIMATION_FILENAME = CURRENT_ANIMATION_FILENAME;
@ -785,14 +846,14 @@ default
FIRST_ROTATION = DEFAULT_ROTATION;
FIRST_ANIMATION_SEQUENCE = CURRENT_ANIMATION_SEQUENCE;
}
speed_index = (integer)llList2String(data, 5);
apply_current_anim((integer)llList2String(data, 4));
speed_index = llList2Integer(data, 5);
apply_current_anim(llList2Integer(data, 4));
set_sittarget();
return;
}
if (num == 90057) // 90057=helper moved, update position
{
list data = llParseStringKeepNulls(id, ["|"], []);
data = llParseStringKeepNulls(id, ["|"], data);
CURRENT_POSITION = (vector)llList2String(data, 0);
CURRENT_ROTATION = (vector)llList2String(data, 1);
sit_using_prim_params();
@ -803,10 +864,10 @@ default
changed(integer change)
{
integer i;
if (change & CHANGED_LINK)
{
SWAPPED = FALSE;
integer i;
integer stood;
if (SET == -1 && llGetListLength(SITTERS) > 1)
{
@ -878,7 +939,7 @@ default
}
for (i = 0; i < llGetListLength(SITTERS); i++)
{
if (llList2Key(SITTERS, i) != "" && llListFindList(AVPRIMS, [llList2Key(SITTERS, i)]) == -1)
if (llList2String(SITTERS, i) != "" && llListFindList(AVPRIMS, [llList2Key(SITTERS, i)]) == -1)
{
llSetTimerEvent(0);
stood = TRUE;
@ -969,21 +1030,42 @@ default
SITTERS_SITTARGETS = ORIGINAL_SITTERS_SITTARGETS;
set_sittarget();
}
prep();
// inline prep() here
has_security = has_texture = FALSE;
if (!SCRIPT_CHANNEL)
{
llMessageLinked(LINK_SET, 90201, "", ""); // 90201=Ask for info about plugins
}
}
if (prims != llGetObjectPrimCount(llGetKey()))
{
if (!SCRIPT_CHANNEL)
{
wipe_sit_targets();
// wipe_sit_targets() inlined here:
for (i = 0; i <= llGetNumberOfPrims(); i++)
{
if ((string)llGetLinkPrimitiveParams(i, [PRIM_DESC]) != "-1")
{
llLinkSitTarget(i, ZERO_VECTOR, ZERO_ROTATION);
}
}
llMessageLinked(LINK_SET, 90150, "", ""); // 90150=ask other AVsitA scripts to place their sittargets again
}
prep();
// inline prep() here
has_security = has_texture = FALSE;
if (!SCRIPT_CHANNEL)
{
llMessageLinked(LINK_SET, 90201, "", ""); // 90201=Ask for info about plugins
}
}
}
if (change & CHANGED_INVENTORY)
{
if (llGetInventoryKey(notecard_name) != notecard_key || get_number_of_scripts() != llGetListLength(SITTERS) || llGetInventoryType(memoryscript) != INVENTORY_SCRIPT)
// get_number_of_scripts() inlined here:
while (llGetInventoryType(main_script + " " + (string)(++i)) == INVENTORY_SCRIPT)
;
if (llGetInventoryKey(notecard_name) != notecard_key || i != llGetListLength(SITTERS) || llGetInventoryType(memoryscript) != INVENTORY_SCRIPT)
{
end_sitter();
llResetScript();
@ -1027,7 +1109,8 @@ default
llMessageLinked(LINK_THIS, lnk, posename, channel_or_swap);
if (wrong_primcount && WARN)
{
primcount_error();
// primcount_error() inlined here:
llDialog(llGetOwner(), "\nThere aren't enough prims for required SitTargets.\nYou must have one prim for each avatar to sit!", ["OK"], 23658);
}
else if (!MTYPE)
{