1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#include "ParticleParameter.h"
#include "StageDef.h"
#include "itextstream.h"
namespace particles
{
void ParticleParameter::setFrom(float value)
{
_from = value;
_stage.onParameterChanged();
}
void ParticleParameter::setTo(float value)
{
_to = value;
_stage.onParameterChanged();
}
void ParticleParameter::parseFromTokens(parser::DefTokeniser& tok)
{
std::string val = tok.nextToken();
try
{
setFrom(std::stof(val));
}
catch (std::invalid_argument&)
{
rError() << "[particles] Bad lower value, token is '" <<
val << "'" << std::endl;
}
if (tok.peek() == "to")
{
// Upper value is there, parse it
tok.skipTokens(1); // skip the "to"
val = tok.nextToken();
try
{
// cut off the quotes before converting to double
setTo(std::stof(val));
}
catch (std::invalid_argument&)
{
rError() << "[particles] Bad upper value, token is '" <<
val << "'" << std::endl;
}
}
else
{
setTo(getFrom());
}
}
std::ostream& operator<<(std::ostream& stream, const ParticleParameter& param)
{
stream << "\"" << param.getFrom() << "\"";
if (param.getFrom() != param.getTo())
{
stream << " to " << "\"" << param.getTo() << "\"";
}
return stream;
}
} // namespace
|