mirror of
https://github.com/OpenMW/openmw.git
synced 2025-06-27 23:41:34 +00:00
Readded Objects::updatePtr
This commit is contained in:
parent
bc237ee1fe
commit
b7258c8d23
8 changed files with 37 additions and 12 deletions
|
@ -274,7 +274,7 @@ public:
|
||||||
void removeEffect (int effectId);
|
void removeEffect (int effectId);
|
||||||
void getLoopingEffects (std::vector<int>& out);
|
void getLoopingEffects (std::vector<int>& out);
|
||||||
|
|
||||||
void updatePtr(const MWWorld::Ptr &ptr);
|
virtual void updatePtr(const MWWorld::Ptr &ptr);
|
||||||
|
|
||||||
bool hasAnimation(const std::string &anim);
|
bool hasAnimation(const std::string &anim);
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,11 @@ HeadAnimationTime::HeadAnimationTime(MWWorld::Ptr reference)
|
||||||
resetBlinkTimer();
|
resetBlinkTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HeadAnimationTime::updatePtr(const MWWorld::Ptr &updated)
|
||||||
|
{
|
||||||
|
mReference = updated;
|
||||||
|
}
|
||||||
|
|
||||||
void HeadAnimationTime::setEnabled(bool enabled)
|
void HeadAnimationTime::setEnabled(bool enabled)
|
||||||
{
|
{
|
||||||
mEnabled = enabled;
|
mEnabled = enabled;
|
||||||
|
@ -901,6 +906,12 @@ void NpcAnimation::setVampire(bool vampire)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NpcAnimation::updatePtr(const MWWorld::Ptr &updated)
|
||||||
|
{
|
||||||
|
Animation::updatePtr(updated);
|
||||||
|
mHeadAnimationTime->updatePtr(updated);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void NpcAnimation::setHeadPitch(Ogre::Radian pitch)
|
void NpcAnimation::setHeadPitch(Ogre::Radian pitch)
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,6 +34,8 @@ private:
|
||||||
public:
|
public:
|
||||||
HeadAnimationTime(MWWorld::Ptr reference);
|
HeadAnimationTime(MWWorld::Ptr reference);
|
||||||
|
|
||||||
|
void updatePtr(const MWWorld::Ptr& updated);
|
||||||
|
|
||||||
void update(float dt);
|
void update(float dt);
|
||||||
|
|
||||||
void setEnabled(bool enabled);
|
void setEnabled(bool enabled);
|
||||||
|
@ -176,6 +178,8 @@ public:
|
||||||
virtual void setAlpha(float alpha);
|
virtual void setAlpha(float alpha);
|
||||||
|
|
||||||
virtual void setVampire(bool vampire);
|
virtual void setVampire(bool vampire);
|
||||||
|
|
||||||
|
virtual void updatePtr(const MWWorld::Ptr& updated);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,30 +198,33 @@ void Objects::removeCell(const MWWorld::CellStore* store)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Objects::updateObjectCell(const MWWorld::Ptr &old, const MWWorld::Ptr &cur)
|
void Objects::updatePtr(const MWWorld::Ptr &old, const MWWorld::Ptr &cur)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
Ogre::SceneNode *node;
|
|
||||||
MWWorld::CellStore *newCell = cur.getCell();
|
MWWorld::CellStore *newCell = cur.getCell();
|
||||||
|
|
||||||
|
osg::Group* cellnode;
|
||||||
if(mCellSceneNodes.find(newCell) == mCellSceneNodes.end()) {
|
if(mCellSceneNodes.find(newCell) == mCellSceneNodes.end()) {
|
||||||
node = mRootNode->createChildSceneNode();
|
cellnode = new osg::Group;
|
||||||
mCellSceneNodes[newCell] = node;
|
mRootNode->addChild(cellnode);
|
||||||
|
mCellSceneNodes[newCell] = cellnode;
|
||||||
} else {
|
} else {
|
||||||
node = mCellSceneNodes[newCell];
|
cellnode = mCellSceneNodes[newCell];
|
||||||
}
|
}
|
||||||
|
|
||||||
node->addChild(cur.getRefData().getBaseNode());
|
osg::Node* objectNode = cur.getRefData().getBaseNode();
|
||||||
|
|
||||||
|
if (objectNode->getNumParents())
|
||||||
|
objectNode->getParent(0)->removeChild(objectNode);
|
||||||
|
cellnode->addChild(objectNode);
|
||||||
|
|
||||||
PtrAnimationMap::iterator iter = mObjects.find(old);
|
PtrAnimationMap::iterator iter = mObjects.find(old);
|
||||||
if(iter != mObjects.end())
|
if(iter != mObjects.end())
|
||||||
{
|
{
|
||||||
ObjectAnimation *anim = iter->second;
|
Animation *anim = iter->second;
|
||||||
mObjects.erase(iter);
|
mObjects.erase(iter);
|
||||||
anim->updatePtr(cur);
|
anim->updatePtr(cur);
|
||||||
mObjects[cur] = anim;
|
mObjects[cur] = anim;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Animation* Objects::getAnimation(const MWWorld::Ptr &ptr)
|
Animation* Objects::getAnimation(const MWWorld::Ptr &ptr)
|
||||||
|
|
|
@ -72,7 +72,7 @@ public:
|
||||||
void removeCell(const MWWorld::CellStore* store);
|
void removeCell(const MWWorld::CellStore* store);
|
||||||
|
|
||||||
/// Updates containing cell for object rendering data
|
/// Updates containing cell for object rendering data
|
||||||
void updateObjectCell(const MWWorld::Ptr &old, const MWWorld::Ptr &cur);
|
void updatePtr(const MWWorld::Ptr &old, const MWWorld::Ptr &cur);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void operator = (const Objects&);
|
void operator = (const Objects&);
|
||||||
|
|
|
@ -271,6 +271,11 @@ namespace MWRender
|
||||||
ptr.getRefData().getBaseNode()->setScale(scale);
|
ptr.getRefData().getBaseNode()->setScale(scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenderingManager::updatePtr(const MWWorld::Ptr &old, const MWWorld::Ptr &updated)
|
||||||
|
{
|
||||||
|
mObjects->updatePtr(old, updated);
|
||||||
|
}
|
||||||
|
|
||||||
void RenderingManager::spawnEffect(const std::string &model, const std::string &texture, const osg::Vec3f &worldPosition, float scale)
|
void RenderingManager::spawnEffect(const std::string &model, const std::string &texture, const osg::Vec3f &worldPosition, float scale)
|
||||||
{
|
{
|
||||||
mEffectManager->addEffect(model, texture, worldPosition, scale);
|
mEffectManager->addEffect(model, texture, worldPosition, scale);
|
||||||
|
|
|
@ -62,6 +62,8 @@ namespace MWRender
|
||||||
void addCell(const MWWorld::CellStore* store);
|
void addCell(const MWWorld::CellStore* store);
|
||||||
void removeCell(const MWWorld::CellStore* store);
|
void removeCell(const MWWorld::CellStore* store);
|
||||||
|
|
||||||
|
void updatePtr(const MWWorld::Ptr& old, const MWWorld::Ptr& updated);
|
||||||
|
|
||||||
// TODO rename to setRotation/setPosition/setScale, along with the World equivalents
|
// TODO rename to setRotation/setPosition/setScale, along with the World equivalents
|
||||||
void rotateObject(const MWWorld::Ptr& ptr, const osg::Quat& rot);
|
void rotateObject(const MWWorld::Ptr& ptr, const osg::Quat& rot);
|
||||||
void moveObject(const MWWorld::Ptr& ptr, const osg::Vec3f& pos);
|
void moveObject(const MWWorld::Ptr& ptr, const osg::Vec3f& pos);
|
||||||
|
|
|
@ -1181,7 +1181,7 @@ namespace MWWorld
|
||||||
MWWorld::Ptr copy =
|
MWWorld::Ptr copy =
|
||||||
ptr.getClass().copyToCell(ptr, *newCell, pos);
|
ptr.getClass().copyToCell(ptr, *newCell, pos);
|
||||||
|
|
||||||
//mRendering->updateObjectCell(ptr, copy);
|
mRendering->updatePtr(ptr, copy);
|
||||||
ptr.getRefData().setBaseNode(NULL);
|
ptr.getRefData().setBaseNode(NULL);
|
||||||
MWBase::Environment::get().getSoundManager()->updatePtr (ptr, copy);
|
MWBase::Environment::get().getSoundManager()->updatePtr (ptr, copy);
|
||||||
mPhysics->updatePtr(ptr, copy);
|
mPhysics->updatePtr(ptr, copy);
|
||||||
|
|
Loading…
Reference in a new issue