Sono state implementate 8 nuove funzioni lsl (disponibili con dal client 1.21).
Vediamo di esaminarle una per una.
Sei di queste sono di tipo llDetected* applicabili esclusivamente in un contesto di tipo Touch e che accettano in ingresso il solito indice che tiene conto dei click multipli.
integer llDetectedTouchFace(integer index);
Restituisce il numero della faccia toccata.
vector llDetectedTouchPos(integer index);
Posizione del punto toccato in coordinate globali (regione).
vector llDetectedTouchST(integer index);
Posizione del punto toccato nella faccia in percentuale.
vector llDetectedTouchUV(integer index);
Posizione del punto toccato nella faccia in coordinate UV.
vector llDetectedTouchNormal(integer index);
Vettore normale alla superficie nel punto toccato.
vector llDetectedTouchBinormal(integer index);
Vettore tangente alla superficie nel punto toccato.
Una funzione riguarda le informazioni su un agent.
string llGetAgentLanguage(key agentKey);
Restituisce il codice della lingua dell’agent rappresentato dalla key.
Una funzione riguarda la regione.
integer llGetRegionAgentCount();
Restituisce il numero degli agent nella regione in cui gira lo script.
Se volete provarle tutte quante con un click, ecco un codice di esempio:
default { touch_start(integer total_number) { integer i; for(i=0;i<total_number;i++) { key agentKey = llDetectedKey(i); string agentName = llDetectedName(i); string agentLanguage = llGetAgentLanguage(agentKey); llOwnerSay("*** Informazioni Agent ***"); llOwnerSay("Nome: "+agentName); llOwnerSay("Key: "+(string)agentKey); llOwnerSay("Lingua: "+agentLanguage); integer faceIndex = llDetectedTouchFace(i); vector posVec = llDetectedTouchPos(i); vector posSTVec = llDetectedTouchST(i); vector posUVVec = llDetectedTouchUV(i); vector normalVec = llDetectedTouchNormal(i); vector tangentVec = llDetectedTouchBinormal(i); llOwnerSay("*** Informazioni Tocco ***"); llOwnerSay("Faccia: "+(string)faceIndex); llOwnerSay("Posizione toccata (Regione): "+(string)posVec); llOwnerSay("Posizione toccata (ST): "+(string)posSTVec); llOwnerSay("Posizione toccata (UV): "+(string)posUVVec); llOwnerSay("Vettore normale: "+(string)normalVec); llOwnerSay("Vettore tangente: "+(string)tangentVec); } integer agentInRegion = llGetRegionAgentCount(); llOwnerSay("*** Informazioni Region ***"); llOwnerSay("Numero agent: "+(string)agentInRegion); } }