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

Compilare con Mono

Finalmente il giorno è arrivato! Finalmente è possibile compilare i nostri script LSL per farli eseguire con la macchina virtuale Mono.
Questo mini-tutorial vi spiegherà come effettuare la vostra prima compilazione!

I Viewer abilitati alla compilazione Mono sono esclusivamente quelli con versione uguale o maggiore alla 1.21. Per il momento, l’unico viewer compatibile è il Preview Grid Viewer, quindi se fate girare Second Life tramite il Viewer Ufficiale o tramite il Release Candidate non sarete abilitati alla compilazione Mono.

La prima cosa da fare è quindi scaricare dal sito ufficiale la versione Preview Grid Viewer.

La Preview Grid Viewer di norma si connette alla Beta Grid di Second Life. Per accedere alla Main Grid dobbiamo forzare il Viewer. Facciamolo partire e prima di effettuare il login premiamo i tasti Ctrl-Shift-G. Ci appare, come mostrato nella seguente figura, un menù a tendina. Selezioniamo “agni” che sta ad indicare la Main Grid (di default è selezionato “aditi”, ovvero la Beta Grid). Fatto questo possiamo effettuare normalmente il login.

Login a Second Life

Una volta dentro Second Life dobbiamo assicurarci di essere in una Land con server compatibile con Mono. Dal menù “Help” selezioniamo “About Second Life…”, ci verrà visualizzata la seguente immagine.

About Second Life

Tra tutte le scritte presenti facciamo caso alla prima “Second Life 1.21.0 (94415)” che indica la versione del Viewer (che ricordo deve essere maggiore o uguale alla 1.21 per far compilare in Mono) e la scritta “Second Life Server 1.24.0.94778” che indica la versione del server.

Per far girare e per far compilare gli script con Mono, il server deve avere la versione maggiore o uguale a 1.24. Server più vecchi non sono compatibili con Mono.

Cerchiamo quindi una Land con installata una versione del server compatibile con Mono (io sono andato a Sandbox Island). Notiamo subito che quando cambiamo versione del server il viewer ci avvisa con un messaggio:

Popup cambio server

Adesso non ci resta che creare un oggetto, aggiungere uno script e verificare che la spunta sulla casella Mono sia abilitata come mostrato in figura

Mono abilitato

Ed ecco che il nostro script è pronto!

Dopo aver testato il nostro oggetto, portiamolo in una land non compatibile con Mono (versione del server minore a 1.24)… noteremo che il nostro script non funziona più, e se proviamo ad aprire in modifica la casella Mono è disabilitata.

Mono non abilitato

Concludendo, Mono risulta essere estremamente più veloce della vecchia macchina virtuale. I primi test che ho fatto dimostrano una velocità di esecuzione più che raddoppiata. L’unica pecca è una mancata segnalazione di script Mono non funzionanti in zone non compatibili (non viene visualizzato nessun errore nemmeno nella consolle di debug!)… ma è un problema da poco visto che il Viewer ufficiale sarà rilasciato esclusivamente dopo che tutte le sim saranno coperte dalla nuova macchina virtuale e che la copertura dovrebbe essere abbastanza rapita!

Enjoy with Mono!

Foto Laurea Cristina

Inserite nella Galleria Foto le foto del Party per la laurea di Cristina!!!

NYC Day 12

Le vacanze in America sono finite, la valigia e’ quasi pronta, ultimo giorno a New York, domani mi passa a prendere mio cugino Francesco per portarmi in aeroporto. Ultimo giorno sotto la pioggia… Di giorno non ho fatto praticamente nulla: ho sistemato la valigia, passato tutte le foto sulla flash drive e mi sono sistemato per la festa di laurea.

La festa e’ stata bellissima, ottima occasione per me per salutare tutti gli amici e parenti.

Adesso sono soltanto stanco… domani mi aspetta un viaggio massacrante e poi a casa!

NYC Day 11

Iniziano i preparativi per la festa di laurea di mia cugina… o meglio, dall’organizzazione sembra quasi un matrimonio!!! Qui le cose o si fanno in grande o non si fanno!!!
Essendo tutti occupati, siamo usciti solo io e mio cugino: obiettivo Statua della Liberta’! Ci diamo appuntamento alle 12.30 con Salvatore e partiamo. Arriviamo alla stazione dei traghetti ovviamente in ritardo, ma per fortuna anche Salvatore e’ in estremo ritardo! Ne approfittiamo per fare un giro a Lower Manhattan… passeggiata per Wall Street, ci fermiamo a guardare gli artisti di strada che si esibiscono, facciamo un paio di foto, poi finalmente ci incontriamo con gli altri! sulla nostra testa svolazzano tantissimi elicotteri… e ci viene l’idea: perche’ non fare il giro di Manhattan in elicottero??? Ci dirigiamo verso l’eliporto, ma li abbiamo la brutta notizia: 110 dollari per otto minuti di volo! Ovviamente rifiutiamo e decidiamo di fare il classico giro con la barca!
Il giro costeggia tutta Lower Manhattan, il New Jersey, Ellis Island, Governors Island e ovviamente Liberty Island! La Statua della Liberta’ e’ bellissima!!! Il giro dura un’oretta… passa anche sotto il ponte di Brooklyn e il Manhattan Bridge, passiamo vicinissimo le cascate artificiali e costeggiamo Pier 17! Bellissimo!
Alla fine del giro, abbiamo una fame da morire… decidiamo di andare a mangiare a Chinatown, prendiamo la metro e ci fermiamo a Canal Street west side. Mangiamo e poi percorriamo tutta Canal Street… ovvero tagliamo orizzontalmente tutta Manhattan! Ci infiliamo nei piccolissimi ed ammassati negozietti di Chinatown dove si sprecano le imitazioni di borse griffate! Nel percorso facciamo anche una sosta a Little Italy e poi in metro verso casa! Manco a dirlo… la metro si rompe (cosa super frequente a Nwe York), quindi seguiamo la massa di gente abituata a questi contrattempi e troviamo la nuova linea che ci porta a casa!
Qui pochissimo tempo a disposizione, il tempo di una doccia e di una cena e siamo subito fuori! Si va a ballare a Manhattan! Arriviamo nel locale prestabilito, ma abbiamo subito un problema: la fila! Lunghissima, tanto che a meta’ fila decidiamo di cambiare locale. Andiamo al Prime e li balliamo fino alle tre del mattino! Poi, ovviamente, colazione… ma visto che qui non esiste il cornetto caldo la colazione la facciamo in un McDonald’s!
Adesso sono stanco morto… e domani altra festa!!!