Position saving - work in progress.

loadfix
cc9cii 10 years ago
parent 85ef683319
commit d9755f82c3

@ -9,6 +9,9 @@
#include <QElapsedTimer>
#include "../../model/settings/usersettings.hpp"
#include "../../model/world/commands.hpp"
#include "../../model/world/idtable.hpp"
#include "../../model/world/universalid.hpp"
#include "../world/physicssystem.hpp"
#include "elements.hpp"
@ -237,20 +240,38 @@ namespace CSVRender
{
std::pair<Ogre::Vector3, Ogre::Vector3> planeRes = planeAxis();
Ogre::Vector3 pos = mOrigObjPos+planeRes.first*mOffset+planeResult.second-mOrigMousePos;
placeObject(mGrabbedSceneNode, pos);
//mCurrentObj = mGrabbedSceneNode; // FIXME
//placeObject(mGrabbedSceneNode, pos); // FIXME: auto updated via signals
// use the saved scene node name since the physics model has not moved yet
std::string referenceId = mPhysics->sceneNodeToRefId(mGrabbedSceneNode);
QAbstractItemModel *model = mParent->mDocument.getData().getTableModel(CSMWorld::UniversalId::Type_Reference);
const CSMWorld::RefCollection& references = mParent->mDocument.getData().getReferences();
int columnIndexPosX =
references.findColumnIndex(CSMWorld::Columns::ColumnId_PositionXPos);
mParent->mDocument.getUndoStack().push(new CSMWorld::ModifyCommand(*model,
static_cast<CSMWorld::IdTable *>(model)->getModelIndex(referenceId, columnIndexPosX), pos.x));
int columnIndexPosY =
references.findColumnIndex(CSMWorld::Columns::ColumnId_PositionYPos);
mParent->mDocument.getUndoStack().push(new CSMWorld::ModifyCommand(*model,
static_cast<CSMWorld::IdTable *>(model)->getModelIndex(referenceId, columnIndexPosY), pos.y));
int columnIndexPosZ =
references.findColumnIndex(CSMWorld::Columns::ColumnId_PositionZPos);
mParent->mDocument.getUndoStack().push(new CSMWorld::ModifyCommand(*model,
static_cast<CSMWorld::IdTable *>(model)->getModelIndex(referenceId, columnIndexPosZ), pos.z));
//mCurrentObj = mGrabbedSceneNode; // FIXME: doesn't work?
mCurrentObj = ""; // whether the object is selected
// on screen
// reset states
mCurrentMousePos = Ogre::Vector3(); // mouse pos to use in wheel event
mOrigMousePos = Ogre::Vector3(); // starting pos of mouse in world space
mOrigObjPos = Ogre::Vector3(); // starting pos of object in world space
mGrabbedSceneNode = ""; // id of the object
mOffset = 0.0f; // used for z-axis movement
mOffset = 0.0f; // used for z-axis movement
mOldPos = QPoint(0, 0); // to calculate relative movement of mouse
// on screen
// FIXME: update document
// FIXME: highlight current object?
mMouseState = Mouse_Edit;
}

Loading…
Cancel
Save