Example #1
0
	bool Scene::UnSerializeObject(GameObjectPtr pObj, DataStream* pStream)
	{
		std::string name;
		pStream->ReadString(name);
		pObj->SetName(name);

		math::Matrix44 local;
		pStream->Read(&local, sizeof(local));
		pObj->SetLocalTransform(local);

		uint16 nCom = 0;
		nCom = pStream->ReadInt16();

		for(uint16 i = 0; i < nCom; ++i)
		{
			std::string comName;
			pStream->ReadString(comName);

			
			GameObjectComponentPtr pCom = m_pObjectManager->CreateComponent(comName);
			if(pCom == nullptr)
			{
				logger() << "failed to create component: " << comName << "\n";
				return false;
			}
			pObj->AddComponent(pCom);

			if(false == pCom->UnSerialize(pStream))
			{
				logger() << "failed to load component: " << comName << "\n";
				return false;
			}

		}
		
		uint16 nChild = 0;
		nChild = pStream->ReadInt16();
		for(uint16 i = 0; i < nChild; ++i)
		{
			GameObjectPtr pChild = m_pObjectManager->CreateGameObject("");
			if(false == UnSerializeObject(pChild, pStream))
			{
				pChild->Clear();
				pChild.reset();
				return false;
			}
			pChild->LinkTo(pObj);
		}
		
		return true;
	}
Example #2
0
GameObjectPtr Tpl_SkyLight::CreateGameObject()
{
    GameObjectPtr pObj = m_pManager->CreateGameObject("Sky Light");

    GameObjectComponentPtr pLight = m_pManager->CreateComponent("SkyLight");

    if(false == pObj->AddComponent(pLight))
    {
        pObj->Clear();
        pObj.reset();
        return GameObjectPtr();
    }

    return pObj;
}