/* Autor: Leandro Bernsmuller
Declara cenfis.cpp */



class CCenarioFisico : public CCenario {

public:

   CCenarioFisico ();

   CAgente *m_paoAgentes [ NUM_GRUPOS ] [ MAX_OBJETOS ];  // agente responsavel pelo objeto
   D3DRMBOX m_astCaixas  [ NUM_GRUPOS ] [ MAX_OBJETOS ];  // caixa que circunscreve objeto, no SRO

   float m_fLimBordaSup;
   float m_fLimBordaEsq;
   float m_fLimBordaDir;
   float m_fLimBordaInf;

   BOOL mCria ( int nIniX, int nIniY, int nLargura, int nAltura, HWND hWnd,
                float fPrSup, float fPrInf, float fPrEsq, float fPrDir );
   void mDestroi ();

   // manipula objetos
   int mCriaObjeto ( CAgente* poAgente, DWORD dwGrupo, DWORD dwModelo,
                     float fX, float fY, float fZ,
                     float fDX, float fDY, float fDZ, 
                     float fRX, float fRY, float fRZ,
                     float fAng );
   void mDestroiObjeto ( DWORD dwGrupo, DWORD dwNdxObjeto );
   void mMudaDirecaoDeslocamentoObjeto ( DWORD dwGrupo, DWORD dwNdxObjeto, float fDX, float fDY, float fDZ );
   CAgente* mSelecionaObjetos ( DWORD dwX, DWORD dwY );

   // consistencia e fisica
   void mDetectaColisaoComBordas ( DWORD dwGrupo );
   void mDetectaColisaoEntreObjetos ( DWORD dwGrupo, BOOL bTestaZ );
};
