// SPDX-License-Identifier: MIT // Copyright (c) 2026 Incoprea // Child sun pointer // Not compiled or tested in-world // Setup: Use a small arrow child. Owner-touch starts five-second updates. // 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. Tracks parcel environment, which can differ from a viewer override. The script aims an indicator and does not modify the sky. // License: see LICENSE in this distribution. // Original Incoprea. MIT. Not compiled or tested in-world. vector home; rotation rest; integer active; integer valid=TRUE; default { state_entry() { home=llGetLocalPos(); rest=llGetLocalRot(); } touch_start(integer count) { if(llDetectedKey(0)!=llGetOwner()||!valid||llGetLinkNumber()<2||llGetStatus(STATUS_PHYSICS))return; active=!active; if(active) { llResetTime(); vector local=llGetSunDirection()/llGetRootRotation(); if(llVecMag(local)>0.01)llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_ROT_LOCAL,llRotBetween(<1.0,0.0,0.0>,llVecNorm(local))]); llSetTimerEvent(5); } else { llSetTimerEvent(0.0); llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_POS_LOCAL,home,PRIM_ROT_LOCAL,rest]); } } timer() { if(llGetLinkNumber()<2||llGetStatus(STATUS_PHYSICS)) { llSetTimerEvent(0.0); active=FALSE; return; } vector local=llGetSunDirection()/llGetRootRotation(); if(llVecMag(local)>0.01)llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_ROT_LOCAL,llRotBetween(<1.0,0.0,0.0>,llVecNorm(local))]); } changed(integer change) { if(change&CHANGED_LINK) { valid=FALSE; active=FALSE; llSetTimerEvent(0.0); llOwnerSay("Links changed; stopped without restoring. Reposition and reset before reuse."); } } }