njCnkSetCurrentShape
ノード・モーション関数のパラメータの設定

### 書　式

      #include <Ninja.h>
      void  njCnkSetCurrentShape(NJS_MOTION *motion, Int type, Float frame );
      NJS_MOTION  *motion
      Int	type
      Float   frame

### 引　数

motion
  モーション構造体へのポインタ
type
  頂点リストの型
frame
  フレーム番号

### 返　値

  なし

### エラー

  なし

### 機　能

  チャンク用ノード毎のモーション・パラメータを設定（初期化）します。

### 用　例

      用　例
      #include

      #define OBJECT    object_sample
      #define MOTION    motion_sample
      #define MDATA3    ((NJS_MDATA3 *) MOTION->mdata)
      #define LINEAR    0
      #define SPLINE    1

      extern NJS_MOTION  MOTION[];
      extern NJS_OBJECT  OBJECT[];

      Float  ff = 0.f;
      Int  spline_flg = SPLINE;

      /*このmdataはオブジェクト情報取得のため*/
      NJS_MDATA3 *mdata;

      ...........

      Sint32 njUserMain(void)
      {
        ...........

        mdata = MDATA3;
        njSetCurrentMotion(MOTION, ff );
        njCnkSetCurrentShape(shape, NJD_CV_VN, ff );

        PushPopMotion( OBJECT );

        ff+=0.2f;
        if( ff >= (MOTION->nbFrame-1) ) ff=0.f;
        ...........
      }

      void
      PushPopMotion( NJS_CNK_OBJECT *cnkobj )
      {
      	Float	pos[3], scl[3];
      	Angle	ang[3];
      	Sint32	*vlist;

      	do {
      		njPushMatrix( NULL );

      		if (mdata->p[0] != NULL) {
      			njGetMotionTranslate( pos, spline_flg );
      		} else  {
      			pos[0] = cnkobj->pos[0];
      			pos[1] = cnkobj->pos[1];
      			pos[2] = cnkobj->pos[2];
      		}

      		if (mdata->p[1] != NULL) {
      			njGetMotionRotate( ang, spline_flg );
      		} else  {
      			ang[0] = cnkobj->ang[0];
      			ang[1] = cnkobj->ang[1];
      			ang[2] = cnkobj->ang[2];
      		}

      		if (mdata->p[2] != NULL) {
      			njGetMotionScale( scl, spline_flg );
      		} else  {
      			scl[0] = cnkobj->scl[0];
      			scl[1] = cnkobj->scl[1];
      			scl[2] = cnkobj->scl[2];
      		}

      		njTranslate( NULL, pos[0], pos[1], pos[2] );
      		njRotateZXY( NULL, ang[0], ang[1], ang[2] );
      		njScale( NULL, scl[0], scl[1], scl[2] );
      		njSetNextMotionNode();
      		mdata++;

      		if ( cnkobj->model != NULL ) vlist = cnkobj->model->vlist;

      		if ( !(cnkobj->evalflags & NJD_EVAL_SHAPE_SKIP)) {
      			if (njCnkGetShape(cnkobj, NULL, spline_flg)) cnkobj->model->vlist = (Sint32*)sbuf;
      		}

      		if( (cnkobj->model != NULL) && (!(cnkobj->evalflags & NJD_EVAL_HIDE)) ) {
      			njCnkEasyDrawModel( cnkobj->model );
      			cnkobj->model->vlist = vlist;
      		}

      		if( cnkobj->child != NULL )
      			PushPopMotion( (NJS_CNK_OBJECT*)cnkobj->child );

      		njPopMatrix( 1 );

      		cnkobj = cnkobj->sibling;
      	} while( cnkobj != NULL );
      }

      ...........

### 備　考

### 関　連

  njCnkGetShape

njCnkSetCurrentShape |