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

Method addSequence

Engine/source/ts/tsShapeEdit.cpp:1360–1801  ·  view source on GitHub ↗

-----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1358
1359//-----------------------------------------------------------------------------
1360bool TSShape::addSequence(const Torque::Path& path, const String& fromSeq,
1361 const String& name, S32 startFrame, S32 endFrame,
1362 bool padRotKeys, bool padTransKeys)
1363{
1364 String oldName(fromSeq);
1365
1366 if (path.getExtension().equal("dsq", String::NoCase))
1367 {
1368 S32 oldSeqCount = sequences.size();
1369
1370 // DSQ source file
1371 char filenameBuf[1024];
1372 Con::expandScriptFilename(filenameBuf, sizeof(filenameBuf), path.getFullPath().c_str());
1373
1374 FileStream *f;
1375 if((f = FileStream::createAndOpen( filenameBuf, Torque::FS::File::Read )) == NULL)
1376 {
1377 Con::errorf("TSShape::addSequence: Could not load DSQ file '%s'", filenameBuf);
1378 return false;
1379 }
1380 if (!importSequences(f, filenameBuf) || (f->getStatus() != Stream::Ok))
1381 {
1382 delete f;
1383 Con::errorf("TSShape::addSequence: Load sequence file '%s' failed", filenameBuf);
1384 return false;
1385 }
1386 delete f;
1387
1388 // Rename the new sequence if required (avoid rename if name is not
1389 // unique (this will be fixed up later, and we don't need 2 errors about it!)
1390 if (oldName.isEmpty())
1391 oldName = getName(sequences.last().nameIndex);
1392 if (!oldName.equal(name))
1393 {
1394 if (findSequence(name) == -1)
1395 {
1396 // Use a dummy intermediate name since we might be renaming from an
1397 // existing name (and we want to rename the right sequence!)
1398 sequences.last().nameIndex = addName("__dummy__");
1399 renameSequence("__dummy__", name);
1400 }
1401 }
1402
1403 // Check that sequences have unique names
1404 bool lastSequenceRejected = false;
1405 for (S32 i = sequences.size()-1; i >= oldSeqCount; i--)
1406 {
1407 S32 nameIndex = (i == sequences.size()-1) ? findName(name) : sequences[i].nameIndex;
1408 S32 seqIndex = findSequence(nameIndex);
1409 if ((seqIndex != -1) && (seqIndex != i))
1410 {
1411 Con::errorf("TSShape::addSequence: Failed to add sequence '%s' "
1412 "(name already exists)", getName(nameIndex).c_str());
1413 sequences[i].nameIndex = addName("__dummy__");
1414 removeSequence("__dummy__");
1415 if (i == sequences.size())
1416 lastSequenceRejected = true;
1417 }

Callers 3

loadShapeMethod · 0.80
initializeAssetMethod · 0.80

Calls 15

expandScriptFilenameFunction · 0.85
dCopyArrayFunction · 0.85
mMinFunction · 0.85
getMaxFunction · 0.85
incrementMethod · 0.80
getQuatFMethod · 0.80
getUniformScaleMethod · 0.80
errorfFunction · 0.50
getNameFunction · 0.50
getFunction · 0.50
warnfFunction · 0.50
findObjectFunction · 0.50

Tested by

no test coverage detected