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


C++ WorldModel::writeFile方法代码示例

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


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

示例1: convertRawFile

    //=================================================================
    bool TileAssembler::convertRawFile(const std::string& pModelFilename)
    {
        bool success = true;
        std::string filename = iSrcDir;
        if (filename.length() >0)
            filename.push_back('/');
        filename.append(pModelFilename);

        WorldModel_Raw raw_model;
        if (!raw_model.Read(filename.c_str()))
            return false;

        // write WorldModel
        WorldModel model;
        model.setRootWmoID(raw_model.RootWMOID);
        if (raw_model.groupsArray.size())
        {
            std::vector<GroupModel> groupsArray;

            uint32 groups = raw_model.groupsArray.size();
            for (uint32 g = 0; g < groups; ++g)
            {
                GroupModel_Raw& raw_group = raw_model.groupsArray[g];
                groupsArray.push_back(GroupModel(raw_group.mogpflags, raw_group.GroupWMOID, raw_group.bounds ));
                groupsArray.back().setMeshData(raw_group.vertexArray, raw_group.triangles);
                groupsArray.back().setLiquidData(raw_group.liquid);
            }

            model.setGroupModels(groupsArray);
        }

        success = model.writeFile(iDestDir + "/" + pModelFilename + ".vmo");
        //std::cout << "readRawFile2: '" << pModelFilename << "' tris: " << nElements << " nodes: " << nNodes << std::endl;
        return success;
    }
开发者ID:Krill156,项目名称:FreyaCore,代码行数:36,代码来源:TileAssembler.cpp

示例2: convertRawFile


//.........这里部分代码省略.........
			std::vector<MeshTriangle> triangles;
			std::vector<Vector3> vertexArray;

			uint32 mogpflags, GroupWMOID;
			READ_OR_RETURN(&mogpflags, sizeof(uint32));
			READ_OR_RETURN(&GroupWMOID, sizeof(uint32));

			float bbox1[3], bbox2[3];
			READ_OR_RETURN(bbox1, sizeof(float)*3);
			READ_OR_RETURN(bbox2, sizeof(float)*3);

			uint32 liquidflags;
			READ_OR_RETURN(&liquidflags, sizeof(uint32));

			// will this ever be used? what is it good for anyway??
			uint32 branches;
			READ_OR_RETURN(&blockId, 4);
			CMP_OR_RETURN(blockId, "GRP ");
			READ_OR_RETURN(&blocksize, sizeof(int));
			READ_OR_RETURN(&branches, sizeof(uint32));
			for (uint32 b=0; b<branches; ++b)
			{
				uint32 indexes;
				// indexes for each branch (not used jet)
				READ_OR_RETURN(&indexes, sizeof(uint32));
			}

			// ---- indexes
			READ_OR_RETURN(&blockId, 4);
			CMP_OR_RETURN(blockId, "INDX");
			READ_OR_RETURN(&blocksize, sizeof(int));
			uint32 nindexes;
			READ_OR_RETURN(&nindexes, sizeof(uint32));
			if (nindexes >0)
			{
				uint16 *indexarray = new uint16[nindexes];
				READ_OR_RETURN(indexarray, nindexes*sizeof(uint16));
				for (uint32 i=0; i<nindexes; i+=3)
				{
					triangles.push_back(MeshTriangle(indexarray[i], indexarray[i+1], indexarray[i+2]));
				}
				delete[] indexarray;
			}

			// ---- vectors
			READ_OR_RETURN(&blockId, 4);
			CMP_OR_RETURN(blockId, "VERT");
			READ_OR_RETURN(&blocksize, sizeof(int));
			uint32 nvectors;
			READ_OR_RETURN(&nvectors, sizeof(uint32));

			if (nvectors >0)
			{
				float *vectorarray = new float[nvectors*3];
				READ_OR_RETURN(vectorarray, nvectors*sizeof(float)*3);
				for (uint32 i=0; i<nvectors; ++i)
				{
					vertexArray.push_back( Vector3(vectorarray + 3*i) );
				}
				delete[] vectorarray;
			}
			// ----- liquid
			WmoLiquid *liquid = 0;
			if (liquidflags& 1)
			{
				WMOLiquidHeader hlq;
				READ_OR_RETURN(&blockId, 4);
				CMP_OR_RETURN(blockId, "LIQU");
				READ_OR_RETURN(&blocksize, sizeof(int));
				READ_OR_RETURN(&hlq, sizeof(WMOLiquidHeader));
				liquid = new WmoLiquid(hlq.xtiles, hlq.ytiles, Vector3(hlq.pos_x, hlq.pos_y, hlq.pos_z), hlq.type);
				uint32 size = hlq.xverts*hlq.yverts;
				READ_OR_RETURN(liquid->GetHeightStorage(), size*sizeof(float));
				size = hlq.xtiles*hlq.ytiles;
				READ_OR_RETURN(liquid->GetFlagsStorage(), size);
			}

			groupsArray.push_back(GroupModel(mogpflags, GroupWMOID, AABox(Vector3(bbox1), Vector3(bbox2))));
			groupsArray.back().setMeshData(vertexArray, triangles);
			groupsArray.back().setLiquidData(liquid);

			// drop of temporary use defines
			#undef READ_OR_RETURN
			#undef CMP_OR_RETURN

		}
		fclose(rf);

		// write WorldModel
		WorldModel model;
		model.setRootWmoID(RootWMOID);
		if (groupsArray.size())
		{
			model.setGroupModels(groupsArray);
			success = model.writeFile(iDestDir + "/" + pModelFilename + ".vmo");
		}

		//std::cout << "readRawFile2: '" << pModelFilename << "' tris: " << nElements << " nodes: " << nNodes << std::endl;
		return success;
	}
开发者ID:SkyFire,项目名称:sandshroud,代码行数:101,代码来源:TileAssembler.cpp


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