// SPDX-License-Identifier: MIT // Copyright (c) 2026 Incoprea // Plan a wave radiating from an origin // Not compiled or tested in-world // Setup: Put in a spare owned prim. Set POINTS, ORIGIN, positive WAVE_SPEED/DURATION and ELAPSED. Owner touch prints calculations only. // Stop / restore: Disable/remove. No prim motion or appearance is changed. // Notes: Uses a compact sine envelope after arrival; output is zero before and after the pulse. // License: see LICENSE in this distribution. // Original Incoprea. MIT. Motion planning only. list POINTS=[<1.0,0.0,0.0>,<2.0,2.0,0.0>,<4.0,0.0,0.0>]; vector ORIGIN=ZERO_VECTOR; float WAVE_SPEED=2.0; float DURATION=1.0; float ELAPSED=1.8; default { touch_start(integer detectedCount) { if(llDetectedKey(0)!=llGetOwner())return; if(WAVE_SPEED<=0.0||DURATION<=0.0) { llOwnerSay("Invalid timing."); return; } integer i; for(i=0;i=0.0&&t<=1.0)value=llSin(PI*t); llOwnerSay("Part "+(string)i+" arrival="+(string)arrival+" envelope="+(string)value); } } }