2014年2月25日火曜日

新型リサイズ命令関係のお話

実装されたものの時代はmeshに移行してる上に


リサイズの所謂"強制執行"が出来ないっチューことで
いまいち不人気の新型リサイズ命令ですが

平面マップも対応してないっちゅーやる気の無さっぷりなわけですよ


まぁそれだけ書くのもアレなので
誰得なソースを適当に置いときます

//どのプリムが縮小出来ない原因なのかを教えてくれるだけのスクリプト
default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_TEXT,"",<1,1,1>,1.0]);
        integer nop=llGetNumberOfPrims();
        vector scale;
        do{
            scale=llList2Vector(llGetLinkPrimitiveParams(nop,[PRIM_SIZE]),0);
            if(scale.x<0.015||scale.y<0.015||scale.z<0.015){
                llOwnerSay((string)nop+","+(string)scale+","+llGetLinkName(nop));
                llSetLinkPrimitiveParamsFast(nop,[PRIM_TEXT,"FOUND\n",<1,1,1>,1>]);
//                llSetLinkPrimitiveParamsFast(nop,[PRIM_TEXT,"FOUND\n",<1,1,1>,1.0,PRIM_SIZE,<0.015,0.015,0.015>]);
            }
            --nop;
        }while(nop>0);
        llRemoveInventory(llGetScriptName());
    }
}
//[EOF}

コメントアウトしてる行を入れ替えると
縮小限界をちょい上げる程度にリサイズします






あとは各命令に関する適当な解説

Functioninteger llScaleByFactorfloat scaling_factor );
こいつがメインとなるリサイズ命令

記述の仕方が現在のスケールからの相対なので
従来型の基準スケールから〇〇%プラスて感じのを
そのまま入れ替えるとかはちょい無理っすな



Functionfloat llGetMinScaleFactor( );
Functionfloat llGetMaxScaleFactor( );

この2つがリサイズの限界を見るための命令
こいつの戻り値も現在スケールからの相対値なので
一気に限界までリサイズかけたいって場合を除き
あんまり使い道がありませぬ

llScaleByFactor(llGetMinScaleFactor( ));

petitteさんとかだと割とこいつ多用する感じになるんじゃないかのぉ
ただこれ使ってもサイズ合わないなら
従来型の強制執行が可能なリサイザーになりますな


ってなところかねー
以上

0 件のコメント:

コメントを投稿