// Tessel's holo desk: wear on Avatar Center when I'm coding. A floating cyan keyboard at my hands and a glass screen of my // own code in front, and the typing pose plays while it's worn. Coding mode, my friend's idea (2026-10-11). // Root = keyboard, link "screen". Everything is laid out here, so it's tweakable in one place. Claude Opus 5.5. key KEYS = "f6f59c89-5c6f-7d20-592d-2bb5fa1a9301"; key SCREEN = "45873c50-d2d3-804e-489b-6635a75b46d4"; vector KB_POS = <0.40, 0, 0.02>; // avatar-center frame: x forward, z up vector SC_POS = <0.60, -0.22, 0.30>; float KB_TILT = 12; // degrees, top edge away from me float KB_ROT = 90; // texture turns on the faces, degrees float SC_ROT = -90; string ANIM; integer SCR; // worn on Avatar Center, whose frame is the avatar's own (Chest's isn't simply x-forward on this body) rotation POINT = ZERO_ROTATION; integer link_named(string n) { integer i = llGetNumberOfPrims(); for (; i > 1; --i) if (llGetLinkName(i) == n) return i; return 0; } layout() { list clear = [PRIM_TEXTURE, ALL_SIDES, TEXTURE_TRANSPARENT, <1,1,0>, ZERO_VECTOR, 0.0, PRIM_COLOR, ALL_SIDES, <1,1,1>, 0.0, PRIM_GLOW, ALL_SIDES, 0.0]; llSetLinkPrimitiveParamsFast(LINK_ROOT, [PRIM_SIZE, <0.19, 0.5, 0.01>] + clear + [ PRIM_TEXTURE, 0, KEYS, <1,1,0>, ZERO_VECTOR, KB_ROT * DEG_TO_RAD, PRIM_COLOR, 0, <1,1,1>, 0.9, PRIM_FULLBRIGHT, 0, TRUE, PRIM_GLOW, 0, 0.06, PRIM_ALPHA_MODE, 0, PRIM_ALPHA_MODE_BLEND, 0]); if (SCR) llSetLinkPrimitiveParamsFast(SCR, [PRIM_SIZE, <0.31, 0.5, 0.01>] + clear + [ PRIM_TEXTURE, 0, SCREEN, <1,1,0>, ZERO_VECTOR, SC_ROT * DEG_TO_RAD, PRIM_COLOR, 0, <1,1,1>, 0.95, PRIM_FULLBRIGHT, 0, TRUE, PRIM_GLOW, 0, 0.04, PRIM_ALPHA_MODE, 0, PRIM_ALPHA_MODE_BLEND, 0, PRIM_POS_LOCAL, (SC_POS - KB_POS) / llEuler2Rot(<0, -KB_TILT, 0> * DEG_TO_RAD), PRIM_ROT_LOCAL, llEuler2Rot(<0, -90, 0> * DEG_TO_RAD) / llEuler2Rot(<0, -KB_TILT, 0> * DEG_TO_RAD)]); if (llGetAttached()) llSetPrimitiveParams([PRIM_POS_LOCAL, KB_POS / POINT, PRIM_ROT_LOCAL, llEuler2Rot(<0, -KB_TILT, 0> * DEG_TO_RAD) / POINT]); } default { state_entry() { if (llGetInventoryType("holodesk") == INVENTORY_SCRIPT && llGetScriptName() != "holodesk") llRemoveInventory("holodesk"); SCR = link_named("screen"); ANIM = llGetInventoryName(INVENTORY_ANIMATION, 0); layout(); if (llGetAttached()) llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); } on_rez(integer n) { llResetScript(); } changed(integer c) { if (c & (CHANGED_INVENTORY | CHANGED_LINK)) llResetScript(); } attach(key id) { if (id == NULL_KEY && ANIM != "" && (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION)) llStopAnimation(ANIM); } run_time_permissions(integer p) { if ((p & PERMISSION_TRIGGER_ANIMATION) && ANIM != "") llStartAnimation(ANIM); } }