Changeset 44

Show
Ignore:
Timestamp:
01/02/10 20:38:11 (2 years ago)
Author:
nktug
Message:

Cross-plateforme compiling in Linux and Windows.

Location:
trunk
Files:
12 modified

Legend:

Unmodified
Added
Removed
  • trunk/SConstruct

    r43 r44  
    186186# 
    187187# Do not display deprecated messsage 
    188 env.Append(CXXFLAGS = ['-Wno-deprecated']) 
     188if sys.platform == 'linux2': 
     189  env.Append(CXXFLAGS = ['-Wno-deprecated']) 
     190   
    189191#------------------------------------ 
    190192# Platform 
     
    326328# TODO : Checking OgreNewt cause several "undefined reference to" Newton. 
    327329#for lib in ['Newton', lib_ogrenewt]: 
    328 lib ='Newton' 
     330lib = 'Newton' 
    329331if not conf.CheckLib(lib, language="C++"): 
    330332        print "Not found Newton library : %s..."%lib 
  • trunk/include/freequest/GameBasicPhysicCallback.hh

    r38 r44  
    2222#include <OgreNewt.h> 
    2323  
    24 //#include "freequest/GamePrerequisites.hh" 
     24#include "freequest/objects/Object.hh" 
    2525 
    2626namespace freequest 
     
    3434    private: 
    3535    }; 
    36   
    3736} 
    3837#endif    
  • trunk/include/freequest/objects/Avatar.hh

    r41 r44  
    3131        { 
    3232    public: 
    33        Ogre::Vector3 pos; 
     33       Ogre::Vector3 mPos; 
    3434     
    3535      // CREATORS 
  • trunk/include/freequest/objects/StaticObject.hh

    r42 r44  
    4747    void setMass(Ogre::Real mass); 
    4848    void setMaterialID(const OgreNewt::MaterialID* matID); 
     49    void addForce( const Ogre::Vector3& force ); 
    4950     
    5051    // ACCESSORS 
     
    5556    OgreNewt::Body* getBody( void ) const; 
    5657     
    57     static void applyForceAndTorqueCallback( OgreNewt::Body* body ); 
     58    void applyForceAndTorqueCallback( void ); 
    5859     
    5960    void update( void ); 
     
    6768    PhyscicType mGeomType; 
    6869    Ogre::Vector3 mGravity; 
    69    
     70    //The force to apply at the body 
     71    Ogre::Vector3 mForce; 
    7072        }; 
    7173 
  • trunk/src/GameAvatarManager.cc

    r42 r44  
    8181  LOG_INFO( Logger::getLogger("freequest.game"), " ==== creating object Avatar ===="); 
    8282   
    83   CPhysicManager::getInstance()->createPhysicBody(GEOM_ELLIPS, mPlayerAvatar); 
     83  CPhysicManager::getInstance()->createPhysicBody(GEOM_ELLIPS, mPlayerAvatar, 0.0001); 
    8484  mPlayerAvatar->getPhysicObject()->setMaterialID(CPhysicManager::getInstance()->getMaterialIDByName("player")); 
    8585   
  • trunk/src/GameBasicPhysicCallback.cc

    r43 r44  
    2222#include "freequest/log/Logger.hh" 
    2323#include "freequest/GameBasicPhysicCallback.hh" 
    24 #include "freequest/objects/Object.hh" 
     24 
    2525 
    2626using namespace freequest; 
    2727using namespace freequest::log; 
     28 
    2829 
    2930//------------------------------------------------------------------------------------------------ 
     
    7475/*   
    7576  obj0.reset(static_cast<CGameObject*>(m_body1->getUserData())); 
    76   // *obj = *((CGameObject*)m_body0->getUserData()); 
     77  //*obj = *((CGameObject*)m_body0->getUserData()); 
    7778  obj1.reset((CGameObject*)m_body0->getUserData()); 
    7879*/ 
  • trunk/src/GamePhysicManager.cc

    r42 r44  
    1616 */ 
    1717 
     18  
    1819#ifdef HAVE_CONFIG_HH 
    1920# include "config.h" 
     
    217218{ 
    218219  //LOG_INFO( Logger::getLogger("freequest.game"), "*** NEWTON PHYSIC CALLBACK"); 
    219   ObjectPtr objet; 
     220  /*ObjectPtr objet; 
    220221  objet.reset((CGameObject*)body->getUserData()); 
    221222  if (objet.use_count()) 
    222223  { 
    223     //LOG_INFO( Logger::getLogger("freequest.game"), "*** NEWTON PHYSIC CALLBACK APPLY FORCE"); 
    224     //objet->getPhysicObject()->applyForceAndTorqueCallback(); 
    225   } 
     224    LOG_INFO( Logger::getLogger("freequest.game"), "*** NEWTON PHYSIC CALLBACK APPLY FORCE for " << objet->getObjectName()); 
     225    objet->getPhysicObject()->applyForceAndTorqueCallback(); 
     226  }*/ 
     227  ((CGameObject*)body->getUserData())->getPhysicObject()->applyForceAndTorqueCallback(); 
    226228} 
    227229     
     
    320322  obj->getPhysicObject()->createBody(mWorld, geomType, obj, col, mass, inertia); 
    321323  //obj->getPhysicObject()->setMaterialID(this->getMaterialIDByName("default")); 
    322   //obj->getPhysicObject()->getBody()->setCustomForceAndTorqueCallback(applyForceAndTorqueCallback); 
     324  //obj->getPhysicObject()->getBody()->removeForceAndTorqueCallback(); 
     325  //obj->getPhysicObject()->getBody()->removeAutoactiveCallback(); 
     326  obj->getPhysicObject()->getBody()->setCustomForceAndTorqueCallback(applyForceAndTorqueCallback); 
    323327  
    324328  delete col;  
  • trunk/src/GamePlayerCallback.cc

    r42 r44  
    1616 */ 
    1717 
     18  
    1819#ifdef HAVE_CONFIG_HH 
    1920# include "config.h" 
     
    3940  getContactPositionAndNormal(point, normal); 
    4041   
    41   LOG_INFO( Logger::getLogger("freequest.game"), "====== PHYSIC CONTACT << USERPROCESS >> " << point.x << " - " << point.y << " - " << point.z <<  " ====="); 
     42  //LOG_INFO( Logger::getLogger("freequest.game"), "====== PHYSIC CONTACT << USERPROCESS >> " << point.x << " - " << point.y << " - " << point.z <<  " ====="); 
     43/*   
     44  CGameObject* mObjet = 0; 
     45   
     46  if (((CGameObject*)m_body0->getUserData())->getObjectType() == "PC") 
     47  { 
     48    mObjet = ((CGameObject*)m_body0->getUserData()); 
     49  } 
     50   
     51  if (((CGameObject*)m_body1->getUserData())->getObjectType() == "PC") 
     52  { 
     53    mObjet = ((CGameObject*)m_body1->getUserData()); 
     54  } 
     55   
     56   
     57  // determine if this contact is with the floor. 
     58  // Meaning the contact normal has an angle to UNIT_Y of 20 or less. 
     59  Ogre::Degree angle = Ogre::Math::ACos(normal.dotProduct(Ogre::Vector3::UNIT_Y)); 
     60 
     61  Ogre::Vector3 charPos; 
     62  Ogre::Quaternion charOri; 
     63  mObjet->getPhysicObject()->getBody()->getPositionOrientation(charPos, charOri); 
     64  bool isFloorCollision(false); 
     65 
     66  Ogre::AxisAlignedBox CharAab = mObjet->getPhysicObject()->getBody()->getCollision()->getAABB(); 
     67  Ogre::Real charHeight = CharAab.getMaximum().y - CharAab.getMinimum().y; 
     68  Ogre::Real stepHeight = point.y - charPos.y; 
     69 
     70  if( stepHeight < charHeight/2 ) 
     71  { 
     72    isFloorCollision = true; 
     73  } 
     74 
     75  if( stepHeight < 0.4 ) 
     76  { 
     77      if(stepHeight > 0.01f) 
     78      { 
     79          //rotateTangentDirections(charOri + Ogre::Vector3::UNIT_Y); 
     80          setContactTangentAcceleration(5,0); 
     81          setContactFrictionState(1,0); 
     82          setContactFrictionState(1,1); 
     83      } 
     84      else 
     85      { 
     86          setContactFrictionState(1,0); 
     87          setContactFrictionState(1,1); 
     88      } 
     89  } 
     90  else 
     91  { 
     92      Ogre::Vector3 vel; 
     93      vel = mObjet->getPhysicObject()->getVelocity(); 
     94      if( vel.y >= 0 ) 
     95      { 
     96          setContactFrictionState(1,0); 
     97          setContactFrictionState(1,1);     
     98      } 
     99      else 
     100      { 
     101          setContactFrictionState(0,0); 
     102          setContactFrictionState(0,1); 
     103      } 
     104  }   
     105  
     106  setContactSoftness(0.8f); 
     107  setContactElasticity(0.0f); 
     108  */ 
    42109  return 1; 
    43110} 
  • trunk/src/MainGameState.cc

    r43 r44  
    236236  floornode->showBoundingBox(true); 
    237237  */ 
    238    
     238/*   
    239239  // CYLINDER test 
    240240  ObjectPtr cylindObj = CObjectFactory::getInstance()->createObject("BLD"); 
     
    248248  CObjectManager::getInstance()->addObject(cylindObj); 
    249249  LOG_INFO( Logger::getLogger("freequest.game"), " ==== creating object CYLINDER ===="); 
    250  
     250   
     251    // Create the physic body by the physicManager 
     252  CPhysicManager::getInstance()->createPhysicBody(GEOM_CYLINDER, cylindObj, 200.0); 
     253  cylindObj->getPhysicObject()->setMaterialID(CPhysicManager::getInstance()->getMaterialIDByName("default")); 
     254*/  
    251255  // CUBE test 
    252256  ObjectPtr cubObj = CObjectFactory::getInstance()->createObject("BLD"); 
     
    262266   
    263267  // Create the physic body by the physicManager 
    264   CPhysicManager::getInstance()->createPhysicBody(GEOM_CYLINDER, cylindObj, 200.0); 
    265268  CPhysicManager::getInstance()->createPhysicBody(GEOM_BOX, cubObj, 200.0); 
    266   cylindObj->getPhysicObject()->setMaterialID(CPhysicManager::getInstance()->getMaterialIDByName("default")); 
    267269  cubObj->getPhysicObject()->setMaterialID(CPhysicManager::getInstance()->getMaterialIDByName("default")); 
    268    
     270 
    269271        LOG_INFO( Logger::getLogger("freequest.game"), "MAINGameState end enter()"); 
    270272   
  • trunk/src/SConscript

    r43 r44  
    3939        'objects/AnimeObject.cc', 
    4040        'objects/Object.cc', 
     41  'GameVideoManager.cc', 
    4142  'GameAvatarManager.cc', 
    4243  'GameResource.cc', 
     
    6970        'GameEngine.cc', 
    7071        'freequest.cc' 
    71 ] 
    72 #  'GameVideoManager.cc',   
     72 
    7373 
    7474# 
     
    8585# 
    8686if sys.platform == 'win32': 
    87   bin_game_env.AppendUnique(LIBS=["libDFLog", "freequest_main", "Plugin_TheoraVideoSystem"]) 
     87  bin_game_env.AppendUnique(LIBS=["libDFLog", "freequest_main", "OgreNewt_Main", "Plugin_TheoraVideoSystem"]) 
    8888else: 
    8989  bin_game_env.AppendUnique(LIBS=["libDFLog", "freequest_main", "OgreNewt"]) 
  • trunk/src/objects/Avatar.cc

    r41 r44  
    3030using namespace freequest; 
    3131 
    32  
    3332//------------------------------------------------------------------------------------------------ 
    3433CAvatar::CAvatar( void ) 
     
    3837  setObjectType("PC"); 
    3938   
    40   pos = Ogre::Vector3::ZERO; 
     39  mPos = Ogre::Vector3::ZERO; 
    4140} 
    4241 
     
    7574  } 
    7675 
    77   mObjectNode->translate( pos, Ogre::Node::TS_LOCAL ); 
     76  mObjectNode->translate( mPos, Ogre::Node::TS_LOCAL ); 
    7877   
    7978  mPhysicObj->update(); 
     
    8685        mAnimation->setAnimLoop(true); 
    8786 
    88   pos.z -= mStats->getMoveSpeed();   
     87  mPos.z -= mStats->getMoveSpeed();  
     88  mPhysicObj->addForce(mPos); 
    8989} 
    9090 
     
    9595        mAnimation->setAnimLoop(true); 
    9696 
    97   pos.z += mStats->getMoveSpeed(); 
     97  mPos.z += mStats->getMoveSpeed(); 
     98  mPhysicObj->addForce(mPos); 
    9899} 
    99100 
     
    104105        mAnimation->setAnimLoop(true); 
    105106 
    106   pos.x = -mStats->getMoveSpeed(); 
     107  mPos.x = -mStats->getMoveSpeed(); 
     108  mPhysicObj->addForce(mPos); 
    107109} 
    108110 
     
    113115        mAnimation->setAnimLoop(true); 
    114116 
    115   pos.x = mStats->getMoveSpeed(); 
     117  mPos.x = mStats->getMoveSpeed(); 
     118  mPhysicObj->addForce(mPos); 
    116119} 
    117120 
     
    129132  this->setQuickAnimationChange("wait"); 
    130133  mAnimation->setAnimLoop(false); 
    131   pos = Ogre::Vector3::ZERO; 
     134  mPos = Ogre::Vector3::ZERO; 
     135  mPhysicObj->addForce(mPos); 
    132136} 
    133137 
     
    137141  this->setQuickAnimationChange("arme_shield_attack"); 
    138142  mAnimation->setAnimLoop(false); 
    139   pos = Ogre::Vector3::ZERO; 
     143  mPos = Ogre::Vector3::ZERO; 
    140144} 
    141145 
  • trunk/src/objects/StaticObject.cc

    r42 r44  
    2020#endif 
    2121 
    22  
    2322// Includes 
    2423#include "freequest/log/Logger.hh" 
     
    3635  mGeomType = GEOM_NONE; 
    3736  mGravity = Ogre::Vector3::ZERO; 
     37  mForce = Ogre::Vector3::ZERO; 
    3838  LOG_INFO( Logger::getLogger("freequest.game"), " xxxx constructor ~CStaticObject xxxx" ); 
    3939} 
     
    4848 
    4949//------------------------------------------------------------------------------------------------ 
    50 void CStaticObject::applyForceAndTorqueCallback( OgreNewt::Body* body ) 
    51 { 
    52   Ogre::Real mass; 
     50void CStaticObject::applyForceAndTorqueCallback( void ) 
     51{ 
     52  /*Ogre::Real mass; 
    5353  Ogre::Vector3 inertia; 
    54   body->getMassMatrix(mass, inertia); 
     54  mBody->getMassMatrix(mass, inertia);*/ 
    5555  Ogre::Vector3 force(0,-10,0); 
    56   force *= mass; 
    57   //LOG_INFO( Logger::getLogger("freequest.game"), " AAAAAAAAAAAADDDDDDDDDDDDD FFFOOOOORRRRCCCCEEE " << force.x << "--" << force.y << "--" << force.z << " MASS " << mass ); 
    58   body->addForce(force); 
     56  force *= mMass; 
     57  force += mForce; 
     58  mBody->addForce( force ); 
     59  LOG_INFO( Logger::getLogger("freequest.game"), " AAAAAAAAAAAADDDDDDDDDDDDD FFFOOOOORRRRCCCCEEE " << mForce.x << "--" << mForce.y << "--" << mForce.z << " for " << ((CGameObject*)mBody->getUserData())->getObjectName()); 
     60  mForce = Ogre::Vector3::ZERO; 
    5961} 
    6062     
     
    6870  mBody = new OgreNewt::Body( world, col, geomType); 
    6971  mBody->attachToNode( actor->getSceneNode() ); 
    70   mBody->setMassMatrix( mass, inertia ); 
     72  mBody->setMassMatrix( mMass, inertia ); 
    7173  mBody->setStandardForceCallback(); 
    7274  mBody->setUserData(mActor.get()); 
    7375   
    74   mBody->setCustomForceAndTorqueCallback(applyForceAndTorqueCallback); 
     76  //mBody->setCustomForceAndTorqueCallback(applyForceAndTorqueCallback); 
    7577  //mBody->setCustomForceAndTorqueCallback<CPhysicManager>(&freequest::CPhysicManager::doForceCallback, CPhysicManager::getInstance().get()); 
    7678  //mBody->setCustomForceAndTorqueCallback(&freequest::CPhysicManager::doForceCallback); 
     
    160162} 
    161163 
     164void CStaticObject::addForce(const Ogre::Vector3& force) 
     165{ 
     166    mBody->unFreeze(); 
     167    mForce += force; 
     168} 
     169 
     170//------------------------------------------------------------------------------------------------ 
    162171//------------------------------------------------------------------------------------------------ 
    163172void CStaticObject::update( void ) 
     
    165174  if (mBody && mActor.use_count()) 
    166175  { 
    167     mBody->setPositionOrientation( 
    168     mActor->getSceneNode()->_getDerivedPosition(), 
    169     mActor->getSceneNode()->_getDerivedOrientation()); 
    170     //mActor->update(0); 
     176    mBody->setPositionOrientation( mActor->getSceneNode()->_getDerivedPosition(), mActor->getSceneNode()->_getDerivedOrientation()); 
    171177    //LOG_INFO( Logger::getLogger("freequest.game"), "*** PHYSIC UPDATE ****"); 
    172178  }