23class ScnMdlSimple : 
public ScnLeaf {
 
   32        ANMOBJTYPE_NOT_SPECIFIED,
 
   34        ANMOBJTYPE_VTX = ANMOBJTYPE_SHP
 
   44#define OPT(KEY, VALUE) OPTID_##KEY = (0x20000 | (VALUE)) 
   45    enum ScnMdlSimpleOption {
 
   47        OPT(IGNORE_ANMCHR_TRANS, 1),
 
   52    static ScnMdlSimple* Construct(
MEMAllocator* pAllocator, 
size_t* pSize,
 
   56                 math::MTX34* pWorldMtxArray, ulong* pWorldMtxAttribArray,
 
   58                 math::MTX34* pViewTexMtxArray, 
int numView, 
int numViewMtx);
 
   60    virtual void G3dProc(ulong task, ulong param, 
void* pInfo); 
 
   61    virtual ~ScnMdlSimple();                                
 
   63    virtual bool SetScnObjOption(ulong option, ulong value);         
 
   64    virtual bool GetScnObjOption(ulong option, ulong* pValue) 
const; 
 
   66    virtual bool SetAnmObj(
AnmObj* pObj, AnmObjType type);  
 
   67    virtual bool RemoveAnmObj(
AnmObj* pObj);                
 
   68    virtual AnmObj* RemoveAnmObj(AnmObjType type);          
 
   69    virtual AnmObj* GetAnmObj(AnmObjType type);             
 
   70    virtual const AnmObj* GetAnmObj(AnmObjType type) 
const; 
 
   72    bool GetScnMtxPos(
math::MTX34* pMtx, ScnObjMtxType type, 
size_t idx) 
const;
 
   76    void EnableScnMdlCallbackTiming(Timing timing);
 
   77    void DisableScnMdlCallbackTiming(Timing timing);
 
   88    const u8* GetByteCode(ByteCodeType type) 
const;
 
   93    const ResMdl GetResMdl()
 const {
 
   98        return mpWorldMtxArray;
 
  100    ulong* GetWldMtxAttribArray() {
 
  101        return mpWorldMtxAttribArray;
 
  104    ulong GetNumViewMtx()
 const {
 
  108    const u8* GetByteCodeCalc() {
 
  109        return mpByteCodeCalc;
 
  111    const u8* GetByteCodeMix() {
 
  112        return mpByteCodeMix;
 
  114    const u8* GetByteCodeDrawOpa() {
 
  115        return mpByteCodeDrawOpa;
 
  117    const u8* GetByteCodeDrawXlu() {
 
  118        return mpByteCodeDrawXlu;
 
  121    ResMdlDrawMode GetDrawMode()
 const {
 
  126        mpCalcWorldCallback = pCallback;
 
  129        return mpCalcWorldCallback;
 
  132    u8 GetScnMdlCallbackTiming()
 const {
 
  136    void SetScnMdlCallbackNodeID(ulong 
id) {
 
  139    ulong GetScnMdlCallbackNodeID()
 const {
 
  150        return mpAnmObjMatClr;
 
  153        return mpAnmObjTexPat;
 
  156        return mpAnmObjTexSrt;
 
  160    enum ScnMdlSmplFlag {
 
  161        SCNMDLSMPLFLAG_LC_DMA = (1 << 0),
 
  164    static const int VIEW_MAX = 16;
 
  166    static const int MTX_CACHE_MIN = 8;
 
  167    static const int MTX_CACHE_MAX =
 
  171    void ScnMdlSmpl_CalcPosture(ulong param, 
const math::MTX34* pParent);
 
  173    void ScnMdlSmpl_G3DPROC_GATHER_SCNOBJ(ulong param,
 
  175    void ScnMdlSmpl_G3DPROC_CALC_WORLD(ulong param, 
const math::MTX34* pParent);
 
  176    void ScnMdlSmpl_G3DPROC_CALC_MAT(ulong param, 
void* pInfo);
 
  177    void ScnMdlSmpl_G3DPROC_CALC_VIEW(ulong param, 
const math::MTX34* pCamera);
 
  178    void ScnMdlSmpl_G3DPROC_DRAW_OPA(ulong param, 
void* pInfo);
 
  179    void ScnMdlSmpl_G3DPROC_DRAW_XLU(ulong param, 
void* pInfo);
 
  181    void ScnMdlSmpl_G3DPROC_UPDATEFRAME(ulong , 
void* ) {
 
  188    ulong* mpWorldMtxAttribArray;     
 
  195    ulong mFlagScnMdlSimple;          
 
  197    const u8* mpByteCodeCalc;    
 
  198    const u8* mpByteCodeMix;     
 
  199    const u8* mpByteCodeDrawOpa; 
 
  200    const u8* mpByteCodeDrawXlu; 
 
  201    ResMdlDrawMode mDrawMode;    
 
  205    u8 mCwcbDeleteOption;                    
 
  214    NW4R_G3D_RTTI_DECL_DERIVED(ScnMdlSimple, ScnLeaf);