本文整理汇总了C++中Bone::SetIndex方法的典型用法代码示例。如果您正苦于以下问题:C++ Bone::SetIndex方法的具体用法?C++ Bone::SetIndex怎么用?C++ Bone::SetIndex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bone
的用法示例。
在下文中一共展示了Bone::SetIndex方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Load
AEResult Skeleton::Load()
{
std::lock_guard<std::mutex> lock(m_GameResourceMutex);
AEAssert(!m_FileName.empty());
if(m_FileName.empty())
{
return AEResult::EmptyFilename;
}
/////////////////////////////////////////////
//Clean Up memory before loading File
CleanUp();
AEResult ret = AEResult::Ok;
/////////////////////////////////////////////
//Start reading file
std::ifstream skeletonFile;
skeletonFile.open(m_FileName, std::ios::binary | std::ios::in);
if(!skeletonFile.is_open())
{
AETODO("add log");
return AEResult::OpenFileFail;
}
char* tempPtr = nullptr;
uint32_t sizeToRead = 0;
/////////////////////////////////////////////
//Verify Header
bool verifyHeader = AEGameContentHelpers::ReadFileHeaderAndVerify(skeletonFile, AE_CT_AE3DS_FILE_HEADER, AE_CT_AE3DS_FILE_VERSION_MAYOR, AE_CT_AE3DS_FILE_VERSION_MINOR, AE_CT_AE3DS_FILE_VERSION_REVISON);
if(!verifyHeader)
{
AETODO("Add log");
return AEResult::InvalidFileHeader;
}
/////////////////////////////////////////////
//Read Number of Bones
uint32_t numBones = 0;
tempPtr = reinterpret_cast<char*>(&numBones);
sizeToRead = sizeof(uint32_t);
skeletonFile.read(tempPtr, sizeToRead);
/////////////////////////////////////////////
//Read Bones
for(uint32_t i = 0; i < numBones; ++i)
{
Bone* bone = new Bone();
glm::mat4 tempMat = AEMathHelpers::Mat4Identity;
int32_t tempInt32 = 0;
/////////////////////////////////////////////
//Write name of Bone and size of Name
bone->SetName(AEGameContentHelpers::ReadString(skeletonFile));
/////////////////////////////////////////////
//Read Bone Matrices
sizeToRead = sizeof(glm::mat4);
tempPtr = reinterpret_cast<char*>(&tempMat);
//Local Matrix
skeletonFile.read(tempPtr, sizeToRead);
bone->SetLocalMatrix(tempMat);
//World Matrix
skeletonFile.read(tempPtr, sizeToRead);
bone->SetWorldMatrix(tempMat);
//Off Set Matrix
skeletonFile.read(tempPtr, sizeToRead);
bone->SetOffSetMatrix(tempMat);
/////////////////////////////////////////////
//Read Bone Indices
tempPtr = reinterpret_cast<char*>(&tempInt32);
sizeToRead = sizeof(int32_t);
//Parent Index
skeletonFile.read(tempPtr, sizeToRead);
bone->SetParentIndex(tempInt32);
//Bone Index
skeletonFile.read(tempPtr, sizeToRead);
bone->SetIndex(tempInt32);
/////////////////////////////////////////////
//Add Bone to Skeleton
m_BoneHierarchy.push_back(bone);
}
/////////////////////////////////////////////
//Read Footer
bool verifyFooter = AEGameContentHelpers::ReadFileFooterAndVerify(skeletonFile, AE_CT_AE3DS_FILE_FOOTER);
//.........这里部分代码省略.........