diff options
Diffstat (limited to 'src/utility.h')
-rw-r--r-- | src/utility.h | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/src/utility.h b/src/utility.h index a24b57d5d..ab5ecfcac 100644 --- a/src/utility.h +++ b/src/utility.h @@ -1483,183 +1483,6 @@ inline int myrand_range(int min, int max) } /* - Some kind of a thing that stores attributes related to - coordinate points -*/ - -struct Attribute -{ - Attribute() - { - } - - Attribute(const std::string &value): - m_value(value) - { - } - - Attribute(float value) - { - m_value = ftos(value); - } - - void set(const std::string &value) - { - m_value = value; - } - - std::string get() - { - return m_value; - } - - bool getBool() - { - return is_yes(get()); - } - - float getFloat() - { - float f; - std::istringstream vis(get()); - vis>>f; - return f; - } - - u16 getU16() - { - return stoi(get(), 0, 65535); - } - - s16 getS16() - { - return stoi(get(), -32768, 32767); - } - - s32 getS32() - { - return stoi(get()); - } - - std::string m_value; -}; - -class PointAttributeList -{ - struct PointWithAttr - { - v2s16 p; - Attribute attr; - }; - -public: - ~PointAttributeList() - { - } - - Attribute getNearAttr(v2s16 p) - { - core::list<PointWithAttr>::Iterator - nearest_i = m_points.end(); - s16 nearest_d = 32767; - for(core::list<PointWithAttr>::Iterator - i = m_points.begin(); - i != m_points.end(); i++) - { - PointWithAttr &pwa = *i; - s16 d = pwa.p.getDistanceFrom(p); - if(d < nearest_d) - { - nearest_i = i; - nearest_d = d; - } - } - - if(nearest_i == m_points.end()) - Attribute(); - - return nearest_i->attr; - } - - Attribute getNearAttr(v3s16 p) - { - return getNearAttr(v2s16(p.X, p.Z)); - } - - bool empty() - { - return (m_points.size() == 0); - } - - /* - Take all points in range, or at least the nearest point, - and interpolate the values as floats - */ - float getInterpolatedFloat(v2s16 p); - - float getInterpolatedFloat(v3s16 p) - { - return getInterpolatedFloat(v2s16(p.X, p.Z)); - } - - void addPoint(v2s16 p, const Attribute &attr) - { - PointWithAttr pattr; - pattr.p = p; - pattr.attr = attr; - m_points.push_back(pattr); - } - - void addPoint(v3s16 p, const Attribute &attr) - { - addPoint(v2s16(p.X, p.Z), attr); - } - -private: - core::list<PointWithAttr> m_points; -}; - -/* - Basically just a wrapper to core::map<PointAttributeList*> -*/ - -class PointAttributeDatabase -{ -public: - ~PointAttributeDatabase() - { - for(core::map<std::string, PointAttributeList*>::Iterator - i = m_lists.getIterator(); - i.atEnd() == false; i++) - { - delete i.getNode()->getValue(); - } - } - - PointAttributeList *getList(const std::string &name) - { - PointAttributeList *list = NULL; - - core::map<std::string, PointAttributeList*>::Node *n; - n = m_lists.find(name); - - if(n == NULL) - { - list = new PointAttributeList(); - m_lists.insert(name, list); - } - else - { - list = n->getValue(); - } - - return list; - } -private: - core::map<std::string, PointAttributeList*> m_lists; -}; - -/* Miscellaneous functions */ |