X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fio%2Ftoken.cpp;h=ef2d26ca87e36fa8879cc6faf5145cc5d3849458;hb=a19fdf3d9f0d7ecbf6eeeec817856d85049a8336;hp=c15d65a2aa43df5c617df7482aa9647b1d32c2c2;hpb=34e833025f0616ab4b86b808d0ce1cc49cecce5d;p=blobs.git diff --git a/src/io/token.cpp b/src/io/token.cpp index c15d65a..ef2d26c 100644 --- a/src/io/token.cpp +++ b/src/io/token.cpp @@ -319,6 +319,10 @@ void TokenStreamReader::ReadIdentifier(string &out) { out = GetValue(); } +void TokenStreamReader::ReadNumber(double &n) { + n = GetDouble(); +} + void TokenStreamReader::ReadNumber(float &n) { n = GetFloat(); } @@ -368,6 +372,36 @@ void TokenStreamReader::ReadVec(glm::vec4 &v) { Skip(Token::BRACKET_CLOSE); } +void TokenStreamReader::ReadVec(glm::dvec2 &v) { + Skip(Token::BRACKET_OPEN); + ReadNumber(v.x); + Skip(Token::COMMA); + ReadNumber(v.y); + Skip(Token::BRACKET_CLOSE); +} + +void TokenStreamReader::ReadVec(glm::dvec3 &v) { + Skip(Token::BRACKET_OPEN); + ReadNumber(v.x); + Skip(Token::COMMA); + ReadNumber(v.y); + Skip(Token::COMMA); + ReadNumber(v.z); + Skip(Token::BRACKET_CLOSE); +} + +void TokenStreamReader::ReadVec(glm::dvec4 &v) { + Skip(Token::BRACKET_OPEN); + ReadNumber(v.x); + Skip(Token::COMMA); + ReadNumber(v.y); + Skip(Token::COMMA); + ReadNumber(v.z); + Skip(Token::COMMA); + ReadNumber(v.w); + Skip(Token::BRACKET_CLOSE); +} + void TokenStreamReader::ReadVec(glm::ivec2 &v) { Skip(Token::BRACKET_OPEN); ReadNumber(v.x); @@ -410,6 +444,18 @@ void TokenStreamReader::ReadQuat(glm::quat &q) { Skip(Token::BRACKET_CLOSE); } +void TokenStreamReader::ReadQuat(glm::dquat &q) { + Skip(Token::BRACKET_OPEN); + ReadNumber(q.w); + Skip(Token::COMMA); + ReadNumber(q.x); + Skip(Token::COMMA); + ReadNumber(q.y); + Skip(Token::COMMA); + ReadNumber(q.z); + Skip(Token::BRACKET_CLOSE); +} + bool TokenStreamReader::GetBool() { Next(); @@ -438,6 +484,16 @@ bool TokenStreamReader::AsBool() const { } } +double TokenStreamReader::GetDouble() { + Next(); + return AsDouble(); +} + +double TokenStreamReader::AsDouble() const { + Assert(Token::NUMBER); + return stod(GetValue()); +} + float TokenStreamReader::GetFloat() { Next(); return AsFloat();