simplification de code

Répondre
Partager Rechercher
bonsoir
je sollicite une fois de plus votre aide
mon premier script est à présent terminé après qq heures de bricolage. il varie les couleurs d'un objet le voici

Code:
 
vector color = <0,0,0>; 
float gIncrem = 0.1;
float gnMaxCol = 1;
SetTheColor()
{
llSetColor(color, ALL_SIDES); 
}
default
{
	state_entry()
	{
		@StartLoop;
		if (gnMaxCol == 1)
		 {
			while (color.x < gnMaxCol)
			{
				color += <gIncrem,0,0>;
				SetTheColor();
			 while (color.y < gnMaxCol)
				{
					color += <0,gIncrem,0>;
					SetTheColor();
					while (color.z < gnMaxCol)
					{
						color += <0,0,gIncrem>;
						SetTheColor();
					}
				}
			}
			gnMaxCol = -1;
			}
		else
		 {
			 while (color.x > gnMaxCol+1)
			{
				color -= <gIncrem,0,0>;
				SetTheColor();
			 while (color.y > gnMaxCol+1)
				{ 
					color -= <0,gIncrem,0>;
					SetTheColor();
					while (color.z > gnMaxCol+1)
					{ 
						color -= <0,0,gIncrem>;
						SetTheColor();
					} 
				} 
			 } 
			gnMaxCol = 1;
		}
	jump StartLoop;
	}
}
ya t'il un moyen de varier le -/+ dans color -= <0,0,gIncrem et le < et > dans while (color.x > gnMaxCol+1) par une variable ? cela permettrait de supprimer le bloc if else et de diviser la taille par deux. si oui comment invoque t'on cette variable pour qu'elle soie considéré comme un opérateur

que feriez-vous pour optimiser ce code ?

d'après-vous ce genre de boucle affecte-elle beaucoup le "lag" d'une prime ?

merci à ceux qui s'y plongeront
un truc comme ça, ça te convient ???
Code:
   // déclaration
   vector color = <0,0,0>; 
   float gIncrem = 0.1;
   integer gnMaxCol = 1;
   // fonction
   SetTheColor()
   {
   	// applique la couleur
   	llSetColor(color, ALL_SIDES); 
   }
   //status
   default
   {
   	state_entry()
   	{
   		while (1){ // execution permanente
   			// boucle de parcours des couleurs
   			while (color.x < gnMaxCol){
   				color += <gIncrem,0,0>;
   				SetTheColor();
   				while (color.y < gnMaxCol){
   					color += <0,gIncrem,0>;
   					SetTheColor();
   					while (color.z < gnMaxCol){
   						color += <0,0,gIncrem>;
   						SetTheColor();
   					}
   				}
   			}
   			// RAZ couleur en fin de boucle   
   			color = <0,0,0>;
   			SetTheColor();
   		}
   	}
   }
gnMaxCol n'a d'ailleurs pas d'intéret à être un paramètre dans ce cas, tu peux remplacer par des comparaison à 1
__________________
- Xav - (/w Xav-Slider)
Osamodas, alchimiste, paysan, forgeur de marteau, et bien d'autres choses encore...
www.xav-world.com
oui je sais, sais, c'est pour ça qu'il est 2 fois moins long,
et c'est aussi pour ça que j'ai demandé si ça te convenait

EDIT:
donc pour revenir sur la 1ere série de question, en porog on ne peut pas à ma connaissance rendre un opérateur "variable"

1 solution serait de faire l'addition ou soustraction (et la comparaison) directement dans ta fonction "SetTheColor, en passant en plus la variable +1 ou -1 en paramètre.

ça va alléger un peu le script "default" mais compléxifier celui de la fonction, donc au bout du compte... ça revient un peu au même
__________________
- Xav - (/w Xav-Slider)
Osamodas, alchimiste, paysan, forgeur de marteau, et bien d'autres choses encore...
www.xav-world.com
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés