Skip to content
Snippets Groups Projects
Select Git revision
2 results Searching

patchlevel.h

Blame
  • 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);
    }