void AutoHideBar::RemoveCtrl(int ix) { if (ix >= 0) { DockCont *c = GetCtrl(ix); ASSERT(c); RemoveCtrl(*c, ix); } }
void AutoHideBar::TabClose(Value v) { DockCont &dc = *(ValueTo<DockCont *>(v)); RemoveCtrl(dc, -1); dc.StateNotDocked(); dc.SignalStateChange(); if (GetCount() == autohide) RefreshParentLayout(); }
void CShipLoop::Process() { D3DXMatrixInverse( GetInvTM(), NULL, &m_matWorld ); // 좌표변환이 이뤄지기전 매트릭스로 역행렬을 구해놔야 한다. D3DXVECTOR3 vPos = GetPos(); D3DXVECTOR3 vDeltaAccu; FLOAT fAng = GetAngle(); vDeltaAccu = D3DXVECTOR3(0, 0, 0); // 누적 벡터는 항상 초기화 해줘야 한다. m_fDeltaAng = 0.07f; #ifdef __X15 int i; for( i = 0; i < 4; i ++ ) #endif { fAng += m_fDeltaAng; // 왼쪽으로 계속 회전 AngleToVectorXZ( &m_vAcc, fAng, 0.05f ); // fAng방향으로 추진력발생. vDeltaAccu += m_vAcc; // 서버 15프레임에서만 사용되는 것으로 4번을 누적함. } m_vDelta = vDeltaAccu; vPos += m_vDelta; SetPos( vPos ); SetAngle( fAng ); #ifdef __WORLDSERVER if( (m_nCount & 127) == 0 ) { OBJID idCtrl = NULL_ID; g_UserMng.AddSetPosAngle( this, GetPos(), GetAngle() ); // 먼저 this(Ship)의 위치를 sync시킴. // 링크되어 있는 모든 ctrl의 위치를 다시 sync시킴. for( i = 0; i < MAX_LINKCTRL; i ++ ) { if( m_LinkCtrl[i] == 0 ) continue; idCtrl = m_LinkCtrl[i]; CCtrl *pCtrl = prj.GetCtrl( idCtrl ); if( IsValidObj( pCtrl ) ) { if( pCtrl->GetIAObjLink() == this ) g_UserMng.AddSetPosAngle( pCtrl, pCtrl->GetPos(), pCtrl->GetAngle() ); // this(Ship)의 위치를 sync시킴. else RemoveCtrl( pCtrl->GetId() ); } } } #endif // IA오브젝트는 다른 오브젝트를 태우고 다녀야 하므로 // 실시간으로 매트릭스가 갱신되어야 한다. UpdateLocalMatrix(); m_nCount ++; }