X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Futility.cpp;h=0721100cb98e845871e033aaf5920fcb9a624a14;hb=30c34cc23e9a060ef964854038a314a94ad5cbae;hp=8b2b78b447f7290f7515acaf7dfd6147863a0925;hpb=bd100c5483eb77a27eeac4e476c81a1bf6afc710;p=dragonfireclient.git diff --git a/src/utility.cpp b/src/utility.cpp index 8b2b78b44..0721100cb 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -22,8 +22,9 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "utility.h" -#include "irrlichtwrapper.h" #include "gettime.h" +#include "sha1.h" +#include "base64.h" TimeTaker::TimeTaker(const char *name, u32 *result) { @@ -61,6 +62,17 @@ u32 TimeTaker::getTime() return dtime; } +const v3s16 g_6dirs[6] = +{ + // +right, +top, +back + v3s16( 0, 0, 1), // back + v3s16( 0, 1, 0), // top + v3s16( 1, 0, 0), // right + v3s16( 0, 0,-1), // front + v3s16( 0,-1, 0), // bottom + v3s16(-1, 0, 0) // left +}; + const v3s16 g_26dirs[26] = { // +right, +top, +back @@ -144,243 +156,14 @@ void mysrand(unsigned seed) next = seed; } -/* - PointAttributeList -*/ - -// Float with distance -struct DFloat -{ - float v; - u32 d; -}; - -float PointAttributeList::getInterpolatedFloat(v2s16 p) -{ - const u32 near_wanted_count = 5; - // Last is nearest, first is farthest - core::list near_list; - - for(core::list::Iterator - i = m_points.begin(); - i != m_points.end(); i++) - { - PointWithAttr &pwa = *i; - u32 d = pwa.p.getDistanceFrom(p); - - DFloat df; - df.v = pwa.attr.getFloat(); - df.d = d; - - // If near list is empty, add directly and continue - if(near_list.size() == 0) - { - near_list.push_back(df); - continue; - } - - // Get distance of farthest in near list - u32 near_d = 100000; - if(near_list.size() > 0) - { - core::list::Iterator i = near_list.begin(); - near_d = i->d; - } - - /* - If point is closer than the farthest in the near list or - there are not yet enough points on the list - */ - if(d < near_d || near_list.size() < near_wanted_count) - { - // Find the right place in the near list and put it there - - // Go from farthest to near in the near list - core::list::Iterator i = near_list.begin(); - for(; i != near_list.end(); i++) - { - // Stop when i is at the first nearer node - if(i->d < d) - break; - } - // Add df to before i - if(i == near_list.end()) - near_list.push_back(df); - else - near_list.insert_before(i, df); - - // Keep near list at right size - if(near_list.size() > near_wanted_count) - { - core::list::Iterator j = near_list.begin(); - near_list.erase(j); - } - } - } - - // Return if no values found - if(near_list.size() == 0) - return 0.0; - - /* -20:58:29 < tejeez> joka pisteelle a += arvo / etäisyys^6; b += 1 / etäisyys^6; ja -lopuks sit otetaan a/b - */ - - float a = 0; - float b = 0; - for(core::list::Iterator i = near_list.begin(); - i != near_list.end(); i++) - { - if(i->d == 0) - return i->v; - - //float dd = pow((float)i->d, 6); - float dd = pow((float)i->d, 5); - float v = i->v; - //dstream<<"dd="<d="<d<<" nearest_d_sum="<