// EMERGENT GAME TECHNOLOGIES PROPRIETARY INFORMATION // // This software is supplied under the terms of a license agreement or // nondisclosure agreement with Emergent Game Technologies and may not // be copied or disclosed except in accordance with the terms of that // agreement. // // Copyright (c) 1996-2007 Emergent Game Technologies. // All Rights Reserved. // // Emergent Game Technologies, Chapel Hill, North Carolina 27517 // http://www.emergent.net // Precompiled Header #include "NiEntityPCH.h" #include "NiResetNiObjectPointerDataCommand.h" //--------------------------------------------------------------------------- NiResetNiObjectPointerDataCommand::NiResetNiObjectPointerDataCommand( NiEntityPropertyInterface* pkEntityPropertyInterface, const NiFixedString& kPropertyName) : NiChangePropertyCommand( pkEntityPropertyInterface, kPropertyName, 0), m_ppkOldData(NULL) { NiFixedString kPrimitiveType; NIVERIFY(m_spEntityPropertyInterface->GetPrimitiveType( m_kPropertyName, kPrimitiveType)); NIASSERT(kPrimitiveType == NiEntityPropertyInterface::PT_NIOBJECTPOINTER); } //--------------------------------------------------------------------------- NiResetNiObjectPointerDataCommand::~NiResetNiObjectPointerDataCommand() { NiFree(m_ppkOldData); } //--------------------------------------------------------------------------- // NiChangePropertyCommand overrides. //--------------------------------------------------------------------------- NiBool NiResetNiObjectPointerDataCommand::StoreOldData() { NiBool bSuccess = m_spEntityPropertyInterface->GetElementCount( m_kPropertyName, m_uiOldDataCount); if (!bSuccess) { return false; } if (!m_ppkOldData) { m_ppkOldData = NiAlloc(NiObject*, m_uiOldDataCount); } for (unsigned int ui = 0; ui < m_uiOldDataCount; ui++) { if (!m_spEntityPropertyInterface->GetPropertyData(m_kPropertyName, m_ppkOldData[ui], ui)) { return false; } } return true; } //--------------------------------------------------------------------------- NiBool NiResetNiObjectPointerDataCommand::SetNewData() { return m_spEntityPropertyInterface->ResetProperty(m_kPropertyName); } //--------------------------------------------------------------------------- NiBool NiResetNiObjectPointerDataCommand::SetOldData() { for (unsigned int ui = 0; ui < m_uiOldDataCount; ui++) { if (!m_spEntityPropertyInterface->SetPropertyData(m_kPropertyName, m_ppkOldData[ui], ui)) { return false; } } return true; } //---------------------------------------------------------------------------