]> git.localhorst.tv Git - blobs.git/blobdiff - src/io/token.cpp
read (basic) tile information from file
[blobs.git] / src / io / token.cpp
index c15d65a2aa43df5c617df7482aa9647b1d32c2c2..4e7483f7fa43390ab49e1cdde1bce09bdb0a1ba3 100644 (file)
@@ -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();