From John Kelso, Added support for new Sequence options.
From Robert Osfield, updated the above changes to the .ive loader so that the new addition were tested against the IVE version number
This commit is contained in:
@@ -25,11 +25,17 @@ static bool Sequence_matchLoopMode(const char* str,
|
||||
Sequence::LoopMode& mode)
|
||||
{
|
||||
if (strcmp(str, "LOOP") == 0)
|
||||
{
|
||||
mode = Sequence::LOOP;
|
||||
}
|
||||
else if (strcmp(str, "SWING") == 0)
|
||||
{
|
||||
mode = Sequence::SWING;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -50,11 +56,17 @@ static bool Sequence_matchSeqMode(const char* str,
|
||||
Sequence::SequenceMode& mode)
|
||||
{
|
||||
if (strcmp(str, "START") == 0)
|
||||
{
|
||||
mode = Sequence::START;
|
||||
}
|
||||
else if (strcmp(str, "STOP") == 0)
|
||||
{
|
||||
mode = Sequence::STOP;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -75,35 +87,64 @@ bool Sequence_readLocalData(Object& obj, Input& fr)
|
||||
|
||||
Sequence& sw = static_cast<Sequence&>(obj);
|
||||
|
||||
if (fr.matchSequence("frameTime {")) {
|
||||
if (fr.matchSequence("defaultTime"))
|
||||
{
|
||||
if (fr[1].isFloat())
|
||||
{
|
||||
float t;
|
||||
fr[1].getFloat(t) ;
|
||||
sw.setDefaultTime(t) ;
|
||||
iteratorAdvanced = true;
|
||||
fr += 2;
|
||||
}
|
||||
}
|
||||
else if (fr.matchSequence("frameTime {"))
|
||||
{
|
||||
int entry = fr[0].getNoNestedBrackets();
|
||||
fr += 2;
|
||||
|
||||
|
||||
int i = 0;
|
||||
while (!fr.eof() && fr[0].getNoNestedBrackets() > entry) {
|
||||
while (!fr.eof() && fr[0].getNoNestedBrackets() > entry)
|
||||
{
|
||||
float t;
|
||||
if (fr[0].getFloat(t)) {
|
||||
if (fr[0].getFloat(t))
|
||||
{
|
||||
sw.setTime(i, t);
|
||||
++fr;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
iteratorAdvanced = true;
|
||||
++fr;
|
||||
}
|
||||
else if (fr.matchSequence("interval")) {
|
||||
else if (fr.matchSequence("lastFrameTime"))
|
||||
{
|
||||
if (fr[1].isFloat())
|
||||
{
|
||||
float t;
|
||||
fr[1].getFloat(t) ;
|
||||
sw.setLastFrameTime(t) ;
|
||||
iteratorAdvanced = true;
|
||||
fr += 2;
|
||||
}
|
||||
}
|
||||
else if (fr.matchSequence("interval"))
|
||||
{
|
||||
Sequence::LoopMode mode;
|
||||
int begin, end;
|
||||
if (Sequence_matchLoopMode(fr[1].getStr(), mode) &&
|
||||
fr[2].getInt(begin) && fr[3].getInt(end)) {
|
||||
fr[2].getInt(begin) && fr[3].getInt(end))
|
||||
{
|
||||
sw.setInterval(mode, begin, end);
|
||||
iteratorAdvanced = true;
|
||||
fr += 4;
|
||||
}
|
||||
}
|
||||
else if (fr.matchSequence("duration")) {
|
||||
if (fr[1].isFloat() && fr[2].isInt()) {
|
||||
else if (fr.matchSequence("duration"))
|
||||
{
|
||||
if (fr[1].isFloat() && fr[2].isInt())
|
||||
{
|
||||
float speed;
|
||||
int nreps;
|
||||
fr[1].getFloat(speed);
|
||||
@@ -113,15 +154,39 @@ bool Sequence_readLocalData(Object& obj, Input& fr)
|
||||
fr += 3;
|
||||
}
|
||||
}
|
||||
else if (fr.matchSequence("mode")) {
|
||||
else if (fr.matchSequence("mode"))
|
||||
{
|
||||
Sequence::SequenceMode mode;
|
||||
if (Sequence_matchSeqMode(fr[1].getStr(), mode)) {
|
||||
if (Sequence_matchSeqMode(fr[1].getStr(), mode))
|
||||
{
|
||||
sw.setMode(mode);
|
||||
iteratorAdvanced = true;
|
||||
fr += 2;
|
||||
}
|
||||
}
|
||||
|
||||
else if (fr.matchSequence("sync"))
|
||||
{
|
||||
if (fr[1].isInt())
|
||||
{
|
||||
int sync ;
|
||||
fr[1].getInt(sync) ;
|
||||
sw.setSync((bool)sync) ;
|
||||
iteratorAdvanced = true;
|
||||
fr += 2;
|
||||
}
|
||||
}
|
||||
else if (fr.matchSequence("clearOnStop"))
|
||||
{
|
||||
if (fr[1].isInt())
|
||||
{
|
||||
int clearOnStop ;
|
||||
fr[1].getInt(clearOnStop) ;
|
||||
sw.setClearOnStop((bool)clearOnStop) ;
|
||||
iteratorAdvanced = true;
|
||||
fr += 2;
|
||||
}
|
||||
}
|
||||
|
||||
return iteratorAdvanced;
|
||||
}
|
||||
|
||||
@@ -129,15 +194,23 @@ bool Sequence_writeLocalData(const Object& obj, Output& fw)
|
||||
{
|
||||
const Sequence& sw = static_cast<const Sequence&>(obj);
|
||||
|
||||
// default frame time
|
||||
fw.indent() << "defaultTime " << sw.getDefaultTime() << std::endl;
|
||||
|
||||
// frame times
|
||||
fw.indent() << "frameTime {" << std::endl;
|
||||
fw.moveIn();
|
||||
for (unsigned int i = 0; i < sw.getNumChildren(); i++) {
|
||||
for (unsigned int i = 0; i < sw.getNumChildren(); i++)
|
||||
{
|
||||
fw.indent() << sw.getTime(i) << std::endl;
|
||||
}
|
||||
|
||||
fw.moveOut();
|
||||
fw.indent() << "}" << std::endl;
|
||||
|
||||
// last frame time
|
||||
fw.indent() << "lastFrameTime " << sw.getLastFrameTime() << std::endl;
|
||||
|
||||
// loop mode & interval
|
||||
Sequence::LoopMode mode;
|
||||
int begin, end;
|
||||
@@ -153,5 +226,15 @@ bool Sequence_writeLocalData(const Object& obj, Output& fw)
|
||||
// sequence mode
|
||||
fw.indent() << "mode " << Sequence_getSeqMode(sw.getMode()) << std::endl;
|
||||
|
||||
// sync
|
||||
bool sync ;
|
||||
sw.getSync(sync);
|
||||
fw.indent() << "sync " << (int) sync << std::endl;
|
||||
|
||||
// clearOnStop
|
||||
bool clearOnStop ;
|
||||
sw.getClearOnStop(clearOnStop);
|
||||
fw.indent() << "clearOnStop " << (int) clearOnStop << std::endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user