SLPAv2   [w,*,*,*]


SLPA Extension v2(ver 1.00) 20211113 不備の調整 20200707 InOutの走査タイミングの変更など… 20200523 グループ処理が使われている場合に不具合があった為、その対応 20200204 addSLPASettingによる登録の際の仕様とその対応 20200108 CF側オブジェクト制限数に引っ掛かるように調整 ※オブジェクトを仮想化した場合、CF側オブジェクト制限数以上にオブジェクトは生成可能 20200104 SLPAv2の公開 ※v2ではSLPA適用オブジェクトを指定でき、またそのコントロール範囲も指定できる ================================================================================ ■SLPAとは (Sleep Accellarater) 画面領域外のアクティブオブジェクトをCFエンジンから 認識させなくすることによって処理負荷を削減し アプリケーションの高速化を図るエクステンションです。 ================================================================================ SLPAでは高速化の為 アクティブオブジェクトがCFエンジンから離れる事を"phase out"(フェイズアウト) アクティブオブジェクトがCFエンジンに入る事を"phase in"(フェイズイン)と呼んでいます。 現在の仕様 ・アクティブオブジェクトのオプション (離れたら無効 -> はい / 自動) がフェイズ対象となる ・仮想画面の範囲から外れる座標位置はフェイズ対象外 ・“物理”のオブジェクトは対象外 (解析難航にて停止中) ・addSLPASettingによる登録の際、対象となる種類のオブジェクトが一つも無い場合は登録できない(厄介ですが) (個別の登録ではエラーダイアログを出すようにしますwin版のみ) ・グループによる登録の場合でも同様に、無いオブジェクトに対しては登録が無視される ・SLPAオブジェクトの破壊時に全てフェイズイン ・オブジェクト制限値以上のオブジェクト数になる場合、PhaseINが発生しないだけで仮想上には残る ================================================================================ □エディタオプション アクティブオブジェクトのチェック アクティブオブジェクトへのSLPAを適用する ---------------------------------------------------------------------- ■Action addSLPASetting( object , width , height , flg ) SLPA適用対象オブジェクトの登録をします object : 対象オブジェクト widht : コントロールする画面外の幅 height : コントロールする画面外の幅 flg : SLPA Option適用モードの指定 0 or 1 このオプションフラグが1の場合、アクティブオブジェクトのフラグ変数0番を詳細なコントロール用に利用し以下のように動作します フラグ0番がOFFである場合に、コントロール外でphase outし、さらにフラグ0番がONになる (phase outする条件に0番フラグをみるようになります) つまり、そのままであればphase in後に再度phase outが起こらなくなり いずれかのタイミングでCF側でフラグ0番をOFFにしておけば"phase out"は発生するということになります autoPhaseExecute 一定の設定に従って、フェイズインとフェイズアウトを行います。 *内部では多重実行を削減する為スクロール幅をチェックしています (これは、設定されたコントロール幅の内、最小の単位で発生します) addFixedValueMap フェイズイン時にオブジェクトの固定値が変更される場合 登録されているオブジェクトの変数に対して、変更後固定値に変換します ※オブジェクトがフェイズイン時に、他の全てのアクティブオブジェクトの変数値に対して書き換えが行われます。 しかし、フェイズアウト中のオブジェクトには書き換えが発生しないので注意が必要です (互いの固定値を持った二つのオブジェクトが同じタイミングでフェイズインする場合には双方書き換わり正しく動作します) PhaseIn - TargetObj( object ) 対象オブジェクトを全てフェイズインさせます PhaseIn - ALL 全てフェイズインさせます ---------------------------------------------------------------------- ■Expressions getPhaseOutCount フェイズアウト中のアクティブオブジェクトの数を得る ================================================================================ □あとがき これを使いこなすことができれば、大量オブジェクトが設置された巨大なフレームであっても 高速なfpsを維持させる事が実現できるかと思います。 DOWNLOAD