MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / _convertToVertexData

Method _convertToVertexData

Engine/source/ts/tsMesh.cpp:3188–3239  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3186}
3187
3188void TSMesh::_convertToVertexData(TSMeshVertexArray &outArray, const Vector<Point3F> &_verts, const Vector<Point3F> &_norms)
3189{
3190 // Update tangents list
3191 createTangents(mVerts, mNorms);
3192
3193 AssertFatal(_verts.size() == mNumVerts, "vert count mismatch");
3194 AssertFatal(!getHasColor() || mColors.size() == _verts.size(), "Vector of color elements should be the same size as other vectors");
3195 AssertFatal(!getHasTVert2() || mTverts2.size() == _verts.size(), "Vector of tvert2 elements should be the same size as other vectors");
3196
3197 AssertFatal(!outArray.isReady(), "Mesh already converted to aligned data! Re-check code!");
3198 AssertFatal(_verts.size() == _norms.size() &&
3199 _verts.size() == mTangents.size(),
3200 "Vectors: verts, norms, tangents must all be the same size");
3201 AssertFatal(mVertSize == outArray.vertSize(), "Size inconsistency");
3202
3203 if (mNumVerts == 0)
3204 return;
3205
3206 bool needWeightSet = outArray.getBoneOffset() != 0;
3207
3208 bool hasColor = getHasColor();
3209 bool hasTVert2 = getHasTVert2();
3210
3211 dMemset(&outArray.getBase(0), '\0', mVertSize * mNumVerts);
3212
3213 for (U32 i = 0; i < mNumVerts; i++)
3214 {
3215 __TSMeshVertexBase &v = outArray.getBase(i);
3216 v.vert(_verts[i]);
3217 v.normal(_norms[i]);
3218 v.tangent(mTangents[i]);
3219
3220 if (i < mTverts.size())
3221 v.tvert(mTverts[i]);
3222
3223 if (hasTVert2 || hasColor)
3224 {
3225 __TSMeshVertex_3xUVColor &vc = outArray.getColor(i);
3226 if (hasTVert2 && i < mTverts2.size())
3227 vc.tvert2(mTverts2[i]);
3228 if (hasColor && i < mColors.size())
3229 vc.color(mColors[i]);
3230 }
3231
3232 // NOTE: skin verts are set later on for the skinned mesh, otherwise we'll set the default (i.e. 0) if we need one for a rigid mesh
3233 if (needWeightSet)
3234 {
3235 const Point4F wt(1.0f, 0.0f, 0.0f, 0.0f);
3236 outArray.getBone(i, 0).weight(wt);
3237 }
3238 }
3239}
3240
3241void TSMesh::makeEditable()
3242{

Callers

nothing calls this directly

Calls 13

vertSizeMethod · 0.80
getBoneOffsetMethod · 0.80
vertMethod · 0.80
normalMethod · 0.80
tangentMethod · 0.80
tvertMethod · 0.80
tvert2Method · 0.80
colorMethod · 0.80
weightMethod · 0.80
dMemsetFunction · 0.50
sizeMethod · 0.45
isReadyMethod · 0.45

Tested by

no test coverage detected