Nuove Funzioni LSL

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.