# NNS_G3D_SBC_NODE

## 命令のフォーマット

オフセット（バイト単位） | 説明
--- | ---
0 | `NNS_G3D_SBC_NODEMIX`
1 | ノードＩＤ
2 | 下位1ビットが1ならばそのノードは表示される。0ならば表示されない。

## 説明

`NNS_G3D_SBC_NODE`命令は、この命令以後送信される、マテリアルやシェイプ情報がどのノードに属するものかを宣言するための命令です。
この命令は、デフォルトではsbc.cの`NNSi_G3dFuncSbc_NODE`関数をコールします。関数の内部では、以下のような処理が行われています。

1. `NNS_G3dRS`構造体の`pVisAnmResult`メンバに`NNSG3dVisAnmResult`構造体のポインタをセットする。
2. タイミングＡのコールバックをチェックします。この位置のコールバックは、ビジビリティの計算をコールバック関数に代行させたい場合に便利です。なお、コールバック関数内で`NNS_G3dRS`構造体の`NNS_G3D_RSFLAG_SKIP`フラグをセットしておくと、次のコールバックまでの処理をスキップします。
3. ビジビリティ情報が静止画／アニメーションの場合に応じて、`*pVisAnmResult`にセットされます。
4. タイミングBのコールバックをチェックします。この位置のコールバックは、ビジビリティの計算結果をコールバック関数に加工させたい場合に便利です。
5. `NNS_G3dRS`のフラグが`*pVisAnmResult`の結果に応じてセットされる。このフラグを後続の命令が使用することによって、ノードが持つポリゴンが表示されたりされなかったりします（ビジビリティアニメ)。
6. タイミングＣのコールバックをチェックする。この位置のコールバックは、この命令の終了後に何らかの動作をさせたい場合に利用します。

コールバック関数の呼び出しタイミング | 用途
--- | ---
`NNS_G3D_SBC_CALLBACK_TIMING_A` | ビジビリティ計算そのものをユーザーのコールバック関数で置き換えたい場合。
`NNS_G3D_SBC_CALLBACK_TIMING_B` | ビジビリティ計算の結果を取り出したい場合、又はビジビリティ計算の結果を加工したい場合。
`NNS_G3D_SBC_CALLBACK_TIMING_C` | この命令の終了後に何らかの処理を入れたい場合。

## 参照

## 履歴

2004/10/14 記述の追加
2004/08/02 初版