Changed: Merged changes from compatibility-develop
--HG-- branch : develop
This commit is contained in:
parent
3e4a873429
commit
ed884644af
3 changed files with 38 additions and 7 deletions
|
@ -1406,6 +1406,12 @@ void impulseCorrectPos(NLMISC::CBitMemStream &impulse)
|
|||
nlinfo("impulseCorrectPos: new user position %d %d %d", x, y, z);
|
||||
|
||||
if(UserEntity->mode() != MBEHAV::COMBAT_FLOAT)
|
||||
{
|
||||
if (x == 0) // Get SpeedAdjustement
|
||||
{
|
||||
UserEntity->setSpeedServerAdjust(-0.2f);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Compute the destination.
|
||||
CVectorD dest = CVectorD((float)x/1000.0f, (float)y/1000.0f, (float)z/1000.0f);
|
||||
|
@ -1414,6 +1420,7 @@ void impulseCorrectPos(NLMISC::CBitMemStream &impulse)
|
|||
// Change the user poisition.
|
||||
UserEntity->correctPos(dest);
|
||||
}
|
||||
}
|
||||
}// impulseCorrectPos //
|
||||
|
||||
class CDummyProgress : public IProgressCallback
|
||||
|
|
|
@ -148,6 +148,8 @@ CUserEntity::CUserEntity()
|
|||
_FrontVelocity = 0.0f;
|
||||
_LateralVelocity = 0.0f;
|
||||
|
||||
_SpeedServerAdjust = 1.0f;
|
||||
|
||||
// \todo GUIGUI : do it more generic.
|
||||
_First_Pos = false;
|
||||
|
||||
|
@ -1209,7 +1211,11 @@ void CUserEntity::applyMotion(CEntityCL *target)
|
|||
speed = CVectorD::Null;
|
||||
}
|
||||
else
|
||||
{
|
||||
speed = getVelocity()*_SpeedFactor.getValue();
|
||||
_SpeedFactor.addFactorValue(0.005f);
|
||||
}
|
||||
|
||||
// SPEED VECTOR NULL -> NO MOVE
|
||||
if(speed == CVectorD::Null)
|
||||
return;
|
||||
|
@ -1231,6 +1237,9 @@ void CUserEntity::applyMotion(CEntityCL *target)
|
|||
// Third Person View
|
||||
else
|
||||
{
|
||||
double modif = (100.0f/(float)NetMngr.getMsPerTick());
|
||||
clamp(modif, 0.0, 1.0);
|
||||
speed *= modif;
|
||||
speed += pos();
|
||||
sint64 x = (sint64)((sint32)(speed.x * 1000.0));
|
||||
sint64 y = (sint64)((sint32)(speed.y * 1000.0));
|
||||
|
@ -3483,6 +3492,7 @@ void CUserEntity::light()
|
|||
void CUserEntity::CSpeedFactor::init()
|
||||
{
|
||||
_Value = 1.0f; // Default speed factor is 1.
|
||||
_ServerFactor = 1.0f;
|
||||
CInterfaceManager *IM = CInterfaceManager::getInstance ();
|
||||
CCDBNodeLeaf *pNodeLeaf = NLGUI::CDBManager::getInstance()->getDbProp("SERVER:USER:SPEED_FACTOR", false);
|
||||
if(pNodeLeaf)
|
||||
|
|
|
@ -297,6 +297,8 @@ public:
|
|||
// get the velocity vector of the entity
|
||||
NLMISC::CVector getVelocity() const;
|
||||
|
||||
inline void setSpeedServerAdjust(float speed) {_SpeedFactor.addFactorValue(speed);}
|
||||
|
||||
/// Check if the mount is able to run, and force walking mode if not
|
||||
void checkMountAbleToRun();
|
||||
|
||||
|
@ -497,13 +499,23 @@ protected:
|
|||
/// Release
|
||||
void release();
|
||||
/// Return the speed factor.
|
||||
float getValue() const {return _Value;}
|
||||
float getValue() const { return _Value * _ServerFactor; }
|
||||
void setFactorValue(float value) {_ServerFactor = value;}
|
||||
void addFactorValue(float value) {
|
||||
_ServerFactor += value;
|
||||
if (_ServerFactor > 1.0)
|
||||
_ServerFactor = 1.0;
|
||||
if (_ServerFactor < 0.1)
|
||||
_ServerFactor = 0.1;
|
||||
}
|
||||
|
||||
virtual void serial(class NLMISC::IStream &f) throw(NLMISC::EStream) {f.serial(_Value);}
|
||||
protected:
|
||||
/// Method called when the ping message is back.
|
||||
virtual void update(NLMISC::ICDBNode* leaf);
|
||||
private:
|
||||
float _Value;
|
||||
float _ServerFactor;
|
||||
};
|
||||
|
||||
class CMountHunger
|
||||
|
@ -546,6 +558,8 @@ protected:
|
|||
/// Velocity : Front and Lateral
|
||||
float _FrontVelocity;
|
||||
float _LateralVelocity;
|
||||
/// Speed adjustement from gpms
|
||||
float _SpeedServerAdjust;
|
||||
/// Head Pitch
|
||||
double _HeadPitch;
|
||||
/// Height of the eyes (camera).
|
||||
|
|
Loading…
Reference in a new issue