void Mesh::setFace(int faceIndex, int *v) { if (faceIndex < numTriangles) { setTriangle(faceIndex, v[0], v[1], v[2]); } else { setQuad(faceIndex - numTriangles, v[0], v[1], v[2], v[3]); } }
void YSE::CHANNEL::managerObject::setAuto(Int count) { switch (count) { case 1: setMono(); break; case 2: setStereo(); break; case 4: setQuad(); break; case 5: set51(); break; case 6: set51(); break; case 7: set61(); break; case 8: set71(); break; default: setStereo(); break; } }
void Form::setNode(Node* node) { _node = node; if (_node && !_quad) { // Set this Form up to be 3D by initializing a quad, projection matrix and viewport. setQuad(0.0f, 0.0f, _bounds.width, _bounds.height); Matrix::createOrthographicOffCenter(0, _bounds.width, _bounds.height, 0, 0, 1, &_projectionMatrix); _theme->setProjectionMatrix(_projectionMatrix); _node->setModel(_quad); } }
void YSE::CHANNEL::managerObject::changeChannelConf() { delete[] outputAngles; outputAngles = new aFlt[outputChannels.load()]; switch (channelType.load()) { case CT_AUTO: setAuto(outputChannels); break; case CT_MONO: setMono(); break; case CT_STEREO: setStereo(); break; case CT_QUAD: setQuad(); break; case CT_51: set51(); break; case CT_51SIDE: set51Side(); break; case CT_61: set61(); break; case CT_71: set71(); break; case CT_CUSTOM: break; // we've set number of outputs. CT_CUSTOM expects the positions will be // set later } REVERB::Manager().setOutputChannels(outputChannels); for (auto i = inUse.begin(); i != inUse.end(); i++) { (*i)->setup(); } }
bool Magic3D::TextData::update(Object* object) { if (object) { } Renderer* renderer = Renderer::getInstance(); Font* font = getFont(); std::vector<float> lines; if (!font) { return false; } float fsize = (textSize / 512.0f) / font->getLineHeightInPixels(); float lineHeight = fsize * (font->getLineHeightInPixels() + 2.0f); int quadCount = getVerticesCount() / 4; if (quadCount < (int)text.size() - lastReturns) { lastReturns = 0; size_t tsize = text.size(); for (size_t i = 0; i < tsize; i++) { if (text.at(i) == '\n') { lastReturns++; continue; } else if (renderer->hasMapBuffer() || ((int)i >= quadCount)) { addQuad(0.0f, 0.0f, 1.0f, 1.0f, eAXIS_Z, false); } } createVbo(); quadCount = getVerticesCount() / 4; } width = 0.0f; height = lineHeight; if (getVerticesCount() > 0) { int quad = -1; float startX = 0.0f; float startY = 0.0f; float* buffer = mapBuffer(); int lastIndex = 0; size_t tsize = text.size(); for (size_t i = 0; i < tsize; i++) { int index = text.at(i); if (index < 0) { index = 256 + index; } FontChar* fchar = font->getChar(index); if (text.at(i) == '\n') { lines.push_back(startX); if (width < startX) { width = startX; } startX = 0.0f; if (invert) { startY -= lineHeight; } else { startY += lineHeight; } height += lineHeight; continue; } else { quad++; } float texX = fchar->x; float texY = 1.0f - fchar->y; float texW = fchar->width; float texH = fchar->height; float cwidth = fchar->width * font->getTextureWidth() * fsize; float cheight = fchar->height * font->getTextureHeight() * fsize; float coffsetX = fchar->offsetX * font->getTextureWidth() * fsize; float coffsetY = fchar->offsetY * font->getTextureHeight() * fsize; float cadvanceX = fchar->advanceX * font->getTextureWidth() * fsize; float ckernel = 0.0f; std::map<int, float>::const_iterator k = fchar->kernel.find(lastIndex); if (k != fchar->kernel.end()) { ckernel = (*k).second * fsize; } setQuad(buffer, quad, startX + coffsetX + ckernel, startY + coffsetY * 0.5f, cwidth, cheight); if (invert) { setQuadTexture(buffer, quad, texX, texY - texH, texW, -texH); } else { setQuadTexture(buffer, quad, texX, texY, texW, texH); } startX += cadvanceX; lastIndex = index; } quad++; for (int i = quad; i < quadCount; i++) { setQuad(buffer, i, startX, startY, 0.0f, 0.0f); } lines.push_back(startX); if (width < startX) { width = startX; } width += (2.0f * fsize); quad = 0; int line = 0; tsize = text.size(); for (size_t i = 0; i < tsize; i++) { if (text.at(i) != '\n') { float w = width * -0.5f; float diff = line < (int)lines.size() ? lines.at(line) : width; switch (textAlignment) { case eHORIZONTAL_ALIGN_CENTER: w += (width - diff) * 0.5f; break; case eHORIZONTAL_ALIGN_RIGHT: w += (width - diff); break; default: break; } if (invert) { moveQuad(buffer, quad, w, height * 0.5f - lineHeight, 0.0f); } else { moveQuad(buffer, quad, w, height * -0.5f, 0.0f); } quad++; } else { line++; } } unmapBuffer(); } changed = false; box.corners[0] = Vector3(-width * 0.5f, -height * 0.5f, 0.0f); box.corners[1] = Vector3(width * 0.5f, height * 0.5f, 0.0f); return true; }