Difference between revisions of "AbcText"

From Second Life Wiki
Jump to navigation Jump to search
m (Replaced <source> with <syntaxhighlight>)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''
'''
{{LSL Header}}
== Display script ==
== Display script ==
'''
'''


This script exploits the persistence of particles to show the matrix of corresponding points in every characters.  
This script is an experimentation to operate the property of persistence of particles to show the matrix of corresponding points in every characters.  
Billing is refresh every 30 sec
Billing is refresh every 30 sec




<lsl>
<syntaxhighlight lang="lsl2">
////////////////////////////////////////////////////////////////////  
////////////////////////////////////////////////////////////////////  
//
//
Line 22: Line 23:
//==================================================================
//==================================================================
//
//
//  - set Max Particles to 4096
//  - create white cube "board" <15.500, 0.010, 0.800>
//  - create white cube "board" <15.500, 0.010, 0.800>
//  - create other cube "cursor" <0.030, 0.010, 0.030>  
//  - create red cube "cursor" <0.050, 0.010, 0.030> & drop AbcText
//    transparency 0.50 and insert AbcText
//  - link cursor (child) to board (root)
//  - link cursor (child) to board (root)
//  - send message <= 25 char. to chanel 20
//  - send message <= 25 char. to chanel 20
Line 35: Line 36:
//              CONSTANTS
//              CONSTANTS
//===========================================
//===========================================
float  Size_Point = 0.1; //Taille du point
float  Size_Point = 0.1; //pixel size
string Txt_Point = "";  //Texture du point
string Txt_Point = "";  //pixel texture
vector Color_Point = < 0., 0., 1. >; //Couleur du point
vector Color_Point = < 0., 0., 1. >; //pixel color
vector Size_Affich = <15.5, .01, .8>; //Taille de l'afficheur
vector Size_Affich = <15.5, .01, .8>; //display size


//===========================================
//===========================================
Line 166: Line 167:
           PSYS_SRC_PATTERN, (integer) 1,
           PSYS_SRC_PATTERN, (integer) 1,
                
                
           PSYS_PART_FLAGS,     ( 0           
           PSYS_PART_FLAGS,
                                | PSYS_PART_INTERP_COLOR_MASK 
          PSYS_PART_EMISSIVE_MASK
                                | PSYS_PART_EMISSIVE_MASK  
          ];
                             
                                )];
}
}


Line 189: Line 188:
                 if( (integer)llGetSubString(matrice_Lettre, x + 5*z, x + 5*z) ) {
                 if( (integer)llGetSubString(matrice_Lettre, x + 5*z, x + 5*z) ) {
                     llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POSITION, point_zero + < x*Size_Point, 0.0, -z*Size_Point > ]);
                     llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POSITION, point_zero + < x*Size_Point, 0.0, -z*Size_Point > ]);
                     llSleep(0.08);
                    llParticleSystem( Particle_Parameters );
                     llSleep(0.12);
                    llParticleSystem( [] );
                 }
                 }
             } while( ++x <= 4);
             } while( ++x <= 4);
         } while( ++z <= 5);
         } while( ++z <= 5);
          
          
         point_zero += < 6. * Size_Point, 0.0, 0.0 >; //positionning next char
         point_zero += < 6. * Size_Point, 0.0, 0.0 >; //locate next char
     }
     }
}
}
Line 209: Line 210:
         llListen(20, "", llGetOwner(), "");
         llListen(20, "", llGetOwner(), "");
         init_particles();  
         init_particles();  
        llParticleSystem( Particle_Parameters );
         Origine = < (-0.48 * Size_Affich.x) , (-1.25 * Size_Point) , (0.3 * Size_Affich.z)  >; //raz cursor
         Origine = < (-0.48 * Size_Affich.x) , (-1.25 * Size_Point) , (0.3 * Size_Affich.z)  >; //raz cursor
     }
     }
Line 231: Line 231:
        
        
}
}
</lsl>
</syntaxhighlight>
{{LSLC|Library|AbcText}}
{{LSLC|Library|AbcText}}

Latest revision as of 13:29, 28 January 2023

Display script

This script is an experimentation to operate the property of persistence of particles to show the matrix of corresponding points in every characters. Billing is refresh every 30 sec


//////////////////////////////////////////////////////////////////// 
//
//  AbcText
//  by Ange Capalini
//  Originally Written  10/31/2011
//  code released to the public domain
// 
//////////////////////////////////////////////////////////////////// 


//==================================================================
//               INSTRUCTIONS
//==================================================================
//
//  - set Max Particles to 4096
//  - create white cube "board" <15.500, 0.010, 0.800>
//  - create red cube "cursor" <0.050, 0.010, 0.030> & drop AbcText
//  - link cursor (child) to board (root)
//  - send message <= 25 char. to chanel 20
//  - that's all folk's
//
/////////////////////////////////////////////////////////////////////


//===========================================
//               CONSTANTS
//===========================================
float  Size_Point = 0.1; //pixel size
string Txt_Point = "";  //pixel texture
vector Color_Point = < 0., 0., 1. >; //pixel color
vector Size_Affich = <15.5, .01, .8>; //display size

//===========================================
//           GLOBALS VARIABLES
//===========================================
list Alphabet = [   " ",
                    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
                    "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",

                    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
                    "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",

                    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
                    
                    ":", "'", ",", "!", "?", "#", ".", "/", "-", "é", "è", "à"     ];
                    
//char matrix 6 x 5 points
list Matrices = [ " ", 
                    "011001001010010111101001000000", //A
                    "111001001011100100101110000000",
                    "011001000010000100000110000000",
                    "111001001010010100101110000000",
                    "111001000011100100001110000000",
                    "111001000011100100001000000000",
                    "011101000010110100100111000000",
                    "100101001011110100101001000000",
                    "111000100001000010001110000000",
                    "001100001000010100100110000000",
                    "100101010011000101001001000000",
                    "100001000010000100001110000000",
                    "100011101110101100011000100000",
                    "100101101010110100101001000000",
                    "011001001010010100100110000000",
                    "111001001010010111001000000000",
                    "011001001010010100100110000010",
                    "111001001010010111001001000000",
                    "011101000001100000101110000000",
                    "111000100001000010000100000000",
                    "100101001010010100100110000000",
                    "100101001010100101000100000000",
                    "100011010110101101010101000000",
                    "100101001001100100101001000000",
                    "100101001001110000100110000000",
                    "111100001001100100001111000000", //Z
    
                    "000000110010010100100111000000", //a
                    "100001110010010100101110000000",
                    "000000110010000100000110000000",
                    "000100111010010100100111000000",
                    "000000111010010101000111000000",
                    "011001000011000100001000000000",
                    "011001001010010011100001001100",
                    "100001110010010100101001000000",
                    "100000000010000100001000000000",
                    "001000000000100001000010011000",
                    "100001001010100110101001000000",
                    "100001000010000100001000000000",
                    "000001101010101101011010100000",
                    "000001110010010100101001000000",
                    "000000110010010100100110000000",
                    "111001001010010111001000010000",
                    "011101001010010011100001000010",
                    "000001010011000100001000000000",
                    "000000111011000001101110000000",
                    "010001110001000010000100000000",
                    "000001001010010100100111000000",
                    "000001001010010100100110000000",
                    "000001010110101101010101000000",
                    "000001001001100011001001000000",
                    "100101001010010011100001001100",
                    "000001111000100010001111000000", //z
    
                    "011001001010010100100110000000", //0
                    "011000010000100001000010000000",
                    "111000001001100100001111000000",
                    "111000001001100000101110000000",
                    "001000110010100111100010000000",
                    "111101000011100000101110000000",
                    "011001000011100100100110000000",
                    "111100001000100010000100000000",
                    "011001001001100100100110000000",
                    "011001001001110000100110000000", //9
                    
                    "000000000000100000000010000000", //:
                    "000100010000000000000000000000",
                    "000000000000000000100010000000",
                    "001000010000100000000010000000",
                    "001000101000010001000000000100",
                    "010101111101010111110101000000", 
                    "000000000000000000000010000000", 
                    "000010001000100010001000000000", 
                    "000000000001110000000000000000", 
                    "000100110010010101000111000000",
                    "010000111010010101000111000000",
                    "010000110010010100100111000000"  //à
                    ];

list    Particle_Parameters=[];
vector  Origine;
string  Texte;
integer id_Phrase;
integer len_Phrase;
integer id_Lettre;
string  Lettre;
string  matrice_Lettre;
vector  point_zero;
integer x;
integer z;

//===========================================
//        SET PARTICLES
//===========================================

init_particles(){

    Particle_Parameters = [  
           PSYS_SRC_TEXTURE, Txt_Point, 
           PSYS_PART_START_SCALE, < Size_Point, Size_Point, FALSE >, 
           PSYS_PART_END_SCALE,   < Size_Point, Size_Point, FALSE >, 
           PSYS_PART_START_COLOR, Color_Point,    
           PSYS_PART_END_COLOR,   Color_Point, 
           
           PSYS_SRC_BURST_PART_COUNT, (integer)1, 
           PSYS_SRC_BURST_RATE, (float) 0.0,  
           PSYS_PART_MAX_AGE, (float) 30.0, 
            
           PSYS_SRC_PATTERN, (integer) 1,
              
           PSYS_PART_FLAGS,
           PSYS_PART_EMISSIVE_MASK
           ];
}

//===========================================
//          SET DISPLAY
//===========================================
affichage (string phrase) {

    integer len_Phrase = llStringLength(phrase)-1;  
    for(id_Phrase = 0; id_Phrase <= len_Phrase;++id_Phrase){ 
        Lettre = llGetSubString(phrase, id_Phrase, id_Phrase);
        id_Lettre = llListFindList(Alphabet, [Lettre]);
        matrice_Lettre = llList2String(Matrices, id_Lettre); 
        z=0; 
        do{ 
            x=0;
            do{
                if( (integer)llGetSubString(matrice_Lettre, x + 5*z, x + 5*z) ) {
                    llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POSITION, point_zero + < x*Size_Point, 0.0, -z*Size_Point > ]);
                    llParticleSystem( Particle_Parameters );
                    llSleep(0.12);
                    llParticleSystem( [] );
                }
            } while( ++x <= 4);
        } while( ++z <= 5);
        
        point_zero += < 6. * Size_Point, 0.0, 0.0 >; //locate next char
    }
}
/////////////////////////////////////
///////////////////////////////////// 
/////////////////////////////////////
/////////////////////////////////////


default {

    state_entry() {

        llListen(20, "", llGetOwner(), "");
        init_particles(); 
        Origine = < (-0.48 * Size_Affich.x) , (-1.25 * Size_Point) , (0.3 * Size_Affich.z)  >; //raz cursor
    }

    listen( integer channel, string name, key id, string msg ) {

        Texte = msg;
        point_zero = Origine;    //raz cursor         
        llSetTimerEvent(30.);
        affichage(Texte);
    } 
    
    timer(){

        point_zero = Origine;  //raz cursor
        affichage(Texte);
    }

    on_rez(integer param) {llResetScript();}
    changed(integer mask) {if(mask & CHANGED_OWNER) {llResetScript();}} 
      
}