Skip to content
Snippets Groups Projects
Select Git revision
  • 7bdb4d97483f5a2b279b3bee0b044f13f08b6483
  • branchX default protected
  • Inventory
  • UIControls
  • fsv2
  • tonetest
  • from_nb
  • tonemapping
  • opt-shadows
  • BX-634
  • xCSG
  • hc
  • gizmos
  • gui2CSSLexer
  • msExporter
  • gui2
  • gui2Fix
  • master protected
  • pk
  • mesh_optimize
  • light_wip
  • version_X.11.2 protected
  • version_X.11.1 protected
  • version_X.11.1-dev protected
  • version_X.11.0-dev protected
  • version_X.10.1 protected
  • version_X.10.1-dev protected
  • version_X.10.0-dev protected
  • version_X.9.5 protected
  • version_X.9.4 protected
  • version_X.9.3 protected
  • version_X.9.3-dev protected
  • version_X.9.2-dev protected
  • version_X.9.1-dev protected
  • version_X.9.0-dev protected
  • version_X.8.2 protected
  • version_X.8.2-dev protected
  • version_X.8.1-dev protected
  • version_X.8.0-dev protected
  • version_X.7.1 protected
  • version_X.7.0 protected
41 results

CommandPaste.cpp

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