Merge pull request #4700 from Skylion007/skylion007/modernize-use-emplace

Apply modernize-use-emplace clang-tidy rule
pull/4704/head
Kim Kulling 2022-08-25 10:50:11 +02:00 committed by GitHub
commit 46e571e497
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 302 additions and 302 deletions

View File

@ -319,7 +319,7 @@ void Discreet3DSImporter::ParseObjectChunk() {
case Discreet3DS::CHUNK_MAT_MATERIAL: case Discreet3DS::CHUNK_MAT_MATERIAL:
// Add a new material to the list // Add a new material to the list
mScene->mMaterials.push_back(D3DS::Material(std::string("UNNAMED_" + ai_to_string(mScene->mMaterials.size())))); mScene->mMaterials.emplace_back(std::string("UNNAMED_" + ai_to_string(mScene->mMaterials.size())));
ParseMaterialChunk(); ParseMaterialChunk();
break; break;
@ -370,7 +370,7 @@ void Discreet3DSImporter::ParseChunk(const char *name, unsigned int num) {
switch (chunk.Flag) { switch (chunk.Flag) {
case Discreet3DS::CHUNK_TRIMESH: { case Discreet3DS::CHUNK_TRIMESH: {
// this starts a new triangle mesh // this starts a new triangle mesh
mScene->mMeshes.push_back(D3DS::Mesh(std::string(name, num))); mScene->mMeshes.emplace_back(std::string(name, num));
// Read mesh chunks // Read mesh chunks
ParseMeshChunk(); ParseMeshChunk();
@ -999,7 +999,7 @@ void Discreet3DSImporter::ParseMeshChunk() {
mMesh.mFaces.reserve(num); mMesh.mFaces.reserve(num);
while (num-- > 0) { while (num-- > 0) {
// 3DS faces are ALWAYS triangles // 3DS faces are ALWAYS triangles
mMesh.mFaces.push_back(D3DS::Face()); mMesh.mFaces.emplace_back();
D3DS::Face &sFace = mMesh.mFaces.back(); D3DS::Face &sFace = mMesh.mFaces.back();
sFace.mIndices[0] = (uint16_t)stream->GetI2(); sFace.mIndices[0] = (uint16_t)stream->GetI2();

View File

@ -180,7 +180,7 @@ void AC3DImporter::LoadObjectSection(std::vector<Object> &objects) {
++mNumMeshes; ++mNumMeshes;
objects.push_back(Object()); objects.emplace_back();
Object &obj = objects.back(); Object &obj = objects.back();
aiLight *light = nullptr; aiLight *light = nullptr;
@ -267,7 +267,7 @@ void AC3DImporter::LoadObjectSection(std::vector<Object> &objects) {
--buffer; // make sure the line is processed a second time --buffer; // make sure the line is processed a second time
break; break;
} }
obj.vertices.push_back(aiVector3D()); obj.vertices.emplace_back();
aiVector3D &v = obj.vertices.back(); aiVector3D &v = obj.vertices.back();
buffer = TAcCheckedLoadFloatArray(buffer, "", 0, 3, &v.x); buffer = TAcCheckedLoadFloatArray(buffer, "", 0, 3, &v.x);
} }
@ -293,7 +293,7 @@ void AC3DImporter::LoadObjectSection(std::vector<Object> &objects) {
Q3DWorkAround = true; Q3DWorkAround = true;
} }
SkipSpaces(&buffer); SkipSpaces(&buffer);
obj.surfaces.push_back(Surface()); obj.surfaces.emplace_back();
Surface &surf = obj.surfaces.back(); Surface &surf = obj.surfaces.back();
surf.flags = strtoul_cppstyle(buffer); surf.flags = strtoul_cppstyle(buffer);
@ -324,7 +324,7 @@ void AC3DImporter::LoadObjectSection(std::vector<Object> &objects) {
ASSIMP_LOG_ERROR("AC3D: Unexpected EOF: surface references are incomplete"); ASSIMP_LOG_ERROR("AC3D: Unexpected EOF: surface references are incomplete");
break; break;
} }
surf.entries.push_back(Surface::SurfaceEntry()); surf.entries.emplace_back();
Surface::SurfaceEntry &entry = surf.entries.back(); Surface::SurfaceEntry &entry = surf.entries.back();
entry.first = strtoul10(buffer, &buffer); entry.first = strtoul10(buffer, &buffer);
@ -786,7 +786,7 @@ void AC3DImporter::InternReadFile(const std::string &pFile,
while (GetNextLine()) { while (GetNextLine()) {
if (TokenMatch(buffer, "MATERIAL", 8)) { if (TokenMatch(buffer, "MATERIAL", 8)) {
materials.push_back(Material()); materials.emplace_back();
Material &mat = materials.back(); Material &mat = materials.back();
// manually parse the material ... sscanf would use the buldin atof ... // manually parse the material ... sscanf would use the buldin atof ...
@ -813,7 +813,7 @@ void AC3DImporter::InternReadFile(const std::string &pFile,
} }
if (materials.empty()) { if (materials.empty()) {
ASSIMP_LOG_WARN("AC3D: No material has been found"); ASSIMP_LOG_WARN("AC3D: No material has been found");
materials.push_back(Material()); materials.emplace_back();
} }
mNumMeshes += (mNumMeshes >> 2u) + 1; mNumMeshes += (mNumMeshes >> 2u) + 1;

View File

@ -265,7 +265,7 @@ void ASEImporter::GenerateDefaultMaterial() {
} }
if (bHas || mParser->m_vMaterials.empty()) { if (bHas || mParser->m_vMaterials.empty()) {
// add a simple material without submaterials to the parser's list // add a simple material without submaterials to the parser's list
mParser->m_vMaterials.push_back(ASE::Material(AI_DEFAULT_MATERIAL_NAME)); mParser->m_vMaterials.emplace_back(AI_DEFAULT_MATERIAL_NAME);
ASE::Material &mat = mParser->m_vMaterials.back(); ASE::Material &mat = mParser->m_vMaterials.back();
mat.mDiffuse = aiColor3D(0.6f, 0.6f, 0.6f); mat.mDiffuse = aiColor3D(0.6f, 0.6f, 0.6f);
@ -1005,8 +1005,8 @@ void ASEImporter::ConvertMeshes(ASE::Mesh &mesh, std::vector<aiMesh *> &avOutMes
blubb != mesh.mBoneVertices[iIndex2].mBoneWeights.end(); ++blubb) { blubb != mesh.mBoneVertices[iIndex2].mBoneWeights.end(); ++blubb) {
// NOTE: illegal cases have already been filtered out // NOTE: illegal cases have already been filtered out
avOutputBones[(*blubb).first].push_back(std::pair<unsigned int, float>( avOutputBones[(*blubb).first].emplace_back(
iBase, (*blubb).second)); iBase, (*blubb).second);
} }
} }
} }

View File

@ -264,7 +264,7 @@ void Parser::Parse() {
if (TokenMatch(filePtr, "GEOMOBJECT", 10)) if (TokenMatch(filePtr, "GEOMOBJECT", 10))
{ {
m_vMeshes.push_back(Mesh("UNNAMED")); m_vMeshes.emplace_back("UNNAMED");
ParseLV1ObjectBlock(m_vMeshes.back()); ParseLV1ObjectBlock(m_vMeshes.back());
continue; continue;
} }
@ -272,7 +272,7 @@ void Parser::Parse() {
if (TokenMatch(filePtr, "HELPEROBJECT", 12)) if (TokenMatch(filePtr, "HELPEROBJECT", 12))
{ {
m_vDummies.push_back(Dummy()); m_vDummies.emplace_back();
ParseLV1ObjectBlock(m_vDummies.back()); ParseLV1ObjectBlock(m_vDummies.back());
continue; continue;
} }
@ -280,13 +280,13 @@ void Parser::Parse() {
if (TokenMatch(filePtr, "LIGHTOBJECT", 11)) if (TokenMatch(filePtr, "LIGHTOBJECT", 11))
{ {
m_vLights.push_back(Light("UNNAMED")); m_vLights.emplace_back("UNNAMED");
ParseLV1ObjectBlock(m_vLights.back()); ParseLV1ObjectBlock(m_vLights.back());
continue; continue;
} }
// camera object // camera object
if (TokenMatch(filePtr, "CAMERAOBJECT", 12)) { if (TokenMatch(filePtr, "CAMERAOBJECT", 12)) {
m_vCameras.push_back(Camera("UNNAMED")); m_vCameras.emplace_back("UNNAMED");
ParseLV1ObjectBlock(m_vCameras.back()); ParseLV1ObjectBlock(m_vCameras.back());
continue; continue;
} }
@ -385,7 +385,7 @@ void Parser::ParseLV1SoftSkinBlock() {
unsigned int numWeights; unsigned int numWeights;
ParseLV4MeshLong(numWeights); ParseLV4MeshLong(numWeights);
curMesh->mBoneVertices.push_back(ASE::BoneVertex()); curMesh->mBoneVertices.emplace_back();
ASE::BoneVertex &vert = curMesh->mBoneVertices.back(); ASE::BoneVertex &vert = curMesh->mBoneVertices.back();
// Reserve enough storage // Reserve enough storage
@ -409,7 +409,7 @@ void Parser::ParseLV1SoftSkinBlock() {
if (-1 == me.first) { if (-1 == me.first) {
// We don't have this bone yet, so add it to the list // We don't have this bone yet, so add it to the list
me.first = static_cast<int>(curMesh->mBones.size()); me.first = static_cast<int>(curMesh->mBones.size());
curMesh->mBones.push_back(ASE::Bone(bone)); curMesh->mBones.emplace_back(bone);
} }
ParseLV4MeshFloat(me.second); ParseLV4MeshFloat(me.second);
@ -1011,7 +1011,7 @@ void Parser::ParseLV3ScaleAnimationBlock(ASE::Animation &anim) {
anim.mScalingType = ASE::Animation::TCB; anim.mScalingType = ASE::Animation::TCB;
} }
if (b) { if (b) {
anim.akeyScaling.push_back(aiVectorKey()); anim.akeyScaling.emplace_back();
aiVectorKey &key = anim.akeyScaling.back(); aiVectorKey &key = anim.akeyScaling.back();
ParseLV4MeshFloatTriple(&key.mValue.x, iIndex); ParseLV4MeshFloatTriple(&key.mValue.x, iIndex);
key.mTime = (double)iIndex; key.mTime = (double)iIndex;
@ -1050,7 +1050,7 @@ void Parser::ParseLV3PosAnimationBlock(ASE::Animation &anim) {
anim.mPositionType = ASE::Animation::TCB; anim.mPositionType = ASE::Animation::TCB;
} }
if (b) { if (b) {
anim.akeyPositions.push_back(aiVectorKey()); anim.akeyPositions.emplace_back();
aiVectorKey &key = anim.akeyPositions.back(); aiVectorKey &key = anim.akeyPositions.back();
ParseLV4MeshFloatTriple(&key.mValue.x, iIndex); ParseLV4MeshFloatTriple(&key.mValue.x, iIndex);
key.mTime = (double)iIndex; key.mTime = (double)iIndex;
@ -1089,7 +1089,7 @@ void Parser::ParseLV3RotAnimationBlock(ASE::Animation &anim) {
anim.mRotationType = ASE::Animation::TCB; anim.mRotationType = ASE::Animation::TCB;
} }
if (b) { if (b) {
anim.akeyRotations.push_back(aiQuatKey()); anim.akeyRotations.emplace_back();
aiQuatKey &key = anim.akeyRotations.back(); aiQuatKey &key = anim.akeyRotations.back();
aiVector3D v; aiVector3D v;
ai_real f; ai_real f;

View File

@ -304,7 +304,7 @@ void MeshSplitter :: SplitMesh(unsigned int a, aiMesh* in_mesh, std::vector<std:
} }
// add the newly created mesh to the list // add the newly created mesh to the list
source_mesh_map.push_back(std::make_pair(out_mesh,a)); source_mesh_map.emplace_back(out_mesh,a);
if (base == in_mesh->mNumFaces) { if (base == in_mesh->mNumFaces) {
break; break;

View File

@ -479,13 +479,13 @@ void B3DImporter::ReadKEYS(aiNodeAnim *nodeAnim) {
while (ChunkSize()) { while (ChunkSize()) {
int frame = ReadInt(); int frame = ReadInt();
if (flags & 1) { if (flags & 1) {
trans.push_back(aiVectorKey(frame, ReadVec3())); trans.emplace_back(frame, ReadVec3());
} }
if (flags & 2) { if (flags & 2) {
scale.push_back(aiVectorKey(frame, ReadVec3())); scale.emplace_back(frame, ReadVec3());
} }
if (flags & 4) { if (flags & 4) {
rot.push_back(aiQuatKey(frame, ReadQuat())); rot.emplace_back(frame, ReadQuat());
} }
} }

View File

@ -186,7 +186,7 @@ aiNode *BVHLoader::ReadNode() {
std::vector<aiNode *> childNodes; std::vector<aiNode *> childNodes;
// and create an bone entry for it // and create an bone entry for it
mNodes.push_back(Node(node)); mNodes.emplace_back(node);
Node &internNode = mNodes.back(); Node &internNode = mNodes.back();
// now read the node's contents // now read the node's contents

View File

@ -753,7 +753,7 @@ void COBImporter::ReadPolH_Ascii(Scene &out, LineSplitter &splitter, const Chunk
ThrowException("Expected Face line"); ThrowException("Expected Face line");
} }
msh.faces.push_back(Face()); msh.faces.emplace_back();
Face &face = msh.faces.back(); Face &face = msh.faces.back();
face.indices.resize(strtoul10(splitter[2])); face.indices.resize(strtoul10(splitter[2]));
@ -956,7 +956,7 @@ void COBImporter::ReadPolH_Binary(COB::Scene &out, StreamReaderLE &reader, const
ThrowException(format("A hole is the first entity in the `PolH` chunk with id ") << nfo.id); ThrowException(format("A hole is the first entity in the `PolH` chunk with id ") << nfo.id);
} }
} else } else
msh.faces.push_back(Face()); msh.faces.emplace_back();
Face &f = msh.faces.back(); Face &f = msh.faces.back();
const size_t num = reader.GetI2(); const size_t num = reader.GetI2();
@ -968,7 +968,7 @@ void COBImporter::ReadPolH_Binary(COB::Scene &out, StreamReaderLE &reader, const
} }
for (size_t x = 0; x < num; ++x) { for (size_t x = 0; x < num; ++x) {
f.indices.push_back(VertexIndex()); f.indices.emplace_back();
VertexIndex &v = f.indices.back(); VertexIndex &v = f.indices.back();
v.pos_idx = reader.GetI4(); v.pos_idx = reader.GetI4();

View File

@ -1330,9 +1330,9 @@ void ColladaExporter::WriteAnimationLibrary(size_t pIndex) {
std::vector<std::string> names; std::vector<std::string> names;
for (size_t i = 0; i < nodeAnim->mNumPositionKeys; ++i) { for (size_t i = 0; i < nodeAnim->mNumPositionKeys; ++i) {
if (nodeAnim->mPreState == aiAnimBehaviour_DEFAULT || nodeAnim->mPreState == aiAnimBehaviour_LINEAR || nodeAnim->mPreState == aiAnimBehaviour_REPEAT) { if (nodeAnim->mPreState == aiAnimBehaviour_DEFAULT || nodeAnim->mPreState == aiAnimBehaviour_LINEAR || nodeAnim->mPreState == aiAnimBehaviour_REPEAT) {
names.push_back("LINEAR"); names.emplace_back("LINEAR");
} else if (nodeAnim->mPostState == aiAnimBehaviour_CONSTANT) { } else if (nodeAnim->mPostState == aiAnimBehaviour_CONSTANT) {
names.push_back("STEP"); names.emplace_back("STEP");
} }
} }

View File

@ -1929,7 +1929,7 @@ void ColladaParser::ExtractDataObjectFromChannel(const InputChannel &pInput, siz
switch (pInput.mType) { switch (pInput.mType) {
case IT_Position: // ignore all position streams except 0 - there can be only one position case IT_Position: // ignore all position streams except 0 - there can be only one position
if (pInput.mIndex == 0) { if (pInput.mIndex == 0) {
pMesh.mPositions.push_back(aiVector3D(obj[0], obj[1], obj[2])); pMesh.mPositions.emplace_back(obj[0], obj[1], obj[2]);
} else { } else {
ASSIMP_LOG_ERROR("Collada: just one vertex position stream supported"); ASSIMP_LOG_ERROR("Collada: just one vertex position stream supported");
} }
@ -1941,7 +1941,7 @@ void ColladaParser::ExtractDataObjectFromChannel(const InputChannel &pInput, siz
// ignore all normal streams except 0 - there can be only one normal // ignore all normal streams except 0 - there can be only one normal
if (pInput.mIndex == 0) { if (pInput.mIndex == 0) {
pMesh.mNormals.push_back(aiVector3D(obj[0], obj[1], obj[2])); pMesh.mNormals.emplace_back(obj[0], obj[1], obj[2]);
} else { } else {
ASSIMP_LOG_ERROR("Collada: just one vertex normal stream supported"); ASSIMP_LOG_ERROR("Collada: just one vertex normal stream supported");
} }
@ -1953,7 +1953,7 @@ void ColladaParser::ExtractDataObjectFromChannel(const InputChannel &pInput, siz
// ignore all tangent streams except 0 - there can be only one tangent // ignore all tangent streams except 0 - there can be only one tangent
if (pInput.mIndex == 0) { if (pInput.mIndex == 0) {
pMesh.mTangents.push_back(aiVector3D(obj[0], obj[1], obj[2])); pMesh.mTangents.emplace_back(obj[0], obj[1], obj[2]);
} else { } else {
ASSIMP_LOG_ERROR("Collada: just one vertex tangent stream supported"); ASSIMP_LOG_ERROR("Collada: just one vertex tangent stream supported");
} }
@ -1966,7 +1966,7 @@ void ColladaParser::ExtractDataObjectFromChannel(const InputChannel &pInput, siz
// ignore all bitangent streams except 0 - there can be only one bitangent // ignore all bitangent streams except 0 - there can be only one bitangent
if (pInput.mIndex == 0) { if (pInput.mIndex == 0) {
pMesh.mBitangents.push_back(aiVector3D(obj[0], obj[1], obj[2])); pMesh.mBitangents.emplace_back(obj[0], obj[1], obj[2]);
} else { } else {
ASSIMP_LOG_ERROR("Collada: just one vertex bitangent stream supported"); ASSIMP_LOG_ERROR("Collada: just one vertex bitangent stream supported");
} }
@ -1979,7 +1979,7 @@ void ColladaParser::ExtractDataObjectFromChannel(const InputChannel &pInput, siz
pMesh.mTexCoords[pInput.mIndex].insert(pMesh.mTexCoords[pInput.mIndex].end(), pMesh.mTexCoords[pInput.mIndex].insert(pMesh.mTexCoords[pInput.mIndex].end(),
pMesh.mPositions.size() - pMesh.mTexCoords[pInput.mIndex].size() - 1, aiVector3D(0, 0, 0)); pMesh.mPositions.size() - pMesh.mTexCoords[pInput.mIndex].size() - 1, aiVector3D(0, 0, 0));
pMesh.mTexCoords[pInput.mIndex].push_back(aiVector3D(obj[0], obj[1], obj[2])); pMesh.mTexCoords[pInput.mIndex].emplace_back(obj[0], obj[1], obj[2]);
if (0 != acc.mSubOffset[2] || 0 != acc.mSubOffset[3]) { if (0 != acc.mSubOffset[2] || 0 != acc.mSubOffset[3]) {
pMesh.mNumUVComponents[pInput.mIndex] = 3; pMesh.mNumUVComponents[pInput.mIndex] = 3;
} }
@ -2113,7 +2113,7 @@ void ColladaParser::ReadSceneNode(XmlNode &node, Node *pNode) {
if (s[0] != '#') { if (s[0] != '#') {
ASSIMP_LOG_ERROR("Collada: Unresolved reference format of node"); ASSIMP_LOG_ERROR("Collada: Unresolved reference format of node");
} else { } else {
pNode->mNodeInstances.push_back(NodeInstance()); pNode->mNodeInstances.emplace_back();
pNode->mNodeInstances.back().mNode = s.c_str() + 1; pNode->mNodeInstances.back().mNode = s.c_str() + 1;
} }
} }
@ -2129,7 +2129,7 @@ void ColladaParser::ReadSceneNode(XmlNode &node, Node *pNode) {
throw DeadlyImportError("Unknown reference format in <instance_light> element"); throw DeadlyImportError("Unknown reference format in <instance_light> element");
} }
pNode->mLights.push_back(LightInstance()); pNode->mLights.emplace_back();
pNode->mLights.back().mLight = url.c_str() + 1; pNode->mLights.back().mLight = url.c_str() + 1;
} }
} else if (currentName == "instance_camera") { } else if (currentName == "instance_camera") {
@ -2140,7 +2140,7 @@ void ColladaParser::ReadSceneNode(XmlNode &node, Node *pNode) {
if (url[0] != '#') { if (url[0] != '#') {
throw DeadlyImportError("Unknown reference format in <instance_camera> element"); throw DeadlyImportError("Unknown reference format in <instance_camera> element");
} }
pNode->mCameras.push_back(CameraInstance()); pNode->mCameras.emplace_back();
pNode->mCameras.back().mCamera = url.c_str() + 1; pNode->mCameras.back().mCamera = url.c_str() + 1;
} }
} }

View File

@ -475,7 +475,7 @@ void DXFImporter::ParseBlocks(DXF::LineReader& reader, DXF::FileData& output) {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void DXFImporter::ParseBlock(DXF::LineReader& reader, DXF::FileData& output) { void DXFImporter::ParseBlock(DXF::LineReader& reader, DXF::FileData& output) {
// push a new block onto the stack. // push a new block onto the stack.
output.blocks.push_back( DXF::Block() ); output.blocks.emplace_back();
DXF::Block& block = output.blocks.back(); DXF::Block& block = output.blocks.back();
while( !reader.End() && !reader.Is(0,"ENDBLK")) { while( !reader.End() && !reader.Is(0,"ENDBLK")) {
@ -520,7 +520,7 @@ void DXFImporter::ParseBlock(DXF::LineReader& reader, DXF::FileData& output) {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void DXFImporter::ParseEntities(DXF::LineReader& reader, DXF::FileData& output) { void DXFImporter::ParseEntities(DXF::LineReader& reader, DXF::FileData& output) {
// Push a new block onto the stack. // Push a new block onto the stack.
output.blocks.push_back( DXF::Block() ); output.blocks.emplace_back();
DXF::Block& block = output.blocks.back(); DXF::Block& block = output.blocks.back();
block.name = AI_DXF_ENTITIES_MAGIC_BLOCK; block.name = AI_DXF_ENTITIES_MAGIC_BLOCK;
@ -550,7 +550,7 @@ void DXFImporter::ParseEntities(DXF::LineReader& reader, DXF::FileData& output)
} }
void DXFImporter::ParseInsertion(DXF::LineReader& reader, DXF::FileData& output) { void DXFImporter::ParseInsertion(DXF::LineReader& reader, DXF::FileData& output) {
output.blocks.back().insertions.push_back( DXF::InsertBlock() ); output.blocks.back().insertions.emplace_back();
DXF::InsertBlock& bl = output.blocks.back().insertions.back(); DXF::InsertBlock& bl = output.blocks.back().insertions.back();
while( !reader.End() && !reader.Is(0)) { while( !reader.End() && !reader.Is(0)) {

View File

@ -242,7 +242,7 @@ void FBXConverter::ConvertNodes(uint64_t id, aiNode *parent, aiNode *root_node)
ai_assert(nodes_chain.size()); ai_assert(nodes_chain.size());
if (need_additional_node) { if (need_additional_node) {
nodes_chain.emplace_back(PotentialNode(node_name)); nodes_chain.emplace_back(node_name);
} }
//setup metadata on newest node //setup metadata on newest node

View File

@ -619,9 +619,9 @@ void ParseVectorDataArray(std::vector<aiVector3D>& out, const Element& el)
if (type == 'd') { if (type == 'd') {
const double* d = reinterpret_cast<const double*>(&buff[0]); const double* d = reinterpret_cast<const double*>(&buff[0]);
for (unsigned int i = 0; i < count3; ++i, d += 3) { for (unsigned int i = 0; i < count3; ++i, d += 3) {
out.push_back(aiVector3D(static_cast<ai_real>(d[0]), out.emplace_back(static_cast<ai_real>(d[0]),
static_cast<ai_real>(d[1]), static_cast<ai_real>(d[1]),
static_cast<ai_real>(d[2]))); static_cast<ai_real>(d[2]));
} }
// for debugging // for debugging
/*for ( size_t i = 0; i < out.size(); i++ ) { /*for ( size_t i = 0; i < out.size(); i++ ) {
@ -634,7 +634,7 @@ void ParseVectorDataArray(std::vector<aiVector3D>& out, const Element& el)
else if (type == 'f') { else if (type == 'f') {
const float* f = reinterpret_cast<const float*>(&buff[0]); const float* f = reinterpret_cast<const float*>(&buff[0]);
for (unsigned int i = 0; i < count3; ++i, f += 3) { for (unsigned int i = 0; i < count3; ++i, f += 3) {
out.push_back(aiVector3D(f[0],f[1],f[2])); out.emplace_back(f[0],f[1],f[2]);
} }
} }
@ -708,16 +708,16 @@ void ParseVectorDataArray(std::vector<aiColor4D>& out, const Element& el)
if (type == 'd') { if (type == 'd') {
const double* d = reinterpret_cast<const double*>(&buff[0]); const double* d = reinterpret_cast<const double*>(&buff[0]);
for (unsigned int i = 0; i < count4; ++i, d += 4) { for (unsigned int i = 0; i < count4; ++i, d += 4) {
out.push_back(aiColor4D(static_cast<float>(d[0]), out.emplace_back(static_cast<float>(d[0]),
static_cast<float>(d[1]), static_cast<float>(d[1]),
static_cast<float>(d[2]), static_cast<float>(d[2]),
static_cast<float>(d[3]))); static_cast<float>(d[3]));
} }
} }
else if (type == 'f') { else if (type == 'f') {
const float* f = reinterpret_cast<const float*>(&buff[0]); const float* f = reinterpret_cast<const float*>(&buff[0]);
for (unsigned int i = 0; i < count4; ++i, f += 4) { for (unsigned int i = 0; i < count4; ++i, f += 4) {
out.push_back(aiColor4D(f[0],f[1],f[2],f[3])); out.emplace_back(f[0],f[1],f[2],f[3]);
} }
} }
return; return;
@ -789,13 +789,13 @@ void ParseVectorDataArray(std::vector<aiVector2D>& out, const Element& el) {
if (type == 'd') { if (type == 'd') {
const double* d = reinterpret_cast<const double*>(&buff[0]); const double* d = reinterpret_cast<const double*>(&buff[0]);
for (unsigned int i = 0; i < count2; ++i, d += 2) { for (unsigned int i = 0; i < count2; ++i, d += 2) {
out.push_back(aiVector2D(static_cast<float>(d[0]), out.emplace_back(static_cast<float>(d[0]),
static_cast<float>(d[1]))); static_cast<float>(d[1]));
} }
} else if (type == 'f') { } else if (type == 'f') {
const float* f = reinterpret_cast<const float*>(&buff[0]); const float* f = reinterpret_cast<const float*>(&buff[0]);
for (unsigned int i = 0; i < count2; ++i, f += 2) { for (unsigned int i = 0; i < count2; ++i, f += 2) {
out.push_back(aiVector2D(f[0],f[1])); out.emplace_back(f[0],f[1]);
} }
} }

View File

@ -310,7 +310,7 @@ bool IntersectsBoundaryProfile(const IfcVector3 &e0, const IfcVector3 &e1, const
if (IfcVector2(diff.x, diff.y).SquareLength() < 1e-10) if (IfcVector2(diff.x, diff.y).SquareLength() < 1e-10)
continue; continue;
} }
intersect_results.push_back(std::make_pair(i, e0)); intersect_results.emplace_back(i, e0);
continue; continue;
} }
@ -324,7 +324,7 @@ bool IntersectsBoundaryProfile(const IfcVector3 &e0, const IfcVector3 &e1, const
if (IfcVector2(diff.x, diff.y).SquareLength() < 1e-10) if (IfcVector2(diff.x, diff.y).SquareLength() < 1e-10)
continue; continue;
} }
intersect_results.push_back(std::make_pair(i, p)); intersect_results.emplace_back(i, p);
} }
} }
@ -504,7 +504,7 @@ void ProcessPolygonalBoundedBooleanHalfSpaceDifference(const Schema_2x3::IfcPoly
} }
// now add them to the list of intersections // now add them to the list of intersections
for (size_t b = 0; b < intersected_boundary.size(); ++b) for (size_t b = 0; b < intersected_boundary.size(); ++b)
intersections.push_back(std::make_tuple(a, proj_inv * intersected_boundary[b].second, intersected_boundary[b].first)); intersections.emplace_back(a, proj_inv * intersected_boundary[b].second, intersected_boundary[b].first);
// and calculate our new inside/outside state // and calculate our new inside/outside state
if (intersected_boundary.size() & 1) if (intersected_boundary.size() & 1)

View File

@ -224,7 +224,7 @@ public:
IFCImporter::LogVerboseDebug("ignoring transition code on composite curve segment, only continuous transitions are supported"); IFCImporter::LogVerboseDebug("ignoring transition code on composite curve segment, only continuous transitions are supported");
} }
curves.push_back( CurveEntry(bc,IsTrue(curveSegment.SameSense)) ); curves.emplace_back(bc,IsTrue(curveSegment.SameSense) );
total += bc->GetParametricRangeDelta(); total += bc->GetParametricRangeDelta();
} }

View File

@ -170,7 +170,7 @@ void ProcessPolygonBoundaries(TempMesh& result, const TempMesh& inmesh, size_t m
continue; continue;
} }
fake_openings.push_back(TempOpening()); fake_openings.emplace_back();
TempOpening& opening = fake_openings.back(); TempOpening& opening = fake_openings.back();
opening.extrusionDir = master_normal; opening.extrusionDir = master_normal;
@ -612,7 +612,7 @@ void ProcessExtrudedArea(const Schema_2x3::IfcExtrudedAreaSolid& solid, const Te
TempMesh& bounds = *t.profileMesh.get(); TempMesh& bounds = *t.profileMesh.get();
if( bounds.mVerts.size() <= 2 ) { if( bounds.mVerts.size() <= 2 ) {
nors.push_back(IfcVector3()); nors.emplace_back();
continue; continue;
} }
auto nor = ((bounds.mVerts[2] - bounds.mVerts[0]) ^ (bounds.mVerts[1] - bounds.mVerts[0])).Normalize(); auto nor = ((bounds.mVerts[2] - bounds.mVerts[0]) ^ (bounds.mVerts[1] - bounds.mVerts[0])).Normalize();

View File

@ -114,9 +114,9 @@ void QuadrifyPart(const IfcVector2& pmin, const IfcVector2& pmax, XYSortedField&
if (!found) { if (!found) {
// the rectangle [pmin,pend] is opaque, fill it // the rectangle [pmin,pend] is opaque, fill it
out.push_back(pmin); out.push_back(pmin);
out.push_back(IfcVector2(pmin.x,pmax.y)); out.emplace_back(pmin.x,pmax.y);
out.push_back(pmax); out.push_back(pmax);
out.push_back(IfcVector2(pmax.x,pmin.y)); out.emplace_back(pmax.x,pmin.y);
return; return;
} }
@ -126,9 +126,9 @@ void QuadrifyPart(const IfcVector2& pmin, const IfcVector2& pmax, XYSortedField&
// see if there's an offset to fill at the top of our quad // see if there's an offset to fill at the top of our quad
if (xs - pmin.x) { if (xs - pmin.x) {
out.push_back(pmin); out.push_back(pmin);
out.push_back(IfcVector2(pmin.x,pmax.y)); out.emplace_back(pmin.x,pmax.y);
out.push_back(IfcVector2(xs,pmax.y)); out.emplace_back(xs,pmax.y);
out.push_back(IfcVector2(xs,pmin.y)); out.emplace_back(xs,pmin.y);
} }
// search along the y-axis for all openings that overlap xs and our quad // search along the y-axis for all openings that overlap xs and our quad
@ -159,10 +159,10 @@ void QuadrifyPart(const IfcVector2& pmin, const IfcVector2& pmax, XYSortedField&
} }
if (!found) { if (!found) {
// the rectangle [pmin,pend] is opaque, fill it // the rectangle [pmin,pend] is opaque, fill it
out.push_back(IfcVector2(xs,pmin.y)); out.emplace_back(xs,pmin.y);
out.push_back(IfcVector2(xs,pmax.y)); out.emplace_back(xs,pmax.y);
out.push_back(IfcVector2(xe,pmax.y)); out.emplace_back(xe,pmax.y);
out.push_back(IfcVector2(xe,pmin.y)); out.emplace_back(xe,pmin.y);
return; return;
} }
if (ylast < pmax.y) { if (ylast < pmax.y) {
@ -342,7 +342,7 @@ void InsertWindowContours(const ContourVector& contours,
if ((contour[a] - edge).SquareLength() > diag*diag*0.7) { if ((contour[a] - edge).SquareLength() > diag*diag*0.7) {
continue; continue;
} }
curmesh.mVerts.push_back(IfcVector3(contour[a].x, contour[a].y, 0.0f)); curmesh.mVerts.emplace_back(contour[a].x, contour[a].y, 0.0f);
} }
if (edge != contour[last_hit]) { if (edge != contour[last_hit]) {
@ -363,7 +363,7 @@ void InsertWindowContours(const ContourVector& contours,
corner.y = bb.second.y; corner.y = bb.second.y;
} }
curmesh.mVerts.push_back(IfcVector3(corner.x, corner.y, 0.0f)); curmesh.mVerts.emplace_back(corner.x, corner.y, 0.0f);
} }
else if (cnt == 1) { else if (cnt == 1) {
// avoid degenerate polygons (also known as lines or points) // avoid degenerate polygons (also known as lines or points)
@ -558,10 +558,10 @@ void CleanupOuterContour(const std::vector<IfcVector2>& contour_flat, TempMesh&
for(const ClipperLib::ExPolygon& ex : clipped) { for(const ClipperLib::ExPolygon& ex : clipped) {
iold.push_back(static_cast<unsigned int>(ex.outer.size())); iold.push_back(static_cast<unsigned int>(ex.outer.size()));
for(const ClipperLib::IntPoint& point : ex.outer) { for(const ClipperLib::IntPoint& point : ex.outer) {
vold.push_back(IfcVector3( vold.emplace_back(
from_int64(point.X), from_int64(point.X),
from_int64(point.Y), from_int64(point.Y),
0.0f)); 0.0f);
} }
} }
@ -1039,7 +1039,7 @@ void Quadrify(const std::vector< BoundingBox >& bbs, TempMesh& curmesh)
curmesh.mVertcnt.resize(quads.size()/4,4); curmesh.mVertcnt.resize(quads.size()/4,4);
curmesh.mVerts.reserve(quads.size()); curmesh.mVerts.reserve(quads.size());
for(const IfcVector2& v2 : quads) { for(const IfcVector2& v2 : quads) {
curmesh.mVerts.push_back(IfcVector3(v2.x, v2.y, static_cast<IfcFloat>(0.0))); curmesh.mVerts.emplace_back(v2.x, v2.y, static_cast<IfcFloat>(0.0));
} }
} }
@ -1095,7 +1095,7 @@ IfcMatrix4 ProjectOntoPlane(std::vector<IfcVector2>& out_contour, const TempMesh
vmin = std::min(vv, vmin); vmin = std::min(vv, vmin);
vmax = std::max(vv, vmax); vmax = std::max(vv, vmax);
out_contour.push_back(IfcVector2(vv.x,vv.y)); out_contour.emplace_back(vv.x,vv.y);
} }
zcoord /= in_verts.size(); zcoord /= in_verts.size();
@ -1128,7 +1128,7 @@ IfcMatrix4 ProjectOntoPlane(std::vector<IfcVector2>& out_contour, const TempMesh
for(const IfcVector3& x : in_verts) { for(const IfcVector3& x : in_verts) {
const IfcVector3& vv = m * x; const IfcVector3& vv = m * x;
out_contour2.push_back(IfcVector2(vv.x,vv.y)); out_contour2.emplace_back(vv.x,vv.y);
ai_assert(std::fabs(vv.z) < vmax.z + 1e-8); ai_assert(std::fabs(vv.z) < vmax.z + 1e-8);
} }
@ -1469,7 +1469,7 @@ std::vector<IfcVector2> GetContourInPlane2D(const std::shared_ptr<TempMesh>& mes
// XXX should not be necessary - but it is. Why? For precision reasons? // XXX should not be necessary - but it is. Why? For precision reasons?
vv = is_extruded_side ? vv_extr : vv; vv = is_extruded_side ? vv_extr : vv;
contour.push_back(IfcVector2(vv.x,vv.y)); contour.emplace_back(vv.x,vv.y);
} }
ok = true; ok = true;
@ -1758,7 +1758,7 @@ bool TryAddOpenings_Poly2Tri(const std::vector<TempOpening>& openings,
vmin = std::min(IfcVector2(vv.x, vv.y), vmin); vmin = std::min(IfcVector2(vv.x, vv.y), vmin);
vmax = std::max(IfcVector2(vv.x, vv.y), vmax); vmax = std::max(IfcVector2(vv.x, vv.y), vmax);
contour_flat.push_back(IfcVector2(vv.x,vv.y)); contour_flat.emplace_back(vv.x,vv.y);
} }
// With the current code in DerivePlaneCoordinateSpace, // With the current code in DerivePlaneCoordinateSpace,
@ -1891,7 +1891,7 @@ bool TryAddOpenings_Poly2Tri(const std::vector<TempOpening>& openings,
// Build the poly2tri inner contours for all holes we got from ClipperLib // Build the poly2tri inner contours for all holes we got from ClipperLib
for(ClipperLib::Polygon& opening : clip.holes) { for(ClipperLib::Polygon& opening : clip.holes) {
contours.push_back(std::vector<p2t::Point*>()); contours.emplace_back();
std::vector<p2t::Point*>& contour = contours.back(); std::vector<p2t::Point*>& contour = contours.back();
for(ClipperLib::IntPoint& point : opening) { for(ClipperLib::IntPoint& point : opening) {

View File

@ -108,10 +108,10 @@ void ProcessParametrizedProfile(const Schema_2x3::IfcParameterizedProfileDef& de
const IfcFloat x = cprofile->XDim*0.5f, y = cprofile->YDim*0.5f; const IfcFloat x = cprofile->XDim*0.5f, y = cprofile->YDim*0.5f;
meshout.mVerts.reserve(meshout.mVerts.size()+4); meshout.mVerts.reserve(meshout.mVerts.size()+4);
meshout.mVerts.push_back( IfcVector3( x, y, 0.f )); meshout.mVerts.emplace_back( x, y, 0.f );
meshout.mVerts.push_back( IfcVector3(-x, y, 0.f )); meshout.mVerts.emplace_back(-x, y, 0.f );
meshout.mVerts.push_back( IfcVector3(-x,-y, 0.f )); meshout.mVerts.emplace_back(-x,-y, 0.f );
meshout.mVerts.push_back( IfcVector3( x,-y, 0.f )); meshout.mVerts.emplace_back( x,-y, 0.f );
meshout.mVertcnt.push_back(4); meshout.mVertcnt.push_back(4);
} }
else if( const Schema_2x3::IfcCircleProfileDef* const circle = def.ToPtr<Schema_2x3::IfcCircleProfileDef>()) { else if( const Schema_2x3::IfcCircleProfileDef* const circle = def.ToPtr<Schema_2x3::IfcCircleProfileDef>()) {
@ -125,7 +125,7 @@ void ProcessParametrizedProfile(const Schema_2x3::IfcParameterizedProfileDef& de
IfcFloat angle = 0.f; IfcFloat angle = 0.f;
for(size_t i = 0; i < segments; ++i, angle += delta) { for(size_t i = 0; i < segments; ++i, angle += delta) {
meshout.mVerts.push_back( IfcVector3( std::cos(angle)*radius, std::sin(angle)*radius, 0.f )); meshout.mVerts.emplace_back( std::cos(angle)*radius, std::sin(angle)*radius, 0.f );
} }
meshout.mVertcnt.push_back(static_cast<unsigned int>(segments)); meshout.mVertcnt.push_back(static_cast<unsigned int>(segments));
@ -136,18 +136,18 @@ void ProcessParametrizedProfile(const Schema_2x3::IfcParameterizedProfileDef& de
const IfcFloat inner_height = ishape->OverallDepth - ishape->FlangeThickness * 2; const IfcFloat inner_height = ishape->OverallDepth - ishape->FlangeThickness * 2;
meshout.mVerts.reserve(12); meshout.mVerts.reserve(12);
meshout.mVerts.push_back(IfcVector3(0,0,0)); meshout.mVerts.emplace_back(0,0,0);
meshout.mVerts.push_back(IfcVector3(0,ishape->FlangeThickness,0)); meshout.mVerts.emplace_back(0,ishape->FlangeThickness,0);
meshout.mVerts.push_back(IfcVector3(offset,ishape->FlangeThickness,0)); meshout.mVerts.emplace_back(offset,ishape->FlangeThickness,0);
meshout.mVerts.push_back(IfcVector3(offset,ishape->FlangeThickness + inner_height,0)); meshout.mVerts.emplace_back(offset,ishape->FlangeThickness + inner_height,0);
meshout.mVerts.push_back(IfcVector3(0,ishape->FlangeThickness + inner_height,0)); meshout.mVerts.emplace_back(0,ishape->FlangeThickness + inner_height,0);
meshout.mVerts.push_back(IfcVector3(0,ishape->OverallDepth,0)); meshout.mVerts.emplace_back(0,ishape->OverallDepth,0);
meshout.mVerts.push_back(IfcVector3(ishape->OverallWidth,ishape->OverallDepth,0)); meshout.mVerts.emplace_back(ishape->OverallWidth,ishape->OverallDepth,0);
meshout.mVerts.push_back(IfcVector3(ishape->OverallWidth,ishape->FlangeThickness + inner_height,0)); meshout.mVerts.emplace_back(ishape->OverallWidth,ishape->FlangeThickness + inner_height,0);
meshout.mVerts.push_back(IfcVector3(offset+ishape->WebThickness,ishape->FlangeThickness + inner_height,0)); meshout.mVerts.emplace_back(offset+ishape->WebThickness,ishape->FlangeThickness + inner_height,0);
meshout.mVerts.push_back(IfcVector3(offset+ishape->WebThickness,ishape->FlangeThickness,0)); meshout.mVerts.emplace_back(offset+ishape->WebThickness,ishape->FlangeThickness,0);
meshout.mVerts.push_back(IfcVector3(ishape->OverallWidth,ishape->FlangeThickness,0)); meshout.mVerts.emplace_back(ishape->OverallWidth,ishape->FlangeThickness,0);
meshout.mVerts.push_back(IfcVector3(ishape->OverallWidth,0,0)); meshout.mVerts.emplace_back(ishape->OverallWidth,0,0);
meshout.mVertcnt.push_back(12); meshout.mVertcnt.push_back(12);
} }

View File

@ -201,7 +201,7 @@ void TempMesh::ComputePolygonNormals(std::vector<IfcVector3>& normals,
size_t vidx = std::accumulate(mVertcnt.begin(),begin,0); size_t vidx = std::accumulate(mVertcnt.begin(),begin,0);
for(iit = begin; iit != end; vidx += *iit++) { for(iit = begin; iit != end; vidx += *iit++) {
if (!*iit) { if (!*iit) {
normals.push_back(IfcVector3()); normals.emplace_back();
continue; continue;
} }
for(size_t vofs = 0, cnt = 0; vofs < *iit; ++vofs) { for(size_t vofs = 0, cnt = 0; vofs < *iit; ++vofs) {
@ -215,7 +215,7 @@ void TempMesh::ComputePolygonNormals(std::vector<IfcVector3>& normals,
++cnt; ++cnt;
} }
normals.push_back(IfcVector3()); normals.emplace_back();
NewellNormal<4,4,4>(normals.back(),*iit,&temp[0],&temp[1],&temp[2]); NewellNormal<4,4,4>(normals.back(),*iit,&temp[0],&temp[1],&temp[2]);
} }

View File

@ -628,7 +628,7 @@ void IRRImporter::GenerateGraph(Node *root, aiNode *rootOut, aiScene *scene,
ASSIMP_LOG_ERROR("IRR: Unable to load external file: ", root->meshPath); ASSIMP_LOG_ERROR("IRR: Unable to load external file: ", root->meshPath);
break; break;
} }
attach.push_back(AttachmentInfo(localScene, rootOut)); attach.emplace_back(localScene, rootOut);
// Now combine the material we've loaded for this mesh // Now combine the material we've loaded for this mesh
// with the real materials we got from the file. As we // with the real materials we got from the file. As we
@ -979,7 +979,7 @@ void IRRImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSy
// Materials can occur for nearly any type of node // Materials can occur for nearly any type of node
if (inMaterials && curNode->type != Node::DUMMY) { if (inMaterials && curNode->type != Node::DUMMY) {
// This is a material description - parse it! // This is a material description - parse it!
curNode->materials.push_back(std::pair<aiMaterial *, unsigned int>()); curNode->materials.emplace_back();
std::pair<aiMaterial *, unsigned int> &p = curNode->materials.back(); std::pair<aiMaterial *, unsigned int> &p = curNode->materials.back();
p.first = ParseMaterial(p.second); p.first = ParseMaterial(p.second);
@ -988,7 +988,7 @@ void IRRImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSy
} else if (inAnimator) { } else if (inAnimator) {
// This is an animation path - add a new animator // This is an animation path - add a new animator
// to the list. // to the list.
curNode->animators.push_back(Animator()); curNode->animators.emplace_back();
curAnim = &curNode->animators.back(); curAnim = &curNode->animators.back();
++guessedAnimCnt; ++guessedAnimCnt;
@ -1015,7 +1015,7 @@ void IRRImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSy
// here N is the ONE-based index of the point // here N is the ONE-based index of the point
if (prop.name.length() >= 6 && prop.name.substr(0, 5) == "Point") { if (prop.name.length() >= 6 && prop.name.substr(0, 5) == "Point") {
// Add a new key to the list // Add a new key to the list
curAnim->splineKeys.push_back(aiVectorKey()); curAnim->splineKeys.emplace_back();
aiVectorKey &key = curAnim->splineKeys.back(); aiVectorKey &key = curAnim->splineKeys.back();
// and parse its properties // and parse its properties

View File

@ -1292,7 +1292,7 @@ void LWOImporter::LoadLWO2Envelope(unsigned int length) {
case AI_LWO_KEY: { case AI_LWO_KEY: {
AI_LWO_VALIDATE_CHUNK_LENGTH(head.length, KEY, 8); AI_LWO_VALIDATE_CHUNK_LENGTH(head.length, KEY, 8);
envelope.keys.push_back(LWO::Key()); envelope.keys.emplace_back();
LWO::Key &key = envelope.keys.back(); LWO::Key &key = envelope.keys.back();
key.time = GetF4(); key.time = GetF4();
@ -1390,7 +1390,7 @@ void LWOImporter::LoadLWO3Envelope(unsigned int length) {
case AI_LWO_KEY: { case AI_LWO_KEY: {
AI_LWO_VALIDATE_CHUNK_LENGTH(head.length, KEY, 10); AI_LWO_VALIDATE_CHUNK_LENGTH(head.length, KEY, 10);
envelope.keys.push_back(LWO::Key()); envelope.keys.emplace_back();
LWO::Key &key = envelope.keys.back(); LWO::Key &key = envelope.keys.back();
key.time = GetF4(); key.time = GetF4();

View File

@ -90,7 +90,7 @@ void LWS::Element::Parse(const char *&buffer) {
} else if (*buffer == '}') } else if (*buffer == '}')
return; return;
children.push_back(Element()); children.emplace_back();
// copy data line - read token per token // copy data line - read token per token
@ -199,7 +199,7 @@ void LWSImporter::ReadEnvelope(const LWS::Element &dad, LWO::Envelope &fill) {
const char *c = (*it).tokens[1].c_str(); const char *c = (*it).tokens[1].c_str();
if ((*it).tokens[0] == "Key") { if ((*it).tokens[0] == "Key") {
fill.keys.push_back(LWO::Key()); fill.keys.emplace_back();
LWO::Key &key = fill.keys.back(); LWO::Key &key = fill.keys.back();
float f; float f;
@ -262,7 +262,7 @@ void LWSImporter::ReadEnvelope_Old(
num = strtoul10((*it).tokens[0].c_str()); num = strtoul10((*it).tokens[0].c_str());
for (unsigned int i = 0; i < num; ++i) { for (unsigned int i = 0; i < num; ++i) {
nodes.channels.push_back(LWO::Envelope()); nodes.channels.emplace_back();
LWO::Envelope &envl = nodes.channels.back(); LWO::Envelope &envl = nodes.channels.back();
envl.index = i; envl.index = i;
@ -384,7 +384,7 @@ void LWSImporter::BuildGraph(aiNode *nd, LWS::NodeDesc &src, std::vector<Attachm
//Push attachment, if the object came from an external file //Push attachment, if the object came from an external file
if (obj) { if (obj) {
attach.push_back(AttachmentInfo(obj, nd)); attach.emplace_back(obj, nd);
} }
} }
@ -637,7 +637,7 @@ void LWSImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSy
} }
// important: index of channel // important: index of channel
nodes.back().channels.push_back(LWO::Envelope()); nodes.back().channels.emplace_back();
LWO::Envelope &env = nodes.back().channels.back(); LWO::Envelope &env = nodes.back().channels.back();
env.index = strtoul10(c); env.index = strtoul10(c);

View File

@ -144,7 +144,7 @@ bool Q3Shader::LoadShader(ShaderData &fill, const std::string &pFile, IOSystem *
if (*buff == '{') { if (*buff == '{') {
++buff; ++buff;
// add new map section // add new map section
curData->maps.push_back(Q3Shader::ShaderMapBlock()); curData->maps.emplace_back();
curMap = &curData->maps.back(); curMap = &curData->maps.back();
for (; SkipSpacesAndLineEnd(&buff); SkipLine(&buff)) { for (; SkipSpacesAndLineEnd(&buff); SkipLine(&buff)) {
@ -209,7 +209,7 @@ bool Q3Shader::LoadShader(ShaderData &fill, const std::string &pFile, IOSystem *
} }
} else { } else {
// add new section // add new section
fill.blocks.push_back(Q3Shader::ShaderDataBlock()); fill.blocks.emplace_back();
curData = &fill.blocks.back(); curData = &fill.blocks.back();
// get the name of this section // get the name of this section
@ -249,7 +249,7 @@ bool Q3Shader::LoadSkin(SkinData &fill, const std::string &pFile, IOSystem *io)
if (!::strncmp(&ss[0], "tag_", std::min((size_t)4, ss.length()))) if (!::strncmp(&ss[0], "tag_", std::min((size_t)4, ss.length())))
continue; continue;
fill.textures.push_back(SkinData::TextureEntry()); fill.textures.emplace_back();
SkinData::TextureEntry &entry = fill.textures.back(); SkinData::TextureEntry &entry = fill.textures.back();
entry.first = ss; entry.first = ss;
@ -584,7 +584,7 @@ bool MD3Importer::ReadMultipartFile() {
// original root // original root
scene_lower->mRootNode->mName.Set("lower"); scene_lower->mRootNode->mName.Set("lower");
attach.push_back(AttachmentInfo(scene_lower, nd)); attach.emplace_back(scene_lower, nd);
// tag_torso // tag_torso
tag_torso = scene_lower->mRootNode->FindNode("tag_torso"); tag_torso = scene_lower->mRootNode->FindNode("tag_torso");
@ -593,7 +593,7 @@ bool MD3Importer::ReadMultipartFile() {
goto error_cleanup; goto error_cleanup;
} }
scene_upper->mRootNode->mName.Set("upper"); scene_upper->mRootNode->mName.Set("upper");
attach.push_back(AttachmentInfo(scene_upper, tag_torso)); attach.emplace_back(scene_upper, tag_torso);
// tag_head // tag_head
tag_head = scene_upper->mRootNode->FindNode("tag_head"); tag_head = scene_upper->mRootNode->FindNode("tag_head");
@ -602,7 +602,7 @@ bool MD3Importer::ReadMultipartFile() {
goto error_cleanup; goto error_cleanup;
} }
scene_head->mRootNode->mName.Set("head"); scene_head->mRootNode->mName.Set("head");
attach.push_back(AttachmentInfo(scene_head, tag_head)); attach.emplace_back(scene_head, tag_head);
// Remove tag_head and tag_torso from all other model parts ... // Remove tag_head and tag_torso from all other model parts ...
// this ensures (together with AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES_IF_NECESSARY) // this ensures (together with AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES_IF_NECESSARY)

View File

@ -271,13 +271,13 @@ void MDCImporter::InternReadFile(
pcMesh->mMaterialIndex = (unsigned int)aszShaders.size(); pcMesh->mMaterialIndex = (unsigned int)aszShaders.size();
// create a new shader // create a new shader
aszShaders.push_back(std::string(pcShader->ucName, aszShaders.emplace_back(pcShader->ucName,
::strnlen(pcShader->ucName, sizeof(pcShader->ucName)))); ::strnlen(pcShader->ucName, sizeof(pcShader->ucName)));
} }
// need to create a default material // need to create a default material
else if (UINT_MAX == iDefaultMatIndex) { else if (UINT_MAX == iDefaultMatIndex) {
pcMesh->mMaterialIndex = iDefaultMatIndex = (unsigned int)aszShaders.size(); pcMesh->mMaterialIndex = iDefaultMatIndex = (unsigned int)aszShaders.size();
aszShaders.push_back(std::string()); aszShaders.emplace_back();
} }
// otherwise assign a reference to the default material // otherwise assign a reference to the default material
else else

View File

@ -399,7 +399,7 @@ void MS3DImporter::InternReadFile( const std::string& pFile,
// if one of the groups has no material assigned, but there are other // if one of the groups has no material assigned, but there are other
// groups with materials, a default material needs to be added ( // groups with materials, a default material needs to be added (
// scenepreprocessor adds a default material only if nummat==0). // scenepreprocessor adds a default material only if nummat==0).
materials.push_back(TempMaterial()); materials.emplace_back();
TempMaterial& m = materials.back(); TempMaterial& m = materials.back();
strcpy(m.name,"<MS3D_DefaultMat>"); strcpy(m.name,"<MS3D_DefaultMat>");

View File

@ -171,7 +171,7 @@ void NDOImporter::InternReadFile( const std::string& pFile,
obj.edges.reserve(temp); obj.edges.reserve(temp);
for (unsigned int e = 0; e < temp; ++e) { for (unsigned int e = 0; e < temp; ++e) {
obj.edges.push_back(Edge()); obj.edges.emplace_back();
Edge& edge = obj.edges.back(); Edge& edge = obj.edges.back();
for (unsigned int i = 0; i< 8; ++i) { for (unsigned int i = 0; i< 8; ++i) {
@ -188,7 +188,7 @@ void NDOImporter::InternReadFile( const std::string& pFile,
obj.faces.reserve(temp); obj.faces.reserve(temp);
for (unsigned int e = 0; e < temp; ++e) { for (unsigned int e = 0; e < temp; ++e) {
obj.faces.push_back(Face()); obj.faces.emplace_back();
Face& face = obj.faces.back(); Face& face = obj.faces.back();
face.elem = file_format >= 12 ? reader.GetU4() : reader.GetU2(); face.elem = file_format >= 12 ? reader.GetU4() : reader.GetU2();
@ -199,7 +199,7 @@ void NDOImporter::InternReadFile( const std::string& pFile,
obj.vertices.reserve(temp); obj.vertices.reserve(temp);
for (unsigned int e = 0; e < temp; ++e) { for (unsigned int e = 0; e < temp; ++e) {
obj.vertices.push_back(Vertex()); obj.vertices.emplace_back();
Vertex& v = obj.vertices.back(); Vertex& v = obj.vertices.back();
v.num = file_format >= 12 ? reader.GetU4() : reader.GetU2(); v.num = file_format >= 12 ? reader.GetU4() : reader.GetU2();

View File

@ -167,7 +167,7 @@ void NFFImporter::LoadNFF2MaterialTable(std::vector<ShadingInfo> &output,
// 'matdef' starts a new material in the file // 'matdef' starts a new material in the file
else if (TokenMatch(sz, "matdef", 6)) { else if (TokenMatch(sz, "matdef", 6)) {
// add a new material to the list // add a new material to the list
output.push_back(ShadingInfo()); output.emplace_back();
curShader = &output.back(); curShader = &output.back();
// parse the name of the material // parse the name of the material
@ -549,7 +549,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
} }
if (!mesh) { if (!mesh) {
meshes.push_back(MeshInfo(PatchType_Simple, false)); meshes.emplace_back(PatchType_Simple, false);
mesh = &meshes.back(); mesh = &meshes.back();
mesh->matIndex = matIdx; mesh->matIndex = matIdx;
@ -614,7 +614,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
if (!currentMeshWithUVCoords) { if (!currentMeshWithUVCoords) {
meshesWithUVCoords.push_back(MeshInfo(PatchType_UVAndNormals)); meshesWithUVCoords.emplace_back(PatchType_UVAndNormals);
currentMeshWithUVCoords = &meshesWithUVCoords.back(); currentMeshWithUVCoords = &meshesWithUVCoords.back();
currentMeshWithUVCoords->shader = s; currentMeshWithUVCoords->shader = s;
} }
@ -631,7 +631,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
if (!currentMeshWithNormals) { if (!currentMeshWithNormals) {
meshesWithNormals.push_back(MeshInfo(PatchType_Normals)); meshesWithNormals.emplace_back(PatchType_Normals);
currentMeshWithNormals = &meshesWithNormals.back(); currentMeshWithNormals = &meshesWithNormals.back();
currentMeshWithNormals->shader = s; currentMeshWithNormals->shader = s;
} }
@ -649,7 +649,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
if (!currentMesh) { if (!currentMesh) {
meshes.push_back(MeshInfo(PatchType_Simple)); meshes.emplace_back(PatchType_Simple);
currentMesh = &meshes.back(); currentMesh = &meshes.back();
currentMesh->shader = s; currentMesh->shader = s;
} }
@ -749,7 +749,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
// 'l' - light source // 'l' - light source
else if (TokenMatch(sz, "l", 1)) { else if (TokenMatch(sz, "l", 1)) {
lights.push_back(Light()); lights.emplace_back();
Light &light = lights.back(); Light &light = lights.back();
AI_NFF_PARSE_TRIPLE(light.position); AI_NFF_PARSE_TRIPLE(light.position);
@ -758,7 +758,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
// 's' - sphere // 's' - sphere
else if (TokenMatch(sz, "s", 1)) { else if (TokenMatch(sz, "s", 1)) {
meshesLocked.push_back(MeshInfo(PatchType_Simple, true)); meshesLocked.emplace_back(PatchType_Simple, true);
MeshInfo &curMesh = meshesLocked.back(); MeshInfo &curMesh = meshesLocked.back();
curMesh.shader = s; curMesh.shader = s;
curMesh.shader.mapping = aiTextureMapping_SPHERE; curMesh.shader.mapping = aiTextureMapping_SPHERE;
@ -774,7 +774,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
// 'dod' - dodecahedron // 'dod' - dodecahedron
else if (TokenMatch(sz, "dod", 3)) { else if (TokenMatch(sz, "dod", 3)) {
meshesLocked.push_back(MeshInfo(PatchType_Simple, true)); meshesLocked.emplace_back(PatchType_Simple, true);
MeshInfo &curMesh = meshesLocked.back(); MeshInfo &curMesh = meshesLocked.back();
curMesh.shader = s; curMesh.shader = s;
curMesh.shader.mapping = aiTextureMapping_SPHERE; curMesh.shader.mapping = aiTextureMapping_SPHERE;
@ -791,7 +791,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
// 'oct' - octahedron // 'oct' - octahedron
else if (TokenMatch(sz, "oct", 3)) { else if (TokenMatch(sz, "oct", 3)) {
meshesLocked.push_back(MeshInfo(PatchType_Simple, true)); meshesLocked.emplace_back(PatchType_Simple, true);
MeshInfo &curMesh = meshesLocked.back(); MeshInfo &curMesh = meshesLocked.back();
curMesh.shader = s; curMesh.shader = s;
curMesh.shader.mapping = aiTextureMapping_SPHERE; curMesh.shader.mapping = aiTextureMapping_SPHERE;
@ -808,7 +808,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
// 'tet' - tetrahedron // 'tet' - tetrahedron
else if (TokenMatch(sz, "tet", 3)) { else if (TokenMatch(sz, "tet", 3)) {
meshesLocked.push_back(MeshInfo(PatchType_Simple, true)); meshesLocked.emplace_back(PatchType_Simple, true);
MeshInfo &curMesh = meshesLocked.back(); MeshInfo &curMesh = meshesLocked.back();
curMesh.shader = s; curMesh.shader = s;
curMesh.shader.mapping = aiTextureMapping_SPHERE; curMesh.shader.mapping = aiTextureMapping_SPHERE;
@ -825,7 +825,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
// 'hex' - hexahedron // 'hex' - hexahedron
else if (TokenMatch(sz, "hex", 3)) { else if (TokenMatch(sz, "hex", 3)) {
meshesLocked.push_back(MeshInfo(PatchType_Simple, true)); meshesLocked.emplace_back(PatchType_Simple, true);
MeshInfo &curMesh = meshesLocked.back(); MeshInfo &curMesh = meshesLocked.back();
curMesh.shader = s; curMesh.shader = s;
curMesh.shader.mapping = aiTextureMapping_BOX; curMesh.shader.mapping = aiTextureMapping_BOX;
@ -841,7 +841,7 @@ void NFFImporter::InternReadFile(const std::string &pFile,
} }
// 'c' - cone // 'c' - cone
else if (TokenMatch(sz, "c", 1)) { else if (TokenMatch(sz, "c", 1)) {
meshesLocked.push_back(MeshInfo(PatchType_Simple, true)); meshesLocked.emplace_back(PatchType_Simple, true);
MeshInfo &curMesh = meshesLocked.back(); MeshInfo &curMesh = meshesLocked.back();
curMesh.shader = s; curMesh.shader = s;
curMesh.shader.mapping = aiTextureMapping_CYLINDER; curMesh.shader.mapping = aiTextureMapping_CYLINDER;

View File

@ -333,7 +333,7 @@ void ObjExporter::WriteGeometryFile(bool noMtl) {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat) { void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat) {
mMeshes.push_back(MeshInstance() ); mMeshes.emplace_back();
MeshInstance& mesh = mMeshes.back(); MeshInstance& mesh = mMeshes.back();
if ( nullptr != m->mColors[ 0 ] ) { if ( nullptr != m->mColors[ 0 ] ) {

View File

@ -90,7 +90,7 @@ ObjFileParser::ObjFileParser(IOStreamBuffer<char> &streamBuffer, const std::stri
// create default material and store it // create default material and store it
m_pModel->mDefaultMaterial = new ObjFile::Material; m_pModel->mDefaultMaterial = new ObjFile::Material;
m_pModel->mDefaultMaterial->MaterialName.Set(DEFAULT_MATERIAL); m_pModel->mDefaultMaterial->MaterialName.Set(DEFAULT_MATERIAL);
m_pModel->mMaterialLib.push_back(DEFAULT_MATERIAL); m_pModel->mMaterialLib.emplace_back(DEFAULT_MATERIAL);
m_pModel->mMaterialMap[DEFAULT_MATERIAL] = m_pModel->mDefaultMaterial; m_pModel->mMaterialMap[DEFAULT_MATERIAL] = m_pModel->mDefaultMaterial;
// Start parsing the file // Start parsing the file

View File

@ -256,7 +256,7 @@ AssimpVertexBoneWeightList IVertexData::AssimpBoneWeights(size_t vertices) {
for (VertexBoneAssignmentList::const_iterator iter = vertexWeights.begin(), end = vertexWeights.end(); for (VertexBoneAssignmentList::const_iterator iter = vertexWeights.begin(), end = vertexWeights.end();
iter != end; ++iter) { iter != end; ++iter) {
std::vector<aiVertexWeight> &boneWeights = weights[iter->boneIndex]; std::vector<aiVertexWeight> &boneWeights = weights[iter->boneIndex];
boneWeights.push_back(aiVertexWeight(static_cast<unsigned int>(vi), iter->weight)); boneWeights.emplace_back(static_cast<unsigned int>(vi), iter->weight);
} }
} }
return weights; return weights;

View File

@ -560,9 +560,9 @@ bool Q3BSPFileImporter::importTextureFromArchive(const Q3BSP::Q3BSPModel *model,
} }
std::vector<std::string> supportedExtensions; std::vector<std::string> supportedExtensions;
supportedExtensions.push_back(".jpg"); supportedExtensions.emplace_back(".jpg");
supportedExtensions.push_back(".png"); supportedExtensions.emplace_back(".png");
supportedExtensions.push_back(".tga"); supportedExtensions.emplace_back(".tga");
std::string textureName, ext; std::string textureName, ext;
if (expandFile(archive, pTexture->strName, supportedExtensions, textureName, ext)) { if (expandFile(archive, pTexture->strName, supportedExtensions, textureName, ext)) {
IOStream *pTextureStream = archive->Open(textureName.c_str()); IOStream *pTextureStream = archive->Open(textureName.c_str());

View File

@ -157,7 +157,7 @@ void Q3DImporter::InternReadFile(const std::string &pFile,
// Meshes chunk // Meshes chunk
case 'm': { case 'm': {
for (unsigned int quak = 0; quak < numMeshes; ++quak) { for (unsigned int quak = 0; quak < numMeshes; ++quak) {
meshes.push_back(Mesh()); meshes.emplace_back();
Mesh &mesh = meshes.back(); Mesh &mesh = meshes.back();
// read all vertices // read all vertices
@ -184,7 +184,7 @@ void Q3DImporter::InternReadFile(const std::string &pFile,
// number of indices // number of indices
for (unsigned int i = 0; i < numVerts; ++i) { for (unsigned int i = 0; i < numVerts; ++i) {
faces.push_back(Face(stream.GetI2())); faces.emplace_back(stream.GetI2());
if (faces.back().indices.empty()) if (faces.back().indices.empty())
throw DeadlyImportError("Quick3D: Found face with zero indices"); throw DeadlyImportError("Quick3D: Found face with zero indices");
} }
@ -248,7 +248,7 @@ void Q3DImporter::InternReadFile(const std::string &pFile,
case 'c': case 'c':
for (unsigned int i = 0; i < numMats; ++i) { for (unsigned int i = 0; i < numMats; ++i) {
materials.push_back(Material()); materials.emplace_back();
Material &mat = materials.back(); Material &mat = materials.back();
// read the material name // read the material name
@ -402,7 +402,7 @@ outer:
// If we have no materials loaded - generate a default mat // If we have no materials loaded - generate a default mat
if (materials.empty()) { if (materials.empty()) {
ASSIMP_LOG_INFO("Quick3D: No material found, generating one"); ASSIMP_LOG_INFO("Quick3D: No material found, generating one");
materials.push_back(Material()); materials.emplace_back();
materials.back().diffuse = fgColor; materials.back().diffuse = fgColor;
} }

View File

@ -138,7 +138,7 @@ void RAWImporter::InternReadFile(const std::string &pFile,
} }
} }
if (sz2) { if (sz2) {
outGroups.push_back(GroupInformation(std::string(sz, length))); outGroups.emplace_back(std::string(sz, length));
curGroup = outGroups.end() - 1; curGroup = outGroups.end() - 1;
} }
} else { } else {
@ -179,7 +179,7 @@ void RAWImporter::InternReadFile(const std::string &pFile,
} }
// if we don't have the mesh, create it // if we don't have the mesh, create it
if (!output) { if (!output) {
(*curGroup).meshes.push_back(MeshInformation(std::string(sz, length))); (*curGroup).meshes.emplace_back(std::string(sz, length));
output = &((*curGroup).meshes.back()); output = &((*curGroup).meshes.back());
} }
if (12 == num) { if (12 == num) {
@ -188,13 +188,13 @@ void RAWImporter::InternReadFile(const std::string &pFile,
output->colors.push_back(v); output->colors.push_back(v);
output->colors.push_back(v); output->colors.push_back(v);
output->vertices.push_back(aiVector3D(data[3], data[4], data[5])); output->vertices.emplace_back(data[3], data[4], data[5]);
output->vertices.push_back(aiVector3D(data[6], data[7], data[8])); output->vertices.emplace_back(data[6], data[7], data[8]);
output->vertices.push_back(aiVector3D(data[9], data[10], data[11])); output->vertices.emplace_back(data[9], data[10], data[11]);
} else { } else {
output->vertices.push_back(aiVector3D(data[0], data[1], data[2])); output->vertices.emplace_back(data[0], data[1], data[2]);
output->vertices.push_back(aiVector3D(data[3], data[4], data[5])); output->vertices.emplace_back(data[3], data[4], data[5]);
output->vertices.push_back(aiVector3D(data[6], data[7], data[8])); output->vertices.emplace_back(data[6], data[7], data[8]);
} }
} }
} }

View File

@ -221,7 +221,7 @@ void SMDImporter::FixTimeValues() {
// create output meshes // create output meshes
void SMDImporter::CreateOutputMeshes() { void SMDImporter::CreateOutputMeshes() {
if (aszTextures.empty()) { if (aszTextures.empty()) {
aszTextures.push_back(std::string()); aszTextures.emplace_back();
} }
// we need to sort all faces by their material index // we need to sort all faces by their material index
@ -574,7 +574,7 @@ void SMDImporter::GetAnimationFileList(const std::string &pFile, IOSystem* pIOHa
animPath = p; animPath = p;
animName = DefaultIOSystem::completeBaseName(animPath); animName = DefaultIOSystem::completeBaseName(animPath);
} }
outList.push_back(std::make_tuple(animName, base + "/" + animPath)); outList.emplace_back(animName, base + "/" + animPath);
} }
tok1 = strtok_s(nullptr, "\r\n", &context1); tok1 = strtok_s(nullptr, "\r\n", &context1);
} }
@ -784,7 +784,7 @@ void SMDImporter::ParseVASection(const char* szCurrent, const char** szCurrentOu
SkipLine(szCurrent,&szCurrent); SkipLine(szCurrent,&szCurrent);
} else { } else {
if(0 == iCurIndex) { if(0 == iCurIndex) {
asTriangles.push_back(SMD::Face()); asTriangles.emplace_back();
} }
if (++iCurIndex == 3) { if (++iCurIndex == 3) {
iCurIndex = 0; iCurIndex = 0;
@ -904,7 +904,7 @@ void SMDImporter::ParseSkeletonElement(const char* szCurrent, const char** szCur
} }
SMD::Bone& bone = asBones[iBone]; SMD::Bone& bone = asBones[iBone];
bone.sAnim.asKeys.push_back(SMD::Bone::Animation::MatrixKey()); bone.sAnim.asKeys.emplace_back();
SMD::Bone::Animation::MatrixKey& key = bone.sAnim.asKeys.back(); SMD::Bone::Animation::MatrixKey& key = bone.sAnim.asKeys.back();
key.dTime = (double)iTime; key.dTime = (double)iTime;
@ -949,7 +949,7 @@ void SMDImporter::ParseSkeletonElement(const char* szCurrent, const char** szCur
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Parse a triangle // Parse a triangle
void SMDImporter::ParseTriangle(const char* szCurrent, const char** szCurrentOut) { void SMDImporter::ParseTriangle(const char* szCurrent, const char** szCurrentOut) {
asTriangles.push_back(SMD::Face()); asTriangles.emplace_back();
SMD::Face& face = asTriangles.back(); SMD::Face& face = asTriangles.back();
if(!SkipSpaces(szCurrent,&szCurrent)) { if(!SkipSpaces(szCurrent,&szCurrent)) {

View File

@ -335,7 +335,7 @@ void UnrealImporter::InternReadFile(const std::string &pFile,
SkipSpacesAndLineEnd(&data); SkipSpacesAndLineEnd(&data);
if (TokenMatchI(data, "IMPORT", 6)) { if (TokenMatchI(data, "IMPORT", 6)) {
tempTextures.push_back(std::pair<std::string, std::string>()); tempTextures.emplace_back();
std::pair<std::string, std::string> &me = tempTextures.back(); std::pair<std::string, std::string> &me = tempTextures.back();
for (; !IsLineEnd(*data); ++data) { for (; !IsLineEnd(*data); ++data) {
if (!::ASSIMP_strincmp(data, "NAME=", 5)) { if (!::ASSIMP_strincmp(data, "NAME=", 5)) {
@ -361,7 +361,7 @@ void UnrealImporter::InternReadFile(const std::string &pFile,
if (TokenMatchI(data, "SETTEXTURE", 10)) { if (TokenMatchI(data, "SETTEXTURE", 10)) {
textures.push_back(std::pair<unsigned int, std::string>()); textures.emplace_back();
std::pair<unsigned int, std::string> &me = textures.back(); std::pair<unsigned int, std::string> &me = textures.back();
for (; !IsLineEnd(*data); ++data) { for (; !IsLineEnd(*data); ++data) {

View File

@ -380,7 +380,7 @@ void XFileImporter::CreateMeshes( aiScene* pScene, aiNode* pNode, const std::vec
// does the new vertex stem from an old vertex which was influenced by this bone? // does the new vertex stem from an old vertex which was influenced by this bone?
ai_real w = oldWeights[orgPoints[d]]; ai_real w = oldWeights[orgPoints[d]];
if ( w > 0.0 ) { if ( w > 0.0 ) {
newWeights.push_back( aiVertexWeight( d, w ) ); newWeights.emplace_back( d, w );
} }
} }

View File

@ -454,7 +454,7 @@ void XFileParser::ParseDataObjectSkinWeights(Mesh *pMesh) {
std::string transformNodeName; std::string transformNodeName;
GetNextTokenAsString(transformNodeName); GetNextTokenAsString(transformNodeName);
pMesh->mBones.push_back(Bone()); pMesh->mBones.emplace_back();
Bone &bone = pMesh->mBones.back(); Bone &bone = pMesh->mBones.back();
bone.mName = transformNodeName; bone.mName = transformNodeName;
@ -640,7 +640,7 @@ void XFileParser::ParseDataObjectMeshMaterialList(Mesh *pMesh) {
CheckForClosingBrace(); // skip } CheckForClosingBrace(); // skip }
} else if (objectName == "Material") { } else if (objectName == "Material") {
pMesh->mMaterials.push_back(Material()); pMesh->mMaterials.emplace_back();
ParseDataObjectMaterial(&pMesh->mMaterials.back()); ParseDataObjectMaterial(&pMesh->mMaterials.back());
} else if (objectName == ";") { } else if (objectName == ";") {
// ignore // ignore
@ -678,12 +678,12 @@ void XFileParser::ParseDataObjectMaterial(Material *pMaterial) {
// some exporters write "TextureFileName" instead. // some exporters write "TextureFileName" instead.
std::string texname; std::string texname;
ParseDataObjectTextureFilename(texname); ParseDataObjectTextureFilename(texname);
pMaterial->mTextures.push_back(TexEntry(texname)); pMaterial->mTextures.emplace_back(texname);
} else if (objectName == "NormalmapFilename" || objectName == "NormalmapFileName") { } else if (objectName == "NormalmapFilename" || objectName == "NormalmapFileName") {
// one exporter writes out the normal map in a separate filename tag // one exporter writes out the normal map in a separate filename tag
std::string texname; std::string texname;
ParseDataObjectTextureFilename(texname); ParseDataObjectTextureFilename(texname);
pMaterial->mTextures.push_back(TexEntry(texname, true)); pMaterial->mTextures.emplace_back(texname, true);
} else { } else {
ASSIMP_LOG_WARN("Unknown data object in material in x file"); ASSIMP_LOG_WARN("Unknown data object in material in x file");
ParseUnknownDataObject(); ParseUnknownDataObject();

View File

@ -131,7 +131,7 @@ void X3DExporter::AttrHelper_Color3ToAttrList(std::list<SAttribute> &pList, cons
if (pValue == pDefaultValue) return; if (pValue == pDefaultValue) return;
AttrHelper_Col3DArrToString(&pValue, 1, tstr); AttrHelper_Col3DArrToString(&pValue, 1, tstr);
pList.push_back({ pName, tstr }); pList.emplace_back( pName, tstr );
} }
void X3DExporter::AttrHelper_FloatToAttrList(std::list<SAttribute> &pList, const string &pName, const float pValue, const float pDefaultValue) { void X3DExporter::AttrHelper_FloatToAttrList(std::list<SAttribute> &pList, const string &pName, const float pValue, const float pDefaultValue) {
@ -140,7 +140,7 @@ void X3DExporter::AttrHelper_FloatToAttrList(std::list<SAttribute> &pList, const
if (pValue == pDefaultValue) return; if (pValue == pDefaultValue) return;
AttrHelper_FloatToString(pValue, tstr); AttrHelper_FloatToString(pValue, tstr);
pList.push_back({ pName, tstr }); pList.emplace_back( pName, tstr );
} }
void X3DExporter::NodeHelper_OpenNode(const string &pNodeName, const size_t pTabLevel, const bool pEmptyElement, const list<SAttribute> &pAttrList) { void X3DExporter::NodeHelper_OpenNode(const string &pNodeName, const size_t pTabLevel, const bool pEmptyElement, const list<SAttribute> &pAttrList) {
@ -186,7 +186,7 @@ void X3DExporter::Export_Node(const aiNode *pNode, const size_t pTabLevel) {
if (CheckAndExport_Light(*pNode, pTabLevel)) return; if (CheckAndExport_Light(*pNode, pTabLevel)) return;
// Check if need DEF. // Check if need DEF.
if (pNode->mName.length) attr_list.push_back({ "DEF", pNode->mName.C_Str() }); if (pNode->mName.length) attr_list.emplace_back( "DEF", pNode->mName.C_Str() );
// Check if need <Transformation> node against <Group>. // Check if need <Transformation> node against <Group>.
if (!pNode->mTransformation.IsIdentity()) { if (!pNode->mTransformation.IsIdentity()) {
@ -213,13 +213,13 @@ void X3DExporter::Export_Node(const aiNode *pNode, const size_t pTabLevel) {
pNode->mTransformation.Decompose(scale, rotate_axis, rotate_angle, translate); pNode->mTransformation.Decompose(scale, rotate_axis, rotate_angle, translate);
// Check if values different from default // Check if values different from default
if ((rotate_angle != 0) && (rotate_axis.Length() > 0)) if ((rotate_angle != 0) && (rotate_axis.Length() > 0))
attr_list.push_back({ "rotation", Rotation2String(rotate_axis, rotate_angle) }); attr_list.emplace_back( "rotation", Rotation2String(rotate_axis, rotate_angle) );
if (!scale.Equal({ 1.0, 1.0, 1.0 })) { if (!scale.Equal({ 1.0, 1.0, 1.0 })) {
attr_list.push_back({ "scale", Vector2String(scale) }); attr_list.emplace_back( "scale", Vector2String(scale) );
} }
if (translate.Length() > 0) { if (translate.Length() > 0) {
attr_list.push_back({ "translation", Vector2String(translate) }); attr_list.emplace_back( "translation", Vector2String(translate) );
} }
} }
@ -284,7 +284,7 @@ void X3DExporter::Export_Mesh(const size_t pIdxMesh, const size_t pTabLevel) {
// Check if mesh already defined early. // Check if mesh already defined early.
if (mDEF_Map_Mesh.find(pIdxMesh) != mDEF_Map_Mesh.end()) { if (mDEF_Map_Mesh.find(pIdxMesh) != mDEF_Map_Mesh.end()) {
// Mesh already defined, just refer to it // Mesh already defined, just refer to it
attr_list.push_back({ "USE", mDEF_Map_Mesh.at(pIdxMesh) }); attr_list.emplace_back( "USE", mDEF_Map_Mesh.at(pIdxMesh) );
NodeHelper_OpenNode(NodeName_Shape, pTabLevel, true, attr_list); NodeHelper_OpenNode(NodeName_Shape, pTabLevel, true, attr_list);
return; return;
@ -293,7 +293,7 @@ void X3DExporter::Export_Mesh(const size_t pIdxMesh, const size_t pTabLevel) {
string mesh_name(mesh.mName.C_Str() + string("_IDX_") + to_string(pIdxMesh)); // Create mesh name string mesh_name(mesh.mName.C_Str() + string("_IDX_") + to_string(pIdxMesh)); // Create mesh name
// Define mesh name. // Define mesh name.
attr_list.push_back({ "DEF", mesh_name }); attr_list.emplace_back( "DEF", mesh_name );
mDEF_Map_Mesh[pIdxMesh] = mesh_name; mDEF_Map_Mesh[pIdxMesh] = mesh_name;
// //
@ -327,7 +327,7 @@ void X3DExporter::Export_Mesh(const size_t pIdxMesh, const size_t pTabLevel) {
// remove last space symbol. // remove last space symbol.
coordIndex.resize(coordIndex.length() - 1); coordIndex.resize(coordIndex.length() - 1);
attr_list.push_back({ "coordIndex", coordIndex }); attr_list.emplace_back( "coordIndex", coordIndex );
// create node // create node
NodeHelper_OpenNode(NodeName_IFS, pTabLevel + 1, false, attr_list); NodeHelper_OpenNode(NodeName_IFS, pTabLevel + 1, false, attr_list);
attr_list.clear(); attr_list.clear();
@ -336,14 +336,14 @@ void X3DExporter::Export_Mesh(const size_t pIdxMesh, const size_t pTabLevel) {
// Export <Coordinate> // Export <Coordinate>
AttrHelper_Vec3DArrToString(mesh.mVertices, mesh.mNumVertices, attr_value); AttrHelper_Vec3DArrToString(mesh.mVertices, mesh.mNumVertices, attr_value);
attr_list.push_back({ "point", attr_value }); attr_list.emplace_back( "point", attr_value );
NodeHelper_OpenNode("Coordinate", pTabLevel + 2, true, attr_list); NodeHelper_OpenNode("Coordinate", pTabLevel + 2, true, attr_list);
attr_list.clear(); attr_list.clear();
// Export <ColorRGBA> // Export <ColorRGBA>
if (mesh.HasVertexColors(0)) { if (mesh.HasVertexColors(0)) {
AttrHelper_Col4DArrToString(mesh.mColors[0], mesh.mNumVertices, attr_value); AttrHelper_Col4DArrToString(mesh.mColors[0], mesh.mNumVertices, attr_value);
attr_list.push_back({ "color", attr_value }); attr_list.emplace_back( "color", attr_value );
NodeHelper_OpenNode("ColorRGBA", pTabLevel + 2, true, attr_list); NodeHelper_OpenNode("ColorRGBA", pTabLevel + 2, true, attr_list);
attr_list.clear(); attr_list.clear();
} }
@ -351,7 +351,7 @@ void X3DExporter::Export_Mesh(const size_t pIdxMesh, const size_t pTabLevel) {
// Export <TextureCoordinate> // Export <TextureCoordinate>
if (mesh.HasTextureCoords(0)) { if (mesh.HasTextureCoords(0)) {
AttrHelper_Vec3DAsVec2fArrToString(mesh.mTextureCoords[0], mesh.mNumVertices, attr_value); AttrHelper_Vec3DAsVec2fArrToString(mesh.mTextureCoords[0], mesh.mNumVertices, attr_value);
attr_list.push_back({ "point", attr_value }); attr_list.emplace_back( "point", attr_value );
NodeHelper_OpenNode("TextureCoordinate", pTabLevel + 2, true, attr_list); NodeHelper_OpenNode("TextureCoordinate", pTabLevel + 2, true, attr_list);
attr_list.clear(); attr_list.clear();
} }
@ -359,7 +359,7 @@ void X3DExporter::Export_Mesh(const size_t pIdxMesh, const size_t pTabLevel) {
// Export <Normal> // Export <Normal>
if (mesh.HasNormals()) { if (mesh.HasNormals()) {
AttrHelper_Vec3DArrToString(mesh.mNormals, mesh.mNumVertices, attr_value); AttrHelper_Vec3DArrToString(mesh.mNormals, mesh.mNumVertices, attr_value);
attr_list.push_back({ "vector", attr_value }); attr_list.emplace_back( "vector", attr_value );
NodeHelper_OpenNode("Normal", pTabLevel + 2, true, attr_list); NodeHelper_OpenNode("Normal", pTabLevel + 2, true, attr_list);
attr_list.clear(); attr_list.clear();
} }
@ -380,7 +380,7 @@ void X3DExporter::Export_Material(const size_t pIdxMaterial, const size_t pTabLe
// Check if material already defined early. // Check if material already defined early.
if (mDEF_Map_Material.find(pIdxMaterial) != mDEF_Map_Material.end()) { if (mDEF_Map_Material.find(pIdxMaterial) != mDEF_Map_Material.end()) {
// Material already defined, just refer to it // Material already defined, just refer to it
attr_list.push_back({ "USE", mDEF_Map_Material.at(pIdxMaterial) }); attr_list.emplace_back( "USE", mDEF_Map_Material.at(pIdxMaterial) );
NodeHelper_OpenNode(NodeName_A, pTabLevel, true, attr_list); NodeHelper_OpenNode(NodeName_A, pTabLevel, true, attr_list);
return; return;
@ -392,7 +392,7 @@ void X3DExporter::Export_Material(const size_t pIdxMaterial, const size_t pTabLe
if (material.Get(AI_MATKEY_NAME, ai_mat_name) == AI_SUCCESS) material_name.insert(0, ai_mat_name.C_Str()); if (material.Get(AI_MATKEY_NAME, ai_mat_name) == AI_SUCCESS) material_name.insert(0, ai_mat_name.C_Str());
// Define material name. // Define material name.
attr_list.push_back({ "DEF", material_name }); attr_list.emplace_back( "DEF", material_name );
mDEF_Map_Material[pIdxMaterial] = material_name; mDEF_Map_Material[pIdxMaterial] = material_name;
// //
@ -410,7 +410,7 @@ void X3DExporter::Export_Material(const size_t pIdxMaterial, const size_t pTabLe
if (aiColor3D(pAttrValue.r, pAttrValue.g, pAttrValue.b) != pAttrDefaultValue) { if (aiColor3D(pAttrValue.r, pAttrValue.g, pAttrValue.b) != pAttrDefaultValue) {
AttrHelper_Col4DArrToString(&pAttrValue, 1, tstr); AttrHelper_Col4DArrToString(&pAttrValue, 1, tstr);
attr_list.push_back({ pAttrName, tstr }); attr_list.emplace_back( pAttrName, tstr );
} }
}; };
@ -462,7 +462,7 @@ void X3DExporter::Export_Material(const size_t pIdxMaterial, const size_t pTabLe
// //
{ {
auto RepeatToAttrList = [&](const string &pAttrName, const bool pAttrValue) { auto RepeatToAttrList = [&](const string &pAttrName, const bool pAttrValue) {
if (!pAttrValue) attr_list.push_back({ pAttrName, "false" }); if (!pAttrValue) attr_list.emplace_back( pAttrName, "false" );
}; };
bool tvalb; bool tvalb;
@ -473,7 +473,7 @@ void X3DExporter::Export_Material(const size_t pIdxMaterial, const size_t pTabLe
if (strncmp(tstring.C_Str(), AI_EMBEDDED_TEXNAME_PREFIX, strlen(AI_EMBEDDED_TEXNAME_PREFIX)) == 0) if (strncmp(tstring.C_Str(), AI_EMBEDDED_TEXNAME_PREFIX, strlen(AI_EMBEDDED_TEXNAME_PREFIX)) == 0)
LogError("Embedded texture is not supported"); LogError("Embedded texture is not supported");
else else
attr_list.push_back({ "url", string("\"") + tstring.C_Str() + "\"" }); attr_list.emplace_back( "url", string("\"") + tstring.C_Str() + "\"" );
} }
// repeatS="true" SFBool // repeatS="true" SFBool
@ -495,7 +495,7 @@ void X3DExporter::Export_Material(const size_t pIdxMaterial, const size_t pTabLe
if (pAttrValue != pAttrDefaultValue) { if (pAttrValue != pAttrDefaultValue) {
AttrHelper_Vec2DArrToString(&pAttrValue, 1, tstr); AttrHelper_Vec2DArrToString(&pAttrValue, 1, tstr);
attr_list.push_back({ pAttrName, tstr }); attr_list.emplace_back( pAttrName, tstr );
} }
}; };
@ -520,40 +520,40 @@ void X3DExporter::Export_Material(const size_t pIdxMaterial, const size_t pTabLe
void X3DExporter::Export_MetadataBoolean(const aiString &pKey, const bool pValue, const size_t pTabLevel) { void X3DExporter::Export_MetadataBoolean(const aiString &pKey, const bool pValue, const size_t pTabLevel) {
list<SAttribute> attr_list; list<SAttribute> attr_list;
attr_list.push_back({ "name", pKey.C_Str() }); attr_list.emplace_back( "name", pKey.C_Str() );
attr_list.push_back({ "value", pValue ? "true" : "false" }); attr_list.emplace_back( "value", pValue ? "true" : "false" );
NodeHelper_OpenNode("MetadataBoolean", pTabLevel, true, attr_list); NodeHelper_OpenNode("MetadataBoolean", pTabLevel, true, attr_list);
} }
void X3DExporter::Export_MetadataDouble(const aiString &pKey, const double pValue, const size_t pTabLevel) { void X3DExporter::Export_MetadataDouble(const aiString &pKey, const double pValue, const size_t pTabLevel) {
list<SAttribute> attr_list; list<SAttribute> attr_list;
attr_list.push_back({ "name", pKey.C_Str() }); attr_list.emplace_back( "name", pKey.C_Str() );
attr_list.push_back({ "value", to_string(pValue) }); attr_list.emplace_back( "value", to_string(pValue) );
NodeHelper_OpenNode("MetadataDouble", pTabLevel, true, attr_list); NodeHelper_OpenNode("MetadataDouble", pTabLevel, true, attr_list);
} }
void X3DExporter::Export_MetadataFloat(const aiString &pKey, const float pValue, const size_t pTabLevel) { void X3DExporter::Export_MetadataFloat(const aiString &pKey, const float pValue, const size_t pTabLevel) {
list<SAttribute> attr_list; list<SAttribute> attr_list;
attr_list.push_back({ "name", pKey.C_Str() }); attr_list.emplace_back( "name", pKey.C_Str() );
attr_list.push_back({ "value", to_string(pValue) }); attr_list.emplace_back( "value", to_string(pValue) );
NodeHelper_OpenNode("MetadataFloat", pTabLevel, true, attr_list); NodeHelper_OpenNode("MetadataFloat", pTabLevel, true, attr_list);
} }
void X3DExporter::Export_MetadataInteger(const aiString &pKey, const int32_t pValue, const size_t pTabLevel) { void X3DExporter::Export_MetadataInteger(const aiString &pKey, const int32_t pValue, const size_t pTabLevel) {
list<SAttribute> attr_list; list<SAttribute> attr_list;
attr_list.push_back({ "name", pKey.C_Str() }); attr_list.emplace_back( "name", pKey.C_Str() );
attr_list.push_back({ "value", to_string(pValue) }); attr_list.emplace_back( "value", to_string(pValue) );
NodeHelper_OpenNode("MetadataInteger", pTabLevel, true, attr_list); NodeHelper_OpenNode("MetadataInteger", pTabLevel, true, attr_list);
} }
void X3DExporter::Export_MetadataString(const aiString &pKey, const aiString &pValue, const size_t pTabLevel) { void X3DExporter::Export_MetadataString(const aiString &pKey, const aiString &pValue, const size_t pTabLevel) {
list<SAttribute> attr_list; list<SAttribute> attr_list;
attr_list.push_back({ "name", pKey.C_Str() }); attr_list.emplace_back( "name", pKey.C_Str() );
attr_list.push_back({ "value", pValue.C_Str() }); attr_list.emplace_back( "value", pValue.C_Str() );
NodeHelper_OpenNode("MetadataString", pTabLevel, true, attr_list); NodeHelper_OpenNode("MetadataString", pTabLevel, true, attr_list);
} }
@ -565,7 +565,7 @@ bool X3DExporter::CheckAndExport_Light(const aiNode &pNode, const size_t pTabLev
if (pAttrValue != pAttrDefaultValue) { if (pAttrValue != pAttrDefaultValue) {
AttrHelper_Vec3DArrToString(&pAttrValue, 1, tstr); AttrHelper_Vec3DArrToString(&pAttrValue, 1, tstr);
attr_list.push_back({ pAttrName, tstr }); attr_list.emplace_back( pAttrName, tstr );
} }
}; };
@ -590,8 +590,8 @@ bool X3DExporter::CheckAndExport_Light(const aiNode &pNode, const size_t pTabLev
aiMatrix4x4 trafo_mat = Matrix_GlobalToCurrent(pNode).Inverse(); aiMatrix4x4 trafo_mat = Matrix_GlobalToCurrent(pNode).Inverse();
attr_list.push_back({ "DEF", light.mName.C_Str() }); attr_list.emplace_back( "DEF", light.mName.C_Str() );
attr_list.push_back({ "global", "true" }); // "false" is not supported. attr_list.emplace_back( "global", "true" ); // "false" is not supported.
// ambientIntensity="0" SFFloat [inputOutput] // ambientIntensity="0" SFFloat [inputOutput]
AttrHelper_FloatToAttrList(attr_list, "ambientIntensity", aiVector3D(light.mColorAmbient.r, light.mColorAmbient.g, light.mColorAmbient.b).Length(), 0); AttrHelper_FloatToAttrList(attr_list, "ambientIntensity", aiVector3D(light.mColorAmbient.r, light.mColorAmbient.g, light.mColorAmbient.b).Length(), 0);
// color="1 1 1" SFColor [inputOutput] // color="1 1 1" SFColor [inputOutput]
@ -648,10 +648,10 @@ X3DExporter::X3DExporter(const char *pFileName, IOSystem *pIOSystem, const aiSce
XML_Write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); XML_Write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
XML_Write("<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D 3.3//EN\" \"http://www.web3d.org/specifications/x3d-3.3.dtd\">\n"); XML_Write("<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D 3.3//EN\" \"http://www.web3d.org/specifications/x3d-3.3.dtd\">\n");
// Root node // Root node
attr_list.push_back({ "profile", "Interchange" }); attr_list.emplace_back( "profile", "Interchange" );
attr_list.push_back({ "version", "3.3" }); attr_list.emplace_back( "version", "3.3" );
attr_list.push_back({ "xmlns:xsd", "http://www.w3.org/2001/XMLSchema-instance" }); attr_list.emplace_back( "xmlns:xsd", "http://www.w3.org/2001/XMLSchema-instance" );
attr_list.push_back({ "xsd:noNamespaceSchemaLocation", "http://www.web3d.org/specifications/x3d-3.3.xsd" }); attr_list.emplace_back( "xsd:noNamespaceSchemaLocation", "http://www.web3d.org/specifications/x3d-3.3.xsd" );
NodeHelper_OpenNode("X3D", 0, false, attr_list); NodeHelper_OpenNode("X3D", 0, false, attr_list);
attr_list.clear(); attr_list.clear();
// <head>: meta data. // <head>: meta data.

View File

@ -193,7 +193,7 @@ void X3DGeoHelper::add_color(aiMesh &pMesh, const std::list<aiColor3D> &pColors,
// create RGBA array from RGB. // create RGBA array from RGB.
for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it) for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it)
tcol.push_back(aiColor4D((*it).r, (*it).g, (*it).b, 1)); tcol.emplace_back((*it).r, (*it).g, (*it).b, 1);
// call existing function for adding RGBA colors // call existing function for adding RGBA colors
add_color(pMesh, tcol, pColorPerVertex); add_color(pMesh, tcol, pColorPerVertex);
@ -238,7 +238,7 @@ void X3DGeoHelper::add_color(aiMesh &pMesh, const std::vector<int32_t> &pCoordId
// create RGBA array from RGB. // create RGBA array from RGB.
for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it) { for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it) {
tcol.push_back(aiColor4D((*it).r, (*it).g, (*it).b, 1)); tcol.emplace_back((*it).r, (*it).g, (*it).b, 1);
} }
// call existing function for adding RGBA colors // call existing function for adding RGBA colors
@ -440,7 +440,7 @@ void X3DGeoHelper::add_tex_coord(aiMesh &pMesh, const std::vector<int32_t> &pCoo
// copy list to array because we are need indexed access to normals. // copy list to array because we are need indexed access to normals.
texcoord_arr_copy.reserve(pTexCoords.size()); texcoord_arr_copy.reserve(pTexCoords.size());
for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) { for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) {
texcoord_arr_copy.push_back(aiVector3D((*it).x, (*it).y, 0)); texcoord_arr_copy.emplace_back((*it).x, (*it).y, 0);
} }
if (pTexCoordIdx.size() > 0) { if (pTexCoordIdx.size() > 0) {
@ -480,7 +480,7 @@ void X3DGeoHelper::add_tex_coord(aiMesh &pMesh, const std::list<aiVector2D> &pTe
// copy list to array because we are need convert aiVector2D to aiVector3D and also get indexed access as a bonus. // copy list to array because we are need convert aiVector2D to aiVector3D and also get indexed access as a bonus.
tc_arr_copy.reserve(pTexCoords.size()); tc_arr_copy.reserve(pTexCoords.size());
for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) { for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) {
tc_arr_copy.push_back(aiVector3D((*it).x, (*it).y, 0)); tc_arr_copy.emplace_back((*it).x, (*it).y, 0);
} }
// copy texture coordinates to mesh // copy texture coordinates to mesh

View File

@ -151,7 +151,7 @@ void X3DImporter::readArcClose2D(XmlNode &node) {
std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias. std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias.
if ((closureType == "PIE") || (closureType == "\"PIE\"")) if ((closureType == "PIE") || (closureType == "\"PIE\""))
vlist.push_back(aiVector3D(0, 0, 0)); // center point - first radial line vlist.emplace_back(0, 0, 0); // center point - first radial line
else if ((closureType != "CHORD") && (closureType != "\"CHORD\"")) else if ((closureType != "CHORD") && (closureType != "\"CHORD\""))
Throw_IncorrectAttrValue("ArcClose2D", "closureType"); Throw_IncorrectAttrValue("ArcClose2D", "closureType");
@ -323,7 +323,7 @@ void X3DImporter::readPolyline2D(XmlNode &node) {
// convert vec2 to vec3 // convert vec2 to vec3
for (std::list<aiVector2D>::iterator it2 = lineSegments.begin(); it2 != lineSegments.end(); ++it2) for (std::list<aiVector2D>::iterator it2 = lineSegments.begin(); it2 != lineSegments.end(); ++it2)
tlist.push_back(aiVector3D(it2->x, it2->y, 0)); tlist.emplace_back(it2->x, it2->y, 0);
// convert point set to line set // convert point set to line set
X3DGeoHelper::extend_point_to_line(tlist, ((X3DNodeElementGeometry2D *)ne)->Vertices); X3DGeoHelper::extend_point_to_line(tlist, ((X3DNodeElementGeometry2D *)ne)->Vertices);
@ -361,7 +361,7 @@ void X3DImporter::readPolypoint2D(XmlNode &node) {
// convert vec2 to vec3 // convert vec2 to vec3
for (std::list<aiVector2D>::iterator it2 = point.begin(); it2 != point.end(); ++it2) { for (std::list<aiVector2D>::iterator it2 = point.begin(); it2 != point.end(); ++it2) {
((X3DNodeElementGeometry2D *)ne)->Vertices.push_back(aiVector3D(it2->x, it2->y, 0)); ((X3DNodeElementGeometry2D *)ne)->Vertices.emplace_back(it2->x, it2->y, 0);
} }
((X3DNodeElementGeometry2D *)ne)->NumIndices = 1; ((X3DNodeElementGeometry2D *)ne)->NumIndices = 1;
@ -405,10 +405,10 @@ void X3DImporter::readRectangle2D(XmlNode &node) {
float y2 = size.y / 2.0f; float y2 = size.y / 2.0f;
std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias. std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias.
vlist.push_back(aiVector3D(x2, y1, 0)); // 1st point vlist.emplace_back(x2, y1, 0); // 1st point
vlist.push_back(aiVector3D(x2, y2, 0)); // 2nd point vlist.emplace_back(x2, y2, 0); // 2nd point
vlist.push_back(aiVector3D(x1, y2, 0)); // 3rd point vlist.emplace_back(x1, y2, 0); // 3rd point
vlist.push_back(aiVector3D(x1, y1, 0)); // 4th point vlist.emplace_back(x1, y1, 0); // 4th point
((X3DNodeElementGeometry2D *)ne)->Solid = solid; ((X3DNodeElementGeometry2D *)ne)->Solid = solid;
((X3DNodeElementGeometry2D *)ne)->NumIndices = 4; ((X3DNodeElementGeometry2D *)ne)->NumIndices = 4;
// check for X3DMetadataObject childs. // check for X3DMetadataObject childs.
@ -449,7 +449,7 @@ void X3DImporter::readTriangleSet2D(XmlNode &node) {
// convert vec2 to vec3 // convert vec2 to vec3
for (std::list<aiVector2D>::iterator it2 = vertices.begin(); it2 != vertices.end(); ++it2) { for (std::list<aiVector2D>::iterator it2 = vertices.begin(); it2 != vertices.end(); ++it2) {
((X3DNodeElementGeometry2D *)ne)->Vertices.push_back(aiVector3D(it2->x, it2->y, 0)); ((X3DNodeElementGeometry2D *)ne)->Vertices.emplace_back(it2->x, it2->y, 0);
} }
((X3DNodeElementGeometry2D *)ne)->Solid = solid; ((X3DNodeElementGeometry2D *)ne)->Solid = solid;

View File

@ -146,73 +146,73 @@ static void setupExporterArray(std::vector<Exporter::ExportFormatEntry> &exporte
(void)exporters; (void)exporters;
#ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER #ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("collada", "COLLADA - Digital Asset Exchange Schema", "dae", &ExportSceneCollada)); exporters.emplace_back("collada", "COLLADA - Digital Asset Exchange Schema", "dae", &ExportSceneCollada);
#endif #endif
#ifndef ASSIMP_BUILD_NO_X_EXPORTER #ifndef ASSIMP_BUILD_NO_X_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("x", "X Files", "x", &ExportSceneXFile, exporters.emplace_back("x", "X Files", "x", &ExportSceneXFile,
aiProcess_MakeLeftHanded | aiProcess_FlipWindingOrder | aiProcess_FlipUVs)); aiProcess_MakeLeftHanded | aiProcess_FlipWindingOrder | aiProcess_FlipUVs);
#endif #endif
#ifndef ASSIMP_BUILD_NO_STEP_EXPORTER #ifndef ASSIMP_BUILD_NO_STEP_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("stp", "Step Files", "stp", &ExportSceneStep, 0)); exporters.emplace_back("stp", "Step Files", "stp", &ExportSceneStep, 0);
#endif #endif
#ifndef ASSIMP_BUILD_NO_OBJ_EXPORTER #ifndef ASSIMP_BUILD_NO_OBJ_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("obj", "Wavefront OBJ format", "obj", &ExportSceneObj, exporters.emplace_back("obj", "Wavefront OBJ format", "obj", &ExportSceneObj,
aiProcess_GenSmoothNormals /*| aiProcess_PreTransformVertices */)); aiProcess_GenSmoothNormals /*| aiProcess_PreTransformVertices */);
exporters.push_back(Exporter::ExportFormatEntry("objnomtl", "Wavefront OBJ format without material file", "obj", &ExportSceneObjNoMtl, exporters.emplace_back("objnomtl", "Wavefront OBJ format without material file", "obj", &ExportSceneObjNoMtl,
aiProcess_GenSmoothNormals /*| aiProcess_PreTransformVertices */)); aiProcess_GenSmoothNormals /*| aiProcess_PreTransformVertices */);
#endif #endif
#ifndef ASSIMP_BUILD_NO_STL_EXPORTER #ifndef ASSIMP_BUILD_NO_STL_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("stl", "Stereolithography", "stl", &ExportSceneSTL, exporters.emplace_back("stl", "Stereolithography", "stl", &ExportSceneSTL,
aiProcess_Triangulate | aiProcess_GenNormals | aiProcess_PreTransformVertices)); aiProcess_Triangulate | aiProcess_GenNormals | aiProcess_PreTransformVertices);
exporters.push_back(Exporter::ExportFormatEntry("stlb", "Stereolithography (binary)", "stl", &ExportSceneSTLBinary, exporters.emplace_back("stlb", "Stereolithography (binary)", "stl", &ExportSceneSTLBinary,
aiProcess_Triangulate | aiProcess_GenNormals | aiProcess_PreTransformVertices)); aiProcess_Triangulate | aiProcess_GenNormals | aiProcess_PreTransformVertices);
#endif #endif
#ifndef ASSIMP_BUILD_NO_PLY_EXPORTER #ifndef ASSIMP_BUILD_NO_PLY_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("ply", "Stanford Polygon Library", "ply", &ExportScenePly, exporters.emplace_back("ply", "Stanford Polygon Library", "ply", &ExportScenePly,
aiProcess_PreTransformVertices)); aiProcess_PreTransformVertices);
exporters.push_back(Exporter::ExportFormatEntry("plyb", "Stanford Polygon Library (binary)", "ply", &ExportScenePlyBinary, exporters.emplace_back("plyb", "Stanford Polygon Library (binary)", "ply", &ExportScenePlyBinary,
aiProcess_PreTransformVertices)); aiProcess_PreTransformVertices);
#endif #endif
#ifndef ASSIMP_BUILD_NO_3DS_EXPORTER #ifndef ASSIMP_BUILD_NO_3DS_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("3ds", "Autodesk 3DS (legacy)", "3ds", &ExportScene3DS, exporters.emplace_back("3ds", "Autodesk 3DS (legacy)", "3ds", &ExportScene3DS,
aiProcess_Triangulate | aiProcess_SortByPType | aiProcess_JoinIdenticalVertices)); aiProcess_Triangulate | aiProcess_SortByPType | aiProcess_JoinIdenticalVertices);
#endif #endif
#if !defined(ASSIMP_BUILD_NO_GLTF_EXPORTER) && !defined(ASSIMP_BUILD_NO_GLTF2_EXPORTER) #if !defined(ASSIMP_BUILD_NO_GLTF_EXPORTER) && !defined(ASSIMP_BUILD_NO_GLTF2_EXPORTER)
exporters.push_back(Exporter::ExportFormatEntry("gltf2", "GL Transmission Format v. 2", "gltf", &ExportSceneGLTF2, exporters.emplace_back("gltf2", "GL Transmission Format v. 2", "gltf", &ExportSceneGLTF2,
aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType)); aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType);
exporters.push_back(Exporter::ExportFormatEntry("glb2", "GL Transmission Format v. 2 (binary)", "glb", &ExportSceneGLB2, exporters.emplace_back("glb2", "GL Transmission Format v. 2 (binary)", "glb", &ExportSceneGLB2,
aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType)); aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType);
#endif #endif
#if !defined(ASSIMP_BUILD_NO_GLTF_EXPORTER) && !defined(ASSIMP_BUILD_NO_GLTF1_EXPORTER) #if !defined(ASSIMP_BUILD_NO_GLTF_EXPORTER) && !defined(ASSIMP_BUILD_NO_GLTF1_EXPORTER)
exporters.push_back(Exporter::ExportFormatEntry("gltf", "GL Transmission Format", "gltf", &ExportSceneGLTF, exporters.emplace_back("gltf", "GL Transmission Format", "gltf", &ExportSceneGLTF,
aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType)); aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType);
exporters.push_back(Exporter::ExportFormatEntry("glb", "GL Transmission Format (binary)", "glb", &ExportSceneGLB, exporters.emplace_back("glb", "GL Transmission Format (binary)", "glb", &ExportSceneGLB,
aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType)); aiProcess_JoinIdenticalVertices | aiProcess_Triangulate | aiProcess_SortByPType);
#endif #endif
#ifndef ASSIMP_BUILD_NO_ASSBIN_EXPORTER #ifndef ASSIMP_BUILD_NO_ASSBIN_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("assbin", "Assimp Binary File", "assbin", &ExportSceneAssbin, 0)); exporters.emplace_back("assbin", "Assimp Binary File", "assbin", &ExportSceneAssbin, 0);
#endif #endif
#ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER #ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("assxml", "Assimp XML Document", "assxml", &ExportSceneAssxml, 0)); exporters.emplace_back("assxml", "Assimp XML Document", "assxml", &ExportSceneAssxml, 0);
#endif #endif
#ifndef ASSIMP_BUILD_NO_X3D_EXPORTER #ifndef ASSIMP_BUILD_NO_X3D_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("x3d", "Extensible 3D", "x3d", &ExportSceneX3D, 0)); exporters.emplace_back("x3d", "Extensible 3D", "x3d", &ExportSceneX3D, 0);
#endif #endif
#ifndef ASSIMP_BUILD_NO_FBX_EXPORTER #ifndef ASSIMP_BUILD_NO_FBX_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("fbx", "Autodesk FBX (binary)", "fbx", &ExportSceneFBX, 0)); exporters.emplace_back("fbx", "Autodesk FBX (binary)", "fbx", &ExportSceneFBX, 0);
exporters.push_back(Exporter::ExportFormatEntry("fbxa", "Autodesk FBX (ascii)", "fbx", &ExportSceneFBXA, 0)); exporters.emplace_back("fbxa", "Autodesk FBX (ascii)", "fbx", &ExportSceneFBXA, 0);
#endif #endif
#ifndef ASSIMP_BUILD_NO_M3D_EXPORTER #ifndef ASSIMP_BUILD_NO_M3D_EXPORTER
@ -221,15 +221,15 @@ static void setupExporterArray(std::vector<Exporter::ExportFormatEntry> &exporte
#endif #endif
#ifndef ASSIMP_BUILD_NO_3MF_EXPORTER #ifndef ASSIMP_BUILD_NO_3MF_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("3mf", "The 3MF-File-Format", "3mf", &ExportScene3MF, 0)); exporters.emplace_back("3mf", "The 3MF-File-Format", "3mf", &ExportScene3MF, 0);
#endif #endif
#ifndef ASSIMP_BUILD_NO_PBRT_EXPORTER #ifndef ASSIMP_BUILD_NO_PBRT_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("pbrt", "pbrt-v4 scene description file", "pbrt", &ExportScenePbrt, aiProcess_Triangulate | aiProcess_SortByPType)); exporters.emplace_back("pbrt", "pbrt-v4 scene description file", "pbrt", &ExportScenePbrt, aiProcess_Triangulate | aiProcess_SortByPType);
#endif #endif
#ifndef ASSIMP_BUILD_NO_ASSJSON_EXPORTER #ifndef ASSIMP_BUILD_NO_ASSJSON_EXPORTER
exporters.push_back(Exporter::ExportFormatEntry("assjson", "Assimp JSON Document", "json", &ExportAssimp2Json, 0)); exporters.emplace_back("assjson", "Assimp JSON Document", "json", &ExportAssimp2Json, 0);
#endif #endif
} }

View File

@ -69,8 +69,8 @@ void SGSpatialSort::Add(const aiVector3D& vPosition, unsigned int index,
{ {
// store position by index and distance // store position by index and distance
float distance = vPosition * mPlaneNormal; float distance = vPosition * mPlaneNormal;
mPositions.push_back( Entry( index, vPosition, mPositions.emplace_back( index, vPosition,
distance, smoothingGroup)); distance, smoothingGroup);
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void SGSpatialSort::Prepare() void SGSpatialSort::Prepare()

View File

@ -510,7 +510,7 @@ void SceneCombiner::MergeScenes(aiScene **_dest, aiScene *master, std::vector<At
OffsetNodeMeshIndices(node, offset[n]); OffsetNodeMeshIndices(node, offset[n]);
} }
if (n) // src[0] is the master node if (n) // src[0] is the master node
nodes.push_back(NodeAttachmentInfo(node, srcList[n - 1].attachToNode, n)); nodes.emplace_back(node, srcList[n - 1].attachToNode, n);
// add name prefixes? // add name prefixes?
if (flags & AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES) { if (flags & AI_INT_MERGE_SCENE_GEN_UNIQUE_NAMES) {
@ -685,19 +685,19 @@ void SceneCombiner::BuildUniqueBoneList(std::list<BoneWithHash> &asBones,
for (; it2 != end2; ++it2) { for (; it2 != end2; ++it2) {
if ((*it2).first == itml) { if ((*it2).first == itml) {
(*it2).pSrcBones.push_back(BoneSrcIndex(p, iOffset)); (*it2).pSrcBones.emplace_back(p, iOffset);
break; break;
} }
} }
if (end2 == it2) { if (end2 == it2) {
// need to begin a new bone entry // need to begin a new bone entry
asBones.push_back(BoneWithHash()); asBones.emplace_back();
BoneWithHash &btz = asBones.back(); BoneWithHash &btz = asBones.back();
// setup members // setup members
btz.first = itml; btz.first = itml;
btz.second = &p->mName; btz.second = &p->mName;
btz.pSrcBones.push_back(BoneSrcIndex(p, iOffset)); btz.pSrcBones.emplace_back(p, iOffset);
} }
} }
iOffset += (*it)->mNumVertices; iOffset += (*it)->mNumVertices;

View File

@ -122,50 +122,50 @@ void SkeletonMeshBuilder::CreateGeometry(const aiNode *pNode) {
mVertices.push_back(childpos); mVertices.push_back(childpos);
mVertices.push_back(-front * distanceToChild * (ai_real)0.1); mVertices.push_back(-front * distanceToChild * (ai_real)0.1);
mFaces.push_back(Face(localVertexStart + 0, localVertexStart + 1, localVertexStart + 2)); mFaces.emplace_back(localVertexStart + 0, localVertexStart + 1, localVertexStart + 2);
mFaces.push_back(Face(localVertexStart + 3, localVertexStart + 4, localVertexStart + 5)); mFaces.emplace_back(localVertexStart + 3, localVertexStart + 4, localVertexStart + 5);
mFaces.push_back(Face(localVertexStart + 6, localVertexStart + 7, localVertexStart + 8)); mFaces.emplace_back(localVertexStart + 6, localVertexStart + 7, localVertexStart + 8);
mFaces.push_back(Face(localVertexStart + 9, localVertexStart + 10, localVertexStart + 11)); mFaces.emplace_back(localVertexStart + 9, localVertexStart + 10, localVertexStart + 11);
} }
} else { } else {
// if the node has no children, it's an end node. Put a little knob there instead // if the node has no children, it's an end node. Put a little knob there instead
aiVector3D ownpos(pNode->mTransformation.a4, pNode->mTransformation.b4, pNode->mTransformation.c4); aiVector3D ownpos(pNode->mTransformation.a4, pNode->mTransformation.b4, pNode->mTransformation.c4);
ai_real sizeEstimate = ownpos.Length() * ai_real(0.18); ai_real sizeEstimate = ownpos.Length() * ai_real(0.18);
mVertices.push_back(aiVector3D(-sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(-sizeEstimate, 0.0, 0.0);
mVertices.push_back(aiVector3D(0.0, sizeEstimate, 0.0)); mVertices.emplace_back(0.0, sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, -sizeEstimate)); mVertices.emplace_back(0.0, 0.0, -sizeEstimate);
mVertices.push_back(aiVector3D(0.0, sizeEstimate, 0.0)); mVertices.emplace_back(0.0, sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(sizeEstimate, 0.0, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, -sizeEstimate)); mVertices.emplace_back(0.0, 0.0, -sizeEstimate);
mVertices.push_back(aiVector3D(sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(sizeEstimate, 0.0, 0.0);
mVertices.push_back(aiVector3D(0.0, -sizeEstimate, 0.0)); mVertices.emplace_back(0.0, -sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, -sizeEstimate)); mVertices.emplace_back(0.0, 0.0, -sizeEstimate);
mVertices.push_back(aiVector3D(0.0, -sizeEstimate, 0.0)); mVertices.emplace_back(0.0, -sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(-sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(-sizeEstimate, 0.0, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, -sizeEstimate)); mVertices.emplace_back(0.0, 0.0, -sizeEstimate);
mVertices.push_back(aiVector3D(-sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(-sizeEstimate, 0.0, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, sizeEstimate)); mVertices.emplace_back(0.0, 0.0, sizeEstimate);
mVertices.push_back(aiVector3D(0.0, sizeEstimate, 0.0)); mVertices.emplace_back(0.0, sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(0.0, sizeEstimate, 0.0)); mVertices.emplace_back(0.0, sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, sizeEstimate)); mVertices.emplace_back(0.0, 0.0, sizeEstimate);
mVertices.push_back(aiVector3D(sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(sizeEstimate, 0.0, 0.0);
mVertices.push_back(aiVector3D(sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(sizeEstimate, 0.0, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, sizeEstimate)); mVertices.emplace_back(0.0, 0.0, sizeEstimate);
mVertices.push_back(aiVector3D(0.0, -sizeEstimate, 0.0)); mVertices.emplace_back(0.0, -sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(0.0, -sizeEstimate, 0.0)); mVertices.emplace_back(0.0, -sizeEstimate, 0.0);
mVertices.push_back(aiVector3D(0.0, 0.0, sizeEstimate)); mVertices.emplace_back(0.0, 0.0, sizeEstimate);
mVertices.push_back(aiVector3D(-sizeEstimate, 0.0, 0.0)); mVertices.emplace_back(-sizeEstimate, 0.0, 0.0);
mFaces.push_back(Face(vertexStartIndex + 0, vertexStartIndex + 1, vertexStartIndex + 2)); mFaces.emplace_back(vertexStartIndex + 0, vertexStartIndex + 1, vertexStartIndex + 2);
mFaces.push_back(Face(vertexStartIndex + 3, vertexStartIndex + 4, vertexStartIndex + 5)); mFaces.emplace_back(vertexStartIndex + 3, vertexStartIndex + 4, vertexStartIndex + 5);
mFaces.push_back(Face(vertexStartIndex + 6, vertexStartIndex + 7, vertexStartIndex + 8)); mFaces.emplace_back(vertexStartIndex + 6, vertexStartIndex + 7, vertexStartIndex + 8);
mFaces.push_back(Face(vertexStartIndex + 9, vertexStartIndex + 10, vertexStartIndex + 11)); mFaces.emplace_back(vertexStartIndex + 9, vertexStartIndex + 10, vertexStartIndex + 11);
mFaces.push_back(Face(vertexStartIndex + 12, vertexStartIndex + 13, vertexStartIndex + 14)); mFaces.emplace_back(vertexStartIndex + 12, vertexStartIndex + 13, vertexStartIndex + 14);
mFaces.push_back(Face(vertexStartIndex + 15, vertexStartIndex + 16, vertexStartIndex + 17)); mFaces.emplace_back(vertexStartIndex + 15, vertexStartIndex + 16, vertexStartIndex + 17);
mFaces.push_back(Face(vertexStartIndex + 18, vertexStartIndex + 19, vertexStartIndex + 20)); mFaces.emplace_back(vertexStartIndex + 18, vertexStartIndex + 19, vertexStartIndex + 20);
mFaces.push_back(Face(vertexStartIndex + 21, vertexStartIndex + 22, vertexStartIndex + 23)); mFaces.emplace_back(vertexStartIndex + 21, vertexStartIndex + 22, vertexStartIndex + 23);
} }
unsigned int numVertices = static_cast<unsigned int>(mVertices.size() - vertexStartIndex); unsigned int numVertices = static_cast<unsigned int>(mVertices.size() - vertexStartIndex);

View File

@ -116,7 +116,7 @@ void SpatialSort::Append(const aiVector3D *pPositions, unsigned int pNumPosition
for (unsigned int a = 0; a < pNumPositions; a++) { for (unsigned int a = 0; a < pNumPositions; a++) {
const char *tempPointer = reinterpret_cast<const char *>(pPositions); const char *tempPointer = reinterpret_cast<const char *>(pPositions);
const aiVector3D *vec = reinterpret_cast<const aiVector3D *>(tempPointer + a * pElementOffset); const aiVector3D *vec = reinterpret_cast<const aiVector3D *>(tempPointer + a * pElementOffset);
mPositions.push_back(Entry(static_cast<unsigned int>(a + initial), *vec)); mPositions.emplace_back(static_cast<unsigned int>(a + initial), *vec);
} }
if (pFinalize) { if (pFinalize) {

View File

@ -422,15 +422,15 @@ void StandardShapes::MakeCone(ai_real height, ai_real radius1,
if (!bOpen) { if (!bOpen) {
// generate the end 'cap' // generate the end 'cap'
positions.push_back(aiVector3D(s * radius2, halfHeight, t * radius2)); positions.emplace_back(s * radius2, halfHeight, t * radius2);
positions.push_back(aiVector3D(s2 * radius2, halfHeight, t2 * radius2)); positions.emplace_back(s2 * radius2, halfHeight, t2 * radius2);
positions.push_back(aiVector3D(0.0, halfHeight, 0.0)); positions.emplace_back(0.0, halfHeight, 0.0);
if (radius1) { if (radius1) {
// generate the other end 'cap' // generate the other end 'cap'
positions.push_back(aiVector3D(s * radius1, -halfHeight, t * radius1)); positions.emplace_back(s * radius1, -halfHeight, t * radius1);
positions.push_back(aiVector3D(s2 * radius1, -halfHeight, t2 * radius1)); positions.emplace_back(s2 * radius1, -halfHeight, t2 * radius1);
positions.push_back(aiVector3D(0.0, -halfHeight, 0.0)); positions.emplace_back(0.0, -halfHeight, 0.0);
} }
} }
s = s2; s = s2;
@ -466,13 +466,13 @@ void StandardShapes::MakeCircle(ai_real radius, unsigned int tess,
ai_real t = 0.0; // std::sin(angle == 0); ai_real t = 0.0; // std::sin(angle == 0);
for (ai_real angle = 0.0; angle < angle_max;) { for (ai_real angle = 0.0; angle < angle_max;) {
positions.push_back(aiVector3D(s * radius, 0.0, t * radius)); positions.emplace_back(s * radius, 0.0, t * radius);
angle += angle_delta; angle += angle_delta;
s = std::cos(angle); s = std::cos(angle);
t = std::sin(angle); t = std::sin(angle);
positions.push_back(aiVector3D(s * radius, 0.0, t * radius)); positions.emplace_back(s * radius, 0.0, t * radius);
positions.push_back(aiVector3D(0.0, 0.0, 0.0)); positions.emplace_back(0.0, 0.0, 0.0);
} }
} }

View File

@ -63,7 +63,7 @@ void ConvertListToStrings(const std::string &in, std::list<std::string> &out) {
return; return;
} }
} }
out.push_back(std::string(base, (size_t)(s - base))); out.emplace_back(base, (size_t)(s - base));
++s; ++s;
} else { } else {
out.push_back(GetNextToken(s)); out.push_back(GetNextToken(s));

View File

@ -316,13 +316,13 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh(
} }
// add the newly created mesh to the list // add the newly created mesh to the list
avList.push_back(std::pair<aiMesh*, unsigned int>(pcMesh,a)); avList.emplace_back(pcMesh,a);
} }
// now delete the old mesh data // now delete the old mesh data
delete pMesh; delete pMesh;
} else { } else {
avList.push_back(std::pair<aiMesh*, unsigned int>(pMesh,a)); avList.emplace_back(pMesh,a);
} }
} }
@ -484,7 +484,7 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh(
break; break;
} }
vFaces.push_back(aiFace()); vFaces.emplace_back();
aiFace& rFace = vFaces.back(); aiFace& rFace = vFaces.back();
// setup face type and number of indices // setup face type and number of indices
@ -605,7 +605,7 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh(
} }
// add the newly created mesh to the list // add the newly created mesh to the list
avList.push_back(std::pair<aiMesh*, unsigned int>(pcMesh,a)); avList.emplace_back(pcMesh,a);
if (iBase == pMesh->mNumFaces) { if (iBase == pMesh->mNumFaces) {
// have all faces ... finish the outer loop, too // have all faces ... finish the outer loop, too
@ -620,5 +620,5 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh(
delete pMesh; delete pMesh;
return; return;
} }
avList.push_back(std::pair<aiMesh*, unsigned int>(pMesh,a)); avList.emplace_back(pMesh,a);
} }