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);
}
}