Script オペレータ サンプル内の Speed オペレータ
 
 
 
 

   

パーティクル フロー クイック ナビゲーション

説明:

独自の機能をシミュレートする Script オペレータ の例を、Speed オペレータ を作成して示します。この方法で複数の標準オペレータを作成し、Init ブロックにそれらのプロパティを設定し、引き続き Proceed ブロックで使用することができます。

用途:

Script_Operator オペレータで使用する必要があります。

効果:

基本的には、Speed オペレータをラップし、スクリプト化します。Script オペレータは、その内部にカプセル化された Speed オペレータと同様の機能を持ちます。これを開始点にしてスクリプトを拡張し、既存のオペレータにスクリプト化された機能を追加することができます。

例:

--ChannelsUsed ハンドラは、スクリプトに提供される
--チャンネルを定義します。
on ChannelsUsed pCont do
(
-- スクリプトはパーティクル データに直接アクセスしません。
-- したがって、チャンネルは指定されません。
)
 
--初期化時には Init ハンドラが呼び出されます。
--Speed アクションを取得するために使用します。既存の Speed アクションがない場合は、
--これを使って作成できます。
on Init pCont do
(
--一意の名前を指定して、既存の Speed アクションを取得します。
bb = $Speed74b93a88
 
--一意のアクションが存在しない場合は作成し、
--一意の名前を付与します。複数の Script オペレータ内でコードを再利用する場合、
--ID が一意になるように名前を変更します。
if (bb == undefined) then
(
ParticleFlow.BeginEdit()
bb = Speed()
bb.name ="Speed74b93a88"
bb.speed = 100
ParticleFlow.EndEdit()
)
initActions = pCont.getInitActions()
--Speed アクション内に Init メソッドを呼び出し、
--パーティクル コンテナ、パーティクル システム オブジェクトおよびノード、
--Scripted オペレータの init アクション オブジェクトおよびノードに渡します。
bb.Init (pCont.getParticleContainer()) (pCont.getParticleSystem()) (pCont.getParticleSystemNode()) (pCont.getInitActions()) (pCont.getInitActionNodes())
)
 
--Proceed ハンドラ内で、オペレータ インタフェースの
--.Proceed メソッドを呼び出し、コンテナ、
--パーティクル システム オブジェクトおよびノード、
--Init アクション オブジェクトおよびノードを渡すことができます。
--つまり、外部 Speed アクションは、Script_Operator オペレータの
--進行時に常に進行します。
on Proceed pCont do
(
t_start = pCont.GetTimeStart()astime
t_end = pCont.GetTimeEnd()astime
bb = $Speed74b93a88
if (bb != undefined) then
(
bb.Proceed (pCont.getParticleContainer()) t_start &t_end (pCont.getParticleSystem()) (pCont.getParticleSystemNode()) bb (pCont.GetIntegrator())
)
pCont.SetTimeEnd t_end
)
 
--Script_Operator オペレータの Release ハンドラ内で、
--.Release メソッドを呼び出し、Script_Operator オペレータの
--コンテナを渡します。  
on Release pCont do
(
bb = $Speed74b93a88
if (bb != undefined) then
bb.Release(pCont.getParticleContainer())
)
 
関連事項