list standingAnimations = [
];
list standardSittingAnimations = [
];
list groundSittingAnimations = [
];
list walkingAnimations = [
];
list runningAnimations = [
];
list standardAnimations = [
"D1207-Crouch (Teen)", // "Crouching",
"D1138-Walk.C (Teen)", // "CrouchWalking",
"dz660-Falling", // "Falling Down",
"D2296-Fly.N", // "Flying",
"D2296-Fly.N", // "FlyingSlow",
"D2298-Hover.N", // "Hovering",
"", // "Hovering Down",
"D2300-Hover.U", // "Hovering Up",
"dz564-Jump.N", // "Jumping",
"D0664-Land.N (Teen)", // "Landing",
"D1210-Jump.P (Teen)", // "PreJumping",
"dz520-Running", // "Running",
"", // "Standing Up",
"", // "Striding",
"D0664-Land.N (Teen)", // "Soft Landing",
"", // "Taking Off",
"D0731-Turn.L", // "Turning Left",
"D0730-Turn.R" // "Turning Right"
];
string typingAnimation = "";
list advancedStates = [
"Standing",
"Sitting",
"Sitting on Ground",
"Walking",
"Running"
];
list standardStates = [
"Crouching",
"CrouchWalking",
"Falling Down",
"Flying",
"FlyingSlow",
"Hovering",
"Hovering Down",
"Hovering Up",
"Jumping",
"Landing",
"PreJumping",
"Running",
"Standing Up",
"Striding",
"Soft Landing",
"Taking Off",
"Turning Left",
"Turning Right"
];
key ownerKey;
debugMessage(string message)
{
llSay(DEBUG_CHANNEL, llGetObjectName() + "[script:" + llGetScriptName() + "] " + message);
}
initializePermissions()
{
if (llGetPermissions() & PERMISSION_OVERRIDE_ANIMATIONS)
{
integer index = 0;
integer states = llGetListLength(standardStates);
if (states == llGetListLength(standardAnimations))
{
reloadStandardAnimations(states);
}
else
{
debugMessage("Sainty mismatch error, number of states to animations or vice versa");
}
// setup advancedStates here.
}
else
{
ownerKey = llGetOwner();
llRequestPermissions(ownerKey, PERMISSION_OVERRIDE_ANIMATIONS);
}
}
reloadStandardAnimations(integer states)
{
integer index = 0;
string animation;
string anim_state;
integer type;
while (index < states)
{
animation = llList2String(standardAnimations, index);
anim_state = llList2String(standardStates, index);
if (animation != "")
{
type = llGetInventoryType(animation);
if (type == INVENTORY_ANIMATION)
{
llSetAnimationOverride(anim_state, animation);
}
else if(type == INVENTORY_NONE)
{
debugMessage(
"Animation \"" + animation + "\" for state \"" + anim_state +
"\" is missing or spelt incorrectly, remeber inventory items are case sensitive."
);
}
else
{
debugMessage(
"Animation \"" + animation + "\" for state \"" + anim_state +
"\" is of the incorrect inventory type."
);
}
}
++index;
}
}
default
{
state_entry()
{
initializePermissions();
}
attach(key id)
{
if (id)
{
// on_rez handles reinitializing.
}
else if (llGetPermissions() & PERMISSION_OVERRIDE_ANIMATIONS)
{
llResetAnimationOverride("ALL");
}
}
on_rez(integer param)
{
initializePermissions();
}
run_time_permissions(integer perms)
{
initializePermissions();
}
}