forked from mirror/openmw-tes3mp
[Client] Add MechanicsHelper and move linear interpolation code to it
This commit is contained in:
parent
2565816b22
commit
cf155c9279
6 changed files with 56 additions and 10 deletions
|
@ -96,7 +96,7 @@ add_openmw_dir (mwbase
|
||||||
inputmanager windowmanager statemanager
|
inputmanager windowmanager statemanager
|
||||||
)
|
)
|
||||||
|
|
||||||
add_openmw_dir (mwmp Main Networking LocalPlayer DedicatedPlayer LocalActor DedicatedActor ActorList WorldEvent Cell CellController GUIChat GUILogin GUIController PlayerMarkerCollection GUIDialogList)
|
add_openmw_dir (mwmp Main Networking LocalPlayer DedicatedPlayer LocalActor DedicatedActor ActorList WorldEvent Cell CellController MechanicsHelper GUIChat GUILogin GUIController PlayerMarkerCollection GUIDialogList)
|
||||||
|
|
||||||
# Main executable
|
# Main executable
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "Main.hpp"
|
#include "Main.hpp"
|
||||||
#include "GUIController.hpp"
|
#include "GUIController.hpp"
|
||||||
#include "CellController.hpp"
|
#include "CellController.hpp"
|
||||||
|
#include "MechanicsHelper.hpp"
|
||||||
|
|
||||||
|
|
||||||
using namespace mwmp;
|
using namespace mwmp;
|
||||||
|
@ -209,13 +210,6 @@ ESM::Position Slerp(ESM::Position start, ESM::Position end, float percent)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
osg::Vec3f Lerp(osg::Vec3f start, osg::Vec3f end, float percent)
|
|
||||||
{
|
|
||||||
osg::Vec3f p(percent, percent, percent);
|
|
||||||
|
|
||||||
return (start + osg::componentMultiply(p, (end - start)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void DedicatedPlayer::move(float dt)
|
void DedicatedPlayer::move(float dt)
|
||||||
{
|
{
|
||||||
if (state != 2) return;
|
if (state != 2) return;
|
||||||
|
@ -225,7 +219,7 @@ void DedicatedPlayer::move(float dt)
|
||||||
|
|
||||||
{
|
{
|
||||||
static const int timeMultiplier = 15;
|
static const int timeMultiplier = 15;
|
||||||
osg::Vec3f lerp = Lerp(refPos.asVec3(), position.asVec3(), dt * timeMultiplier);
|
osg::Vec3f lerp = Main::get().getMechanicsHelper()->getLinearInterpolation(refPos.asVec3(), position.asVec3(), dt * timeMultiplier);
|
||||||
refPos.pos[0] = lerp.x();
|
refPos.pos[0] = lerp.x();
|
||||||
refPos.pos[1] = lerp.y();
|
refPos.pos[1] = lerp.y();
|
||||||
refPos.pos[2] = lerp.z();
|
refPos.pos[2] = lerp.z();
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "DedicatedPlayer.hpp"
|
#include "DedicatedPlayer.hpp"
|
||||||
#include "GUIController.hpp"
|
#include "GUIController.hpp"
|
||||||
#include "CellController.hpp"
|
#include "CellController.hpp"
|
||||||
|
#include "MechanicsHelper.hpp"
|
||||||
|
|
||||||
using namespace mwmp;
|
using namespace mwmp;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -70,6 +71,7 @@ Main::Main()
|
||||||
mLocalPlayer = new LocalPlayer();
|
mLocalPlayer = new LocalPlayer();
|
||||||
mGUIController = new GUIController();
|
mGUIController = new GUIController();
|
||||||
mCellController = new CellController();
|
mCellController = new CellController();
|
||||||
|
mMechanicsHelper = new MechanicsHelper();
|
||||||
//mLocalPlayer->CharGen(0, 4);
|
//mLocalPlayer->CharGen(0, 4);
|
||||||
|
|
||||||
server = "mp.tes3mp.com";
|
server = "mp.tes3mp.com";
|
||||||
|
@ -241,6 +243,11 @@ CellController *Main::getCellController() const
|
||||||
return mCellController;
|
return mCellController;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MechanicsHelper *Main::getMechanicsHelper() const
|
||||||
|
{
|
||||||
|
return mMechanicsHelper;
|
||||||
|
}
|
||||||
|
|
||||||
void Main::pressedKey(int key)
|
void Main::pressedKey(int key)
|
||||||
{
|
{
|
||||||
if (pMain == nullptr) return;
|
if (pMain == nullptr) return;
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
|
|
||||||
namespace mwmp
|
namespace mwmp
|
||||||
{
|
{
|
||||||
class CellController;
|
|
||||||
class GUIController;
|
class GUIController;
|
||||||
|
class CellController;
|
||||||
|
class MechanicsHelper;
|
||||||
class LocalPlayer;
|
class LocalPlayer;
|
||||||
class Networking;
|
class Networking;
|
||||||
|
|
||||||
|
@ -30,6 +31,7 @@ namespace mwmp
|
||||||
LocalPlayer *getLocalPlayer() const;
|
LocalPlayer *getLocalPlayer() const;
|
||||||
GUIController *getGUIController() const;
|
GUIController *getGUIController() const;
|
||||||
CellController *getCellController() const;
|
CellController *getCellController() const;
|
||||||
|
MechanicsHelper *getMechanicsHelper() const;
|
||||||
|
|
||||||
void updateWorld(float dt) const;
|
void updateWorld(float dt) const;
|
||||||
|
|
||||||
|
@ -46,6 +48,8 @@ namespace mwmp
|
||||||
|
|
||||||
GUIController *mGUIController;
|
GUIController *mGUIController;
|
||||||
CellController *mCellController;
|
CellController *mCellController;
|
||||||
|
MechanicsHelper *mMechanicsHelper;
|
||||||
|
|
||||||
std::string server;
|
std::string server;
|
||||||
unsigned short port;
|
unsigned short port;
|
||||||
};
|
};
|
||||||
|
|
22
apps/openmw/mwmp/MechanicsHelper.cpp
Normal file
22
apps/openmw/mwmp/MechanicsHelper.cpp
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#include <components/openmw-mp/Log.hpp>
|
||||||
|
|
||||||
|
#include "MechanicsHelper.hpp"
|
||||||
|
#include "Main.hpp"
|
||||||
|
using namespace mwmp;
|
||||||
|
|
||||||
|
mwmp::MechanicsHelper::MechanicsHelper()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
mwmp::MechanicsHelper::~MechanicsHelper()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
osg::Vec3f MechanicsHelper::getLinearInterpolation(osg::Vec3f start, osg::Vec3f end, float percent)
|
||||||
|
{
|
||||||
|
osg::Vec3f position(percent, percent, percent);
|
||||||
|
|
||||||
|
return (start + osg::componentMultiply(position, (end - start)));
|
||||||
|
}
|
19
apps/openmw/mwmp/MechanicsHelper.hpp
Normal file
19
apps/openmw/mwmp/MechanicsHelper.hpp
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef OPENMW_MECHANICSHELPER_HPP
|
||||||
|
#define OPENMW_MECHANICSHELPER_HPP
|
||||||
|
|
||||||
|
#include <osg/Vec3f>
|
||||||
|
|
||||||
|
namespace mwmp
|
||||||
|
{
|
||||||
|
class MechanicsHelper
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
MechanicsHelper();
|
||||||
|
~MechanicsHelper();
|
||||||
|
|
||||||
|
osg::Vec3f getLinearInterpolation(osg::Vec3f start, osg::Vec3f end, float percent);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //OPENMW_MECHANICSHELPER_HPP
|
Loading…
Reference in a new issue