Beispiel #1
0
void AutoHideBar::RemoveCtrl(int ix)
{
	if (ix >= 0) {
		DockCont *c = GetCtrl(ix);
		ASSERT(c);
		RemoveCtrl(*c, ix);
	}		
}
Beispiel #2
0
void AutoHideBar::TabClose(Value v)
{
	DockCont &dc = *(ValueTo<DockCont *>(v));
	RemoveCtrl(dc, -1);
	dc.StateNotDocked();
	dc.SignalStateChange();
	if (GetCount() == autohide)
		RefreshParentLayout();	
}
Beispiel #3
0
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 ++;
}