/// @name Serializer::SerializeObjectReference() void GameObjectLoader::Linker::SerializeObjectReference( const GameObjectType* pType, GameObjectPtr& rspObject ) { HELIUM_ASSERT( pType ); uint32_t linkIndex = rspObject.GetLinkIndex(); rspObject.ClearLinkIndex(); if( IsInvalid( linkIndex ) ) { return; } if( linkIndex >= m_linkEntryCount ) { HELIUM_TRACE( TRACE_ERROR, TXT( "GameObjectLoader: Invalid link index %" ) TPRIu32 TXT( " encountered. Setting null reference.\n" ), linkIndex ); m_bError = true; return; } GameObject* pObject = m_pLinkEntries[ linkIndex ].spObject; if( pObject ) { if( !pObject->IsClass( pType ) ) { HELIUM_TRACE( TRACE_ERROR, TXT( "GameObjectLoader: GameObject reference \"%s\" is not of the correct type (\"%s\").\n" ), *pObject->GetPath().ToString(), *pType->GetName() ); m_bError = true; } else { rspObject = pObject; } } }