Fandom

Second Life in Japan

スクリプターズカフェ/ログ/チャットキーボードの処理の最適化

483このwikiの
ページ数
新しいページをつくる
トーク0 シェアする

Scripters_cafeログ


08/10/25 編集

Hildeさんのブログで紹介されていたチャットキーボードのスクリプトの最適化について、みんなでもう少し考えてみようという話です。

おそらくチャットキーボードのスクリプトの出所はこちらではないかと思われます。


Hildeさんのブログで、以下の点の最適化について記載されています。

  • タイマーイベント内で毎回処理を行うのではなく、状態が変化した時のみ処理を行うように修正
  • オーナーのUUIDを毎回llGetOwnerするのではなく、グローバル変数に保持


純粋に書かれている内容の最適化という点については、トリガーの判定をXOR演算で行ってはどうかという意見が出ました。以下のようなスクリプトになります。

string  TYPE_ANIM = "typing";
key     OWNER_UUID;
integer PREV_AGENTINFO;

default {
    attach( key agent ) {
        if ( agent != NULL_KEY ) {
            llRequestPermissions( ( OWNER_UUID = llGetOwner() ),
                PERMISSION_TRIGGER_ANIMATION );
            PREV_AGENTINFO = 0;
        } else {
            llSetTimerEvent( 0.0 );
        }
    }

    run_time_permissions( integer perm ) {
        if ( perm & PERMISSION_TRIGGER_ANIMATION ) {
            llSetTimerEvent( 0.1 );
        } else {
            llSetTimerEvent( 0.0 );
        }
    }

    timer() {
        integer now;
        if ( ( now = llGetAgentInfo( OWNER_UUID ) & AGENT_TYPING )
                ^ PREV_AGENTINFO ) {
            if ( now ) {
                llSetLinkAlpha( LINK_SET, 1.0, ALL_SIDES );
                llStartAnimation( TYPE_ANIM );
            } else {
                llSetLinkAlpha( LINK_SET, 0.0, ALL_SIDES );
                llStopAnimation( TYPE_ANIM );
            }
            PREV_AGENTINFO = now;
        }
    }
}


さらに以下のような改良も考えられます。

  • スクリプトを手動リセット/リコンパイルした場合の対応
  • アニメーション名のインベントリからの自動取得
  • 万が一地面にrezされた場合の対応



このページのTinyURL:http://tinyurl.com/SC-keyboard-script

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

Fandomでも見てみる

おまかせWiki