本文整理汇总了C++中idParser::SkipRestOfLine方法的典型用法代码示例。如果您正苦于以下问题:C++ idParser::SkipRestOfLine方法的具体用法?C++ idParser::SkipRestOfLine怎么用?C++ idParser::SkipRestOfLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类idParser
的用法示例。
在下文中一共展示了idParser::SkipRestOfLine方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MA_ParseTransform
bool MA_ParseTransform(idParser& parser) {
maNodeHeader_t header;
maTransform_t* transform;
memset(&header, 0, sizeof(header));
//Allocate room for the transform
transform = (maTransform_t *)Mem_Alloc( sizeof( maTransform_t ) );
memset(transform, 0, sizeof(maTransform_t));
transform->scale.x = transform->scale.y = transform->scale.z = 1;
//Get the header info from the transform
MA_ParseNodeHeader(parser, &header);
//Read the transform attributes
idToken token;
while(parser.ReadToken(&token)) {
if(IsNodeComplete(token)) {
parser.UnreadToken(&token);
break;
}
if(!token.Icmp("setAttr")) {
parser.ReadToken(&token);
if(!token.Icmp(".t")) {
if(!MA_ReadVec3(parser, transform->translate)) {
return false;
}
transform->translate.y *= -1;
} else if (!token.Icmp(".r")) {
if(!MA_ReadVec3(parser, transform->rotate)) {
return false;
}
} else if (!token.Icmp(".s")) {
if(!MA_ReadVec3(parser, transform->scale)) {
return false;
}
} else {
parser.SkipRestOfLine();
}
}
}
if(header.parent[0] != 0) {
//Find the parent
maTransform_t** parent;
maGlobal.model->transforms.Get(header.parent, &parent);
if(parent) {
transform->parent = *parent;
}
}
//Add this transform to the list
maGlobal.model->transforms.Set(header.name, transform);
return true;
}
示例2: MA_ParseFileNode
void MA_ParseFileNode( idParser &parser )
{
//Get the header info from the node
maNodeHeader_t header;
MA_ParseNodeHeader( parser, &header );
//Read the transform attributes
idToken token;
while( parser.ReadToken( &token ) )
{
if( IsNodeComplete( token ) )
{
parser.UnreadToken( &token );
break;
}
if( !token.Icmp( "setAttr" ) )
{
maAttribHeader_t attribHeader;
MA_ParseAttribHeader( parser, &attribHeader );
if( strstr( attribHeader.name, ".ftn" ) )
{
parser.SkipUntilString( "string" );
parser.ReadToken( &token );
if( !token.Icmp( "(" ) )
{
parser.ReadToken( &token );
}
maFileNode_t *fileNode;
fileNode = ( maFileNode_t * ) Mem_Alloc( sizeof( maFileNode_t ) );
strcpy( fileNode->name, header.name );
strcpy( fileNode->path, token.c_str() );
maGlobal.model->fileNodes.Set( fileNode->name, fileNode );
}
else
{
parser.SkipRestOfLine();
}
}
}
}
示例3: MA_ParseMesh
void MA_ParseMesh(idParser& parser) {
maObject_t *object;
object = (maObject_t *)Mem_Alloc( sizeof( maObject_t ) );
memset( object, 0, sizeof( maObject_t ) );
maGlobal.model->objects.Append( object );
maGlobal.currentObject = object;
object->materialRef = -1;
//Get the header info from the mesh
maNodeHeader_t header;
MA_ParseNodeHeader(parser, &header);
//Find my parent
if(header.parent[0] != 0) {
//Find the parent
maTransform_t** parent;
maGlobal.model->transforms.Get(header.parent, &parent);
if(parent) {
maGlobal.currentObject->mesh.transform = *parent;
}
}
strcpy(object->name, header.name);
//Read the transform attributes
idToken token;
while(parser.ReadToken(&token)) {
if(IsNodeComplete(token)) {
parser.UnreadToken(&token);
break;
}
if(!token.Icmp("setAttr")) {
maAttribHeader_t header;
MA_ParseAttribHeader(parser, &header);
if(strstr(header.name, ".vt")) {
MA_ParseVertex(parser, &header);
} else if (strstr(header.name, ".ed")) {
MA_ParseEdge(parser, &header);
} else if (strstr(header.name, ".pt")) {
MA_ParseVertexTransforms(parser, &header);
} else if (strstr(header.name, ".n")) {
MA_ParseNormal(parser, &header);
} else if (strstr(header.name, ".fc")) {
MA_ParseFace(parser, &header);
} else if (strstr(header.name, ".clr")) {
MA_ParseColor(parser, &header);
} else if (strstr(header.name, ".uvst")) {
MA_ParseTVert(parser, &header);
} else {
parser.SkipRestOfLine();
}
}
}
maMesh_t* pMesh = &maGlobal.currentObject->mesh;
//Get the verts from the edge
for(int i = 0; i < pMesh->numFaces; i++) {
for(int j = 0; j < 3; j++) {
int edge = pMesh->faces[i].edge[j];
if(edge < 0) {
edge = idMath::Fabs(edge)-1;
pMesh->faces[i].vertexNum[j] = pMesh->edges[edge].y;
} else {
pMesh->faces[i].vertexNum[j] = pMesh->edges[edge].x;
}
}
}
//Get the normals
if(pMesh->normalsParsed) {
for(int i = 0; i < pMesh->numFaces; i++) {
for(int j = 0; j < 3; j++) {
//Is this vertex shared
int sharedFace = -1;
int sharedVert = -1;
if(MA_QuickIsVertShared(i, j)) {
MA_GetSharedFace(i, j, sharedFace, sharedVert);
}
if(sharedFace != -1) {
//Get the normal from the share
pMesh->faces[i].vertexNormals[j] = pMesh->faces[sharedFace].vertexNormals[sharedVert];
} else {
//The vertex is not shared so get the next normal
if(pMesh->nextNormal >= pMesh->numNormals) {
//We are using more normals than exist
throw idException(va("Maya Loader '%s': Invalid Normals Index.", parser.GetFileName()));
}
pMesh->faces[i].vertexNormals[j] = pMesh->normals[pMesh->nextNormal];
pMesh->nextNormal++;
}
}
//.........这里部分代码省略.........