X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=src%2Futility.cpp;h=0721100cb98e845871e033aaf5920fcb9a624a14;hb=f143e269f47fd024f69c3f536b558fbac4828b41;hp=269b545a56271ab38ae6680960b7def1a83fc880;hpb=a35d8dabcf5cdb5677849b84b4fbfb09a6fafad5;p=dragonfireclient.git diff --git a/src/utility.cpp b/src/utility.cpp index 269b545a5..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) { @@ -54,6 +55,24 @@ u32 TimeTaker::stop(bool quiet) return 0; } +u32 TimeTaker::getTime() +{ + u32 time2 = getTimeMs(); + u32 dtime = time2 - m_time1; + 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 @@ -88,6 +107,41 @@ const v3s16 g_26dirs[26] = // 26 }; +const v3s16 g_27dirs[27] = +{ + // +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 + // 6 + v3s16(-1, 1, 0), // top left + v3s16( 1, 1, 0), // top right + v3s16( 0, 1, 1), // top back + v3s16( 0, 1,-1), // top front + v3s16(-1, 0, 1), // back left + v3s16( 1, 0, 1), // back right + v3s16(-1, 0,-1), // front left + v3s16( 1, 0,-1), // front right + v3s16(-1,-1, 0), // bottom left + v3s16( 1,-1, 0), // bottom right + v3s16( 0,-1, 1), // bottom back + v3s16( 0,-1,-1), // bottom front + // 18 + v3s16(-1, 1, 1), // top back-left + v3s16( 1, 1, 1), // top back-right + v3s16(-1, 1,-1), // top front-left + v3s16( 1, 1,-1), // top front-right + v3s16(-1,-1, 1), // bottom back-left + v3s16( 1,-1, 1), // bottom back-right + v3s16(-1,-1,-1), // bottom front-left + v3s16( 1,-1,-1), // bottom front-right + // 26 + v3s16(0,0,0), +}; + static unsigned long next = 1; /* RAND_MAX assumed to be 32767 */ @@ -102,239 +156,14 @@ void mysrand(unsigned seed) next = seed; } -// Float with distance -struct DFloat -{ - float v; - u32 d; -}; - -float PointAttributeList::getInterpolatedFloat(v3s16 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="<