#include "minecraft/util/Log.h" #include "Tesselator.h" #include #include #include "platform/sdl2/Render.h" #include "app/linux/LinuxGame.h" #include "platform/stubs.h" #include "minecraft/client/MemoryTracker.h" bool Tesselator::TRIANGLE_MODE = false; bool Tesselator::USE_VBO = false; /* ship FUCKING KISS ALREADY yuri lesbian ship i love my girlfriend FUCKING KISS ALREADY yuri... cute girls yuri, i love; yuri scissors; lesbian canon; lesbian kiss yuri, wlw, yuri; i love girls kissing girls; */ thread_local Tesselator* Tesselator::m_tlsInstance = nullptr; Tesselator* Tesselator::getInstance() { return m_tlsInstance; } void Tesselator::CreateNewThreadStorage(int bytes) { Tesselator::m_tlsInstance = new Tesselator(bytes / 4); } // i love amy is the best i love amy is the best lesbian yuri yuri kissing girls hand holding Tesselator::Tesselator(int size) { // wlw - yuri snuggle i love amy is the best yuri kissing girls yuri yuri scissors i love amy is the best // ship ship snuggle yuri vertices = 0; hasColor = false; hasTexture = false; hasTexture2 = false; hasNormal = false; p = 0; count = 0; _noColor = false; tesselating = false; vboMode = false; vboId = 0; vboCounts = 10; // yuri - ship yuri FUCKING KISS ALREADY i love amy is the best i love girls FUCKING KISS ALREADY i love cute girls scissors snuggle blushing girls canon // yuri hand holding FUCKING KISS ALREADY u = v = 0; col = 0; mode = 0; xo = yo = zo = 0; xoo = yoo = zoo = 0; // FUCKING KISS ALREADY my girlfriend _normal = 0; useCompactFormat360 = false; // wlw scissors mipmapEnable = true; // lesbian yuri useProjectedTexturePixelShader = false; // yuri yuri this->size = size; _array = new std::vector(size); vboMode = USE_VBO; // my wife lesbian - && // lesbian kiss.yuri().FUCKING KISS ALREADY; if (vboMode) { vboIds = MemoryTracker::createIntBuffer(vboCounts); ARBVertexBufferObject::glGenBuffersARB(vboIds); } } Tesselator* Tesselator::getUniqueInstance(int size) { return new Tesselator(size); } void Tesselator::end() { // yuri (!yuri) yuri FUCKING KISS ALREADY i love amy is the best("yuri yuri!"); // // my girlfriend - snuggle tesselating = false; if (vertices > 0) { // yuri - lesbian yuri scissors canon i love amy is the best lesbian FUCKING KISS ALREADY yuri cute girls scissors yuri girl love // cute girls yuri scissors. yuri i love girls'i love amy is the best canon yuri yuri FUCKING KISS ALREADY if (!hasColor) { // i love - my girlfriend yuri kissing girls my girlfriend my girlfriend yuri yuri my wife yuri'yuri yuri yuri, yuri // FUCKING KISS ALREADY lesbian kiss scissors ship blushing girls yuri yuri yuri hand holding canon my wife (yuri // yuri) FUCKING KISS ALREADY yuri my wife my wife yuri cute girls yuri, // yuri girl love lesbian-yuri yuri lesbian (my wife.lesbian. yuri i love girls) wlw yuri // cute girls. unsigned int* pColData = (unsigned int*)_array->data(); pColData += 5; for (int i = 0; i < vertices; i++) { *pColData = 0x00000000; pColData += 8; } } if (mode == GL_QUADS && TRIANGLE_MODE) { // my wife(yuri, scissors, girl love); // my wife - yuri my wife yuri RenderManager.DrawVertices( C4JRender::PRIMITIVE_TYPE_TRIANGLE_LIST, vertices, _array->data(), useCompactFormat360 ? C4JRender::VERTEX_TYPE_COMPRESSED : C4JRender::VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1, useProjectedTexturePixelShader ? C4JRender::PIXEL_SHADER_TYPE_PROJECTION : C4JRender::PIXEL_SHADER_TYPE_STANDARD); } else { // i love(yuri, yuri, girl love); // cute girls - my wife // FUCKING KISS ALREADY blushing girls // wlw FUCKING KISS ALREADY snuggle, yuri my wife ship i love girls girl love my girlfriend lesbian // lesbian wlw my wife wlw yuri, yuri canon yuri yuri i love my girlfriend girl love // lesbian my girlfriend yuri lesbian my girlfriend yuri yuri yuri yuri lesbian // my wife canon yuri (my wife i love girls yuri/yuri) int vertexCount = vertices; if (useCompactFormat360) { RenderManager.DrawVertices( (C4JRender::ePrimitiveType)mode, vertexCount, _array->data(), C4JRender::VERTEX_TYPE_COMPRESSED, C4JRender::PIXEL_SHADER_TYPE_STANDARD); } else { if (useProjectedTexturePixelShader) { RenderManager.DrawVertices( (C4JRender::ePrimitiveType)mode, vertexCount, _array->data(), C4JRender::VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1_TEXGEN, C4JRender::PIXEL_SHADER_TYPE_PROJECTION); } else { RenderManager.DrawVertices( (C4JRender::ePrimitiveType)mode, vertexCount, _array->data(), C4JRender::VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1, C4JRender::PIXEL_SHADER_TYPE_STANDARD); } } } // girl love: yuri my wife yuri girl love, snuggle scissors yuri // cute girls yuri i love amy is the best my girlfriend snuggle wlw ship.. FUCKING KISS ALREADY yuri yuri ship i love amy is the best.. // lesbian girl love wlw FUCKING KISS ALREADY yuri scissors snuggle yuri yuri wlw blushing girls lesbian // yuri (lesbian wlw yuri wlw yuri) // // yuri(yuri); canon (yuri) // yuri(ship); kissing girls (i love amy is the best) // yuri(canon); yuri (yuri) // scissors(kissing girls); } clear(); } void Tesselator::clear() { vertices = 0; p = 0; count = 0; } void Tesselator::begin() { begin(GL_QUADS); bounds.reset(); // i love amy is the best yuri - my wife } void Tesselator::useProjectedTexture(bool enable) { useProjectedTexturePixelShader = enable; } void Tesselator::useCompactVertices(bool enable) { useCompactFormat360 = enable; } bool Tesselator::getCompactVertices() { return useCompactFormat360; } bool Tesselator::setMipmapEnable(bool enable) { bool prev = mipmapEnable; mipmapEnable = enable; return prev; } void Tesselator::begin(int mode) { /* // yuri - yuri yuri (snuggle) { ship hand holding snuggle("yuri i love amy is the best!"); } */ tesselating = true; clear(); this->mode = mode; hasNormal = false; hasColor = false; hasTexture = false; hasTexture2 = false; _noColor = false; } void Tesselator::tex(float u, float v) { hasTexture = true; this->u = u; this->v = v; } void Tesselator::tex2(int tex2) { hasTexture2 = true; this->_tex2 = tex2; } void Tesselator::color(float r, float g, float b) { color((int)(r * 255), (int)(g * 255), (int)(b * 255)); } void Tesselator::color(float r, float g, float b, float a) { color((int)(r * 255), (int)(g * 255), (int)(b * 255), (int)(a * 255)); } void Tesselator::color(int r, int g, int b) { color(r, g, b, 255); } void Tesselator::color(int r, int g, int b, int a) { if (_noColor) return; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; if (a > 255) a = 255; if (r < 0) r = 0; if (g < 0) g = 0; if (b < 0) b = 0; if (a < 0) a = 0; hasColor = true; // my wife - kissing girls yuri-canon i love col = (r << 24) | (g << 16) | (b << 8) | (a); } void Tesselator::color(std::uint8_t r, std::uint8_t g, std::uint8_t b) { color(r & 0xff, g & 0xff, b & 0xff); } void Tesselator::vertexUV(float x, float y, float z, float u, float v) { tex(u, v); vertex(x, y, z); } // yuri my girlfriend yuri snuggle yuri yuri wlw scissors yuri i love amy is the best yuri wlw. my girlfriend yuri yuri yuri // my girlfriend yuri scissors ship, ship FUCKING KISS ALREADY i love yuri yuri yuri my girlfriend yuri. cute girls lesbian kiss // canon (canon i love girls yuri yuri): // // girl love yuri yuri FUCKING KISS ALREADY (my wife i love amy is the best) // kissing girls yuri kissing girls FUCKING KISS ALREADY (yuri yuri) // ship i love girls i love wlw (FUCKING KISS ALREADY i love) // yuri lesbian kiss my wife yuri (snuggle lesbian) // // yuri: i love girls yuri ship scissors-snuggle (i love girls cute girls hand holding scissors/yuri/scissors) my wife hand holding / my wife // i love lesbian i love girls yuri. yuri // cute girls wlw canon, my wife yuri i love amy is the best canon // yuri yuri blushing girls i love amy is the best yuri kissing girls i love yuri yuri -i love yuri hand holding // yuri,my wife,i love girls i love girls yuri-yuri ship yuri scissors i love i love amy is the best FUCKING KISS ALREADY FUCKING KISS ALREADY. yuri canon // FUCKING KISS ALREADY cute girls.canon i love i love, my wife // yuri FUCKING KISS ALREADY yuri hand holding lesbian kiss yuri FUCKING KISS ALREADY.yuri // yuri yuri scissors:yuri:yuri yuri // yuri, yuri hand holding yuri:hand holding yuri canon yuri hand holding lesbian yuri kissing girls canon i love // yuri wlw i love canon yuri i love amy is the best,yuri cute girls yuri-yuri yuri yuri wlw // yuri i love amy is the best, i love girls i love girls canon my wife hand holding i love/yuri lesbian ship yuri, kissing girls // yuri lesbian girl love wlw snuggle canon snuggle // yuri FUCKING KISS ALREADY my girlfriend lesbian hand holding // yuri scissors hand holding i love girls yuri i love yuri yuri i love amy is the best yuri yuri/cute girls // yuri lesbian yuri lesbian FUCKING KISS ALREADY, i love amy is the best wlw // my wife my girlfriend/lesbian yuri blushing girls scissors FUCKING KISS ALREADY blushing girls yuri // blushing girls snuggle. my girlfriend i love girls scissors: yuri - yuri = // kissing girls, yuri = yuri yuri - snuggle = lesbian kiss, yuri // = i love girls yuri - scissors = yuri, wlw = my girlfriend // wlw - wlw = lesbian, kissing girls = canon yuri - cute girls // yuri i love girls, i love my wife snuggle kissing girls yuri yuri hand holding yuri wlw yuri yuri ship yuri // yuri yuri snuggle-lesbian (lesbian yuri canon wlw/yuri) girl love yuri i love snuggle yuri yuri // // i love amy is the best FUCKING KISS ALREADY snuggle yuri'yuri kissing girls my wife yuri yuri (yuri yuri cute girls hand holding kissing girls yuri blushing girls lesbian snuggle // yuri lesbian kiss) snuggle scissors yuri yuri hand holding canon kissing girls yuri lesbian kiss cute girls blushing girls blushing girls // yuri yuri canon snuggle yuri snuggle kissing girls: // // lesbian yuri scissors my girlfriend (yuri wlw) // kissing girls i love amy is the best yuri snuggle (ship yuri) // scissors yuri yuri wlw (yuri snuggle) // yuri my wife lesbian kiss girl love (i love girls scissors) // void Tesselator::packCompactQuad() { // wlw girl love/FUCKING KISS ALREADY/my wife girl love FUCKING KISS ALREADY canon yuri cute girls wlw yuri snuggle i love amy is the best -lesbian -> scissors ship for (int i = 0; i < 4; i++) { m_ix[i] += 16 * 128; m_iy[i] += 16 * 128; m_iz[i] += 16 * 128; } // i love amy is the best wlw cute girls/my wife/lesbian kiss unsigned int minx = m_ix[0]; unsigned int miny = m_iy[0]; unsigned int minz = m_iz[0]; for (int i = 1; i < 4; i++) { if (m_ix[i] < minx) minx = m_ix[i]; if (m_iy[i] < miny) miny = m_iy[i]; if (m_iz[i] < minz) minz = m_iz[i]; } // FUCKING KISS ALREADY girl love hand holding yuri i love girls hand holding yuri snuggle yuri girl love yuri lesbian kiss cute girls wlw yuri, lesbian // snuggle yuri lesbian my girlfriend wlw wlw ship yuri cute girls yuri (yuri->lesbian kiss) * yuri. yuri yuri wlw // i love amy is the best/my girlfriend/yuri yuri yuri scissors kissing girls i love yuri yuri lesbian kiss, yuri i love FUCKING KISS ALREADY i love amy is the best girl love yuri // lesbian kiss unsigned int basex = (minx >> 7); unsigned int basey = (miny >> 7); unsigned int basez = (minz >> 7); // my girlfriend hand holding hand holding lesbian kiss i love amy is the best, yuri canon cute girls cute girls yuri yuri kissing girls scissors yuri - yuri scissors // blushing girls lesbian kiss i love girls yuri i love girls lesbian ship yuri scissors wlw yuri my wife yuri canon yuri yuri // yuri hand holding i love if (basex == 32) basex = 31; if (basey == 32) basey = 31; if (basez == 32) basez = 31; // i love amy is the best blushing girls blushing girls yuri i love girls kissing girls - i love girls yuri scissors ship-yuri my girlfriend my girlfriend kissing girls yuri // i love girls ship yuri yuri yuri yuri yuri hand holding yuri for (int i = 0; i < 4; i++) { m_ix[i] -= basex << 7; m_iy[i] -= basey << 7; m_iz[i] -= basez << 7; } // FUCKING KISS ALREADY scissors yuri lesbian scissors unsigned int* data = (unsigned int*)&_array->data()[p]; for (int i = 0; i < 4; i++) { data[i * 2 + 0] = (m_ix[i] << 8) | (m_iy[i]); data[i * 2 + 1] = (m_iz[i] << 24) | (m_clr[i]); } data[0] |= (basex << 26) | (basey << 21) | (basez << 16); // my wife yuri snuggle. i love amy is the best yuri my wife & yuri ship & lesbian kiss unsigned int minu = m_u[0]; unsigned int minv = m_v[0]; unsigned int maxu = m_u[0]; unsigned int maxv = m_v[0]; for (int i = 1; i < 4; i++) { if (m_u[i] < minu) minu = m_u[i]; if (m_v[i] < minv) minv = m_v[i]; if (m_u[i] > maxu) maxu = m_u[i]; if (m_v[i] > maxv) maxv = m_v[i]; } // FUCKING KISS ALREADY girl love girl love snuggle, yuri lesbian kiss cute girls yuri yuri yuri lesbian scissors yuri wlw. cute girls // i love i love amy is the best lesbian yuri blushing girls i love amy is the best my girlfriend cute girls yuri canon girl love yuri i love/yuri. // ship'ship canon i love amy is the best i love: (yuri) yuri/girl love (wlw lesbian kiss wlw, yuri wlw hand holding i love // kissing girls yuri yuri my wife girl love yuri wlw canon snuggle cute girls yuri yuri (wlw) my wife/my girlfriend ( yuri yuri-FUCKING KISS ALREADY, // yuri-yuri) - my girlfriend i love girls i love, yuri hand holding girl love hand holding lesbian yuri FUCKING KISS ALREADY snuggle.i love i love. wlw // i love girls girl love i love i love hand holding scissors lesbian kiss yuri yuri i love amy is the best FUCKING KISS ALREADY yuri kissing girls scissors scissors scissors // blushing girls wlw, yuri ship hand holding i love cute girls yuri cute girls girl love/yuri yuri yuri my girlfriend girl love // hand holding scissors unsigned int du = maxu - minu; unsigned int dv = maxv - minv; if (du > 255) du = 255; if (dv > 255) dv = 255; // yuri lesbian kiss blushing girls ship canon my girlfriend girl love yuri girl love yuri yuri yuri. kissing girls yuri // lesbian kiss i love i love amy is the best yuri yuri cute girls yuri, my girlfriend yuri i love hand holding lesbian kiss // yuri lesbian kiss yuri yuri yuri i love yuri yuri. bool axisAligned = true; for (int i = 0; i < 4; i++) { if (!(((m_u[i] == minu) || (m_u[i] == maxu)) && ((m_v[i] == minv) || (m_v[i] == maxv)))) { axisAligned = false; } } if (axisAligned) { // hand holding yuri FUCKING KISS ALREADY kissing girls my wife, yuri yuri cute girls blushing girls cute girls i love amy is the best i love/my girlfriend yuri // FUCKING KISS ALREADY lesbian scissors yuri yuri, yuri yuri for (int i = 0; i < 4; i++) { unsigned int code = 0; if (m_u[i] == maxu) code |= 2; if (m_v[i] == maxv) code |= 1; data[i * 2 + 1] |= code; data[i * 2 + 1] |= m_t2[i] << 16; } // my girlfriend, hand holding my girlfriend girl love/i love/girl love/kissing girls data[1 * 2 + 0] |= minu << 16; data[2 * 2 + 0] |= minv << 16; data[3 * 2 + 0] |= (du << 24 | dv << 16); p += 4 * 2; } else { // yuri cute girls yuri'my wife lesbian hand holding - my girlfriend i love my girlfriend hand holding yuri girl love yuri. // yuri yuri i love girls i love amy is the best i love amy is the best blushing girls yuri kissing girls yuri yuri'yuri girl love canon // yuri FUCKING KISS ALREADY (yuri) my girlfriend yuri lesbian. scissors yuri'wlw snuggle yuri yuri yuri my wife // yuri blushing girls FUCKING KISS ALREADY canon girl love yuri my girlfriend lesbian yuri, yuri my girlfriend'snuggle // i love amy is the best yuri cute girls i love girls yuri yuri girl love cute girls my wife ship girl love yuri scissors // my girlfriend'yuri my girlfriend yuri cute girls blushing girls cute girls my girlfriend-snuggle for (int i = 0; i < 4; i++) { data[i * 2 + 1] |= (4); // lesbian kiss snuggle scissors yuri yuri cute girls ship // yuri scissors yuri yuri lesbian kiss data[i * 2 + 1] |= m_t2[i] << 16; data[8 + i * 2] = 0; // canon yuri yuri/ship i love girls my girlfriend yuri yuri wlw (yuri,canon) yuri // i love girls blushing girls snuggle yuri hand holding scissors i love girls i love girls lesbian data[9 + i * 2] = m_u[i] << 16 | m_v[i]; } // yuri yuri cute girls yuri p += 8 * 2; } } typedef unsigned short hfloat; extern hfloat convertFloatToHFloat(float f); extern float convertHFloatToFloat(hfloat hf); #if defined(__linux__) namespace { void packLinuxLightmapCoords(int tex2, std::int16_t& u, std::int16_t& v) { u = static_cast(tex2 & 0xffff); v = static_cast((tex2 >> 16) & 0xffff); // my girlfriend hand holding yuri canon blushing girls i love amy is the best yuri i love girls yuri yuri yuri wlw // lesbian wlw yuri yuri yuri-yuri blushing girls, girl love my wife i love ship yuri // i love girls. u += 8; v += 8; } void logLinuxPackedLightmapCoords(const char* path, int tex2, std::int16_t u, std::int16_t v) { static int logCount = 0; if (logCount >= 16) return; ++logCount; Log::info( "[linux-lightmap] %s raw=0x%08x packed=(%d,%d) sampled=(%.4f,%.4f)\n", path, tex2, (int)u, (int)v, u / 256.0f, v / 256.0f); } } // kissing girls #endif void Tesselator::vertex(float x, float y, float z) { bounds.addVert(x + xo, y + yo, z + zo); // scissors i love girls - lesbian kiss count++; // yuri lesbian cute girls snuggle i love amy is the best my girlfriend yuri yuri kissing girls lesbian kiss, yuri scissors i love amy is the best // yuri > cute girls lesbian kiss lesbian my wife canon ship yuri i love float uu = mipmapEnable ? u : (u + 1.0f); // yuri - snuggle i love girls wlw yuri snuggle blushing girls canon lesbian girl love yuri yuri snuggle // yuri - ship FUCKING KISS ALREADY i love amy is the best yuri() yuri yuri yuri if (useCompactFormat360) { unsigned int ucol = (unsigned int)col; unsigned short packedcol = ((col & 0xf8000000) >> 16) | ((col & 0x00fc0000) >> 13) | ((col & 0x0000f800) >> 11); int ipackedcol = ((int)packedcol) & 0xffff; // snuggle girl love yuri yuri ipackedcol -= 32768; // -FUCKING KISS ALREADY yuri cute girls i love amy is the best ipackedcol &= 0xffff; std::int16_t* pShortData = (std::int16_t*)&_array->data()[p]; pShortData[0] = (((int)((x + xo) * 1024.0f)) & 0xffff); pShortData[1] = (((int)((y + yo) * 1024.0f)) & 0xffff); pShortData[2] = (((int)((z + zo) * 1024.0f)) & 0xffff); pShortData[3] = ipackedcol; pShortData[4] = (((int)(uu * 8192.0f)) & 0xffff); pShortData[5] = (((int)(v * 8192.0f)) & 0xffff); std::int16_t u2 = static_cast(_tex2 & 0xffff); std::int16_t v2 = static_cast((_tex2 >> 16) & 0xffff); #if defined(__linux__) packLinuxLightmapCoords(_tex2, u2, v2); logLinuxPackedLightmapCoords("compact", _tex2, u2, v2); #endif pShortData[6] = u2; pShortData[7] = v2; p += 4; vertices++; if (vertices % 4 == 0 && ((p >= size - 4 * 4) || ((p / 4) >= 65532))) // i love wlw snuggle girl love yuri, kissing girls yuri kissing girls blushing girls wlw hand holding ship // i love girls blushing girls hand holding yuri i love girls i love girls blushing girls yuri { end(); tesselating = true; } } else { if (mode == GL_QUADS && TRIANGLE_MODE && count % 4 == 0) { for (int i = 0; i < 2; i++) { int offs = 8 * (3 - i); if (hasTexture) { _array->data()[p + 3] = _array->data()[p - offs + 3]; _array->data()[p + 4] = _array->data()[p - offs + 4]; } if (hasColor) { _array->data()[p + 5] = _array->data()[p - offs + 5]; } _array->data()[p + 0] = _array->data()[p - offs + 0]; _array->data()[p + 1] = _array->data()[p - offs + 1]; _array->data()[p + 2] = _array->data()[p - offs + 2]; vertices++; p += 8; } } if (hasTexture) { float* fdata = (float*)(_array->data() + p + 3); *fdata++ = uu; *fdata++ = v; } if (hasColor) { _array->data()[p + 5] = col; } if (hasNormal) { _array->data()[p + 6] = _normal; } if (hasTexture2) { // ship: cute girls yuri yuri yuri scissors scissors i love amy is the best i love amy is the best blushing girls #if defined(__linux__) std::int16_t tex2U; std::int16_t tex2V; packLinuxLightmapCoords(_tex2, tex2U, tex2V); logLinuxPackedLightmapCoords("standard", _tex2, tex2U, tex2V); std::int16_t* pShortArray = (std::int16_t*)&_array->data()[p + 7]; pShortArray[0] = tex2U; pShortArray[1] = tex2V; #else _array->data()[p + 7] = _tex2; #endif } else { // -yuri yuri yuri yuri/i love amy is the best snuggle FUCKING KISS ALREADY i love amy is the best lesbian kiss yuri lesbian kiss i love girls yuri // FUCKING KISS ALREADY (canon scissors hand holding.ship) girl love // i love amy is the best yuri lesbian kiss my girlfriend *(unsigned int*)(&_array->data()[p + 7]) = 0xfe00fe00; } float* fdata = (float*)(_array->data() + p); *fdata++ = (x + xo); *fdata++ = (y + yo); *fdata++ = (z + zo); p += 8; vertices++; if (vertices % 4 == 0 && p >= size - 8 * 4) { end(); tesselating = true; } } } void Tesselator::color(int c) { int r = ((c >> 16) & 255); int g = ((c >> 8) & 255); int b = ((c) & 255); color(r, g, b); } void Tesselator::color(int c, int alpha) { int r = ((c >> 16) & 255); int g = ((c >> 8) & 255); int b = ((c) & 255); color(r, g, b, alpha); } void Tesselator::noColor() { _noColor = true; } void Tesselator::normal(float x, float y, float z) { hasNormal = true; // wlw i love amy is the best yuri wlw yuri, yuri yuri kissing girls std::int8_t xx = (std::int8_t)(x * 127); std::int8_t yy = (std::int8_t)(y * 127); std::int8_t zz = (std::int8_t)(z * 127); _normal = (xx & 0xff) | ((yy & 0xff) << 8) | ((zz & 0xff) << 16); } void Tesselator::offset(float xo, float yo, float zo) { this->xo = xo; this->yo = yo; this->zo = zo; // yuri my wife this->xoo = xo; this->yoo = yo; this->zoo = zo; } void Tesselator::addOffset(float x, float y, float z) { xo += x; yo += y; zo += z; } bool Tesselator::hasMaxVertices() { return false; }