X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fio%2Ftoken.cpp;h=4e7483f7fa43390ab49e1cdde1bce09bdb0a1ba3;hb=ed2711d42a7815657bf0653c25b8b9be8b7f1368;hp=c15d65a2aa43df5c617df7482aa9647b1d32c2c2;hpb=7ae2bd120fd0e1800edc9cbeb61e72bd06ffcf10;p=blobs.git diff --git a/src/io/token.cpp b/src/io/token.cpp index c15d65a..4e7483f 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 { } } +float TokenStreamReader::GetDouble() { + Next(); + return AsDouble(); +} + +float TokenStreamReader::AsDouble() const { + Assert(Token::NUMBER); + return stod(GetValue()); +} + float TokenStreamReader::GetFloat() { Next(); return AsFloat();