void interp(void) { char line[256]; char *p; while(1) { putchar('>'); putchar(' '); flushall(); gets(line); // p points to next word after verb on command line p = line; while (*p && *p!=' ') p++; if (!*p) p = 0; else { while(*p && *p==' ') p++; } switch(toupper(line[0])) { case 'B': vVerbose(p); break; case 'C': vCreate(p); break; case 'D': vDisplay(p); break; case 'F': vFind(p); break; case 'H': default: vHelp(line); break; case 'I': vInstall(p); break; case 'K': vPack(p); break; case 'P': vPretend(p); break; case 'R': vRemove(p); break; case 'S': vSave(p); break; case 'T': vTest(p); break; case 'U': vUpdate(p); break; case 'V': vVerify(p); break; case 'Q': case 'X': vSave(0); return; } // switch } // while assert(0); return; // shouldn't get here } // interp
HRESULT GdsNode::Update( float fElapsedtime ) { if ( m_bCull ) return FALSE; D3DXMATRIX matTrans, matScale, matRot; D3DXMatrixIdentity( &matTrans ); D3DXMatrixIdentity( &matScale ); D3DXMatrixIdentity( &matRot ); D3DXMatrixTranslation(&matTrans, m_vTranslate.x, m_vTranslate.y, m_vTranslate.z); D3DXMatrixScaling(&matScale, m_vScale.x, m_vScale.y, m_vScale.z); D3DXMatrixRotationQuaternion(&matRot, &m_qRotate); m_matLocal = matTrans * matRot * matScale; if( GetParent() ) { D3DXMATRIX parTM; parTM = GetParent()->GetWorldMatrix(); //m_matWorld = m_matLocal * m_matAni * m_pParent->GetWorldMatrix(); m_matWorld = m_matLocal * parTM; } else { m_matWorld = m_matLocal; } m_vWorldTranslate = D3DXVECTOR3(m_matWorld._41, m_matWorld._42, m_matWorld._43 ) ; D3DXQuaternionRotationMatrix(&m_qWorldRotate, &m_matWorld); // 뷰 판정 if ( CAMMGR.GetCurCam()->GetFrustum().VertexIsInFrustum( m_vWorldTranslate ) == false ) { return FALSE; } if ( m_bShowAxis ) { D3DXVECTOR3 cenPos( 5.f , 5.f , 5.f ); RENDERER.DrawAxis( m_matWorld , cenPos ); } if ( m_bShowBox ) { D3DXVECTOR3 minPos( -10.f , -10.f , -10.f ); D3DXVECTOR3 maxPos( 10.f , 10.f , 10.f ); RENDERER.DrawBox( m_matWorld , minPos , maxPos ); } if ( m_bUseOctree ) { GenOctreeFaceIndex(); } if ( !m_list_RenderObject.empty() ) { RENDER_OBJECT_CONTAINER::iterator it = m_list_RenderObject.begin(); for ( ; it != m_list_RenderObject.end() ; ++it ) { it->first->SetMatrix( m_matWorld ); //RENDERER.GetRenderFrame()->AttachRenderObject( it->first , it->second ); } } vUpdate( fElapsedtime ); if ( !m_ChildNode.empty() ) { for( CHILDNODE_CONTAINER::iterator it = m_ChildNode.begin() ; it != m_ChildNode.end() ; ++it ) { (*it)->Update(fElapsedtime); } } return TRUE; }