Added: moveCam and setCamMode lua functions

ryzom/ark/features
Ulukyn 5 years ago
parent 09d8346558
commit fe008c0e52

@ -112,6 +112,7 @@
#include "../entities.h"
#include "../misc.h"
#include "../gabarit.h"
#include "../view.h"
#include "bot_chat_page_all.h"
#include "bot_chat_page_ring_sessions.h"
@ -442,6 +443,8 @@ void CLuaIHMRyzom::RegisterRyzomFunctions(NLGUI::CLuaState &ls)
ls.registerFunc("enableModalWindow", enableModalWindow);
ls.registerFunc("getPlayerPos", getPlayerPos);
ls.registerFunc("getGroundAtMouse", getGroundAtMouse),
ls.registerFunc("moveCam", moveCam),
ls.registerFunc("setCamMode", setCamMode),
ls.registerFunc("getMousePos", getMousePos),
ls.registerFunc("getMouseDown", getMouseDown),
ls.registerFunc("getMouseMiddleDown", getMouseMiddleDown),
@ -1331,6 +1334,39 @@ int CLuaIHMRyzom::getGroundAtMouse(CLuaState &ls)
return 3;
}
int CLuaIHMRyzom::moveCam(CLuaState &ls)
{
const char *funcName = "moveCam";
CLuaIHM::checkArgCount(ls, funcName, 3);
CLuaIHM::checkArgType(ls, funcName, 1, LUA_TNUMBER);
CLuaIHM::checkArgType(ls, funcName, 2, LUA_TNUMBER);
CLuaIHM::checkArgType(ls, funcName, 3, LUA_TNUMBER);
float x = (float)ls.toNumber(1);
float y = (float)ls.toNumber(2);
float z = (float)ls.toNumber(3);
CVector moves(x, y, z);
UserEntity->setCameraMoves(moves);
return 0;
}
int CLuaIHMRyzom::setCamMode(CLuaState &ls)
{
const char *funcName = "setCamMode";
CLuaIHM::checkArgCount(ls, funcName, 1);
bool aiMode = ls.toBoolean(1);
if(aiMode)
UserControls.mode(CUserControls::AIMode);
else
UserEntity->viewMode(UserEntity->viewMode());
return 0;
}
// ***************************************************************************
int CLuaIHMRyzom::getPlayerPos(CLuaState &ls)
{

@ -232,6 +232,8 @@ private:
static std::string getRegionByAlias(uint32 alias);
static float getGroundZ(float x, float y);
static int getGroundAtMouse(CLuaState &ls);
static int moveCam(CLuaState &ls);
static int setCamMode(CLuaState &ls);
static int getMousePos(CLuaState &ls);
static int getMouseDown(CLuaState &ls);
static int getMouseMiddleDown(CLuaState &ls);

@ -1411,8 +1411,23 @@ bool mainLoop()
// Update Camera Position/Orientation.
CVector currViewPos = View.currentViewPos();
MainCam.setTransformMode(UTransformable::RotQuat);
CVector cameraMoves = UserEntity->getCameraMoves();
currViewPos.z += cameraMoves.z;
MainCam.setPos(currViewPos);
MainCam.setRotQuat(View.currentViewQuat());
if (cameraMoves.x)
{
CMatrix viewMatrix;
viewMatrix = MainCam.getMatrix();
viewMatrix.rotateZ(cameraMoves.x);
MainCam.setRotQuat(viewMatrix.getRot());
}
UserEntity->setCameraMoves(CVector(0, 0, 0));
if (StereoHMD)
{
CMatrix camMatrix;

@ -490,6 +490,16 @@ public:
return _LoginName;
}
CVector getCameraMoves()
{
return _CameraMoves;
}
void setCameraMoves(CVector moves)
{
_CameraMoves = moves;
}
protected:
class CSpeedFactor : public NLMISC::ICDBNode::IPropertyObserver
{
@ -602,6 +612,8 @@ protected:
/// Time in MS when the User started beiing in collision with anything that avoid him to do an Action (and still is).
sint64 _MoveToColStartTime;
CVector _CameraMoves;
/// CSkill points observer
class CSkillPointsObserver : public NLMISC::ICDBNode::IPropertyObserver

Loading…
Cancel
Save