// SPDX-License-Identifier: MIT // Copyright (c) 2026 Incoprea // Linked gauge needle receiver // Not compiled or tested in-world // Setup: Put in a hinge-centered child needle. A root named gauge_controller should send code 7860 with a float string from 0 to 1. Owner-touch toggles arming and restores on disarm. // Stop / restore: Owner-touch to stop and restore the captured starting pose before removing, resetting, or relinking. // Notes: Use a small nonphysical rezzed build with clear space. Actual prim transforms change. Original poses live only in script memory. Do not change physical status or link topology during use. Only messages from the named root are accepted. Input is checked character-by-character, then clamped; the script never listens to public chat. // License: see LICENSE in this distribution. // Original Incoprea. MIT. Not compiled or tested in-world. rotation home; integer armed; default { state_entry() { home=llGetLocalRot(); } touch_start(integer n) { if(llDetectedKey(0)!=llGetOwner()||llGetLinkNumber()<2||llGetStatus(STATUS_PHYSICS))return; armed=!armed; if(!armed)llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_ROT_LOCAL,home]); } link_message(integer sender,integer code,string text,key data) { if(!armed||sender!=1||llGetLinkName(sender)!="gauge_controller"||code!=7860)return; if(llStringLength(text)<1||llStringLength(text)>12||llGetLinkNumber()<2||llGetStatus(STATUS_PHYSICS))return; integer i; integer dots; integer digits; for(i=0;i1)return; } else if(llSubStringIndex("0123456789",c)<0)return; else ++digits; } if(!digits)return; float value=(float)text; if(value<0.0)value=0.0; if(value>1.0)value=1.0; llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_ROT_LOCAL,llEuler2Rot(<0.0,0.0,(value-0.5)*PI>)*home]); } }