harayoki
2007年04月24日 16:49
// basic fadein-fadeout script ver 2.01
// programed by harayoki
// 2007/4/18
float _fadeInTime = 1.0;//フェードインにかかる秒数
float _fadeOutTime = 1.0;//フェードアウトにかかる秒数
float _wait1Time = 2.0;//不透明維持秒数
float _wait2Time = 2.0;//透明維持秒数
float _stepsPerSecond = 15;
float MAX_ALPHA = 1.0;//SET 1.0 FOR COMPLETE OPAQUE //一番不透明な時のアルファ値
float MIN_ALPHA = 0.0;//一番透明な時のアルファ値
key owner;
Init(){
owner = llGetOwner();
}
ChangeAlpha(float time,float from,float to){
integer i;
float stepNum = time*_stepsPerSecond;
float width = (to - from);
for(i=0;i<=stepNum;i++){
float ratio = (i/stepNum);
float alpha = from + width*ratio;
llSetAlpha(alpha,ALL_SIDES);
llSleep(time/stepNum);
}
}
integer isOwnerToutch(){
key toucher = llDetectedKey(0);
return (toucher == owner);
}
default{
state_entry(){
Init();
state fadeOut;
}
}
state fadeOut{
state_entry(){
ChangeAlpha(_fadeOutTime,MAX_ALPHA,MIN_ALPHA);
state wait1;
}
}
state wait1{
state_entry(){
llSetTimerEvent(_wait1Time);
}
timer(){
state fadeIn;
}
touch_start(integer total_number){
if(isOwnerToutch()) state pause;
}
}
state fadeIn{
state_entry(){
ChangeAlpha(_fadeInTime,MIN_ALPHA,MAX_ALPHA);
state wait2;
}
}
state wait2{
state_entry(){
llSetTimerEvent(_wait2Time);
}
timer(){
state fadeOut;
}
touch_start(integer total_number){
if(isOwnerToutch()) state pause;
}
}
state pause{
state_entry(){
llSetAlpha(1.0,ALL_SIDES);
}
touch_start(integer total_number){
if(isOwnerToutch()) state fadeOut;
}
}