Select Git revision
patchlevel.h
CommandPaste.cpp 2.12 KiB
#include "CommandPaste.h"
#include <common/aastring.h>
extern AssotiativeArray<AAString, IXEditable*> g_mEditableSystems;
bool CCommandPaste::exec()
{
if(!m_pCommandSelect)
{
m_pCommandSelect = new CCommandSelect();
for(UINT i = 0, l = g_pLevelObjects.size(); i < l; ++i)
{
if(g_pLevelObjects[i]->isSelected())
{
m_pCommandSelect->addDeselected(i);
}
}
}
m_pCommandSelect->exec();
_paste_obj *pObj;
for(UINT i = 0, l = m_aObjects.size(); i < l; ++i)
{
pObj = &m_aObjects[i];
pObj->pObject->setSelected(true);
pObj->pObject->create();
pObj->pObject->setPos(pObj->vPos);
pObj->pObject->setScale(pObj->vScale);
pObj->pObject->setOrient(pObj->qRotate);
pObj->pObject->preSetup();
for(auto i = pObj->mKeyValues.begin(); i; ++i)
{
pObj->pObject->setKV(i.first->c_str(), i.second->c_str());
}
pObj->pObject->postSetup();
g_pLevelObjects.push_back(pObj->pObject);
}
XUpdatePropWindow();
return(m_aObjects.size());
}
bool CCommandPaste::undo()
{
_paste_obj *pObj;
for(int i = m_aObjects.size() - 1; i >= 0; --i)
{
pObj = &m_aObjects[i];
pObj->pObject->remove();
g_pLevelObjects.erase(g_pLevelObjects.size() - 1);
}
m_pCommandSelect->undo();
XUpdatePropWindow();
return(true);
}
CCommandPaste::~CCommandPaste()
{
for(UINT i = 0, l = m_aObjects.size(); i < l; ++i)
{
mem_release(m_aObjects[i].pObject);
}
mem_delete(m_pCommandSelect);
}