コード例 #1
0
ファイル: mesh.cpp プロジェクト: olofn/db_public
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]);
	}
}
コード例 #2
0
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;
  }
}
コード例 #3
0
ファイル: Form.cpp プロジェクト: Jaegermeiste/GamePlay
    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);
        }
    }
コード例 #4
0
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();
  }
}
コード例 #5
0
ファイル: text.cpp プロジェクト: whztt07/Magic3D-2
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;
}