当前位置: 首页>>代码示例>>C++>>正文


C++ LPDIRECTXFILEDATA::GetChild方法代码示例

本文整理汇总了C++中LPDIRECTXFILEDATA::GetChild方法的典型用法代码示例。如果您正苦于以下问题:C++ LPDIRECTXFILEDATA::GetChild方法的具体用法?C++ LPDIRECTXFILEDATA::GetChild怎么用?C++ LPDIRECTXFILEDATA::GetChild使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LPDIRECTXFILEDATA的用法示例。


在下文中一共展示了LPDIRECTXFILEDATA::GetChild方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: MergeFromXData

HRESULT CXFrameNode::MergeFromXData(char* Filename, CXModel* Model, LPDIRECTXFILEDATA XObj)
{
	HRESULT res = S_OK;

	// get the type of the object
	GUID ObjectType;
	res = XObj->GetType(&ObjectType);
	if(FAILED(res))
	{
		Game->LOG(res, "Error getting object type");
		return res;
	}
	// load animation set
	else if(ObjectType == TID_D3DRMAnimationSet )
	{
		return Model->LoadAnimationSet(Filename, XObj);
	}

	// load a single animation (shouldn't happen here)
	else if(ObjectType == TID_D3DRMAnimation)
	{
		return Model->LoadAnimation(Filename, XObj);
	}

	// scan child frames
	else if(ObjectType == TID_D3DRMFrame)
	{
		// Enumerate child objects.
		// Child object can be data, data reference or binary.
		// Use QueryInterface() to find what objecttype of object a child is.
		res = E_FAIL;

		SIZE_T NumChildren;
		XObj->GetChildren(&NumChildren);
		for(SIZE_T i=0; i<NumChildren; i++)
		{
			LPDIRECTXFILEDATA XChildData;
			res = XObj->GetChild(i, &XChildData);
			if(SUCCEEDED(res))
			{
				// load the child's object
				res = MergeFromXData(Filename, Model, XChildData);
				RELEASE(XChildData);
			}
		}
		return res;
	}
	return S_OK; // unknown type, ignore
}
开发者ID:segafan,项目名称:wme1_jankavan_tlc_edition-repo,代码行数:49,代码来源:XFrameNode.cpp

示例2: LoadFromXData

HRESULT CXFrameNode::LoadFromXData(char* Filename, CXModel* Model, LPDIRECTXFILEDATA XObj)
{
	Game->MiniUpdate();

	HRESULT res = S_OK;

	// {9E415A43-7BA6-4a73-8743-B73D47E88476}
	GUID DXFILEOBJ_AnimTicksPerSecond = { 0x9e415a43, 0x7ba6, 0x4a73, { 0x87, 0x43, 0xb7, 0x3d, 0x47, 0xe8, 0x84, 0x76 } };

	// get the type of the object
	GUID ObjectType;
	res = XObj->GetType(&ObjectType);
	if(FAILED(res))
	{
		Game->LOG(res, "Error getting object type");
		return res;
	}

	// load a child mesh
	if(ObjectType == TID_D3DRMMesh)
	{
		CXMesh* Mesh = new CXMesh(Game);
		res = Mesh->LoadFromXData(Filename, XObj);
		if(SUCCEEDED(res))
		{
			m_Meshes.Add(Mesh);
			return S_OK;
		}
		else
		{
			SAFE_DELETE(Mesh);
			return res;
		}		
	}


	// load the transformation matrix
	else if(ObjectType == TID_D3DRMFrameTransformMatrix)
	{		
		D3DXMATRIX* mat;
		SIZE_T Size;

		res = XObj->Lock(&Size, (LPCVOID*)&mat);
		if(FAILED(res))
		{
			Game->LOG(res, "Error loading transformation matrix");
			return res;
		}
		else
		{
			m_TransformationMatrix = *mat;
			m_OriginalMatrix = *mat;
			XObj->Unlock();
			return S_OK;
		}
	}

	// load animation set
	else if(ObjectType == TID_D3DRMAnimationSet )
	{
		return Model->LoadAnimationSet(Filename, XObj);
	}

	// load a single animation (shouldn't happen here)
	else if(ObjectType == TID_D3DRMAnimation)
	{
		return Model->LoadAnimation(Filename, XObj);
	}

	// create a new child frame
	else if(ObjectType == TID_D3DRMFrame)
	{
		CXFrameNode* ChildFrame = new CXFrameNode(Game);

		// get the name of the child frame
		res = CXModel::LoadName(ChildFrame, XObj);
		if(FAILED(res))
		{
			Game->LOG(res, "Error loading frame name");
			SAFE_DELETE(ChildFrame);
			return res;
		}

		// Enumerate child objects.
		// Child object can be data, data reference or binary.
		// Use QueryInterface() to find what objecttype of object a child is.
		res = E_FAIL;

		SIZE_T NumChildren;
		XObj->GetChildren(&NumChildren);
		for(SIZE_T i=0; i<NumChildren; i++)
		{
			LPDIRECTXFILEDATA XChildData;
			res = XObj->GetChild(i, &XChildData);
			if(SUCCEEDED(res))
			{
				res = ChildFrame->LoadFromXData(Filename, Model, XChildData);
				RELEASE(XChildData);
			}
		}
//.........这里部分代码省略.........
开发者ID:segafan,项目名称:wme1_jankavan_tlc_edition-repo,代码行数:101,代码来源:XFrameNode.cpp


注:本文中的LPDIRECTXFILEDATA::GetChild方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。