Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/filesystem/inistream.cc')
-rw-r--r--src/filesystem/inistream.cc38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/filesystem/inistream.cc b/src/filesystem/inistream.cc
index 15c8ee0..0235440 100644
--- a/src/filesystem/inistream.cc
+++ b/src/filesystem/inistream.cc
@@ -138,6 +138,44 @@ bool IniStream::got_key_label(const char * keylabel, std::string & labelstring)
}
}
+bool IniStream::got_key_vector2f(const char * keylabel, math::Vector2f & v)
+{
+ if (last_read_was_key && (key_current.compare(keylabel) == 0)) {
+ std::istringstream is(value_current);
+ float x, y;
+ if ((is >> x) && (is >> y)) {
+ v.assign(x, y);
+ } else {
+ v.clear();
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool IniStream::got_key_vector2f_opt(const char * keylabel, math::Vector2f & v)
+{
+ if (last_read_was_key && (key_current.compare(keylabel) == 0)) {
+ std::istringstream is(value_current);
+ float x, y;
+ if (is >> x) {
+ if (!(is >> y)) {
+ v.assign(x, x);
+ } else {
+ v.assign(x, y);
+ }
+ } else {
+ v.clear();
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+}
+
bool IniStream::got_key_vector3f(const char * keylabel, math::Vector3f & v)
{
if (last_read_was_key && (key_current.compare(keylabel) == 0)) {